drm/i915: Fix ILK-IVB sprite enable delays
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 4 Oct 2018 12:15:27 +0000 (15:15 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 5 Oct 2018 20:31:41 +0000 (23:31 +0300)
commit8e7a4424b996ab780b4cb4a4564f31e079e55711
tree0fa80d5a95fa6ee6b8db9bb587cb57a427a8a415
parent6f405638c2ab111df8bbff0ec57c2785870edb37
drm/i915: Fix ILK-IVB sprite enable delays

Sprite enable on ILK-IVB may take two frames to complete
when the hardware is in big FIFO mode (LP1+). That is
not entirely great as it means the sprite enable may
actually happen one frame after we've already signalled
flip completion. At the very least crc checks may fail
due to the sprite not yet being visible when we expect it.

We already have code to deal with big FIFO mode when it
comes to the sprite scaling on IVB
(WaCxSRDisabledForSpriteScaling:ivb). Let's extend that
workaround to kick in whenever the sprite is in the process
of being enabled. Also ILK/SNB bspec has some notes to
indicate that we should most likely also do the sprite
scaling w/a on all three platforms, so let's do that as well.

Pretty easy to reproduce on SNB/IVB. ILK has proved more
elusive, but let's trust the spec and include it as well.

v2: Make sure the pipe is active before the vblank wait

Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Testcase: igt/kms_plane/pixel-format-pipe-*-planes
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107749
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> #v1
Link: https://patchwork.freedesktop.org/patch/msgid/20181004121527.30249-1-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/intel_display.c