[PATCH v2 13/14] media: mediatek: decoder: fill av1 buffer size with picinfo
Nicolas Dufresne
nicolas.dufresne at collabora.com
Fri Nov 28 12:23:24 PST 2025
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 at mediatek.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne at collabora.com>
> ---
> .../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);
> }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20251128/9ddc6a6a/attachment.sig>
More information about the linux-arm-kernel
mailing list