radeon/vcn: calc_dpb_size should be based on dpb_type
authorSureshGuttula <suresh.guttula@amd.corp-partner.google.com>
Tue, 29 Jun 2021 05:11:14 +0000 (10:41 +0530)
committerMarge Bot <eric+marge@anholt.net>
Wed, 30 Jun 2021 14:22:37 +0000 (14:22 +0000)
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 <suresh.guttula@amd.corp-partner.google.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11633>

src/gallium/drivers/radeon/radeon_vcn_dec.c

index 454b798..ee6ff99 100644 (file)
@@ -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);