Hello Mesa developers.
I am reporting a bug in RADV that I have been investigating for over 200 hours. I have tested numerous configurations and believe I have isolated the issue.
System Information:
GPU: AMD Radeon RX 6800 XT (Navi 21) (ASRock Phantom Gaming)
CPU: Intel Xeon E5-2697A v4
RAM: 32 GB
OS: Gentoo Linux
Kernel: 7.0.11-gentoo (also tested 6.18.6 and 7.1.2-cachyos)
Mesa version: 26.1.2 (also tested 26.1.3)
Desktop: bspwm (X11)
Game: Metro Exodus (native Linux version from Steam)
Game settings: DX12, Ray Tracing Ultra, Quality on "Koshmar" (Nightmare / Extreme)
What I Tried (and what did NOT help):
Different Proton versions (7.0, 8.0, 9.0, Experimental, GE-Proton) - all crashed or froze.
Custom Wine build (wine-staging 11.11 with ntsync) - same crashes.
Proton with VKD3D-Proton was especially problematic - the game would not just crash, but the entire system would freeze or the GPU would reset. During these events, dmesg showed:
"Dumping IP State"
"GPU reset begin"
"GPU reset succeeded"
"VRAM is lost due to GPU reset"
"[drm] device wedged, but no recovery needed"
After this, the system would become completely unresponsive, sometimes even the keyboard (Caps Lock indicator) would stop working, requiring a hard reboot.
Mesa environment variables:
RADV_DEBUG=nodcc - this stopped the crashes in Proton but caused a ~30% performance drop.
RADV_PERFTEST=rt - no effect.
RADV_DEBUG=nodcc,noics - no effect.
RADV_PERFTEST=no_shader_cache - no effect.
VKD3D environment variables:
VKD3D_CONFIG=dxr - no effect.
VKD3D_CONFIG=dxr,no_upload_hvv - no effect.
VKD3D_CONFIG=force_bindless_texel_buffer - no effect.
Vulkan driver switching:
RADV (default) - crashes in Proton, segfaults in native.
AMDVLK - also crashes in Proton; not tested in native.
Kernel boot parameters:
amdgpu.dcdebugmask=0x10
amdgpu.dcdebugmask=0x12
amdgpu.dcdebugmask=0x210
amdgpu.dcdebugmask=0xA10
amdgpu.gpu_recovery=0
amdgpu.gpu_timeout=20000
amdgpu.runpm=0
amdgpu.mcbp=0
amdgpu.ppfeaturemask=0xfffd7fff
None of these resolved the issue.
Replaced the SSD (the game was on a failing SSD, then moved to a healthy HDD) - the issue persisted on the HDD, proving it is not storage-related.
Reflashed the motherboard BIOS - no effect.
Tested on a clean Arch Linux live USB - the issue still occurred.
Tried XFS and ext4 filesystems - no difference.
Comparison: DX12 vs DX11:
On Proton (DX12 with Ray Tracing Ultra and "Koshmar" quality settings): the game crashes and sometimes causes full system freezes.
On Proton (DX11 without ray tracing): the system crashes disappear, but performance drops by about 20%, and the graphics quality is noticeably worse.
This suggests that the issue is specifically related to how RADV handles the combination of DirectX 12, Ray Tracing, and high-quality rendering in this game.
The Breakthrough:
I decided to test the native Linux version of Metro Exodus (not Proton). The native version does not crash, but during loading screens (specifically the scenes with Artyom's narration), the game freezes for 3-4 seconds, then continues. During these freezes, dmesg shows a segmentation fault in libvulkan_radeon.so:
Jul 1 19:13:52 gentoo kernel: video[270346]: segfault at 40 ip 00007f7e39fdd275 sp 00007f7d9a7fd350 error 4 in libvulkan_radeon.so[1dd275,7f7e39e10000+6b3000] likely on CPU 22 (core 6, socket 0)
Jul 1 19:13:52 gentoo kernel: Code: 14 8a 48 ff c1 c5 fe 7f 00 c5 fa 7f 40 20 c7 00 95 94 9f 3b 4c 89 40 10 44 89 50 28 c5 fa 7f 48 18 49 39 cb 74 1f 4d 8b 04 cc <41> 83 78 40 01 75 a4 45 84 ed 74 9f 48 8b 47 18 c5 fa 7e 0c c8 eb
Jul 1 19:14:01 gentoo kernel: video[296182]: segfault at 40 ip 00007fca867dd275 sp 00007fc9eb7fd350 error 4 in libvulkan_radeon.so[1dd275,7fca86610000+6b3000] likely on CPU 8 (core 8, socket 0)
Jul 1 19:14:01 gentoo kernel: Code: 14 8a 48 ff c1 c5 fe 7f 00 c5 fa 7f 40 20 c7 00 95 94 9f 3b 4c 89 40 10 44 89 50 28 c5 fa 7f 48 18 49 39 cb 74 1f 4d 8b 04 cc <41> 83 78 40 01 75 a4 45 84 ed 74 9f 48 8b 47 18 c5 fa 7e 0c c8 eb
The game recovers from this segfault and continues to run, but the freeze is reproducible every time a location is loaded.
What This Suggests:
The native version of Metro Exodus exposes a bug in RADV (libvulkan_radeon.so) that causes a segmentation fault. The game handles this fault and continues. However, when the Windows version of the game is run through Proton/VKD3D, this same bug leads to an unrecoverable crash (the game freezes and eventually dies) or even a full system freeze with GPU reset.
Conclusion:
This appears to be a bug in RADV, specifically in how it handles certain Vulkan operations in Metro Exodus with DX12 and Ray Tracing. The issue is reproducible on RX 6800 XT and may affect other RDNA2 users.
If you need more logs, core dumps, or specific system information, I am happy to provide them.
Note: I am a Russian speaker. This report has been translated using a translator. Please forgive any grammatical inaccuracies. I hope the technical content is clear.
Thank you for your work on Mesa.
