summaryrefslogtreecommitdiff
path: root/src/amd/vulkan/radv_formats.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/amd/vulkan/radv_formats.c')
-rw-r--r--src/amd/vulkan/radv_formats.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c
index 5251916a488..a1729eba268 100644
--- a/src/amd/vulkan/radv_formats.c
+++ b/src/amd/vulkan/radv_formats.c
@@ -2096,10 +2096,6 @@ radv_dcc_formats_compatible(enum amd_gfx_level gfx_level, VkFormat format1, VkFo
unsigned size1, size2;
int i;
- /* All formats are compatible on GFX11. */
- if (gfx_level >= GFX11)
- return true;
-
if (format1 == format2)
return true;
@@ -2122,8 +2118,16 @@ radv_dcc_formats_compatible(enum amd_gfx_level gfx_level, VkFormat format1, VkFo
(type1 == dcc_channel_float) != (type2 == dcc_channel_float) || size1 != size2)
return false;
- if (type1 != type2)
+ if (type1 != type2) {
+ /* FIXME: All formats should be compatible on GFX11 but for some reasons DCC with signedness
+ * reinterpretation doesn't work as expected, like R8_UINT<->R8_SINT. Note that disabling
+ * fast-clears doesn't help.
+ */
+ if (gfx_level >= GFX11)
+ return false;
+
*sign_reinterpret = true;
+ }
return true;
}