diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2020-07-11 10:03:36 +0200 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2020-07-14 19:31:45 +0200 |
commit | 92e0575b99835b5b3aaab2132dd551e0e04eb96a (patch) | |
tree | 6b3dd9190b6a6833cf07ab14f7491ac347259445 /drivers/gpu/drm/i915/i915_drv.h | |
parent | drm/i915: Move cec_notifier to intel_hdmi_connector_unregister, v2. (diff) | |
download | linux-92e0575b99835b5b3aaab2132dd551e0e04eb96a.tar.xz linux-92e0575b99835b5b3aaab2132dd551e0e04eb96a.zip |
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>
Diffstat (limited to '')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index f79f118bf192..ae99a9190200 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -440,6 +440,7 @@ struct intel_fbc { struct { const struct drm_format_info *format; unsigned int stride; + u64 modifier; } fb; int cfb_size; |