drm/i915: Recalculate FBC w/a stride when needed
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Sat, 11 Jul 2020 08:03:36 +0000 (11:03 +0300)
committerJani Nikula <jani.nikula@intel.com>
Tue, 14 Jul 2020 17:31:45 +0000 (20:31 +0300)
commit92e0575b99835b5b3aaab2132dd551e0e04eb96a
tree6b3dd9190b6a6833cf07ab14f7491ac347259445
parent6647e6cdba753e71170be7da2acfead7154f56d8
drm/i915: Recalculate FBC w/a stride when needed

Currently we're failing to recalculate the gen9 FBC w/a stride
unless something more drastic than just the modifier itself has
changed. This often leaves us with FBC enabled with the linear
fbdev framebuffer without the w/a stride enabled. That will cause
an immediate underrun and FBC will get promptly disabled.

Fix the problem by checking if the w/a stride is about to change,
and go through the full dance if so. This part of the FBC code
is still pretty much a disaster and will need lots more work.
But this should at least fix the immediate issue.

v2: Deactivate FBC when the modifier changes since that will
    likely require resetting the w/a CFB stride

Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200711080336.13423-1-ville.syrjala@linux.intel.com
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
(cherry picked from commit 0428ab013fdd39dbfb8f4cd8ad2b60af3776c6b9)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_fbc.c
drivers/gpu/drm/i915/i915_drv.h