From 52602452abd1b1d543161d4407afcf1812427ad7 Mon Sep 17 00:00:00 2001 From: SureshGuttula Date: Tue, 29 Jun 2021 10:41:14 +0530 Subject: [PATCH] radeon/vcn: calc_dpb_size should be based on dpb_type This patch will fix the dpb size calculated for each dpb_type. Current implementaion always calculating based on DPB_MAX_RES.To fix this dpb_type should be decided before calc_dpb_size. Signed-off-by: SureshGuttula Reviewed-by: Leo Liu Part-of: --- src/gallium/drivers/radeon/radeon_vcn_dec.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/radeon/radeon_vcn_dec.c b/src/gallium/drivers/radeon/radeon_vcn_dec.c index 454b79800a7..ee6ff99fd5a 100644 --- a/src/gallium/drivers/radeon/radeon_vcn_dec.c +++ b/src/gallium/drivers/radeon/radeon_vcn_dec.c @@ -2421,6 +2421,14 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context, } } + if (sctx->family >= CHIP_SIENNA_CICHLID && + (stream_type == RDECODE_CODEC_VP9 || stream_type == RDECODE_CODEC_AV1)) + dec->dpb_type = DPB_DYNAMIC_TIER_2; + else if (sctx->family <= CHIP_NAVI14 && stream_type == RDECODE_CODEC_VP9) + dec->dpb_type = DPB_DYNAMIC_TIER_1; + else + dec->dpb_type = DPB_MAX_RES; + dec->db_alignment = (((struct si_screen *)dec->screen)->info.family >= CHIP_RENOIR && dec->base.width > 32 && (dec->stream_type == RDECODE_CODEC_VP9 || dec->stream_type == RDECODE_CODEC_AV1 || @@ -2487,13 +2495,6 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context, else dec->send_cmd = send_cmd_dec; - if (sctx->family >= CHIP_SIENNA_CICHLID && - (stream_type == RDECODE_CODEC_VP9 || stream_type == RDECODE_CODEC_AV1)) - dec->dpb_type = DPB_DYNAMIC_TIER_2; - else if (sctx->family <= CHIP_NAVI14 && stream_type == RDECODE_CODEC_VP9) - dec->dpb_type = DPB_DYNAMIC_TIER_1; - else - dec->dpb_type = DPB_MAX_RES; if (dec->dpb_type == DPB_DYNAMIC_TIER_2) { list_inithead(&dec->dpb_ref_list);