From 26429556c50d0e768768b9b2e55a6bef805c1932 Mon Sep 17 00:00:00 2001 From: Yinjie Yao Date: Mon, 25 Nov 2024 15:34:23 -0500 Subject: [PATCH] radeonsi/vcn: Disable 2pass encode for VCN 5.0. VCN 5.0 will not support 2pass encoding. Backport-to: 24.3 Signed-off-by: Yinjie Yao Reviewed-by: Ruijing Dong Part-of: (cherry picked from commit 64ea1175cc88f10c6c5ec06a4c9d2d65436c51a6) --- .pick_status.json | 2 +- src/gallium/drivers/radeonsi/radeon_vcn_enc.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index f5bbdf0c46b..f8befa367e8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4,7 +4,7 @@ "description": "radeonsi/vcn: Disable 2pass encode for VCN 5.0.", "nominated": true, "nomination_type": 4, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c index 552b144c992..39b7e25410e 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c @@ -24,6 +24,7 @@ static void radeon_vcn_enc_quality_modes(struct radeon_encoder *enc, struct pipe_enc_quality_modes *in) { rvcn_enc_quality_modes_t *p = &enc->enc_pic.quality_modes; + struct si_screen *sscreen = (struct si_screen *)enc->screen; p->preset_mode = in->preset_mode > RENCODE_PRESET_MODE_HIGH_QUALITY ? RENCODE_PRESET_MODE_HIGH_QUALITY @@ -39,6 +40,13 @@ static void radeon_vcn_enc_quality_modes(struct radeon_encoder *enc, if (enc->enc_pic.rc_session_init.rate_control_method == RENCODE_RATE_CONTROL_METHOD_QUALITY_VBR) p->pre_encode_mode = RENCODE_PREENCODE_MODE_4X; + /* Disabling 2pass encoding for VCN 5.0 + * This is a temporary limitation only for VCN 5.0 due to HW, + * once verified in future VCN 5.X versions, it will be enabled again. + */ + if (sscreen->info.vcn_ip_version >= VCN_5_0_0) + p->pre_encode_mode = RENCODE_PREENCODE_MODE_NONE; + p->vbaq_mode = in->vbaq_mode ? RENCODE_VBAQ_AUTO : RENCODE_VBAQ_NONE; if (enc->enc_pic.rc_session_init.rate_control_method == RENCODE_RATE_CONTROL_METHOD_NONE)