diff --git a/src/intel/genxml/gen12.xml b/src/intel/genxml/gen12.xml
index c4ff09659ae..c4c0b99bfdb 100644
--- a/src/intel/genxml/gen12.xml
+++ b/src/intel/genxml/gen12.xml
@@ -731,6 +731,7 @@
+
diff --git a/src/intel/genxml/gen125.xml b/src/intel/genxml/gen125.xml
index ff9e14a3da3..72c076f93aa 100644
--- a/src/intel/genxml/gen125.xml
+++ b/src/intel/genxml/gen125.xml
@@ -774,6 +774,7 @@
+
diff --git a/src/intel/isl/isl_surface_state.c b/src/intel/isl/isl_surface_state.c
index 59158f8e240..455e2f3bbb6 100644
--- a/src/intel/isl/isl_surface_state.c
+++ b/src/intel/isl/isl_surface_state.c
@@ -643,6 +643,20 @@ isl_genX(surf_fill_state_s)(const struct isl_device *dev, void *state,
#endif
#if GFX_VER >= 12
s.MemoryCompressionEnable = info->aux_usage == ISL_AUX_USAGE_MC;
+
+ /* The Tiger Lake PRM for RENDER_SURFACE_STATE::DecompressInL3 says:
+ *
+ * When this field is set to 1h, the associated compressible surface,
+ * when accessed by sampler and data-port, will be uncompressed in
+ * L3. If the surface is not compressible, this bit field is ignored.
+ *
+ * The sampler's decompressor seems to lack support for some types of
+ * format re-interpretation. Use the more capable decompressor for these
+ * cases.
+ */
+ s.DecompressInL3 =
+ !isl_formats_have_same_bits_per_channel(info->surf->format,
+ info->view->format);
#endif
#if GFX_VER >= 9
/* Some CCS aux usages have format restrictions. The Skylake PRM doc for