]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
drm/i915: Fix remapped stride with CCS on ADL+
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 5 Dec 2023 18:03:08 +0000 (20:03 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 8 Dec 2023 18:32:03 +0000 (20:32 +0200)
commit2c12eb36f849256f5eb00ffaee9bf99396fd3814
treeb0f63c1a91986df4188e4429257386a2c68c513d
parent10690b8a49bceafb1badf0ad91842a359e796d8b
drm/i915: Fix remapped stride with CCS on ADL+

On ADL+ the hardware automagically calculates the CCS AUX surface
stride from the main surface stride, so when remapping we can't
really play a lot of tricks with the main surface stride, or else
the AUX surface stride would get miscalculated and no longer
match the actual data layout in memory.

Supposedly we could remap in 256 main surface tile units
(AUX page(4096)/cachline(64)*4(4x1 main surface tiles per
AUX cacheline)=256 main surface tiles), but the extra complexity
is probably not worth the hassle.

So let's just make sure our mapping stride is calculated from
the full framebuffer stride (instead of the framebuffer width).
This way the stride we program into PLANE_STRIDE will be the
original framebuffer stride, and thus there will be no change
to the AUX stride/layout.

Cc: stable@vger.kernel.org
Cc: Imre Deak <imre.deak@intel.com>
Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231205180308.7505-1-ville.syrjala@linux.intel.com
Reviewed-by: Imre Deak <imre.deak@intel.com>
drivers/gpu/drm/i915/display/intel_fb.c