ac: Add ac_vcn_init_enc_cmds
Reviewed-by: Boyuan Zhang <boyuan.zhang@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31113>
This commit is contained in:
129
src/amd/common/ac_vcn_enc.c
Normal file
129
src/amd/common/ac_vcn_enc.c
Normal file
@@ -0,0 +1,129 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright 2024 Advanced Micro Devices, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "ac_vcn_enc.h"
|
||||
|
||||
#define RENCODE_IB_PARAM_SESSION_INFO 0x00000001
|
||||
#define RENCODE_IB_PARAM_TASK_INFO 0x00000002
|
||||
#define RENCODE_IB_PARAM_SESSION_INIT 0x00000003
|
||||
#define RENCODE_IB_PARAM_LAYER_CONTROL 0x00000004
|
||||
#define RENCODE_IB_PARAM_LAYER_SELECT 0x00000005
|
||||
#define RENCODE_IB_PARAM_RATE_CONTROL_SESSION_INIT 0x00000006
|
||||
#define RENCODE_IB_PARAM_RATE_CONTROL_LAYER_INIT 0x00000007
|
||||
#define RENCODE_IB_PARAM_RATE_CONTROL_PER_PICTURE 0x00000008
|
||||
#define RENCODE_IB_PARAM_QUALITY_PARAMS 0x00000009
|
||||
#define RENCODE_IB_PARAM_SLICE_HEADER 0x0000000a
|
||||
#define RENCODE_IB_PARAM_ENCODE_PARAMS 0x0000000b
|
||||
#define RENCODE_IB_PARAM_INTRA_REFRESH 0x0000000c
|
||||
#define RENCODE_IB_PARAM_ENCODE_CONTEXT_BUFFER 0x0000000d
|
||||
#define RENCODE_IB_PARAM_VIDEO_BITSTREAM_BUFFER 0x0000000e
|
||||
#define RENCODE_IB_PARAM_FEEDBACK_BUFFER 0x00000010
|
||||
#define RENCODE_IB_PARAM_RATE_CONTROL_PER_PICTURE_EX 0x0000001d
|
||||
#define RENCODE_IB_PARAM_DIRECT_OUTPUT_NALU 0x00000020
|
||||
#define RENCODE_IB_PARAM_QP_MAP 0x00000021
|
||||
#define RENCODE_IB_PARAM_ENCODE_LATENCY 0x00000022
|
||||
#define RENCODE_IB_PARAM_ENCODE_STATISTICS 0x00000024
|
||||
|
||||
#define RENCODE_HEVC_IB_PARAM_SLICE_CONTROL 0x00100001
|
||||
#define RENCODE_HEVC_IB_PARAM_SPEC_MISC 0x00100002
|
||||
#define RENCODE_HEVC_IB_PARAM_DEBLOCKING_FILTER 0x00100003
|
||||
|
||||
#define RENCODE_H264_IB_PARAM_SLICE_CONTROL 0x00200001
|
||||
#define RENCODE_H264_IB_PARAM_SPEC_MISC 0x00200002
|
||||
#define RENCODE_H264_IB_PARAM_ENCODE_PARAMS 0x00200003
|
||||
#define RENCODE_H264_IB_PARAM_DEBLOCKING_FILTER 0x00200004
|
||||
|
||||
#define RENCODE_V2_IB_PARAM_DIRECT_OUTPUT_NALU 0x0000000a
|
||||
#define RENCODE_V2_IB_PARAM_SLICE_HEADER 0x0000000b
|
||||
#define RENCODE_V2_IB_PARAM_INPUT_FORMAT 0x0000000c
|
||||
#define RENCODE_V2_IB_PARAM_OUTPUT_FORMAT 0x0000000d
|
||||
#define RENCODE_V2_IB_PARAM_ENCODE_PARAMS 0x0000000f
|
||||
#define RENCODE_V2_IB_PARAM_INTRA_REFRESH 0x00000010
|
||||
#define RENCODE_V2_IB_PARAM_ENCODE_CONTEXT_BUFFER 0x00000011
|
||||
#define RENCODE_V2_IB_PARAM_VIDEO_BITSTREAM_BUFFER 0x00000012
|
||||
#define RENCODE_V2_IB_PARAM_QP_MAP 0x00000014
|
||||
#define RENCODE_V2_IB_PARAM_FEEDBACK_BUFFER 0x00000015
|
||||
#define RENCODE_V2_IB_PARAM_ENCODE_LATENCY 0x00000018
|
||||
#define RENCODE_V2_IB_PARAM_ENCODE_STATISTICS 0x00000019
|
||||
|
||||
#define RENCODE_V4_IB_PARAM_CDF_DEFAULT_TABLE_BUFFER 0x00000019
|
||||
#define RENCODE_V4_IB_PARAM_ENCODE_STATISTICS 0x0000001a
|
||||
#define RENCODE_V4_AV1_IB_PARAM_SPEC_MISC 0x00300001
|
||||
#define RENCODE_V4_AV1_IB_PARAM_BITSTREAM_INSTRUCTION 0x00300002
|
||||
|
||||
#define RENCODE_V5_IB_PARAM_METADATA_BUFFER 0x0000001c
|
||||
#define RENCODE_V5_IB_PARAM_ENCODE_CONTEXT_BUFFER_OVERRIDE 0x0000001d
|
||||
#define RENCODE_V5_IB_PARAM_HEVC_ENCODE_PARAMS 0x00100004
|
||||
#define RENCODE_V5_AV1_IB_PARAM_TILE_CONFIG 0x00300002
|
||||
#define RENCODE_V5_AV1_IB_PARAM_BITSTREAM_INSTRUCTION 0x00300003
|
||||
#define RENCODE_V5_AV1_IB_PARAM_ENCODE_PARAMS 0x00300004
|
||||
|
||||
void ac_vcn_enc_init_cmds(rvcn_enc_cmd_t *cmd, enum vcn_version version)
|
||||
{
|
||||
cmd->session_info = RENCODE_IB_PARAM_SESSION_INFO;
|
||||
cmd->task_info = RENCODE_IB_PARAM_TASK_INFO;
|
||||
cmd->session_init = RENCODE_IB_PARAM_SESSION_INIT;
|
||||
cmd->layer_control = RENCODE_IB_PARAM_LAYER_CONTROL;
|
||||
cmd->layer_select = RENCODE_IB_PARAM_LAYER_SELECT;
|
||||
cmd->rc_session_init = RENCODE_IB_PARAM_RATE_CONTROL_SESSION_INIT;
|
||||
cmd->rc_layer_init = RENCODE_IB_PARAM_RATE_CONTROL_LAYER_INIT;
|
||||
cmd->rc_per_pic = RENCODE_IB_PARAM_RATE_CONTROL_PER_PICTURE;
|
||||
cmd->rc_per_pic_ex = RENCODE_IB_PARAM_RATE_CONTROL_PER_PICTURE_EX;
|
||||
cmd->quality_params = RENCODE_IB_PARAM_QUALITY_PARAMS;
|
||||
cmd->nalu = RENCODE_IB_PARAM_DIRECT_OUTPUT_NALU;
|
||||
cmd->slice_header = RENCODE_IB_PARAM_SLICE_HEADER;
|
||||
cmd->enc_params = RENCODE_IB_PARAM_ENCODE_PARAMS;
|
||||
cmd->intra_refresh = RENCODE_IB_PARAM_INTRA_REFRESH;
|
||||
cmd->ctx = RENCODE_IB_PARAM_ENCODE_CONTEXT_BUFFER;
|
||||
cmd->bitstream = RENCODE_IB_PARAM_VIDEO_BITSTREAM_BUFFER;
|
||||
cmd->feedback = RENCODE_IB_PARAM_FEEDBACK_BUFFER;
|
||||
cmd->slice_control_hevc = RENCODE_HEVC_IB_PARAM_SLICE_CONTROL;
|
||||
cmd->spec_misc_hevc = RENCODE_HEVC_IB_PARAM_SPEC_MISC;
|
||||
cmd->deblocking_filter_hevc = RENCODE_HEVC_IB_PARAM_DEBLOCKING_FILTER;
|
||||
cmd->slice_control_h264 = RENCODE_H264_IB_PARAM_SLICE_CONTROL;
|
||||
cmd->spec_misc_h264 = RENCODE_H264_IB_PARAM_SPEC_MISC;
|
||||
cmd->enc_params_h264 = RENCODE_H264_IB_PARAM_ENCODE_PARAMS;
|
||||
cmd->deblocking_filter_h264 = RENCODE_H264_IB_PARAM_DEBLOCKING_FILTER;
|
||||
cmd->enc_statistics = RENCODE_IB_PARAM_ENCODE_STATISTICS;
|
||||
cmd->enc_qp_map = RENCODE_IB_PARAM_QP_MAP;
|
||||
cmd->enc_latency = RENCODE_IB_PARAM_ENCODE_LATENCY;
|
||||
|
||||
if (version >= VCN_2_0_0) {
|
||||
cmd->nalu = RENCODE_V2_IB_PARAM_DIRECT_OUTPUT_NALU;
|
||||
cmd->slice_header = RENCODE_V2_IB_PARAM_SLICE_HEADER;
|
||||
cmd->input_format = RENCODE_V2_IB_PARAM_INPUT_FORMAT;
|
||||
cmd->output_format = RENCODE_V2_IB_PARAM_OUTPUT_FORMAT;
|
||||
cmd->enc_params = RENCODE_V2_IB_PARAM_ENCODE_PARAMS;
|
||||
cmd->intra_refresh = RENCODE_V2_IB_PARAM_INTRA_REFRESH;
|
||||
cmd->ctx = RENCODE_V2_IB_PARAM_ENCODE_CONTEXT_BUFFER;
|
||||
cmd->bitstream = RENCODE_V2_IB_PARAM_VIDEO_BITSTREAM_BUFFER;
|
||||
cmd->feedback = RENCODE_V2_IB_PARAM_FEEDBACK_BUFFER;
|
||||
cmd->enc_statistics = RENCODE_V2_IB_PARAM_ENCODE_STATISTICS;
|
||||
cmd->enc_qp_map = RENCODE_V2_IB_PARAM_QP_MAP;
|
||||
cmd->enc_latency = RENCODE_V2_IB_PARAM_ENCODE_LATENCY;
|
||||
}
|
||||
|
||||
if (version >= VCN_4_0_0) {
|
||||
cmd->cdf_default_table_av1 = RENCODE_V4_IB_PARAM_CDF_DEFAULT_TABLE_BUFFER;
|
||||
cmd->enc_statistics = RENCODE_V4_IB_PARAM_ENCODE_STATISTICS;
|
||||
cmd->spec_misc_av1 = RENCODE_V4_AV1_IB_PARAM_SPEC_MISC;
|
||||
cmd->bitstream_instruction_av1 = RENCODE_V4_AV1_IB_PARAM_BITSTREAM_INSTRUCTION;
|
||||
}
|
||||
|
||||
if (version >= VCN_5_0_0) {
|
||||
cmd->metadata = RENCODE_V5_IB_PARAM_METADATA_BUFFER;
|
||||
cmd->ctx_override = RENCODE_V5_IB_PARAM_ENCODE_CONTEXT_BUFFER_OVERRIDE;
|
||||
cmd->enc_params_hevc = RENCODE_V5_IB_PARAM_HEVC_ENCODE_PARAMS;
|
||||
cmd->tile_config_av1 = RENCODE_V5_AV1_IB_PARAM_TILE_CONFIG;
|
||||
cmd->bitstream_instruction_av1 = RENCODE_V5_AV1_IB_PARAM_BITSTREAM_INSTRUCTION;
|
||||
cmd->enc_params_av1 = RENCODE_V5_AV1_IB_PARAM_ENCODE_PARAMS;
|
||||
}
|
||||
}
|
@@ -28,6 +28,8 @@
|
||||
#ifndef AC_VCN_ENC_H
|
||||
#define AC_VCN_ENC_H
|
||||
|
||||
#include "amd_family.h"
|
||||
|
||||
#define RENCODE_IB_OP_INITIALIZE 0x01000001
|
||||
#define RENCODE_IB_OP_CLOSE_SESSION 0x01000002
|
||||
#define RENCODE_IB_OP_ENCODE 0x01000003
|
||||
@@ -798,4 +800,6 @@ typedef struct rvcn_enc_latency_s
|
||||
uint32_t encode_latency;
|
||||
} rvcn_enc_latency_t;
|
||||
|
||||
void ac_vcn_enc_init_cmds(rvcn_enc_cmd_t *cmd, enum vcn_version version);
|
||||
|
||||
#endif
|
||||
|
@@ -109,6 +109,7 @@ amd_common_files = files(
|
||||
'ac_pm4.h',
|
||||
'ac_vcn_av1_default.h',
|
||||
'ac_vcn_dec.c',
|
||||
'ac_vcn_enc.c',
|
||||
)
|
||||
|
||||
if dep_elf.found()
|
||||
|
Reference in New Issue
Block a user