Re: [PATCH] mediatek/vcodec: Enable incoherent buffer allocation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sure thing! Sorry about that, I think something got messed up with the
tabs. I've switched the "=" padding to spaces to spacing to make sure
everything is consistent. I think the removals part of the diff might
still look odd on some clients because of the tabs though.


diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
index 52e5d36aa912..6a47b34c5bc9 100644
--- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
+++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
@@ -929,30 +929,32 @@ int mtk_vcodec_dec_queue_init(void *priv, struct
vb2_queue *src_vq,

  mtk_v4l2_debug(3, "[%d]", ctx->id);

- src_vq->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
- src_vq->io_modes = VB2_DMABUF | VB2_MMAP;
- src_vq->drv_priv = ctx;
- src_vq->buf_struct_size = sizeof(struct mtk_video_dec_buf);
- src_vq->ops = ctx->dev->vdec_pdata->vdec_vb2_ops;
- src_vq->mem_ops = &vb2_dma_contig_memops;
- src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
- src_vq->lock = &ctx->dev->dev_mutex;
- src_vq->dev             = &ctx->dev->plat_dev->dev;
+ src_vq->type              = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
+ src_vq->io_modes          = VB2_DMABUF | VB2_MMAP;
+ src_vq->drv_priv          = ctx;
+ src_vq->buf_struct_size   = sizeof(struct mtk_video_dec_buf);
+ src_vq->ops               = ctx->dev->vdec_pdata->vdec_vb2_ops;
+ src_vq->mem_ops           = &vb2_dma_contig_memops;
+ src_vq->timestamp_flags   = V4L2_BUF_FLAG_TIMESTAMP_COPY;
+ src_vq->lock              = &ctx->dev->dev_mutex;
+ src_vq->dev               = &ctx->dev->plat_dev->dev;
+ src_vq->allow_cache_hints = 1;

  ret = vb2_queue_init(src_vq);
  if (ret) {
  mtk_v4l2_err("Failed to initialize videobuf2 queue(output)");
  return ret;
  }
- dst_vq->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
- dst_vq->io_modes = VB2_DMABUF | VB2_MMAP;
- dst_vq->drv_priv = ctx;
- dst_vq->buf_struct_size = sizeof(struct mtk_video_dec_buf);
- dst_vq->ops = ctx->dev->vdec_pdata->vdec_vb2_ops;
- dst_vq->mem_ops = &vb2_dma_contig_memops;
- dst_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
- dst_vq->lock = &ctx->dev->dev_mutex;
- dst_vq->dev             = &ctx->dev->plat_dev->dev;
+ dst_vq->type              = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+ dst_vq->io_modes          = VB2_DMABUF | VB2_MMAP;
+ dst_vq->drv_priv          = ctx;
+ dst_vq->buf_struct_size   = sizeof(struct mtk_video_dec_buf);
+ dst_vq->ops               = ctx->dev->vdec_pdata->vdec_vb2_ops;
+ dst_vq->mem_ops           = &vb2_dma_contig_memops;
+ dst_vq->timestamp_flags   = V4L2_BUF_FLAG_TIMESTAMP_COPY;
+ dst_vq->lock              = &ctx->dev->dev_mutex;
+ dst_vq->dev               = &ctx->dev->plat_dev->dev;
+ dst_vq->allow_cache_hints = 1;

  ret = vb2_queue_init(dst_vq);
  if (ret)
-- 
2.36.1.255.ge46751e96f-goog

On Tue, May 31, 2022 at 9:38 PM Sergey Senozhatsky
<senozhatsky@xxxxxxxxxxxx> wrote:
>
> On (22/05/31 17:10), Justin Green wrote:
> > Set allow_cache_hints to 1 for the vb2_queue source and destination queues
> > in the mediatek vcodec V4L2 driver. This allows us to allocate buffers
> > with the V4L2_MEMORY_FLAG_NON_COHERENT set. On Mediatek SoCs, this enables
> > caching for this memory, which vastly improves performance when being read
> > from CPU. Read performance for these buffers is in turn important for
> > detiling MM21 video frames in software.
> >
> > This change should be safe from race conditions since videobuf2 already
> > invalidates or flushes the appropriate cache lines in its prepare() and
> > finish() methods.
> >
> > Tested on a MT8183 SoC. Resulted in both correct detiling and a 10X
> > speedup.
>
> Hi Justin,
>
> It seems that something has happened to tabs and code formatting,
> could you double check and resend?
>
> > @@ -929,30 +929,32 @@ int mtk_vcodec_dec_queue_init(void *priv, struct
> > vb2_queue *src_vq,
> >
> >   mtk_v4l2_debug(3, "[%d]", ctx->id);
> >
> > - src_vq->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
> > - src_vq->io_modes = VB2_DMABUF | VB2_MMAP;
> > - src_vq->drv_priv = ctx;
> > - src_vq->buf_struct_size = sizeof(struct mtk_video_dec_buf);
> > - src_vq->ops = ctx->dev->vdec_pdata->vdec_vb2_ops;
> > - src_vq->mem_ops = &vb2_dma_contig_memops;
> > - src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
> > - src_vq->lock = &ctx->dev->dev_mutex;
> > - src_vq->dev             = &ctx->dev->plat_dev->dev;
> > + src_vq->type   = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
> > + src_vq->io_modes   = VB2_DMABUF | VB2_MMAP;
> > + src_vq->drv_priv   = ctx;
> > + src_vq->buf_struct_size   = sizeof(struct mtk_video_dec_buf);
> > + src_vq->ops   = ctx->dev->vdec_pdata->vdec_vb2_ops;
> > + src_vq->mem_ops   = &vb2_dma_contig_memops;
> > + src_vq->timestamp_flags   = V4L2_BUF_FLAG_TIMESTAMP_COPY;
> > + src_vq->lock   = &ctx->dev->dev_mutex;
> > + src_vq->dev               = &ctx->dev->plat_dev->dev;
> > + src_vq->allow_cache_hints = 1;
>
> I guess it should look something like this
>
> -       src_vq->type            = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
> -       src_vq->io_modes        = VB2_DMABUF | VB2_MMAP;
> -       src_vq->drv_priv        = ctx;
> -       src_vq->buf_struct_size = sizeof(struct mtk_video_dec_buf);
> -       src_vq->ops             = ctx->dev->vdec_pdata->vdec_vb2_ops;
> -       src_vq->mem_ops         = &vb2_dma_contig_memops;
> -       src_vq->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_COPY;
> -       src_vq->lock            = &ctx->dev->dev_mutex;
> -       src_vq->dev             = &ctx->dev->plat_dev->dev;
> +       src_vq->type                    = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
> +       src_vq->io_modes                = VB2_DMABUF | VB2_MMAP;
> +       src_vq->drv_priv                = ctx;
> +       src_vq->buf_struct_size         = sizeof(struct mtk_video_dec_buf);
> +       src_vq->ops                     = ctx->dev->vdec_pdata->vdec_vb2_ops;
> +       src_vq->mem_ops                 = &vb2_dma_contig_memops;
> +       src_vq->timestamp_flags         = V4L2_BUF_FLAG_TIMESTAMP_COPY;
> +       src_vq->lock                    = &ctx->dev->dev_mutex;
> +       src_vq->dev                     = &ctx->dev->plat_dev->dev;
> +       src_vq->allow_cache_hints       = 1;



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux