Message ID | 20220223034008.15781-6-yunfei.dong@mediatek.com |
---|---|
State | New |
Headers | show |
Series | media: mtk-vcodec: support for M8192 decoder | expand |
Le mercredi 23 février 2022 à 11:39 +0800, Yunfei Dong a écrit : > lat thread: output queue \ > -> lat hardware -> lat trans buffer > lat trans buffer / > > core thread: capture queue \ > ->core hardware -> capture queue > lat trans buffer / > > Lat and core work in different thread, setting capture buffer buffered. ... so that output queue buffers (bitstream) can be process regardless if there is available capture buffers. I have concerns around the usefulness of running a dedicated thread to drive the lat and the core blocks. Having 3 threads (counting the m2m worker thread) here increase the complexity. The hardware is asynchronous by definition. I think this patch will go away after a proper rework of the driver thread model here. > > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> > --- > drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c > index 5aebf88f997b..23a154c4e321 100644 > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c > @@ -314,6 +314,9 @@ static void mtk_init_vdec_params(struct mtk_vcodec_ctx *ctx) > src_vq = v4l2_m2m_get_vq(ctx->m2m_ctx, > V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); > > + if (ctx->dev->vdec_pdata->hw_arch != MTK_VDEC_PURE_SINGLE_CORE) > + v4l2_m2m_set_dst_buffered(ctx->m2m_ctx, 1); > + > /* Support request api for output plane */ > src_vq->supports_requests = true; > src_vq->requires_requests = true;
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c index 5aebf88f997b..23a154c4e321 100644 --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c @@ -314,6 +314,9 @@ static void mtk_init_vdec_params(struct mtk_vcodec_ctx *ctx) src_vq = v4l2_m2m_get_vq(ctx->m2m_ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); + if (ctx->dev->vdec_pdata->hw_arch != MTK_VDEC_PURE_SINGLE_CORE) + v4l2_m2m_set_dst_buffered(ctx->m2m_ctx, 1); + /* Support request api for output plane */ src_vq->supports_requests = true; src_vq->requires_requests = true;
lat thread: output queue \ -> lat hardware -> lat trans buffer lat trans buffer / core thread: capture queue \ ->core hardware -> capture queue lat trans buffer / Lat and core work in different thread, setting capture buffer buffered. Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com> --- drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateless.c | 3 +++ 1 file changed, 3 insertions(+)