radeonsi/vcn: Re-enable AV1 unidir for new FW

The previous bitrate overshoot issue is fixed with new FW.

Reviewed-by: David Rosca <david.rosca@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38287>
This commit is contained in:
Benjamin Cheng
2025-11-06 11:21:29 -05:00
committed by Marge Bot
parent a9b2e9e480
commit 3b9e2e9edc
2 changed files with 6 additions and 1 deletions
@@ -1050,7 +1050,7 @@ static void radeon_vcn_enc_av1_get_param(struct radeon_encoder *enc,
enc_pic->av1.primary_ref_frame = pic->ref_list0[0];
if (sscreen->info.vcn_ip_version >= VCN_5_0_0) {
bool allow_unidir =
bool allow_unidir = enc_pic->av1_unidir_rc_available ||
pic->rc[0].rate_ctrl_method == PIPE_H2645_ENC_RATE_CONTROL_METHOD_DISABLE;
for (uint32_t i = 0; i < RENCODE_AV1_REFS_PER_FRAME; i++)
@@ -2178,6 +2178,10 @@ struct pipe_video_codec *radeon_create_encoder(struct pipe_context *context,
}
if (sscreen->info.vcn_enc_minor_version >= 8)
enc->enc_pic.has_dependent_slice_instructions = true;
if (sscreen->info.vcn_enc_minor_version > 8 ||
(sscreen->info.vcn_enc_minor_version == 8 &&
sscreen->info.vcn_fw_revision >= 6))
enc->enc_pic.av1_unidir_rc_available = true;
}
else if (sscreen->info.vcn_ip_version >= VCN_4_0_0) {
if (sscreen->info.vcn_enc_minor_version >= 1)
@@ -105,6 +105,7 @@ struct radeon_enc_pic {
bool use_rc_per_pic_ex;
bool av1_tile_splitting_legacy_flag;
bool has_dependent_slice_instructions;
bool av1_unidir_rc_available;
struct {
union {