diff --git a/src/intel/genxml/gen125.xml b/src/intel/genxml/gen125.xml
index 72b3eeacc55..9be1033f49e 100644
--- a/src/intel/genxml/gen125.xml
+++ b/src/intel/genxml/gen125.xml
@@ -421,6 +421,8 @@
+
+
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index d8e8220d826..2b61e9587a0 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -769,10 +769,24 @@ add_aux_surface_if_supported(struct anv_device *device,
if (anv_formats_ccs_e_compatible(device->info, image->vk.create_flags,
image->vk.format, image->vk.tiling,
image->vk.usage, fmt_list)) {
- image->planes[plane].aux_usage =
- intel_needs_workaround(device->info, 1607794140) ?
- ISL_AUX_USAGE_FCV_CCS_E :
- ISL_AUX_USAGE_CCS_E;
+ if (intel_needs_workaround(device->info, 1607794140)) {
+ /* FCV is permanently enabled on this HW. */
+ image->planes[plane].aux_usage = ISL_AUX_USAGE_FCV_CCS_E;
+ } else if (device->info->verx10 == 125) {
+ /* FCV is enabled via 3DSTATE_3D_MODE. We'd expect plain CCS_E to
+ * perform better because it allows for non-zero fast clear colors,
+ * but we've run into regressions in several benchmarks (F1 22 and
+ * RDR2) when trying to enable it. When non-zero clear colors are
+ * enabled, we've observed many partial resolves. We haven't yet
+ * root-caused what layout transitions are causing these resolves,
+ * so in the meantime, we choose to reduce our clear color support.
+ * With only zero clear colors being supported, we might as well
+ * turn on FCV.
+ */
+ image->planes[plane].aux_usage = ISL_AUX_USAGE_FCV_CCS_E;
+ } else {
+ image->planes[plane].aux_usage = ISL_AUX_USAGE_CCS_E;
+ }
} else if (device->info->ver >= 12) {
anv_perf_warn(VK_LOG_OBJS(&image->vk.base),
"The CCS_D aux mode is not yet handled on "
diff --git a/src/intel/vulkan/genX_init_state.c b/src/intel/vulkan/genX_init_state.c
index 965ff32f25e..ff534193e5a 100644
--- a/src/intel/vulkan/genX_init_state.c
+++ b/src/intel/vulkan/genX_init_state.c
@@ -161,6 +161,8 @@ genX(emit_slice_hashing_state)(struct anv_device *device,
mode.CrossSliceHashingMode = (util_bitcount(ppipe_mask) > 1 ?
hashing32x32 : NormalMode);
mode.CrossSliceHashingModeMask = -1;
+ mode.FastClearOptimizationEnable = true;
+ mode.FastClearOptimizationEnableMask = true;
}
#endif
}