<value name="180DEG" value="2" />
<value name="270DEG" value="3" />
</field>
+ <field name="Decompress In L3" start="159" end="159" type="bool" />
<field name="MIP Count / LOD" start="160" end="163" type="uint" />
<field name="Surface Min LOD" start="164" end="167" type="uint" />
<field name="Mip Tail Start LOD" start="168" end="171" type="uint" />
<value name="180DEG" value="2" />
<value name="270DEG" value="3" />
</field>
+ <field name="Decompress In L3" start="159" end="159" type="bool" />
<field name="MIP Count / LOD" start="160" end="163" type="uint" />
<field name="Surface Min LOD" start="164" end="167" type="uint" />
<field name="Mip Tail Start LOD" start="168" end="171" type="uint" />
#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