diff --git a/.pick_status.json b/.pick_status.json
index 91d70df925d..fc06e624a86 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -114,7 +114,7 @@
"description": "anv/drirc: disable Xe2 CCS drm modifiers for GTK engine",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index d24376e33bb..5fb712699d1 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -1969,6 +1969,12 @@ anv_image_init(struct anv_device *device, struct anv_image *image,
*/
isl_extra_usage_flags |= ISL_SURF_USAGE_DISABLE_AUX_BIT;
}
+
+ /* Workaround to disable XE2 CCS modifiers from drirc. */
+ if (device->info->ver == 20 &&
+ image->vk.tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT &&
+ device->physical->instance->disable_xe2_drm_ccs_modifiers)
+ isl_extra_usage_flags |= ISL_SURF_USAGE_DISABLE_AUX_BIT;
}
/* Fill out the list of view formats. */
diff --git a/src/intel/vulkan/anv_instance.c b/src/intel/vulkan/anv_instance.c
index a6f2c5985c0..7967313f1f5 100644
--- a/src/intel/vulkan/anv_instance.c
+++ b/src/intel/vulkan/anv_instance.c
@@ -19,6 +19,7 @@ static const driOptionDescription anv_dri_options[] = {
DRI_CONF_ANV_ASSUME_FULL_SUBGROUPS_WITH_SHARED_MEMORY(false)
DRI_CONF_ANV_DISABLE_FCV(false)
DRI_CONF_ANV_ENABLE_BUFFER_COMP(false)
+ DRI_CONF_ANV_DISABLE_DRM_AUX_MODIFIERS(false)
DRI_CONF_ANV_EXTERNAL_MEMORY_IMPLICIT_SYNC(true)
DRI_CONF_ANV_FORCE_GUC_LOW_LATENCY(false)
DRI_CONF_ANV_SAMPLE_MASK_OUT_OPENGL_BEHAVIOUR(false)
@@ -221,6 +222,8 @@ anv_init_dri_options(struct anv_instance *instance)
driQueryOptionb(&instance->dri_options, "anv_vf_component_packing");
instance->lower_terminate_to_discard =
driQueryOptionb(&instance->dri_options, "vk_lower_terminate_to_discard");
+ instance->disable_xe2_drm_ccs_modifiers =
+ driQueryOptionb(&instance->dri_options, "anv_disable_drm_ccs_modifiers");
if (instance->vk.app_info.engine_name &&
!strcmp(instance->vk.app_info.engine_name, "DXVK")) {
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index f5c5b4deaa4..20fed27e1ac 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1726,6 +1726,7 @@ struct anv_instance {
bool has_fake_sparse;
bool disable_fcv;
bool enable_buffer_comp;
+ bool disable_xe2_drm_ccs_modifiers;
bool compression_control_enabled;
bool anv_fake_nonlocal_memory;
bool anv_upper_bound_descriptor_pool_sampler;
diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf
index df2466ccfcd..1dc9d17af82 100644
--- a/src/util/00-mesa-defaults.conf
+++ b/src/util/00-mesa-defaults.conf
@@ -1127,6 +1127,9 @@ TODO: document the other workarounds.
+
+
+