• Ville Syrjälä's avatar
    drm/i915: Fix remapped stride with CCS on ADL+ · 2c12eb36
    Ville Syrjälä authored
    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: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20231205180308.7505-1-ville.syrjala@linux.intel.comReviewed-by: default avatarImre Deak <imre.deak@intel.com>
    2c12eb36
intel_fb.c 62.1 KB