Message ID | 20200204025641.218376-10-senozhatsky@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Implement V4L2_BUF_FLAG_NO_CACHE_* flags | expand |
On 2/4/20 3:56 AM, Sergey Senozhatsky wrote: > Add V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS to fill_buf_caps(), which > is set when queue supports user-space cache management hints. Ah, you add the capability here :-) This should be moved forward in the series. Actually, I think this should be merged with the first patch of the series. Regards, Hans > > Change-Id: Ieac93f3726c61fd3b88e02c36980c1f3c7a82ecc > Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> > --- > Documentation/media/uapi/v4l/vidioc-reqbufs.rst | 7 +++++++ > drivers/media/common/videobuf2/videobuf2-v4l2.c | 2 ++ > include/uapi/linux/videodev2.h | 1 + > 3 files changed, 10 insertions(+) > > diff --git a/Documentation/media/uapi/v4l/vidioc-reqbufs.rst b/Documentation/media/uapi/v4l/vidioc-reqbufs.rst > index 9741dac0d5b3..80603f57eb8a 100644 > --- a/Documentation/media/uapi/v4l/vidioc-reqbufs.rst > +++ b/Documentation/media/uapi/v4l/vidioc-reqbufs.rst > @@ -165,6 +165,13 @@ aborting or finishing any DMA in progress, an implicit > - Only valid for stateless decoders. If set, then userspace can set the > ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag to hold off on returning the > capture buffer until the OUTPUT timestamp changes. > + * - ``V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS`` > + - 0x00000040 > + - Set when the queue/buffer support memory consistency and cache > + management hints. See :ref:`V4L2_FLAG_MEMORY_NON_CONSISTENT`, > + :ref:`V4L2_BUF_FLAG_NO_CACHE_INVALIDATE` and > + :ref:`V4L2_BUF_FLAG_NO_CACHE_CLEAN`. > + > > Return Value > ============ > diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c > index eb5d1306cb03..22ae0ff64684 100644 > --- a/drivers/media/common/videobuf2/videobuf2-v4l2.c > +++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c > @@ -698,6 +698,8 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps) > *caps |= V4L2_BUF_CAP_SUPPORTS_DMABUF; > if (q->subsystem_flags & VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF) > *caps |= V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF; > + if (q->allow_cache_hints) > + *caps |= V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS; > #ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API > if (q->supports_requests) > *caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS; > diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h > index 169a8cf345ed..12b1bd220347 100644 > --- a/include/uapi/linux/videodev2.h > +++ b/include/uapi/linux/videodev2.h > @@ -951,6 +951,7 @@ struct v4l2_requestbuffers { > #define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3) > #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4) > #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) > +#define V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS (1 << 6) > > /** > * struct v4l2_plane - plane info for multi-planar buffers >
On (20/02/19 09:33), Hans Verkuil wrote: > On 2/4/20 3:56 AM, Sergey Senozhatsky wrote: > > Add V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS to fill_buf_caps(), which > > is set when queue supports user-space cache management hints. > > Ah, you add the capability here :-) > > This should be moved forward in the series. Actually, I think this should > be merged with the first patch of the series. OK, can squash. This way I don't have to split 03/12. I can also update V4L2_BUF_FLAG_NO_CACHE_INVALIDATE/CLEAN in 01/12 then. Would that work? -ss
On 2/19/20 9:45 AM, Sergey Senozhatsky wrote: > On (20/02/19 09:33), Hans Verkuil wrote: >> On 2/4/20 3:56 AM, Sergey Senozhatsky wrote: >>> Add V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS to fill_buf_caps(), which >>> is set when queue supports user-space cache management hints. >> >> Ah, you add the capability here :-) >> >> This should be moved forward in the series. Actually, I think this should >> be merged with the first patch of the series. > > OK, can squash. This way I don't have to split 03/12. > > I can also update V4L2_BUF_FLAG_NO_CACHE_INVALIDATE/CLEAN in 01/12 then. > Would that work? Yes, that makes sense. Hans > > -ss >
diff --git a/Documentation/media/uapi/v4l/vidioc-reqbufs.rst b/Documentation/media/uapi/v4l/vidioc-reqbufs.rst index 9741dac0d5b3..80603f57eb8a 100644 --- a/Documentation/media/uapi/v4l/vidioc-reqbufs.rst +++ b/Documentation/media/uapi/v4l/vidioc-reqbufs.rst @@ -165,6 +165,13 @@ aborting or finishing any DMA in progress, an implicit - Only valid for stateless decoders. If set, then userspace can set the ``V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF`` flag to hold off on returning the capture buffer until the OUTPUT timestamp changes. + * - ``V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS`` + - 0x00000040 + - Set when the queue/buffer support memory consistency and cache + management hints. See :ref:`V4L2_FLAG_MEMORY_NON_CONSISTENT`, + :ref:`V4L2_BUF_FLAG_NO_CACHE_INVALIDATE` and + :ref:`V4L2_BUF_FLAG_NO_CACHE_CLEAN`. + Return Value ============ diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c index eb5d1306cb03..22ae0ff64684 100644 --- a/drivers/media/common/videobuf2/videobuf2-v4l2.c +++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c @@ -698,6 +698,8 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps) *caps |= V4L2_BUF_CAP_SUPPORTS_DMABUF; if (q->subsystem_flags & VB2_V4L2_FL_SUPPORTS_M2M_HOLD_CAPTURE_BUF) *caps |= V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF; + if (q->allow_cache_hints) + *caps |= V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS; #ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API if (q->supports_requests) *caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS; diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 169a8cf345ed..12b1bd220347 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -951,6 +951,7 @@ struct v4l2_requestbuffers { #define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3) #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4) #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) +#define V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS (1 << 6) /** * struct v4l2_plane - plane info for multi-planar buffers
Add V4L2_BUF_CAP_SUPPORTS_CACHE_HINTS to fill_buf_caps(), which is set when queue supports user-space cache management hints. Change-Id: Ieac93f3726c61fd3b88e02c36980c1f3c7a82ecc Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> --- Documentation/media/uapi/v4l/vidioc-reqbufs.rst | 7 +++++++ drivers/media/common/videobuf2/videobuf2-v4l2.c | 2 ++ include/uapi/linux/videodev2.h | 1 + 3 files changed, 10 insertions(+)