Re: [PATCH v2 13/14] media: mediatek: decoder: fill av1 buffer size with picinfo

From: Nicolas Dufresne

Date: Fri Nov 28 2025 - 15:23:29 EST


Le vendredi 15 août 2025 à 16:52 +0800, Yunfei Dong a écrit :
> The buffer size of y and c plane has been calculated in vcp/scp,
> can fill each frame buffer size with picinfo directly.
>
> Signed-off-by: Yunfei Dong <yunfei.dong@xxxxxxxxxxxx>

Reviewed-by: Nicolas Dufresne <nicolas.dufresne@xxxxxxxxxxxxx>

> ---
>  .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c      | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git
> a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
> b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
> index 2b2173062cb0..6070485e26c4 100644
> ---
> a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
> +++
> b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
> @@ -1799,18 +1799,19 @@ static int vdec_av1_slice_setup_core_buffer(struct
> vdec_av1_slice_instance *inst
>  {
>   struct vb2_buffer *vb;
>   struct vb2_queue *vq;
> - int w, h, plane, size;
> + int plane;
>   int i;
>  
>   plane = instance->ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes;
> - w = vsi->frame.uh.upscaled_width;
> - h = vsi->frame.uh.frame_height;
> - size = ALIGN(w, VCODEC_DEC_ALIGNED_64) * ALIGN(h,
> VCODEC_DEC_ALIGNED_64);
>  
>   /* frame buffer */
>   vsi->fb.y.dma_addr = fb->base_y.dma_addr;
> +
> + vsi->fb.y.size = instance->ctx->picinfo.fb_sz[0];
> + vsi->fb.c.size = instance->ctx->picinfo.fb_sz[1];
> +
>   if (plane == 1)
> - vsi->fb.c.dma_addr = fb->base_y.dma_addr + size;
> + vsi->fb.c.dma_addr = fb->base_y.dma_addr + vsi->fb.y.size;
>   else
>   vsi->fb.c.dma_addr = fb->base_c.dma_addr;
>  
> @@ -1835,8 +1836,9 @@ static int vdec_av1_slice_setup_core_buffer(struct
> vdec_av1_slice_instance *inst
>   }
>  
>   vref->y.dma_addr = vb2_dma_contig_plane_dma_addr(vb, 0);
> + vref->y.size = vsi->fb.y.size;
>   if (plane == 1)
> - vref->c.dma_addr = vref->y.dma_addr + size;
> + vref->c.dma_addr = vref->y.dma_addr + vsi->fb.y.size;
>   else
>   vref->c.dma_addr = vb2_dma_contig_plane_dma_addr(vb,
> 1);
>   }

Attachment: signature.asc
Description: This is a digitally signed message part