All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Slaby <jirislaby@kernel.org>
To: Gerd Hoffmann <kraxel@redhat.com>, dri-devel@lists.freedesktop.org
Cc: David Airlie <airlied@linux.ie>,
	1882851@bugs.launchpad.net,
	open list <linux-kernel@vger.kernel.org>,
	"open list:VIRTIO GPU DRIVER"
	<virtualization@lists.linux-foundation.org>
Subject: Re: [PATCH 1/2] drm/virtio: fix unblank
Date: Mon, 24 Aug 2020 09:24:40 +0200	[thread overview]
Message-ID: <88ae71c2-c3ed-e0e4-e62c-bdf9d6534f2a@kernel.org> (raw)
In-Reply-To: <20200818072511.6745-2-kraxel@redhat.com>

On 18. 08. 20, 9:25, Gerd Hoffmann wrote:
> When going through a disable/enable cycle without changing the
> framebuffer the optimization added by commit 3954ff10e06e ("drm/virtio:
> skip set_scanout if framebuffer didn't change") causes the screen stay
> blank.  Add a bool to force an update to fix that.
> 
> v2: use drm_atomic_crtc_needs_modeset() (Daniel).
> 
> Cc: 1882851@bugs.launchpad.net
> Fixes: 3954ff10e06e ("drm/virtio: skip set_scanout if framebuffer didn't change")
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Tested-by: Jiri Slaby <jirislaby@kernel.org>

> ---
>  drivers/gpu/drm/virtio/virtgpu_drv.h     |  1 +
>  drivers/gpu/drm/virtio/virtgpu_display.c | 11 +++++++++++
>  drivers/gpu/drm/virtio/virtgpu_plane.c   |  4 +++-
>  3 files changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
> index 9ff9f4ac0522..4ab1b0ba2925 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
> @@ -138,6 +138,7 @@ struct virtio_gpu_output {
>  	int cur_x;
>  	int cur_y;
>  	bool enabled;
> +	bool needs_modeset;
>  };
>  #define drm_crtc_to_virtio_gpu_output(x) \
>  	container_of(x, struct virtio_gpu_output, crtc)
> diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
> index 2c2742b8d657..6c26b41f4e0d 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_display.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_display.c
> @@ -123,6 +123,17 @@ static int virtio_gpu_crtc_atomic_check(struct drm_crtc *crtc,
>  static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc,
>  					 struct drm_crtc_state *old_state)
>  {
> +	struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
> +
> +	/*
> +	 * virtio-gpu can't do modeset and plane update operations
> +	 * independant from each other.  So the actual modeset happens
> +	 * in the plane update callback, and here we just check
> +	 * whenever we must force the modeset.
> +	 */
> +	if (drm_atomic_crtc_needs_modeset(crtc->state)) {
> +		output->needs_modeset = true;
> +	}
>  }
>  
>  static const struct drm_crtc_helper_funcs virtio_gpu_crtc_helper_funcs = {
> diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
> index 52d24179bcec..65757409d9ed 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_plane.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
> @@ -163,7 +163,9 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
>  	    plane->state->src_w != old_state->src_w ||
>  	    plane->state->src_h != old_state->src_h ||
>  	    plane->state->src_x != old_state->src_x ||
> -	    plane->state->src_y != old_state->src_y) {
> +	    plane->state->src_y != old_state->src_y ||
> +	    output->needs_modeset) {
> +		output->needs_modeset = false;
>  		DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n",
>  			  bo->hw_res_handle,
>  			  plane->state->crtc_w, plane->state->crtc_h,
> 


-- 
js
suse labs
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Jiri Slaby <jirislaby@kernel.org>
To: Gerd Hoffmann <kraxel@redhat.com>, dri-devel@lists.freedesktop.org
Cc: David Airlie <airlied@linux.ie>,
	open list <linux-kernel@vger.kernel.org>,
	"open list:VIRTIO GPU DRIVER" 
	<virtualization@lists.linux-foundation.org>,
	1882851@bugs.launchpad.net
Subject: Re: [PATCH 1/2] drm/virtio: fix unblank
Date: Mon, 24 Aug 2020 09:24:40 +0200	[thread overview]
Message-ID: <88ae71c2-c3ed-e0e4-e62c-bdf9d6534f2a@kernel.org> (raw)
In-Reply-To: <20200818072511.6745-2-kraxel@redhat.com>

On 18. 08. 20, 9:25, Gerd Hoffmann wrote:
> When going through a disable/enable cycle without changing the
> framebuffer the optimization added by commit 3954ff10e06e ("drm/virtio:
> skip set_scanout if framebuffer didn't change") causes the screen stay
> blank.  Add a bool to force an update to fix that.
> 
> v2: use drm_atomic_crtc_needs_modeset() (Daniel).
> 
> Cc: 1882851@bugs.launchpad.net
> Fixes: 3954ff10e06e ("drm/virtio: skip set_scanout if framebuffer didn't change")
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Tested-by: Jiri Slaby <jirislaby@kernel.org>

> ---
>  drivers/gpu/drm/virtio/virtgpu_drv.h     |  1 +
>  drivers/gpu/drm/virtio/virtgpu_display.c | 11 +++++++++++
>  drivers/gpu/drm/virtio/virtgpu_plane.c   |  4 +++-
>  3 files changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
> index 9ff9f4ac0522..4ab1b0ba2925 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
> @@ -138,6 +138,7 @@ struct virtio_gpu_output {
>  	int cur_x;
>  	int cur_y;
>  	bool enabled;
> +	bool needs_modeset;
>  };
>  #define drm_crtc_to_virtio_gpu_output(x) \
>  	container_of(x, struct virtio_gpu_output, crtc)
> diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
> index 2c2742b8d657..6c26b41f4e0d 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_display.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_display.c
> @@ -123,6 +123,17 @@ static int virtio_gpu_crtc_atomic_check(struct drm_crtc *crtc,
>  static void virtio_gpu_crtc_atomic_flush(struct drm_crtc *crtc,
>  					 struct drm_crtc_state *old_state)
>  {
> +	struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
> +
> +	/*
> +	 * virtio-gpu can't do modeset and plane update operations
> +	 * independant from each other.  So the actual modeset happens
> +	 * in the plane update callback, and here we just check
> +	 * whenever we must force the modeset.
> +	 */
> +	if (drm_atomic_crtc_needs_modeset(crtc->state)) {
> +		output->needs_modeset = true;
> +	}
>  }
>  
>  static const struct drm_crtc_helper_funcs virtio_gpu_crtc_helper_funcs = {
> diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c
> index 52d24179bcec..65757409d9ed 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_plane.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
> @@ -163,7 +163,9 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
>  	    plane->state->src_w != old_state->src_w ||
>  	    plane->state->src_h != old_state->src_h ||
>  	    plane->state->src_x != old_state->src_x ||
> -	    plane->state->src_y != old_state->src_y) {
> +	    plane->state->src_y != old_state->src_y ||
> +	    output->needs_modeset) {
> +		output->needs_modeset = false;
>  		DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n",
>  			  bo->hw_res_handle,
>  			  plane->state->crtc_w, plane->state->crtc_h,
> 


-- 
js
suse labs

  reply	other threads:[~2020-08-24  7:24 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-18  7:25 [PATCH 0/2] drm/virtio: fix unblank Gerd Hoffmann
2020-08-18  7:25 ` [PATCH 1/2] " Gerd Hoffmann
2020-08-18  7:25   ` [Bug 1882851] " Gerd Hoffmann
2020-08-18  7:25   ` Gerd Hoffmann
2020-08-18  7:25   ` Gerd Hoffmann
2020-08-24  7:24   ` Jiri Slaby [this message]
2020-08-24  7:24     ` Jiri Slaby
2020-08-28 11:27     ` Gerd Hoffmann
2020-08-28 11:27       ` [Bug 1882851] " Gerd Hoffmann
2020-08-28 11:27       ` Gerd Hoffmann
2020-08-28 11:27       ` Gerd Hoffmann
2020-09-01  7:34       ` Daniel Vetter
2020-09-01  7:34         ` Daniel Vetter
2020-09-01  7:34         ` Daniel Vetter
2020-09-01 10:20   ` Daniel Vetter
2020-09-01 10:20     ` Daniel Vetter
2020-09-01 10:20     ` Daniel Vetter
2020-08-18  7:25 ` [PATCH 2/2] drm/virtio: drop virtio_gpu_output->enabled Gerd Hoffmann
2020-08-18  7:25   ` Gerd Hoffmann
2020-08-18  7:25   ` Gerd Hoffmann
2020-08-25 21:56 ` [PATCH] drm/virtio: fix unblank Diego Viola
2020-08-25 21:56   ` [Bug 1882851] " Diego Viola
2020-08-25 21:56   ` Diego Viola
  -- strict thread matches above, loose matches on Subject: below --
2020-08-07 10:54 Gerd Hoffmann
2020-08-07 10:54 ` [Bug 1882851] " Gerd Hoffmann
2020-08-07 10:54 ` Gerd Hoffmann
2020-08-07 10:54 ` Gerd Hoffmann
2020-08-07 13:09 ` Daniel Vetter
2020-08-07 13:09   ` Daniel Vetter
2020-08-07 13:09   ` Daniel Vetter
2020-08-17  9:03   ` Gerd Hoffmann
2020-08-17  9:03     ` [Bug 1882851] " Gerd Hoffmann
2020-08-17  9:03     ` Gerd Hoffmann
2020-08-17  9:03     ` Gerd Hoffmann
2020-08-17 10:19     ` Gerd Hoffmann
2020-08-17 10:19       ` [Bug 1882851] " Gerd Hoffmann
2020-08-17 10:19       ` Gerd Hoffmann
2020-08-17 10:19       ` Gerd Hoffmann
2020-06-12 11:13 Gerd Hoffmann
2020-06-12 11:13 ` [Bug 1882851] " Gerd Hoffmann
2020-06-12 11:13 ` Gerd Hoffmann
2020-06-12 11:13 ` Gerd Hoffmann
2020-06-09 22:36 [Bug 1882851] [NEW] QEMU video freezes with "Guest disabled display" (virtio driver) Diego Viola
2020-06-09 23:20 ` [Bug 1882851] " Diego Viola
2020-06-09 23:24 ` Diego Viola
2020-06-10  0:02 ` Diego Viola
2020-06-10 17:55 ` Diego Viola
2020-06-11  8:27 ` Gerd Hoffmann
2020-06-11 10:24 ` Diego Viola
2020-06-11 10:28 ` Diego Viola
2020-06-11 19:40 ` Diego Viola
2020-06-11 22:33 ` Diego Viola
2020-06-12  5:40 ` Diego Viola
2020-06-12  5:41 ` Diego Viola
2020-06-12  6:10 ` Diego Viola
2020-06-12 15:15 ` Diego Viola
2020-06-12 15:23 ` Diego Viola
2020-06-12 17:26 ` Diego Viola
2020-06-12 17:44 ` Diego Viola
2020-07-15 16:16 ` Diego Viola
2020-09-14  6:45 ` Diego Viola
2020-09-15 10:26 ` Thomas Huth

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=88ae71c2-c3ed-e0e4-e62c-bdf9d6534f2a@kernel.org \
    --to=jirislaby@kernel.org \
    --cc=1882851@bugs.launchpad.net \
    --cc=airlied@linux.ie \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kraxel@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=virtualization@lists.linux-foundation.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.