diff --git a/driver/variant/iris3/src/msm_vidc_buffer_iris3.c b/driver/variant/iris3/src/msm_vidc_buffer_iris3.c index 99c72ec196..5d885be391 100644 --- a/driver/variant/iris3/src/msm_vidc_buffer_iris3.c +++ b/driver/variant/iris3/src/msm_vidc_buffer_iris3.c @@ -290,9 +290,14 @@ static u32 msm_vidc_decoder_dpb_size_iris3(struct msm_vidc_inst *inst) * enabled bitstreams (UBWC & linear). */ color_fmt = inst->capabilities->cap[PIX_FMTS].value; - if (!is_linear_colorformat(color_fmt) && - inst->codec != MSM_VIDC_AV1) - return size; + if (!is_linear_colorformat(color_fmt)) { + if (inst->codec != MSM_VIDC_AV1) + return size; + + if (inst->codec == MSM_VIDC_AV1 && + !inst->capabilities->cap[FILM_GRAIN].value) + return size; + } f = &inst->fmts[OUTPUT_PORT]; width = f->fmt.pix_mp.width; diff --git a/driver/variant/iris33/src/msm_vidc_buffer_iris33.c b/driver/variant/iris33/src/msm_vidc_buffer_iris33.c index e7e80b65be..8c298be647 100644 --- a/driver/variant/iris33/src/msm_vidc_buffer_iris33.c +++ b/driver/variant/iris33/src/msm_vidc_buffer_iris33.c @@ -290,9 +290,14 @@ static u32 msm_vidc_decoder_dpb_size_iris33(struct msm_vidc_inst *inst) * enabled bitstreams (UBWC & linear). */ color_fmt = inst->capabilities->cap[PIX_FMTS].value; - if (!is_linear_colorformat(color_fmt) && - inst->codec != MSM_VIDC_AV1) - return size; + if (!is_linear_colorformat(color_fmt)) { + if (inst->codec != MSM_VIDC_AV1) + return size; + + if (inst->codec == MSM_VIDC_AV1 && + !inst->capabilities->cap[FILM_GRAIN].value) + return size; + } f = &inst->fmts[OUTPUT_PORT]; width = f->fmt.pix_mp.width;