* [PATCH] drm/atomic: make drm_atomic_helper_wait_for_vblanks more agressive
@ 2017-11-29 11:04 Lucas Stach
2017-11-29 14:36 ` Maarten Lankhorst
0 siblings, 1 reply; 2+ messages in thread
From: Lucas Stach @ 2017-11-29 11:04 UTC (permalink / raw)
To: Daniel Vetter, Sean Paul; +Cc: kernel, dri-devel, patchwork-lst
drm_atomic_helper_setup_commit expects that flipping of previous commits
has happened when it is called to set up a new commit. This can be violated
by commits where userspace doesn't get a flip completion event to
synchronize against i.e. legacy modesets and property changes.
The expectation is that those are done by blocking commits, which wait for
completion. Most drivers call drm_atomic_helper_wait_for_vblanks in the
commit_tail to ensure completion, but the wait for next vblank might not
actually happen if the commit didn't change any planes.
Make the wait more agressive by also waiting if no planes changed. This
is the minimal regression fix for the 4.15 kernel series. Long term
drivers should switch away from drm_atomic_helper_wait_for_vblanks and
use drm_atomic_helper_wait_for_flip_done instead.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
---
drivers/gpu/drm/drm_atomic_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 71d712f1b56a..b16f1d69a0bb 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1225,7 +1225,7 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev,
return;
for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) {
- if (!new_crtc_state->active || !new_crtc_state->planes_changed)
+ if (!new_crtc_state->active)
continue;
ret = drm_crtc_vblank_get(crtc);
--
2.11.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] drm/atomic: make drm_atomic_helper_wait_for_vblanks more agressive
2017-11-29 11:04 [PATCH] drm/atomic: make drm_atomic_helper_wait_for_vblanks more agressive Lucas Stach
@ 2017-11-29 14:36 ` Maarten Lankhorst
0 siblings, 0 replies; 2+ messages in thread
From: Maarten Lankhorst @ 2017-11-29 14:36 UTC (permalink / raw)
To: Lucas Stach, Daniel Vetter, Sean Paul; +Cc: kernel, dri-devel, patchwork-lst
Op 29-11-17 om 12:04 schreef Lucas Stach:
> drm_atomic_helper_setup_commit expects that flipping of previous commits
> has happened when it is called to set up a new commit. This can be violated
> by commits where userspace doesn't get a flip completion event to
> synchronize against i.e. legacy modesets and property changes.
>
> The expectation is that those are done by blocking commits, which wait for
> completion. Most drivers call drm_atomic_helper_wait_for_vblanks in the
> commit_tail to ensure completion, but the wait for next vblank might not
> actually happen if the commit didn't change any planes.
>
> Make the wait more agressive by also waiting if no planes changed. This
> is the minimal regression fix for the 4.15 kernel series. Long term
> drivers should switch away from drm_atomic_helper_wait_for_vblanks and
> use drm_atomic_helper_wait_for_flip_done instead.
>
> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> ---
> drivers/gpu/drm/drm_atomic_helper.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 71d712f1b56a..b16f1d69a0bb 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -1225,7 +1225,7 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev,
> return;
>
> for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) {
> - if (!new_crtc_state->active || !new_crtc_state->planes_changed)
> + if (!new_crtc_state->active)
> continue;
>
> ret = drm_crtc_vblank_get(crtc);
Added a fixes tag because it likely started regressing with
commit de39bec1a0c4 ("drm/atomic: Remove waits in drm_atomic_helper_commit_cleanup_done, v2.")
Thanks for patch, pushed.
~Maarten
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-11-29 14:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-29 11:04 [PATCH] drm/atomic: make drm_atomic_helper_wait_for_vblanks more agressive Lucas Stach
2017-11-29 14:36 ` Maarten Lankhorst
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox