radv/aco: DXVKs strict float emulation causes black screen/graphical corruption on RDNA1
Description
Running many d3d9 games with DXVKs now default setting of strict float emulation leads to black screens or severe graphical corruption. Issue disappears when using RADV_DEBUG=llvm
or when running DXVK with d3d9.floatEmulation = True
(strict float emulation disabled).
Screenshots/video files
Screenshot of main menu of FlatOut: Video of me trying to run Black Mesa with default RADV/DXVK settings.
Steps to reproduce
Just run various D3D9 games. Issue immediately apparent. I tested:
- Black Mesa
- Dark Messiah of Might & Magic
- FlatOut
- FlatOut Ultimate Carnage
All were severely broken.
System information
System:
Host: AndriausPC Kernel: 5.16.4-zen1-1-zen x86_64 bits: 64 compiler: gcc
v: 11.1.0 Desktop: GNOME 41.3 tk: GTK 3.24.31 wm: gnome-shell
dm: GDM, LightDM Distro: Arch Linux
CPU:
Info: 6-core model: AMD Ryzen 5 2600 bits: 64 type: MT MCP arch: Zen+
rev: 2 cache: L1: 576 KiB L2: 3 MiB L3: 16 MiB
Speed (MHz): avg: 1412 high: 1780 min/max: 1550/3400 boost: enabled
cores: 1: 1780 2: 1366 3: 1271 4: 1517 5: 1376 6: 1376 7: 1523 8: 1334
9: 1270 10: 1378 11: 1378 12: 1376 bogomips: 81591
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Graphics:
Device-1: AMD Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]
vendor: Sapphire Limited driver: amdgpu v: kernel bus-ID: 0c:00.0
chip-ID: 1002:731f
Display: wayland server: X.Org 1.21.1.4 compositor: gnome-shell driver:
loaded: modesetting resolution: 1920x1080~144Hz s-dpi: 96
OpenGL: renderer: AMD Radeon RX 5700 XT (navi10 LLVM 13.0.0 DRM 3.44
5.16.4-zen1-1-zen)
v: 4.6 Mesa 22.0.0-devel (git-28f677e6dc) direct render: Yes
If applicable
- Xserver version: Xwayland 21.1.4-1
- DXVK version: 1.9.4.r2.gb220c898-1 (git master)
- Wine version: wine-tkg-staging-fsync-git 7.1.r0.gf5ca8f5a-326
- Proton version: proton-tkg-git 7.1.r0.gf5ca8f5a-1
API captures (if applicable, optional)
gfxreconstruct capture of Black Mesa main menu
This plays back sorta janky, but you can actually kinda see it when running RADV_DEBUG=llvm
, on ACO it's completely broken.
apitrace someone else made
This shows the issue with default settings, plays back fine with RADV_DEBUG=llvm
, also plays back fine when running DXVK with d3d9.floatEmulation = True
(strict float emulation disabled).
renderdoc frame from FlatOut main menu matching the screenshot
Further information (optional)
Issue doesn't appear with the LLVM backend (RADV_DEBUG=llvm
).
My environment doesn't set any of the variables ACO_DEBUG
, RADV_DEBUG
, and RADV_PERFTEST
.
People on the DXVK issue for this told me this issue doesn't appear on RDNA2 devices, so it's RDNA1 exclusive. (Or maybe it affects older GPUs too, I don't know.)