drm/i915: Disable compression tricks on JSL
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 18 Sep 2024 14:44:40 +0000 (17:44 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 9 Oct 2024 16:04:24 +0000 (19:04 +0300)
Bspec asks us to disable some compression trick on JSL. While the
bspec description is pretty vague it looks like this is some extra
trick for 10bpc+ CCS which presumably the ICL derived display engine
doesn't support.

Note that we aren't currently exposing 10bpc CCS scanout support,
but once that gets added this presumably becomes an issue.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240918144445.5716-3-ville.syrjala@linux.intel.com
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
drivers/gpu/drm/i915/gt/intel_gt_regs.h
drivers/gpu/drm/i915/gt/intel_workarounds.c

index 0457765..6dba65e 100644 (file)
 #define XEHPG_INSTDONE_GEOM_SVG                        MCR_REG(0x666c)
 
 #define CACHE_MODE_0_GEN7                      _MMIO(0x7000) /* IVB+ */
+#define   DISABLE_REPACKING_FOR_COMPRESSION    REG_BIT(15) /* jsl+ */
 #define   RC_OP_FLUSH_ENABLE                   (1 << 0)
 #define   HIZ_RAW_STALL_OPT_DISABLE            (1 << 2)
 #define CACHE_MODE_1                           _MMIO(0x7004) /* IVB+ */
index e539a65..6972525 100644 (file)
@@ -2299,6 +2299,15 @@ rcs_engine_wa_init(struct intel_engine_cs *engine, struct i915_wa_list *wal)
                             GEN8_RC_SEMA_IDLE_MSG_DISABLE);
        }
 
+       if (IS_JASPERLAKE(i915) || IS_ELKHARTLAKE(i915)) {
+               /*
+                * "Disable Repacking for Compression (masked R/W access)
+                *  before rendering compressed surfaces for display."
+                */
+               wa_masked_en(wal, CACHE_MODE_0_GEN7,
+                            DISABLE_REPACKING_FOR_COMPRESSION);
+       }
+
        if (GRAPHICS_VER(i915) == 11) {
                /* This is not an Wa. Enable for better image quality */
                wa_masked_en(wal,