radv: DCC causes glitches in Red Dead Redemption 2
Description
I found a glitch in RDR2 with the Vulkan renderer. In muddy areas the horse tracks end up looking like they were crossed by tank treads. The glitch appears on deck too (main OS), but there it shows up as lines instead.
Screenshots/video files
Steps to reproduce
I don't know if save sharing works in this game, but the saves go into
/steamapps/compatdata/1174180/pfx/drive_c/users/steamuser/My Documents/Rockstar Games/Red Dead Redemption 2/Profiles/
RDR2_save_leviticus_cornwall.zip
Load the save or get to the fourth mission (Who the Hell is Leviticus Cornwall?)
Ride along until two minutes after the start of the mission, where the party reaches a place with thawing snow.
The glitch appears on the ground and continues to appear afterwards while riding along that road.
System information
System:
Host: ryzen-runar Kernel: 6.6.1-arch1-1 arch: x86_64 bits: 64 compiler: gcc
v: 13.2.1 Desktop: KDE Plasma v: 5.27.9 tk: Qt v: 5.15.11 wm: kwin_x11
dm: SDDM Distro: Arch Linux
CPU:
Info: 12-core model: AMD Ryzen 9 7900 bits: 64 type: MT MCP arch: Zen 4
rev: 2 cache: L1: 768 KiB L2: 12 MiB L3: 64 MiB
Speed (MHz): avg: 999 high: 5171 min/max: 400/5482 cores: 1: 3536 2: 400
3: 400 4: 400 5: 400 6: 3757 7: 400 8: 3513 9: 400 10: 400 11: 400 12: 5171
13: 400 14: 400 15: 400 16: 400 17: 400 18: 400 19: 400 20: 400 21: 400
22: 400 23: 400 24: 400 bogomips: 177654
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Graphics:
Device-1: AMD Navi 33 [Radeon RX 7700S/7600/7600S/7600M XT/PRO W7600]
vendor: XFX driver: amdgpu v: kernel arch: RDNA-3 pcie: speed: 16 GT/s
lanes: 8 ports: active: DP-3,HDMI-A-1 empty: DP-1,DP-2 bus-ID: 03:00.0
chip-ID: 1002:7480
Device-2: Logitech Webcam C310 driver: snd-usb-audio,uvcvideo type: USB
rev: 2.0 speed: 480 Mb/s lanes: 1 bus-ID: 7-1:2 chip-ID: 046d:081b
Display: x11 server: X.Org v: 21.1.9 with: Xwayland v: 23.2.2
compositor: kwin_x11 driver: X: loaded: modesetting unloaded: vesa
alternate: fbdev dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1
Screen-1: 0 s-res: 4480x1440 s-dpi: 96
Monitor-1: DP-3 pos: primary,right model: Dell U2515H res: 2560x1440
dpi: 118 diag: 634mm (25")
Monitor-2: HDMI-A-1 mapped: HDMI-1 pos: left model: Samsung S24E391
res: 1920x1080 dpi: 94 diag: 598mm (23.5")
API: EGL v: 1.5 platforms: device: 0 drv: radeonsi device: 1 drv: swrast
surfaceless: drv: radeonsi x11: drv: radeonsi inactive: gbm,wayland
API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 23.2.1-arch1.2
glx-v: 1.4 direct-render: yes renderer: AMD Radeon RX 7600 (gfx1102 LLVM
16.0.6 DRM 3.54 6.6.1-arch1-1) device-ID: 1002:7480
API: Vulkan v: 1.3.269 surfaces: xcb,xlib device: 0 type: discrete-gpu
driver: mesa radv device-ID: 1002:7480 device: 1 type: cpu
driver: mesa llvmpipe device-ID: 10005:0000
Regression
The bug was present in a fresh main build, so I did a bisect from 23.0-branchpoint
. The problem appears after DCC was re-enabled in this commit: c1b916cc
Further information (optional)
The bug does not appear with RADV_DEBUG=nodcc
, naturally. RADV_DEBUG=zerovram
had no effect.