From a9140ec2f778ef41e1c02a58ac5196600351e03a Mon Sep 17 00:00:00 2001 From: David Rosca Date: Fri, 26 Apr 2024 08:41:09 +0200 Subject: [PATCH] radeonsi/vcn: Only enable VBAQ with rate control mode Cc: mesa-stable Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10020 Reviewed-by: Ruijing Dong Part-of: (cherry picked from commit bc72126cb4e425893918e2d17f0cc2a253096651) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c | 4 +++- src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c | 4 +++- src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c | 4 +++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 47dd0996dc4..1e3b35f4918 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -364,7 +364,7 @@ "description": "radeonsi/vcn: Only enable VBAQ with rate control mode", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c index 402681391df..b1d4d40808e 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_1_2.c @@ -221,7 +221,9 @@ static void radeon_enc_deblocking_filter_hevc(struct radeon_encoder *enc) static void radeon_enc_quality_params(struct radeon_encoder *enc) { - enc->enc_pic.quality_params.vbaq_mode = enc->enc_pic.quality_modes.vbaq_mode; + enc->enc_pic.quality_params.vbaq_mode = + enc->enc_pic.rc_session_init.rate_control_method != RENCODE_RATE_CONTROL_METHOD_NONE ? + enc->enc_pic.quality_modes.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 = diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c index a6bfd70b97c..3ecf88e2142 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c @@ -68,7 +68,9 @@ static void radeon_enc_op_preset(struct radeon_encoder *enc) static void radeon_enc_quality_params(struct radeon_encoder *enc) { - enc->enc_pic.quality_params.vbaq_mode = enc->enc_pic.quality_modes.vbaq_mode; + enc->enc_pic.quality_params.vbaq_mode = + enc->enc_pic.rc_session_init.rate_control_method != RENCODE_RATE_CONTROL_METHOD_NONE ? + enc->enc_pic.quality_modes.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 = diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c index ef63a2d745a..f2e217884d4 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_3_0.c @@ -98,7 +98,9 @@ static void radeon_enc_encode_params_h264(struct radeon_encoder *enc) static void radeon_enc_quality_params(struct radeon_encoder *enc) { - enc->enc_pic.quality_params.vbaq_mode = enc->enc_pic.quality_modes.vbaq_mode; + enc->enc_pic.quality_params.vbaq_mode = + enc->enc_pic.rc_session_init.rate_control_method != RENCODE_RATE_CONTROL_METHOD_NONE ? + enc->enc_pic.quality_modes.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 =