doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.44k stars 868 forks source link

[D9VK] Mudrunner consumes all 8GB of VRAM and locks system. #4243

Open barthess opened 2 months ago

barthess commented 2 months ago

I play Mudrunner https://store.steampowered.com/app/675010/MudRunner/ on default settings. I use radeontop to monitor VRAM consumption. On vanilla maps the game consumes about 4-5GB and cause heavy sound stuttering during loading. When map loaded VRAM usage drops to ~1GB and game becomes playable. When I try to play some modded maps with lots of new geometry the game consumes all my 8GB of VRAM and locks system. Some times before system lock I can catch "radv/amdgpu: Not enough memory for command submission" message in console and similar messages in dmesg. After lock the only way out is reset button or sysrq+B. I replaced radv with amdvlk but it doesn't help. Bug reproducible with my system wine and with different proton versions in steam (checked Experimental, 8.0, 5.13). The only way to fix is disabling dxvk "PROTON_USE_WINED3D11=1 %command%" command line in Steam. I've found similar report here https://bbs.archlinux.org/viewtopic.php?id=298993

System information

AMD Radeon RX 7600 (0x1002:0x7480:0xCF) amdgpu mesa-24.2.1 wine-staging 9.16 DXVK: v2.4

Apitrace file(s)

https://disk.yandex.ru/d/TbL8V0tLwj-XVw

Log files

game.log

doitsujin commented 2 months ago

I'm not seeing excessive memory usage when replaying the trace so I'm not sure if this is exactly your problem, but the game creates several huge textures every single frame and then immediately destroys them. Needless to say, this is exceptionally dumb, and since DXVK needs to manually clear memory we're keeping these textures alive for several frames.

barthess commented 2 months ago

Can I workaround this setting low FPS limit (DXVK_FRAME_RATE=2) during game loading? Can I later set it back to 60 on the fly?

jrugia commented 2 months ago

@barthess Far as I know changing DXVK_FRAME_RATE value won't do it on the fly.

Instead you can use Mangohud where you can set several fps limits in its config file and switch by press R.Shift + F1 (in my case).

barthess commented 2 months ago

@jrugia Thanks! It works for me. 20 FPS limit is enough to successful map load. Loading process became much slower but game became playable. Even with SpintiresMod.

Blisto91 commented 3 days ago

@barthess Could you give this a shot with 2.5.1 to see if anything has changed?

barthess commented 23 hours ago

@Blisto91 Nothing changed. I tested it with proton experimental with the following dxvk version

2064.724:0124:0128:info:dxvk-nvapi:NvAPI_Initialize
2064.724:0124:0128:info:dxvk-nvapi:DXVK-NVAPI experimental-9.0-20241121b NVAPI gcc 10.3.0 x86_64 plain (MudRunner.exe)
info:  Game: MudRunner.exe
info:  DXVK: v2.5.1-2-gdd15328ccf87f70
info:  Build: x86_64 gcc 10.3.0