diff --git a/.pick_status.json b/.pick_status.json index f351335fbd2..1d4c9d25ba0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4974,7 +4974,7 @@ "description": "radeonsi/vcn: Fix HEVC encode cu_qp_delta with old FW", "nominated": true, "nomination_type": 1, - "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 b18fe6a1c3c..eb966a32aab 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c @@ -627,6 +627,20 @@ static void radeon_vcn_enc_hevc_get_dbk_param(struct radeon_encoder *enc, !pic->seq.sample_adaptive_offset_enabled_flag; } +static bool cu_qp_delta_supported(struct si_screen *sscreen) +{ + if (sscreen->info.vcn_ip_version >= VCN_5_0_0) + return true; + else if (sscreen->info.vcn_ip_version >= VCN_4_0_0) + return sscreen->info.vcn_enc_minor_version >= 7; + else if (sscreen->info.vcn_ip_version >= VCN_3_0_0) + return sscreen->info.vcn_enc_minor_version >= 26; + else if (sscreen->info.vcn_ip_version >= VCN_2_0_0) + return sscreen->info.vcn_enc_minor_version >= 20; + else + return false; +} + static void radeon_vcn_enc_hevc_get_spec_misc_param(struct radeon_encoder *enc, struct pipe_h265_enc_picture_desc *pic) { @@ -648,8 +662,7 @@ static void radeon_vcn_enc_hevc_get_spec_misc_param(struct radeon_encoder *enc, sscreen->info.vcn_ip_version < VCN_3_0_0 || !pic->pic.transform_skip_enabled_flag; enc->enc_pic.hevc_spec_misc.cu_qp_delta_enabled_flag = - (sscreen->info.vcn_ip_version >= VCN_2_0_0 && - pic->pic.cu_qp_delta_enabled_flag) || + (cu_qp_delta_supported(sscreen) && pic->pic.cu_qp_delta_enabled_flag) || enc->enc_pic.enc_qp_map.qp_map_type || enc->enc_pic.rc_session_init.rate_control_method; } 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 ba9ebde37ae..5bffa655c5b 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc_2_0.c @@ -15,7 +15,7 @@ #include #define RENCODE_FW_INTERFACE_MAJOR_VERSION 1 -#define RENCODE_FW_INTERFACE_MINOR_VERSION 1 +#define RENCODE_FW_INTERFACE_MINOR_VERSION 20 static void radeon_enc_op_preset(struct radeon_encoder *enc) {