drm_atomic_helpers use framebuffer_changed to skip some vblank waits in case properties don't change. This may skip vblank waits also when properties like rotation are changed. Fix this by always waiting for vblank if planes are added to the state, and always calling prepare_fb even when fb stays the same. Any smarts for this should be in the driver, they know when waiting can be skipped.
While at it, cleanup drm_atomic_helper_wait_for_vblanks. It's reusing members of the crtc_state for different things, Maarten Lankhorst (6): drm/atomic: Use active instead of enable in wait_for_vblanks. drm/atomic: Unconditionally call prepare_fb. drm/atomic: Clean up wait_for_vblanks drm/atomic: Wait for vblank whenever a plane is added to state. drm/atomic: Remove drm_atomic_helper_framebuffer_changed. drm/i915: Add a cursor hack to allow converting legacy page flip to atomic. drivers/gpu/drm/drm_atomic_helper.c | 77 ++++--------------- drivers/gpu/drm/i915/intel_atomic_plane.c | 47 +++++++----- drivers/gpu/drm/i915/intel_display.c | 123 +++++++++++++++++++++++++++++- drivers/gpu/drm/i915/intel_drv.h | 2 + include/drm/drm_atomic_helper.h | 3 - include/drm/drm_crtc.h | 5 -- 6 files changed, 168 insertions(+), 89 deletions(-) -- 2.7.4