All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
To: Dafna Hirschfeld <dafna3@gmail.com>, linux-media@vger.kernel.org
Cc: hverkuil@xs4all.nl, helen.koike@collabora.com,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>
Subject: Re: [PATCH v5 01/23] vb2: add requires_requests bit for stateless codecs
Date: Tue, 12 Mar 2019 16:29:31 +0100	[thread overview]
Message-ID: <8c7f6920833513818a290b778f0a4dc4a03c99b0.camel@bootlin.com> (raw)
In-Reply-To: <20190306211343.15302-2-dafna3@gmail.com>

Hi,

On Wed, 2019-03-06 at 13:13 -0800, Dafna Hirschfeld wrote:
> From: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> 
> Stateless codecs require the use of the Request API as opposed of it
> being optional.
> 
> So add a bit to indicate this and let vb2 check for this.
> 
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>

Cheers,

Paul

> ---
>  drivers/media/common/videobuf2/videobuf2-core.c | 5 ++++-
>  drivers/media/common/videobuf2/videobuf2-v4l2.c | 6 ++++++
>  include/media/videobuf2-core.h                  | 3 +++
>  3 files changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
> index 15b6b9c0a2e4..d8cf9d3ec54d 100644
> --- a/drivers/media/common/videobuf2/videobuf2-core.c
> +++ b/drivers/media/common/videobuf2/videobuf2-core.c
> @@ -1518,7 +1518,7 @@ int vb2_core_qbuf(struct vb2_queue *q, unsigned int index, void *pb,
>  
>  	if ((req && q->uses_qbuf) ||
>  	    (!req && vb->state != VB2_BUF_STATE_IN_REQUEST &&
> -	     q->uses_requests)) {
> +	     (q->uses_requests || q->requires_requests))) {
>  		dprintk(1, "queue in wrong mode (qbuf vs requests)\n");
>  		return -EBUSY;
>  	}
> @@ -2247,6 +2247,9 @@ int vb2_core_queue_init(struct vb2_queue *q)
>  	    WARN_ON(!q->ops->buf_queue))
>  		return -EINVAL;
>  
> +	if (WARN_ON(q->requires_requests && !q->supports_requests))
> +		return -EINVAL;
> +
>  	INIT_LIST_HEAD(&q->queued_list);
>  	INIT_LIST_HEAD(&q->done_list);
>  	spin_lock_init(&q->done_lock);
> diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c
> index d09dee20e421..4dc4855056f1 100644
> --- a/drivers/media/common/videobuf2/videobuf2-v4l2.c
> +++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c
> @@ -385,6 +385,10 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md
>  			dprintk(1, "%s: queue uses requests\n", opname);
>  			return -EBUSY;
>  		}
> +		if (q->requires_requests) {
> +			dprintk(1, "%s: queue requires requests\n", opname);
> +			return -EACCES;
> +		}
>  		return 0;
>  	} else if (!q->supports_requests) {
>  		dprintk(1, "%s: queue does not support requests\n", opname);
> @@ -658,6 +662,8 @@ static void fill_buf_caps(struct vb2_queue *q, u32 *caps)
>  #ifdef CONFIG_MEDIA_CONTROLLER_REQUEST_API
>  	if (q->supports_requests)
>  		*caps |= V4L2_BUF_CAP_SUPPORTS_REQUESTS;
> +	if (q->requires_requests)
> +		*caps |= V4L2_BUF_CAP_REQUIRES_REQUESTS;
>  #endif
>  }
>  
> diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
> index 910f3d469005..fbf8dbbcbc09 100644
> --- a/include/media/videobuf2-core.h
> +++ b/include/media/videobuf2-core.h
> @@ -484,6 +484,8 @@ struct vb2_buf_ops {
>   *              has not been called. This is a vb1 idiom that has been adopted
>   *              also by vb2.
>   * @supports_requests: this queue supports the Request API.
> + * @requires_requests: this queue requires the Request API. If this is set to 1,
> + *		then supports_requests must be set to 1 as well.
>   * @uses_qbuf:	qbuf was used directly for this queue. Set to 1 the first
>   *		time this is called. Set to 0 when the queue is canceled.
>   *		If this is 1, then you cannot queue buffers from a request.
> @@ -558,6 +560,7 @@ struct vb2_queue {
>  	unsigned			allow_zero_bytesused:1;
>  	unsigned		   quirk_poll_must_check_waiting_for_buffers:1;
>  	unsigned			supports_requests:1;
> +	unsigned			requires_requests:1;
>  	unsigned			uses_qbuf:1;
>  	unsigned			uses_requests:1;
>  
-- 
Paul Kocialkowski, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com


  reply	other threads:[~2019-03-12 15:29 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-06 21:13 [PATCH v5 00/23] support for stateless decoder Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 01/23] vb2: add requires_requests bit for stateless codecs Dafna Hirschfeld
2019-03-12 15:29   ` Paul Kocialkowski [this message]
2019-03-20 10:21   ` Mauro Carvalho Chehab
2019-03-20 10:45     ` Hans Verkuil
2019-03-06 21:13 ` [PATCH v5 02/23] videodev2.h: add V4L2_BUF_CAP_REQUIRES_REQUESTS Dafna Hirschfeld
2019-03-12 15:29   ` Paul Kocialkowski
2019-03-20 10:11   ` Mauro Carvalho Chehab
2019-03-20 10:39     ` Hans Verkuil
2019-03-20 11:42       ` Mauro Carvalho Chehab
2019-03-20 12:20         ` Hans Verkuil
2019-03-20 12:37           ` Mauro Carvalho Chehab
2019-03-20 12:41             ` Hans Verkuil
2019-03-20 13:09               ` Mauro Carvalho Chehab
2019-03-06 21:13 ` [PATCH v5 03/23] cedrus: set requires_requests Dafna Hirschfeld
2019-03-12 15:32   ` Paul Kocialkowski
2019-03-13 14:59     ` Hans Verkuil
2019-03-06 21:13 ` [PATCH v5 04/23] media: vicodec: selection api should only check single buffer types Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 05/23] media: vicodec: upon release, call m2m release before freeing ctrl handler Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 06/23] media: v4l2-ctrl: v4l2_ctrl_request_setup returns with error upon failure Dafna Hirschfeld
2019-03-12 15:40   ` Paul Kocialkowski
2019-03-06 21:13 ` [PATCH v5 07/23] media: vicodec: change variable name for the return value of v4l2_fwht_encode Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 08/23] media: vicodec: bugfix - call v4l2_m2m_buf_copy_metadata also if decoding fails Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 09/23] media: vicodec: bugfix: free compressed_frame upon device release Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 10/23] media: vicodec: Move raw frame preparation code to a function Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 11/23] media: vicodec: add field 'buf' to fwht_raw_frame Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 12/23] media: vicodec: keep the ref frame according to the format in decoder Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 13/23] media: vicodec: Validate version dependent header values in a separate function Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 14/23] media: vicodec: rename v4l2_fwht_default_fmt to v4l2_fwht_find_nth_fmt Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 15/23] media: vicodec: Handle the case that the reference buffer is NULL Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 16/23] media: vicodec: add struct for encoder/decoder instance Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 17/23] media: vicodec: add documentation to V4L2_CID_FWHT_I/P_FRAME_QP Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 18/23] media: vicodec: add documentation to V4L2_CID_MPEG_VIDEO_FWHT_PARAMS Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 19/23] media: vicodec: add documentation to V4L2_PIX_FMT_FWHT_STATELESS Dafna Hirschfeld
2019-03-06 21:13 ` [PATCH v5 20/23] media: vicodec: Introducing stateless fwht defs and structs Dafna Hirschfeld
2019-03-13 14:42   ` [PATCH v5 24/23] v4l2-ioctl.c: add V4L2_PIX_FMT_FWHT_STATELESS to v4l_fill_fmtdesc Hans Verkuil
2019-03-06 21:13 ` [PATCH v5 21/23] media: vicodec: Register another node for stateless decoder Dafna Hirschfeld
2019-03-13 14:38   ` Hans Verkuil
2019-03-06 21:13 ` [PATCH v5 22/23] media: vicodec: Add support " Dafna Hirschfeld
2019-03-13 14:37   ` Hans Verkuil
2019-03-06 21:13 ` [PATCH v5 23/23] media: vicodec: set pixelformat to V4L2_PIX_FMT_FWHT_STATELESS " Dafna Hirschfeld

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8c7f6920833513818a290b778f0a4dc4a03c99b0.camel@bootlin.com \
    --to=paul.kocialkowski@bootlin.com \
    --cc=dafna3@gmail.com \
    --cc=helen.koike@collabora.com \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-media@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.