On 16/10/2023 16:20, Benjamin Gaignard wrote: > > Le 16/10/2023 à 12:32, Hans Verkuil a écrit : >> On 12/10/2023 13:46, Benjamin Gaignard wrote: >>> Change the maximum number of buffers of some capture queues in order >>> to test max_num_buffers field. >>> >>> Allow to allocate up to: >>> - 64 buffers for video capture queue. >>> - 1024 buffers for sdr capture queue. >>> - 32768 buffers for vbi capture queue. >>> >>> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxxxxx> >>> --- >>> drivers/media/test-drivers/vivid/vivid-core.c | 7 +++++++ >>> 1 file changed, 7 insertions(+) >>> >>> diff --git a/drivers/media/test-drivers/vivid/vivid-core.c b/drivers/media/test-drivers/vivid/vivid-core.c >>> index 394c9f81ea72..b5656330578d 100644 >>> --- a/drivers/media/test-drivers/vivid/vivid-core.c >>> +++ b/drivers/media/test-drivers/vivid/vivid-core.c >>> @@ -876,6 +876,13 @@ static int vivid_create_queue(struct vivid_dev *dev, >>> q->type = buf_type; >>> q->io_modes = VB2_MMAP | VB2_DMABUF; >>> q->io_modes |= V4L2_TYPE_IS_OUTPUT(buf_type) ? VB2_WRITE : VB2_READ; >>> + if (buf_type == V4L2_BUF_TYPE_VIDEO_CAPTURE) >>> + q->max_num_buffers = 64; >>> + if (buf_type == V4L2_BUF_TYPE_SDR_CAPTURE) >>> + q->max_num_buffers = 1024; >>> + if (buf_type == V4L2_BUF_TYPE_VBI_CAPTURE) >>> + q->max_num_buffers = 32768; >> This should use the same calculation as MAX_BUFFER_INDEX. >> >> I wonder if those defines should move to videobuf2-core.h instead. > > I'm not sure about what you want here, q->max_num_buffers is clamped in vb2_core_queue_init(): > > /* The maximum is limited by offset cookie encoding pattern */ > q->max_num_buffers = min_t(unsigned int, q->max_num_buffers, MAX_BUFFER_INDEX); > > Do you want to reuse MAX_BUFFER_INDEX for these drivers ? Ah, I forgot about the clamping. Add a comment like this: /* * The maximum number of buffers is 32768 if PAGE_SHIFT == 12, * see also MAX_BUFFER_INDEX in videobuf2-core.c. It will be less if * PAGE_SHIFT > 12, but then max_num_buffers will be clamped by * videobuf2-core.c to MAX_BUFFER_INDEX. */ Regards, Hans > > Regards, > Benjamin > >> >> Regards, >> >> Hans >> >>> + >>> if (allocators[dev->inst] != 1) >>> q->io_modes |= VB2_USERPTR; >>> q->drv_priv = dev; >>