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 }