mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 19:40:10 +01:00
radv: disable DCC with signedness reinterpretation on GFX11
All formats should be compatible on GFX11 but for some weird reasons DCC with signedness reinterpretation doesn't work as expected, like R8_UINT<->R8_SINT. Note that RadeonSI also has issues with this. This might be a hardware bug on RDNA3. This fixes DCC issues with Cyberpunk and A Plague Tale: Requiem. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8020 Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8371 Cc: mesa-stable Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21755>
This commit is contained in:
parent
79ab787a8f
commit
e6735409ee
1 changed files with 9 additions and 5 deletions
|
|
@ -2100,10 +2100,6 @@ radv_dcc_formats_compatible(enum amd_gfx_level gfx_level, VkFormat format1, VkFo
|
||||||
unsigned size1, size2;
|
unsigned size1, size2;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* All formats are compatible on GFX11. */
|
|
||||||
if (gfx_level >= GFX11)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (format1 == format2)
|
if (format1 == format2)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
@ -2126,8 +2122,16 @@ radv_dcc_formats_compatible(enum amd_gfx_level gfx_level, VkFormat format1, VkFo
|
||||||
(type1 == dcc_channel_float) != (type2 == dcc_channel_float) || size1 != size2)
|
(type1 == dcc_channel_float) != (type2 == dcc_channel_float) || size1 != size2)
|
||||||
return false;
|
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;
|
*sign_reinterpret = true;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue