Mesa (main): radeon/vcn: combine session init func

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


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

Author: Boyuan Zhang <boyuan.zhang at amd.com>
Date:   Sun Oct 24 18:54:31 2021 -0400

radeon/vcn: combine session init func

Combine the session init function for h.264 and hevc to reduce redundancy.

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_1_2.c | 37 ++++++-------------------
 1 file changed, 8 insertions(+), 29 deletions(-)

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 90083037e42..6540357f7c4 100644
--- a/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c
+++ b/src/gallium/drivers/radeon/radeon_vcn_enc_1_2.c
@@ -90,33 +90,13 @@ static void radeon_enc_task_info(struct radeon_encoder *enc, bool need_feedback)
 
 static void radeon_enc_session_init(struct radeon_encoder *enc)
 {
-   enc->enc_pic.session_init.encode_standard = RENCODE_ENCODE_STANDARD_H264;
-   enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, 16);
-   enc->enc_pic.session_init.aligned_picture_height = align(enc->base.height, 16);
-   enc->enc_pic.session_init.padding_width =
-      enc->enc_pic.session_init.aligned_picture_width - enc->base.width;
-   enc->enc_pic.session_init.padding_height =
-      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);
-   RADEON_ENC_CS(enc->enc_pic.session_init.aligned_picture_width);
-   RADEON_ENC_CS(enc->enc_pic.session_init.aligned_picture_height);
-   RADEON_ENC_CS(enc->enc_pic.session_init.padding_width);
-   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();
-}
-
-static void radeon_enc_session_init_hevc(struct radeon_encoder *enc)
-{
-   enc->enc_pic.session_init.encode_standard = RENCODE_ENCODE_STANDARD_HEVC;
-   enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, 64);
+   if (u_reduce_video_profile(enc->base.profile) == PIPE_VIDEO_FORMAT_MPEG4_AVC) {
+      enc->enc_pic.session_init.encode_standard = RENCODE_ENCODE_STANDARD_H264;
+      enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, 16);
+   } else if (u_reduce_video_profile(enc->base.profile) == PIPE_VIDEO_FORMAT_HEVC) {
+      enc->enc_pic.session_init.encode_standard = RENCODE_ENCODE_STANDARD_HEVC;
+      enc->enc_pic.session_init.aligned_picture_width = align(enc->base.width, 64);
+   }
    enc->enc_pic.session_init.aligned_picture_height = align(enc->base.height, 16);
    enc->enc_pic.session_init.padding_width =
       enc->enc_pic.session_init.aligned_picture_width - enc->base.width;
@@ -1346,9 +1326,9 @@ void radeon_enc_1_2_init(struct radeon_encoder *enc)
    enc->op_init_rc_vbv = radeon_enc_op_init_rc_vbv;
    enc->op_preset = radeon_enc_op_speed;
    enc->encode_params = radeon_enc_encode_params;
+   enc->session_init = radeon_enc_session_init;
 
    if (u_reduce_video_profile(enc->base.profile) == PIPE_VIDEO_FORMAT_MPEG4_AVC) {
-      enc->session_init = radeon_enc_session_init;
       enc->slice_control = radeon_enc_slice_control;
       enc->spec_misc = radeon_enc_spec_misc;
       enc->deblocking_filter = radeon_enc_deblocking_filter_h264;
@@ -1360,7 +1340,6 @@ void radeon_enc_1_2_init(struct radeon_encoder *enc)
       enc->nalu_prefix = radeon_enc_nalu_prefix;
       enc->nalu_sei = radeon_enc_nalu_sei;
    } else if (u_reduce_video_profile(enc->base.profile) == PIPE_VIDEO_FORMAT_HEVC) {
-      enc->session_init = radeon_enc_session_init_hevc;
       enc->slice_control = radeon_enc_slice_control_hevc;
       enc->spec_misc = radeon_enc_spec_misc_hevc;
       enc->deblocking_filter = radeon_enc_deblocking_filter_hevc;



More information about the mesa-commit mailing list