All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too
@ 2018-02-13  9:12 Maarten Lankhorst
  2018-02-13  9:16 ` Chris Wilson
  2018-02-19 14:34 ` Daniel Vetter
  0 siblings, 2 replies; 5+ messages in thread
From: Maarten Lankhorst @ 2018-02-13  9:12 UTC (permalink / raw)
  To: dri-devel

Programs like redshift set the legacy gamma for X.org every 5 seconds.
Because atomic commits wait for vblank completion, we get a frame drop
every 5 seconds because of the legacy gamma update.

Work around this by setting the legacy_cursor_update flag, to force
legacy gamma updates not to be synced against vblank.

Reported-by: Tholin #intel-gfx
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/gpu/drm/drm_atomic_helper.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index ae3cbfe9e01c..f37ab26ef4d2 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -3806,6 +3806,9 @@ int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
 	if (!state)
 		return -ENOMEM;
 
+	/* Don't wait for vblank after updating gamma. */
+	state->legacy_cursor_update = true;
+
 	blob = drm_property_create_blob(dev,
 					sizeof(struct drm_color_lut) * size,
 					NULL);
-- 
2.16.1

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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too
  2018-02-13  9:12 [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too Maarten Lankhorst
@ 2018-02-13  9:16 ` Chris Wilson
  2018-02-13  9:33   ` Maarten Lankhorst
  2018-02-19 14:34 ` Daniel Vetter
  1 sibling, 1 reply; 5+ messages in thread
From: Chris Wilson @ 2018-02-13  9:16 UTC (permalink / raw)
  To: Maarten Lankhorst, dri-devel

Quoting Maarten Lankhorst (2018-02-13 09:12:01)
> Programs like redshift set the legacy gamma for X.org every 5 seconds.
> Because atomic commits wait for vblank completion, we get a frame drop
> every 5 seconds because of the legacy gamma update.
> 
> Work around this by setting the legacy_cursor_update flag, to force
> legacy gamma updates not to be synced against vblank.
> 
> Reported-by: Tholin #intel-gfx
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

Reminiscing: Remember the time we had all those vblank workers patches,
one of which was to do async gamma updates (apply the last one on the
vblank). Motivated by gnome-shell and the ilk doing a gamma animation
for fade-out on logout (which I guess they gave up on since it happened
to be so slow as to extend logout ;).
-Chris
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too
  2018-02-13  9:16 ` Chris Wilson
@ 2018-02-13  9:33   ` Maarten Lankhorst
  2018-02-13 13:29     ` Ville Syrjälä
  0 siblings, 1 reply; 5+ messages in thread
From: Maarten Lankhorst @ 2018-02-13  9:33 UTC (permalink / raw)
  To: Chris Wilson, dri-devel

Hey,

Op 13-02-18 om 10:16 schreef Chris Wilson:
> Quoting Maarten Lankhorst (2018-02-13 09:12:01)
>> Programs like redshift set the legacy gamma for X.org every 5 seconds.
>> Because atomic commits wait for vblank completion, we get a frame drop
>> every 5 seconds because of the legacy gamma update.
>>
>> Work around this by setting the legacy_cursor_update flag, to force
>> legacy gamma updates not to be synced against vblank.
>>
>> Reported-by: Tholin #intel-gfx
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Reminiscing: Remember the time we had all those vblank workers patches,
> one of which was to do async gamma updates (apply the last one on the
> vblank). Motivated by gnome-shell and the ilk doing a gamma animation
> for fade-out on logout (which I guess they gave up on since it happened
> to be so slow as to extend logout ;).

That special case could be handled by userspace with atomic commits, I don't
think it's worth optimizing it further..

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too
  2018-02-13  9:33   ` Maarten Lankhorst
@ 2018-02-13 13:29     ` Ville Syrjälä
  0 siblings, 0 replies; 5+ messages in thread
From: Ville Syrjälä @ 2018-02-13 13:29 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: dri-devel

On Tue, Feb 13, 2018 at 10:33:28AM +0100, Maarten Lankhorst wrote:
> Hey,
> 
> Op 13-02-18 om 10:16 schreef Chris Wilson:
> > Quoting Maarten Lankhorst (2018-02-13 09:12:01)
> >> Programs like redshift set the legacy gamma for X.org every 5 seconds.
> >> Because atomic commits wait for vblank completion, we get a frame drop
> >> every 5 seconds because of the legacy gamma update.
> >>
> >> Work around this by setting the legacy_cursor_update flag, to force
> >> legacy gamma updates not to be synced against vblank.
> >>
> >> Reported-by: Tholin #intel-gfx
> >> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Reminiscing: Remember the time we had all those vblank workers patches,
> > one of which was to do async gamma updates (apply the last one on the
> > vblank). Motivated by gnome-shell and the ilk doing a gamma animation
> > for fade-out on logout (which I guess they gave up on since it happened
> > to be so slow as to extend logout ;).
> 
> That special case could be handled by userspace with atomic commits, I don't
> think it's worth optimizing it further..

We need to eventually move the gamma updates (and other single buffered
registers) to a vblank worker or something similar. Otherwise they will
tear.

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too
  2018-02-13  9:12 [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too Maarten Lankhorst
  2018-02-13  9:16 ` Chris Wilson
@ 2018-02-19 14:34 ` Daniel Vetter
  1 sibling, 0 replies; 5+ messages in thread
From: Daniel Vetter @ 2018-02-19 14:34 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: dri-devel

On Tue, Feb 13, 2018 at 10:12:01AM +0100, Maarten Lankhorst wrote:
> Programs like redshift set the legacy gamma for X.org every 5 seconds.
> Because atomic commits wait for vblank completion, we get a frame drop
> every 5 seconds because of the legacy gamma update.
> 
> Work around this by setting the legacy_cursor_update flag, to force
> legacy gamma updates not to be synced against vblank.
> 
> Reported-by: Tholin #intel-gfx
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  drivers/gpu/drm/drm_atomic_helper.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index ae3cbfe9e01c..f37ab26ef4d2 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -3806,6 +3806,9 @@ int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
>  	if (!state)
>  		return -ENOMEM;
>  
> +	/* Don't wait for vblank after updating gamma. */
> +	state->legacy_cursor_update = true;

The legacy_cursor_update hack is a fairly serious hack, and I'd kinda want
to avoid inflicting it on everyone. The cursor hack is a lot less minimal
(because few drivers have cursors, and we'd have the async plane update
stuff from Gustavo at least). Do we really need this?

Making sure that no one can trample over async gamma table updates,
especially when we eventually go to a vblank worker for them, sounds like
serious amounts of pain. I'd prefer we teach -modesetting to just push the
gamma update with the next frame as an atomic commit, or in the
blockhandler (to avoid delaying it).
-Daniel

> +
>  	blob = drm_property_create_blob(dev,
>  					sizeof(struct drm_color_lut) * size,
>  					NULL);
> -- 
> 2.16.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-02-19 14:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-13  9:12 [RFC] drm/atomic: Abuse legacy cursor update flag for legacy gamma update too Maarten Lankhorst
2018-02-13  9:16 ` Chris Wilson
2018-02-13  9:33   ` Maarten Lankhorst
2018-02-13 13:29     ` Ville Syrjälä
2018-02-19 14:34 ` Daniel Vetter

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.