diff --git a/.pick_status.json b/.pick_status.json index da6396df6b8..985fd1b8279 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1264,7 +1264,7 @@ "description": "radv: add radv_disable_dcc_stores and enable for Indiana Jones: The Great Circle", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index 5cc04237679..354e7951b31 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -295,6 +295,10 @@ radv_use_dcc_for_image_early(struct radv_device *device, struct radv_image *imag if (instance->drirc.disable_dcc_mips && pCreateInfo->mipLevels > 1) return false; + /* Force disable DCC for stores to workaround game bugs. */ + if (instance->drirc.disable_dcc_stores && (pCreateInfo->usage & VK_IMAGE_USAGE_STORAGE_BIT)) + return false; + /* DCC MSAA can't work on GFX10.3 and earlier without FMASK. */ if (pCreateInfo->samples > 1 && pdev->info.gfx_level < GFX11 && (instance->debug_flags & RADV_DEBUG_NO_FMASK)) return false; diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index df2ae2cd307..f81edfd8663 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -153,6 +153,7 @@ static const driOptionDescription radv_dri_options[] = { DRI_CONF_RADV_DISABLE_TC_COMPAT_HTILE_GENERAL(false) DRI_CONF_RADV_DISABLE_DCC(false) DRI_CONF_RADV_DISABLE_DCC_MIPS(false) + DRI_CONF_RADV_DISABLE_DCC_STORES(false) DRI_CONF_RADV_DISABLE_ANISO_SINGLE_LEVEL(false) DRI_CONF_RADV_DISABLE_TRUNC_COORD(false) DRI_CONF_RADV_DISABLE_SINKING_LOAD_INPUT_FS(false) @@ -265,6 +266,7 @@ radv_init_dri_options(struct radv_instance *instance) instance->drirc.vk_require_astc = driQueryOptionb(&instance->drirc.options, "vk_require_astc"); instance->drirc.disable_dcc_mips = driQueryOptionb(&instance->drirc.options, "radv_disable_dcc_mips"); + instance->drirc.disable_dcc_stores = driQueryOptionb(&instance->drirc.options, "radv_disable_dcc_stores"); } static const struct vk_instance_extension_table radv_instance_extensions_supported = { diff --git a/src/amd/vulkan/radv_instance.h b/src/amd/vulkan/radv_instance.h index 876461b642b..57d6bdc5a48 100644 --- a/src/amd/vulkan/radv_instance.h +++ b/src/amd/vulkan/radv_instance.h @@ -72,6 +72,7 @@ struct radv_instance { bool vk_require_etc2; bool vk_require_astc; bool disable_dcc_mips; + bool disable_dcc_stores; char *app_layer; uint8_t override_graphics_shader_version; uint8_t override_compute_shader_version; diff --git a/src/util/00-radv-defaults.conf b/src/util/00-radv-defaults.conf index 5bf2bedc960..d125e24ede8 100644 --- a/src/util/00-radv-defaults.conf +++ b/src/util/00-radv-defaults.conf @@ -109,6 +109,12 @@ Application bugs worked around in this file: