Mesa (main): radeon/vcn: update vcn1 enc interface

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 29 00:10:32 UTC 2021


Module: Mesa
Branch: main
Commit: 299097d17b0d85c8db0e684ff5041c6e9cc38067
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=299097d17b0d85c8db0e684ff5041c6e9cc38067

Author: Boyuan Zhang <boyuan.zhang at amd.com>
Date:   Sun Oct 24 17:57:51 2021 -0400

radeon/vcn: update vcn1 enc interface

Update vcn 1 encode interface, upgrade interface minor version from 2 to 9,
and add necessary parameters accordingly.

Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
Reviewed-by: Leo Liu <leo.liu at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13511>

---

 src/gallium/drivers/radeon/radeon_vcn_enc.h     |  2 ++
 src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c | 10 +++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeon/radeon_vcn_enc.h b/src/gallium/drivers/radeon/radeon_vcn_enc.h
index f62f1fbf3c1..491d51b32bf 100644
--- a/src/gallium/drivers/radeon/radeon_vcn_enc.h
+++ b/src/gallium/drivers/radeon/radeon_vcn_enc.h
@@ -164,6 +164,7 @@ typedef struct rvcn_enc_session_init_s {
    uint32_t padding_height;
    uint32_t pre_encode_mode;
    uint32_t pre_encode_chroma_enabled;
+   uint32_t display_remote;
 } rvcn_enc_session_init_t;
 
 typedef struct rvcn_enc_layer_control_s {
@@ -356,6 +357,7 @@ typedef struct rvcn_enc_encode_context_buffer_s {
    rvcn_enc_reconstructed_picture_t
       pre_encode_reconstructed_pictures[RENCODE_MAX_NUM_RECONSTRUCTED_PICTURES];
    rvcn_enc_reconstructed_picture_t pre_encode_input_picture;
+   uint32_t two_pass_search_center_map_offset;
 } rvcn_enc_encode_context_buffer_t;
 
 typedef struct rvcn_enc_video_bitstream_buffer_s {
diff --git a/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c b/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c
index 37645934e81..faa89911f29 100644
--- a/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c
+++ b/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c
@@ -35,7 +35,7 @@
 #include <stdio.h>
 
 #define RENCODE_FW_INTERFACE_MAJOR_VERSION 1
-#define RENCODE_FW_INTERFACE_MINOR_VERSION 2
+#define RENCODE_FW_INTERFACE_MINOR_VERSION 9
 
 #define RENCODE_IB_PARAM_SESSION_INFO              0x00000001
 #define RENCODE_IB_PARAM_TASK_INFO                 0x00000002
@@ -99,6 +99,7 @@ static void radeon_enc_session_init(struct radeon_encoder *enc)
       enc->enc_pic.session_init.aligned_picture_height - enc->base.height;
    enc->enc_pic.session_init.pre_encode_mode = RENCODE_PREENCODE_MODE_NONE;
    enc->enc_pic.session_init.pre_encode_chroma_enabled = false;
+   enc->enc_pic.session_init.display_remote = 0;
 
    RADEON_ENC_BEGIN(enc->cmd.session_init);
    RADEON_ENC_CS(enc->enc_pic.session_init.encode_standard);
@@ -108,6 +109,7 @@ static void radeon_enc_session_init(struct radeon_encoder *enc)
    RADEON_ENC_CS(enc->enc_pic.session_init.padding_height);
    RADEON_ENC_CS(enc->enc_pic.session_init.pre_encode_mode);
    RADEON_ENC_CS(enc->enc_pic.session_init.pre_encode_chroma_enabled);
+   RADEON_ENC_CS(enc->enc_pic.session_init.display_remote);
    RADEON_ENC_END();
 }
 
@@ -122,6 +124,7 @@ static void radeon_enc_session_init_hevc(struct radeon_encoder *enc)
       enc->enc_pic.session_init.aligned_picture_height - enc->base.height;
    enc->enc_pic.session_init.pre_encode_mode = RENCODE_PREENCODE_MODE_NONE;
    enc->enc_pic.session_init.pre_encode_chroma_enabled = false;
+   enc->enc_pic.session_init.display_remote = 0;
 
    RADEON_ENC_BEGIN(enc->cmd.session_init);
    RADEON_ENC_CS(enc->enc_pic.session_init.encode_standard);
@@ -131,6 +134,7 @@ static void radeon_enc_session_init_hevc(struct radeon_encoder *enc)
    RADEON_ENC_CS(enc->enc_pic.session_init.padding_height);
    RADEON_ENC_CS(enc->enc_pic.session_init.pre_encode_mode);
    RADEON_ENC_CS(enc->enc_pic.session_init.pre_encode_chroma_enabled);
+   RADEON_ENC_CS(enc->enc_pic.session_init.display_remote);
    RADEON_ENC_END();
 }
 
@@ -272,11 +276,13 @@ static void radeon_enc_quality_params(struct radeon_encoder *enc)
    enc->enc_pic.quality_params.vbaq_mode = 0;
    enc->enc_pic.quality_params.scene_change_sensitivity = 0;
    enc->enc_pic.quality_params.scene_change_min_idr_interval = 0;
+   enc->enc_pic.quality_params.two_pass_search_center_map_mode = 0;
 
    RADEON_ENC_BEGIN(enc->cmd.quality_params);
    RADEON_ENC_CS(enc->enc_pic.quality_params.vbaq_mode);
    RADEON_ENC_CS(enc->enc_pic.quality_params.scene_change_sensitivity);
    RADEON_ENC_CS(enc->enc_pic.quality_params.scene_change_min_idr_interval);
+   RADEON_ENC_CS(enc->enc_pic.quality_params.two_pass_search_center_map_mode);
    RADEON_ENC_END();
 }
 
@@ -1051,6 +1057,7 @@ static void radeon_enc_ctx(struct radeon_encoder *enc)
    enc->enc_pic.ctx_buf.rec_luma_pitch = align(enc->base.width, enc->alignment);
    enc->enc_pic.ctx_buf.rec_chroma_pitch = align(enc->base.width, enc->alignment);
    enc->enc_pic.ctx_buf.num_reconstructed_pictures = 2;
+   enc->enc_pic.ctx_buf.two_pass_search_center_map_offset = 0;
 
    RADEON_ENC_BEGIN(enc->cmd.ctx);
    RADEON_ENC_READWRITE(enc->cpb.res->buf, enc->cpb.res->domains, 0);
@@ -1070,6 +1077,7 @@ static void radeon_enc_ctx(struct radeon_encoder *enc)
    for (int i = 0; i < 136; i++)
       RADEON_ENC_CS(0x00000000);
 
+   RADEON_ENC_CS(enc->enc_pic.ctx_buf.two_pass_search_center_map_offset);
    RADEON_ENC_END();
 }
 



More information about the mesa-commit mailing list