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. + +