radv: add a new drirc option to disable DCC for mips and enable it for RDR2

The game aliases two images. It binds a memory object to two different
images, the first one being an image with 4 mips and the second with
only one mip but the bind offset is incorrect. It's like it queried
the first image size with different usage flags, so that DCC was
disabled.

Force disabling DCC for mips fixes the incorrect rendering and doesn't
hurt performance.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10200
Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32190>
This commit is contained in:
Samuel Pitoiset
2024-11-18 16:00:36 +01:00
committed by Marge Bot
parent 2e51d0c724
commit 2f13723c0a
5 changed files with 15 additions and 0 deletions
+3
View File
@@ -132,6 +132,9 @@ Application bugs worked around in this file:
<application name="RDR2" application_name_match="Red Dead Redemption 2">
<option name="radv_enable_unified_heap_on_apu" value="true" />
<option name="radv_zero_vram" value="true" />
<!-- Disable DCC for mips to workaround rendering issues because
the game aliases two images incorrectly. -->
<option name="radv_disable_dcc_mips" value="true" />
</application>
<application name="Metro Exodus (Linux native)" application_name_match="metroexodus">
+4
View File
@@ -692,6 +692,10 @@
DRI_CONF_OPT_B(radv_disable_dcc, def, \
"Disable DCC for color images")
#define DRI_CONF_RADV_DISABLE_DCC_MIPS(def) \
DRI_CONF_OPT_B(radv_disable_dcc_mips, def, \
"Disable DCC for color images with mips")
#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")