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:
+
+
+
+
+
+
diff --git a/src/util/driconf.h b/src/util/driconf.h
index 769d2dfd7d5..f988ad7fc8c 100644
--- a/src/util/driconf.h
+++ b/src/util/driconf.h
@@ -696,6 +696,10 @@
DRI_CONF_OPT_B(radv_disable_dcc_mips, def, \
"Disable DCC for color images with mips")
+#define DRI_CONF_RADV_DISABLE_DCC_STORES(def) \
+ DRI_CONF_OPT_B(radv_disable_dcc_stores, def, \
+ "Disable DCC for color storage images")
+
#define DRI_CONF_RADV_DISABLE_ANISO_SINGLE_LEVEL(def) \
DRI_CONF_OPT_B(radv_disable_aniso_single_level, def, \
"Disable anisotropic filtering for single level images")