vkd3d-proton
vkd3d-proton copied to clipboard
Borderlands3: Very low performance compared to Windows
Hi,
i did a performance test of BL3 on windows vs vkd3d (0e216b2b10f1835e2dc2769a77f9916a890ed669) + Budget_bar pr applied.
System: Host: gamebox Kernel: 5.13.12-tkg-idlefix x86_64 bits: 64 compiler: gcc v: 11.1.1 Desktop: KDE Plasma 5.22.5
tk: Qt 5.15.2 wm: kwin_x11 dm: SDDM Distro: openSUSE Tumbleweed 20210913
CPU: Info: 8-Core model: AMD Ryzen 7 3700X bits: 64 type: MT MCP arch: Zen 2 rev: 0 cache: L2: 4 MiB
flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 115089
Speed: 2196 MHz min/max: 2200/3600 MHz boost: enabled Core speeds (MHz): 1: 2196 2: 2195 3: 2198 4: 2195 5: 2194
6: 2195 7: 2196 8: 2089 9: 2195 10: 2195 11: 2195 12: 2205 13: 2195 14: 2195 15: 2195 16: 2195
Graphics: Device-1: Advanced Micro Devices [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] driver: amdgpu v: kernel
bus-ID: 0a:00.0 chip-ID: 1002:73bf
Display: x11 server: X.Org 1.20.13 compositor: kwin_x11 driver: loaded: amdgpu resolution: 3440x1440~120Hz
s-dpi: 96
OpenGL: renderer: AMD Radeon RX 6900 XT (SIENNA_CICHLID DRM 3.41.0 5.13.12-tkg-idlefix LLVM 12.0.1)
v: 4.6 Mesa 21.2.1 direct render: Yes
RBAR is on on my system.
Radv Version: 138463d3c3e3134aa43863ac8a5a18e60b9cb43a
Game Resolution: 3440x1440 Game Quality Setting: Ultra
The ingame benchmark results are.
Windows 10: ~110fps VKD3D: ~70fps
both fully gpu limited.
The ultra mode is really taxing, but i have no idea why the perf gap is the huge in that game.
Many thx, Christian
Did a more extensive test on RX 6800, for reference, with ReBAR enabled:
1440p:
Windows: 100% res scale - high: 127.67 fps - 7.832 ms 100% res scale - ultra: 108.92 fps - 9.181 ms 200% res scale - high: 39.15 fps - 25.543 ms 200% res scale - ultra: 35.79 fps - 27.94 ms
vkd3d-proton: 100% res scale - high: 100.5 fps - 9.95 ms 100% res scale - ultra: 82.21 fps - 12.164 ms 200% res scale - high: 30.76 fps - 32.51 ms 200% res scale - ultra: 28.16 fps - 35.51 ms
This is a pretty big delta.
Also, perf results are very similar for DXVK and vkd3d-proton when GPU bound, it's not an vkd3d-proton issue in isolation.
From analysis of a capture, the game is rendering in an extremely inefficient way. Over 150 render passes, with barriers in between ping-ponging between COLOR -> SHADER_READ -> COLOR, once per draw call. I can only assume the AMD drivers added app-opt hacks to work around this somehow, but I'm not particularly stoked about spending more time on this issue.