From: "Kyrie Wu (吴晗)" <Kyrie.Wu@mediatek.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
"George Sun (孙林)" <George.Sun@mediatek.com>,
"Tiffany Lin (林慧珊)" <tiffany.lin@mediatek.com>,
"nhebert@chromium.org" <nhebert@chromium.org>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"mchehab@kernel.org" <mchehab@kernel.org>,
"nicolas.dufresne@collabora.com" <nicolas.dufresne@collabora.com>,
"hverkuil@xs4all.nl" <hverkuil@xs4all.nl>,
"Kyrie Wu (吴晗)" <Kyrie.Wu@mediatek.com>,
"Yunfei Dong (董云飞)" <Yunfei.Dong@mediatek.com>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"Irui Wang (王瑞)" <Irui.Wang@mediatek.com>,
"robh@kernel.org" <robh@kernel.org>,
"sebastian.fricke@collabora.com" <sebastian.fricke@collabora.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
"christophe.jaillet@wanadoo.fr" <christophe.jaillet@wanadoo.fr>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"arnd@arndb.de" <arnd@arndb.de>,
"Andrew-CT Chen (陳智迪)" <Andrew-CT.Chen@mediatek.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>
Cc: "andrzejtp2010@gmail.com" <andrzejtp2010@gmail.com>,
"neil.armstrong@linaro.org" <neil.armstrong@linaro.org>
Subject: Re: [PATCH v4 4/8] media: mediatek: vcodec: Add core-only VP9 decoding support for MT8189
Date: Wed, 22 Oct 2025 05:45:43 +0000 [thread overview]
Message-ID: <0106493ff42524553e4a953757afd21766215e5a.camel@mediatek.com> (raw)
In-Reply-To: <f5956178a0e5d91dabc12e89f666eac2140f141e.camel@collabora.com>
On Thu, 2025-10-16 at 11:19 -0400, Nicolas Dufresne wrote:
> Hi,
>
> Le jeudi 16 octobre 2025 à 14:07 +0800, Kyrie Wu a écrit :
> > Implemented core-only VP9 decoding functions for MT8189.
>
> What does "core-only" means ? Did you mean single core ?
Dear Nicolas,
Yes, it's a right thinking. I will change to "single core" to remove
the missing understanding.
Thanks.
>
> >
> > Signed-off-by: Kyrie Wu <kyrie.wu@mediatek.com>
> > ---
> > .../vcodec/decoder/vdec/vdec_vp9_req_lat_if.c | 27 +++++++++++--
> > ------
> > 1 file changed, 16 insertions(+), 11 deletions(-)
> >
> > diff --git
> > a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_
> > lat_if.c
> > b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_
> > lat_if.c
> > index fa0f406f7726..04197164fb82 100644
> > ---
> > a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_
> > lat_if.c
> > +++
> > b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_
> > lat_if.c
> > @@ -23,6 +23,7 @@
> >
> > #define VP9_TILE_BUF_SIZE 4096
> > #define VP9_PROB_BUF_SIZE 2560
> > +#define VP9_PROB_BUF_4K_SIZE 3840
> > #define VP9_COUNTS_BUF_SIZE 16384
> >
> > #define HDR_FLAG(x) (!!((hdr)->flags & V4L2_VP9_FRAME_FLAG_##x))
> > @@ -616,7 +617,10 @@ static int
> > vdec_vp9_slice_alloc_working_buffer(struct
> > vdec_vp9_slice_instance *i
> > }
> >
> > if (!instance->prob.va) {
> > - instance->prob.size = VP9_PROB_BUF_SIZE;
> > + instance->prob.size = ((ctx->dev->chip_name ==
> > MTK_VDEC_MT8196) ||
> > + (ctx->dev->chip_name ==
> > MTK_VDEC_MT8189)) ?
> > + VP9_PROB_BUF_4K_SIZE :
> > VP9_PROB_BUF_SIZE;
>
> I feel like this will keep growing, then you'll move to 8K and it
> will continue.
> You already match every SoC in the driver, you should come up with
> SoC
> configuration data structure so you don't have to add doc check
> conditions all
> over the place. This change is also not reflected in the commit
> message.
The prob size is independent with resolution. Based on feedback from
hardware designer, this size won't increase. Different ICs will only
choose between 4096 and 2560. However, as more ICs are added, redundant
code will become increasingly common. I'm considering adding a function
to handle this, as shown below:
static int mtk_vcodec_get_vp9_prob_size(int chip_name)
{
switch (chip_name) {
case MTK_VDEC_MT8189:
case MTK_VDEC_MT8189:
return VP9_PROB_BUF_4K_SIZE;
default:
return VP9_PROB_BUF_SIZE;
}
}
the prob size is set like that:
instance->prob.size =
mtk_vcodec_get_vp9_prob_size(...)
Could you please give further comments for above solution?
Thanks.
>
> > +
> > if (mtk_vcodec_mem_alloc(ctx, &instance->prob))
> > goto err;
> > }
> > @@ -696,21 +700,22 @@ static int vdec_vp9_slice_tile_offset(int
> > idx, int
> > mi_num, int tile_log2)
> > return min(offset, mi_num);
> > }
> >
> > -static
> > -int vdec_vp9_slice_setup_single_from_src_to_dst(struct
> > vdec_vp9_slice_instance *instance)
> > +static int vdec_vp9_slice_setup_single_from_src_to_dst(struct
> > vdec_vp9_slice_instance *instance,
> > + struct
> > mtk_vcodec_mem
> > *bs,
> > + struct vdec_fb
> > *fb)
> > {
> > - struct vb2_v4l2_buffer *src;
> > - struct vb2_v4l2_buffer *dst;
> > + struct mtk_video_dec_buf *src_buf_info;
> > + struct mtk_video_dec_buf *dst_buf_info;
> >
> > - src = v4l2_m2m_next_src_buf(instance->ctx->m2m_ctx);
> > - if (!src)
> > + src_buf_info = container_of(bs, struct mtk_video_dec_buf,
> > bs_buffer);
> > + if (!src_buf_info)
> > return -EINVAL;
> >
> > - dst = v4l2_m2m_next_dst_buf(instance->ctx->m2m_ctx);
> > - if (!dst)
> > + dst_buf_info = container_of(fb, struct mtk_video_dec_buf,
> > frame_buffer);
> > + if (!dst_buf_info)
> > return -EINVAL;
> >
> > - v4l2_m2m_buf_copy_metadata(src, dst, true);
> > + v4l2_m2m_buf_copy_metadata(&src_buf_info->m2m_buf.vb,
> > &dst_buf_info-
> > > m2m_buf.vb, true);
> >
> >
> > return 0;
> > }
> > @@ -1800,7 +1805,7 @@ static int vdec_vp9_slice_setup_single(struct
> > vdec_vp9_slice_instance *instance,
> > struct vdec_vp9_slice_vsi *vsi = &pfc->vsi;
> > int ret;
> >
> > - ret = vdec_vp9_slice_setup_single_from_src_to_dst(instance);
> > + ret = vdec_vp9_slice_setup_single_from_src_to_dst(instance, bs,
> > fb);
>
> This entire change is not explained in the commit message at all.
> Explain why
> this is needed, what difference it makes. There is no clear
> indication we are in
> an MT8189 code path, so this change could have a incidence on all
> single core
> SoC (if any).
>
> Nicolas
In the decoding software flow, the app queue src or dst buffer to the
driver will try to schedule the decoding software flow by queuing the
work queue. At this time, only one of the src or dst buffer can be
obtained. However, in the original software flow, calling the
vdec_vp9_slice_setup_single_from_src_to_dst function using
v4l2_m2m_next_src_buf to get the src and dst buffers will return
-EINVAL, interrupting the decoding pipeline. Therefore, this interface
needs to be modified to set both src and dst buffer to set metadata.
Thanks.
Regards,
Kyrie.
>
> > if (ret)
> > goto err;
> >
next prev parent reply other threads:[~2025-10-22 5:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-16 6:07 [PATCH v4 0/8] Enable video decoder & encoder " Kyrie Wu
2025-10-16 6:07 ` [PATCH v4 1/8] dt-bindings: media: mediatek: decoder: Add MT8189 mediatek,vcodec-decoder Kyrie Wu
2025-10-16 6:07 ` [PATCH v4 2/8] media: mediatek: vcodec: add decoder compatible to support MT8189 Kyrie Wu
2025-10-16 6:07 ` [PATCH v4 3/8] media: mediatek: vcodec: add profile and level supporting for MT8189 Kyrie Wu
2025-10-16 6:07 ` [PATCH v4 4/8] media: mediatek: vcodec: Add core-only VP9 decoding support " Kyrie Wu
2025-10-16 15:19 ` Nicolas Dufresne
2025-10-22 5:45 ` Kyrie Wu (吴晗) [this message]
2025-10-16 6:07 ` [PATCH v4 5/8] media: mediatek: vcodec: fix vp9 4096x2176 fail for profile2 Kyrie Wu
2025-10-16 6:07 ` [PATCH v4 6/8] media: mediatek: vcodec: fix media device node number Kyrie Wu
2025-10-16 6:07 ` [PATCH v4 7/8] dt-bindings: media: Add MT8189 mediatek,vcodec-encoder Kyrie Wu
2025-10-16 6:07 ` [PATCH v4 8/8] media: mediatek: encoder: Add MT8189 encoder compatible data Kyrie Wu
2025-10-16 14:42 ` [PATCH v4 0/8] Enable video decoder & encoder for MT8189 Nicolas Dufresne
2025-10-22 2:41 ` Kyrie Wu (吴晗)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0106493ff42524553e4a953757afd21766215e5a.camel@mediatek.com \
--to=kyrie.wu@mediatek.com \
--cc=Andrew-CT.Chen@mediatek.com \
--cc=George.Sun@mediatek.com \
--cc=Irui.Wang@mediatek.com \
--cc=Yunfei.Dong@mediatek.com \
--cc=andrzejtp2010@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=arnd@arndb.de \
--cc=christophe.jaillet@wanadoo.fr \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=hverkuil@xs4all.nl \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=mchehab@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=nhebert@chromium.org \
--cc=nicolas.dufresne@collabora.com \
--cc=robh@kernel.org \
--cc=sebastian.fricke@collabora.com \
--cc=tiffany.lin@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®