On Thu, Dec 22, 2016 at 11:33:23AM +0100, Maarten Lankhorst wrote: > This reverts commit 527b6abe5fd2d2 > (Revert "drm/i915: Use atomic commits for legacy page_flips") > > and reapplies commit ee042aa40b66d1. > ("drm/i915: Use atomic commits for legacy page_flips") > > The reason for the revert was because legacy cursor updates were > forced to wait for pending page flips and rendering after they > were converted to atomic. > > Commit f79f26921ee12c6f > (drm/i915: Add a cursor hack to allow converting legacy page flip to atomic, v3) > adds a fastpath to cursor updates, which fixes the stuttering issues. > With these changes I feel confident enough to re-enable cursor updates. > > Legacy cursor update won't block in the following cases: > - Moving cursor > - Changing cursor fb > > The legacy cursor update will still block in the following cases: > - Showing/hiding cursor. > - Cursor size or scaling changes. > - cursor update while cursor is invisible (could be fixed, if it turns out to be important). > - Cursor tiling changes (Not sure we support tiled cursors.) > - Last update was a modeset. > > Cc: Steven Newbury <steve@xxxxxxxxxxxxxxx> > Cc: Rafael Ristovski <rafael.ristovski@xxxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Tested-by: Rafael Ristovski <rafael.ristovski@xxxxxxxxx> > Testcase: igt/kms_cursor_legacy > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> I'm going to regret this again ;-) Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/intel_display.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index ef5dde5ab1cf..27e77ca714a5 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12152,6 +12152,7 @@ void intel_check_page_flip(struct drm_i915_private *dev_priv, int pipe) > spin_unlock(&dev->event_lock); > } > > +__maybe_unused > static int intel_crtc_page_flip(struct drm_crtc *crtc, > struct drm_framebuffer *fb, > struct drm_pending_vblank_event *event, > @@ -14771,7 +14772,7 @@ static const struct drm_crtc_funcs intel_crtc_funcs = { > .set_config = drm_atomic_helper_set_config, > .set_property = drm_atomic_helper_crtc_set_property, > .destroy = intel_crtc_destroy, > - .page_flip = intel_crtc_page_flip, > + .page_flip = drm_atomic_helper_page_flip, > .atomic_duplicate_state = intel_crtc_duplicate_state, > .atomic_destroy_state = intel_crtc_destroy_state, > }; > -- > 2.7.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx