All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kieran Bingham <kieran.bingham@ideasonboard.com>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	dri-devel@lists.freedesktop.org
Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	Liviu Dudau <Liviu.Dudau@arm.com>,
	Brian Starkey <brian.starkey@arm.com>
Subject: Re: [PATCH v6 07/18] media: vsp1: dl: Allow chained display lists for display pipelines
Date: Wed, 13 Mar 2019 11:07:51 +0000	[thread overview]
Message-ID: <bae44783-9f9c-4908-796d-6ec1dbfcdca5@ideasonboard.com> (raw)
In-Reply-To: <20190313000532.7087-8-laurent.pinchart+renesas@ideasonboard.com>

Hi Laurent,

On 13/03/2019 00:05, Laurent Pinchart wrote:
> Refactor the display list header setup to allow chained display lists
> with display pipelines. Chain the display lists as for mem-to-mem
> pipelines, but enable the frame end interrupt for every list as display
> pipelines have a single list per frame.
> 
> This feature will be used to disable writeback exactly one frame after
> enabling it by chaining a writeback disable display list.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

This is a bit hard to grok, but I can see that the key change is now
continuous display  pipelines can go into the code path which sets the
vsp1_dl_list *next. The rest of the refactoring looks good too.

Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>


> ---
>  drivers/media/platform/vsp1/vsp1_dl.c | 35 ++++++++++++++++++---------
>  1 file changed, 23 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/media/platform/vsp1/vsp1_dl.c b/drivers/media/platform/vsp1/vsp1_dl.c
> index 886b3a69d329..ed7cda4130f2 100644
> --- a/drivers/media/platform/vsp1/vsp1_dl.c
> +++ b/drivers/media/platform/vsp1/vsp1_dl.c
> @@ -770,17 +770,35 @@ static void vsp1_dl_list_fill_header(struct vsp1_dl_list *dl, bool is_last)
>  	}
>  
>  	dl->header->num_lists = num_lists;
> +	dl->header->flags = 0;
>  
> -	if (!list_empty(&dl->chain) && !is_last) {
> +	/*
> +	 * Enable the interrupt for the end of each frame. In continuous mode
> +	 * chained lists are used with one list per frame, so enable the
> +	 * interrupt for each list. In singleshot mode chained lists are used
> +	 * to partition a single frame, so enable the interrupt for the last
> +	 * list only.
> +	 */
> +	if (!dlm->singleshot || is_last)
> +		dl->header->flags |= VSP1_DLH_INT_ENABLE;
> +
> +	/*
> +	 * In continuous mode enable auto-start for all lists, as the VSP must
> +	 * loop on the same list until a new one is queued. In singleshot mode
> +	 * enable auto-start for all lists but the last to chain processing of
> +	 * partitions without software intervention.
> +	 */
> +	if (!dlm->singleshot || !is_last)
> +		dl->header->flags |= VSP1_DLH_AUTO_START;
> +
> +	if (!is_last) {
>  		/*
> -		 * If this display list's chain is not empty, we are on a list,
> -		 * and the next item is the display list that we must queue for
> -		 * automatic processing by the hardware.
> +		 * If this is not the last display list in the chain, queue the
> +		 * next item for automatic processing by the hardware.
>  		 */
>  		struct vsp1_dl_list *next = list_next_entry(dl, chain);
>  
>  		dl->header->next_header = next->dma;
> -		dl->header->flags = VSP1_DLH_AUTO_START;
>  	} else if (!dlm->singleshot) {
>  		/*
>  		 * if the display list manager works in continuous mode, the VSP
> @@ -788,13 +806,6 @@ static void vsp1_dl_list_fill_header(struct vsp1_dl_list *dl, bool is_last)
>  		 * instructed to do otherwise.
>  		 */
>  		dl->header->next_header = dl->dma;
> -		dl->header->flags = VSP1_DLH_INT_ENABLE | VSP1_DLH_AUTO_START;
> -	} else {
> -		/*
> -		 * Otherwise, in mem-to-mem mode, we work in single-shot mode
> -		 * and the next display list must not be started automatically.
> -		 */
> -		dl->header->flags = VSP1_DLH_INT_ENABLE;
>  	}
>  
>  	if (!dl->extension)
> 

-- 
Regards
--
Kieran

WARNING: multiple messages have this Message-ID (diff)
From: Kieran Bingham <kieran.bingham@ideasonboard.com>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	dri-devel@lists.freedesktop.org
Cc: linux-renesas-soc@vger.kernel.org,
	Liviu Dudau <Liviu.Dudau@arm.com>,
	linux-media@vger.kernel.org
Subject: Re: [PATCH v6 07/18] media: vsp1: dl: Allow chained display lists for display pipelines
Date: Wed, 13 Mar 2019 11:07:51 +0000	[thread overview]
Message-ID: <bae44783-9f9c-4908-796d-6ec1dbfcdca5@ideasonboard.com> (raw)
In-Reply-To: <20190313000532.7087-8-laurent.pinchart+renesas@ideasonboard.com>

Hi Laurent,

On 13/03/2019 00:05, Laurent Pinchart wrote:
> Refactor the display list header setup to allow chained display lists
> with display pipelines. Chain the display lists as for mem-to-mem
> pipelines, but enable the frame end interrupt for every list as display
> pipelines have a single list per frame.
> 
> This feature will be used to disable writeback exactly one frame after
> enabling it by chaining a writeback disable display list.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

This is a bit hard to grok, but I can see that the key change is now
continuous display  pipelines can go into the code path which sets the
vsp1_dl_list *next. The rest of the refactoring looks good too.

Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>


> ---
>  drivers/media/platform/vsp1/vsp1_dl.c | 35 ++++++++++++++++++---------
>  1 file changed, 23 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/media/platform/vsp1/vsp1_dl.c b/drivers/media/platform/vsp1/vsp1_dl.c
> index 886b3a69d329..ed7cda4130f2 100644
> --- a/drivers/media/platform/vsp1/vsp1_dl.c
> +++ b/drivers/media/platform/vsp1/vsp1_dl.c
> @@ -770,17 +770,35 @@ static void vsp1_dl_list_fill_header(struct vsp1_dl_list *dl, bool is_last)
>  	}
>  
>  	dl->header->num_lists = num_lists;
> +	dl->header->flags = 0;
>  
> -	if (!list_empty(&dl->chain) && !is_last) {
> +	/*
> +	 * Enable the interrupt for the end of each frame. In continuous mode
> +	 * chained lists are used with one list per frame, so enable the
> +	 * interrupt for each list. In singleshot mode chained lists are used
> +	 * to partition a single frame, so enable the interrupt for the last
> +	 * list only.
> +	 */
> +	if (!dlm->singleshot || is_last)
> +		dl->header->flags |= VSP1_DLH_INT_ENABLE;
> +
> +	/*
> +	 * In continuous mode enable auto-start for all lists, as the VSP must
> +	 * loop on the same list until a new one is queued. In singleshot mode
> +	 * enable auto-start for all lists but the last to chain processing of
> +	 * partitions without software intervention.
> +	 */
> +	if (!dlm->singleshot || !is_last)
> +		dl->header->flags |= VSP1_DLH_AUTO_START;
> +
> +	if (!is_last) {
>  		/*
> -		 * If this display list's chain is not empty, we are on a list,
> -		 * and the next item is the display list that we must queue for
> -		 * automatic processing by the hardware.
> +		 * If this is not the last display list in the chain, queue the
> +		 * next item for automatic processing by the hardware.
>  		 */
>  		struct vsp1_dl_list *next = list_next_entry(dl, chain);
>  
>  		dl->header->next_header = next->dma;
> -		dl->header->flags = VSP1_DLH_AUTO_START;
>  	} else if (!dlm->singleshot) {
>  		/*
>  		 * if the display list manager works in continuous mode, the VSP
> @@ -788,13 +806,6 @@ static void vsp1_dl_list_fill_header(struct vsp1_dl_list *dl, bool is_last)
>  		 * instructed to do otherwise.
>  		 */
>  		dl->header->next_header = dl->dma;
> -		dl->header->flags = VSP1_DLH_INT_ENABLE | VSP1_DLH_AUTO_START;
> -	} else {
> -		/*
> -		 * Otherwise, in mem-to-mem mode, we work in single-shot mode
> -		 * and the next display list must not be started automatically.
> -		 */
> -		dl->header->flags = VSP1_DLH_INT_ENABLE;
>  	}
>  
>  	if (!dl->extension)
> 

-- 
Regards
--
Kieran
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2019-03-13 11:07 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-13  0:05 [PATCH v6 00/18] R-Car DU display writeback support Laurent Pinchart
2019-03-13  0:05 ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 01/18] Revert "[media] v4l: vsp1: Supply frames to the DU continuously" Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 02/18] media: vsp1: wpf: Fix partition configuration for display pipelines Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 03/18] media: vsp1: Replace leftover occurrence of fragment with body Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 04/18] media: vsp1: Fix addresses of display-related registers for VSP-DL Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 05/18] media: vsp1: Replace the display list internal flag with a flags field Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 06/18] media: vsp1: Add vsp1_dl_list argument to .configure_stream() operation Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 10:36   ` Kieran Bingham
2019-03-13 10:36     ` Kieran Bingham
2019-03-13  0:05 ` [PATCH v6 07/18] media: vsp1: dl: Allow chained display lists for display pipelines Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 11:07   ` Kieran Bingham [this message]
2019-03-13 11:07     ` Kieran Bingham
2019-03-13  0:05 ` [PATCH v6 08/18] media: vsp1: wpf: Add writeback support Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 10:59   ` Kieran Bingham
2019-03-13 10:59     ` Kieran Bingham
2019-03-13 11:15     ` Laurent Pinchart
2019-03-13 11:15       ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 09/18] media: vsp1: drm: Split RPF format setting to separate function Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 11:12   ` Kieran Bingham
2019-03-13 11:12     ` Kieran Bingham
2019-03-13 11:17     ` Laurent Pinchart
2019-03-13 11:17       ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 10/18] media: vsp1: drm: Extend frame completion API to the DU driver Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 11:26   ` Kieran Bingham
2019-03-13 11:26     ` Kieran Bingham
2019-03-13 15:50     ` Laurent Pinchart
2019-03-13 15:50       ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 11/18] media: vsp1: drm: Implement writeback support Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 11:42   ` Kieran Bingham
2019-03-13 11:42     ` Kieran Bingham
2019-03-13 15:56     ` Laurent Pinchart
2019-03-13 15:56       ` Laurent Pinchart
2019-03-14  8:28       ` Kieran Bingham
2019-03-14  8:28         ` Kieran Bingham
2019-03-14 12:09         ` Laurent Pinchart
2019-03-14 12:09           ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 12/18] drm: writeback: Cleanup job ownership handling when queuing job Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 11:45   ` Kieran Bingham
2019-03-13 11:45     ` Kieran Bingham
2019-03-13  0:05 ` [PATCH v6 13/18] drm: writeback: Fix leak of writeback job Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 14/18] drm: writeback: Add job prepare and cleanup operations Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-15 17:54   ` Liviu Dudau
2019-03-15 17:54     ` Liviu Dudau
2019-03-13  0:05 ` [PATCH v6 15/18] drm: rcar-du: Fix rcar_du_crtc structure documentation Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 16/18] drm: rcar-du: Store V4L2 fourcc in rcar_du_format_info structure Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13  0:05 ` [PATCH v6 17/18] drm: rcar-du: vsp: Extract framebuffer (un)mapping to separate functions Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 11:54   ` Kieran Bingham
2019-03-13 11:54     ` Kieran Bingham
2019-03-13  0:05 ` [PATCH v6 18/18] drm: rcar-du: Add writeback support for R-Car Gen3 Laurent Pinchart
2019-03-13  0:05   ` Laurent Pinchart
2019-03-13 12:06   ` Kieran Bingham
2019-03-13 12:06     ` Kieran Bingham
2019-03-13 16:08     ` Laurent Pinchart
2019-03-13 16:08       ` Laurent Pinchart

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=bae44783-9f9c-4908-796d-6ec1dbfcdca5@ideasonboard.com \
    --to=kieran.bingham@ideasonboard.com \
    --cc=Liviu.Dudau@arm.com \
    --cc=brian.starkey@arm.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@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.