diff --git a/src/intel/genxml/gen125.xml b/src/intel/genxml/gen125.xml
index 6766aed98a3..09ef0f3a2dc 100644
--- a/src/intel/genxml/gen125.xml
+++ b/src/intel/genxml/gen125.xml
@@ -634,7 +634,7 @@
-
+
diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index 60aa91ab0ed..06e1351cc3e 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -3620,12 +3620,6 @@ _isl_surf_info_supports_ccs(const struct isl_device *dev,
if (usage & ISL_SURF_USAGE_DISABLE_AUX_BIT)
return false;
- /* TODO: Disable for now, as we're not sure about the meaning of
- * 3DSTATE_CPSIZE_CONTROL_BUFFER::CPCBCompressionEnable
- */
- if (isl_surf_usage_is_cpb(usage) && dev->info->ver < 20)
- return false;
-
if (INTEL_DEBUG(DEBUG_NO_CCS))
return false;
diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h
index 63c23e90d6f..2bb51c4f100 100644
--- a/src/intel/isl/isl.h
+++ b/src/intel/isl/isl.h
@@ -1978,6 +1978,11 @@ struct isl_cpb_emit_info {
* The Memory Object Control state for the surface.
*/
uint32_t mocs;
+
+ /**
+ * Aux usage of the CPB surface
+ */
+ enum isl_aux_usage aux_usage;
};
enum isl_surf_param {
diff --git a/src/intel/isl/isl_emit_cpb.c b/src/intel/isl/isl_emit_cpb.c
index e53055d13d0..2af2064d066 100644
--- a/src/intel/isl/isl_emit_cpb.c
+++ b/src/intel/isl/isl_emit_cpb.c
@@ -105,14 +105,12 @@ isl_genX(emit_cpb_control_s)(const struct isl_device *dev, void *batch,
cpb.SurfaceBaseAddress = info->address;
cpb.MipTailStartLOD = info->surf->miptail_start_level;
- /* TODO:
- *
- * cpb.CPCBCompressionEnable is this CCS compression? Currently disabled
- * in isl_surf_supports_ccs() for CPB buffers.
- */
#if GFX_VER >= 20
cpb.CompressionFormat =
isl_get_render_compression_format(info->surf->format);
+#else
+ cpb.LosslessCompressionEnable =
+ isl_aux_usage_has_compression(info->aux_usage);
#endif
} else {
cpb.SurfaceType = SURFTYPE_NULL;
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
index 4f42eb1a9c3..3fcefa579c1 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -5181,6 +5181,7 @@ cmd_buffer_emit_cps_control_buffer(struct anv_cmd_buffer *cmd_buffer,
info.view = &fsr_iview->planes[0].isl;
info.surf = &fsr_iview->image->planes[0].primary_surface.isl;
+ info.aux_usage = fsr_iview->image->planes[0].aux_usage;
info.address = anv_address_physical(addr);
info.mocs =
anv_mocs(device, fsr_iview->image->bindings[0].address.bo,