OSDN Git Service

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)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 14 Jul 2020 16:01:03 +0000 (19:01 +0300)
commit0428ab013fdd39dbfb8f4cd8ad2b60af3776c6b9
treec74275465470ff0d8e7b62bdab5cbdbfbb3f4db3
parenta581483b1e5466d28fc50ff623fba31cea2cccb6
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>
drivers/gpu/drm/i915/display/intel_fbc.c
drivers/gpu/drm/i915/i915_drv.h