Currently the vb2 supports_requests bitfield only indicates if the Request API is supported by the vb2_queue. But for stateless codecs the use of the Request API is actually a requirement. So add a requires_requests bitfield and corresponding capability to indicate that userspace has to use requests. And of course reject direct VIDIOC_QBUF calls (i.e. V4L2_BUF_FLAG_REQUEST_FD isn't set) if requires_requests is set. Finally set this bitfield in the cedrus driver. Do the same for controls: it makes no sense to set state controls for stateless codecs directly without going through a request. Add a new flag to indicate this and check it. Regards, Hans Hans Verkuil (6): vb2: add requires_requests bit for stateless codecs videodev2.h: add V4L2_BUF_CAP_REQUIRES_REQUESTS cedrus: set requires_requests videodev2.h: add V4L2_CTRL_FLAG_REQUIRES_REQUESTS v4l2-ctrls: check for REQUIRES_REQUESTS flag v4l2-ctrls: mark MPEG2 stateless controls as REQUIRES_REQUESTS .../media/uapi/v4l/vidioc-queryctrl.rst | 4 ++++ .../media/uapi/v4l/vidioc-reqbufs.rst | 4 ++++ .../media/videodev2.h.rst.exceptions | 1 + .../media/common/videobuf2/videobuf2-core.c | 5 +++- .../media/common/videobuf2/videobuf2-v4l2.c | 6 +++++ drivers/media/v4l2-core/v4l2-ctrls.c | 5 ++++ .../staging/media/sunxi/cedrus/cedrus_video.c | 1 + include/media/videobuf2-core.h | 3 +++ include/uapi/linux/videodev2.h | 24 ++++++++++--------- 9 files changed, 41 insertions(+), 12 deletions(-) -- 2.20.1