kms_cursor_crc's cursor-alpha-opaque subtest fails igt_assert_crc_equal()
once flipq is enabled. Flipq commits complete asynchronously via pipe
DMC, but frontbuffer tracking isn't notified when the queued update
actually lands, so a CRC taken right after can observe stale state.

Patch 1 fixes that by deferring the frontbuffer flip notification until
the flipq commit has actually completed. Patches 2 and 3 close two
related eligibility gaps found while tracking this down: flipq being
selected for commits more complex than a simple queued plane update,
and a stale use_flipq surviving into a duplicated crtc state, letting a
legacy cursor commit slip through without re-evaluating eligibility.

Tested on pixel with kms_cursor_crc and kms_frontbuffer_tracking.

Mika Kahola (3):
  drm/i915/display: Flush frontbuffer tracking on flipq completion
  drm/i915/display: Restrict flipq to simple single-plane updates
  drm/i915/display: Reset use_flipq when duplicating crtc state

 drivers/gpu/drm/i915/display/intel_atomic.c   |  1 +
 drivers/gpu/drm/i915/display/intel_crtc.c     |  3 +
 drivers/gpu/drm/i915/display/intel_display.c  | 56 ++++++++++++++--
 .../drm/i915/display/intel_display_types.h    |  9 +++
 drivers/gpu/drm/i915/display/intel_dsb.c      | 65 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_dsb.h      |  2 +
 drivers/gpu/drm/i915/display/intel_fbc.c      | 21 ++++++
 drivers/gpu/drm/i915/display/intel_fbc.h      |  1 +
 8 files changed, 151 insertions(+), 7 deletions(-)

-- 
2.43.0

Reply via email to