The Vulkan-based implementation of Direct3D 8, 9, 10 and 11 for Linux used in Wine / Proton, DXVK version 2.4.1 is out today. This is a huge part of what makes Valve's Proton able to run so many Windows games on Linux / Steam Deck.
Quite a lot of improvements in this release!
General improvements
- The size for memory chunks is now determined dynamically based on the amount of memory the application has already allocated.
This should improve the out-of-the-box behaviour in various game launchers; thedxvk.maxChunkSize
option was removed accordingly.- Fixed an issue where the Vulkan swap chain would not always be recreated appropriately in a native Wayland environment. (PR #4252)
- Fixed an issue with descriptor pools growing too large on Nvidia cards in some situations. (PR #4166)
- Changed default shader code generation for DXBC
mad
instructions to work around flickering issues in games that use different vertex shaders to render the same geometry in multiple render passes. Thed3d11.longMad
andd3d9.longMad
options were removed accordingly.
D3D8 / D3D9
- Improved overall robustness of the D3D8 implementation with error handling and fixed various memory leaks.
- Slightly improved performance by optimizing vertex buffer uploads. (PR #4275)
- Significantly improved performance in some games using Software Vertex Processing. (PR #4274)
- Fixed full-screen presentation issues in some Game Maker games. (PR #4245)
- Removed
VK_IMAGE_USAGE_SAMPLED_BIT
from textures that don't need it. (#4176)- Enabled strict float emulation by default on AMDVLK now that this driver optimizes the pattern emitted by DXVK. (PR #4203). Do note that this was already the case on RADV.
- Chrome: Gold Edition: Enabled 60 FPS limit to work around game issues at higher frame rates. (PR #4260)
- GTA: San Andreas: Fix regression that made it crash with DXVK 2.4 (#4141, PR #4151)
- Operation Racoon City: Worked around a game crash. (#4172, PR #4175)
- Prince of Persia (2008): Enabled 240 FPS limit to work around game issues at very high frame rates. (PR #4281)
- Rayman 3: Fixed missing geometry. (PR #4143)
- Serious Sam 2: Fix in-game videos (#4158, PR #4161)
- Splinter Cell: Pandora Tomorrow: Enabled 60 FPS limit to fix broken input and physics. (PR #4254)
- The First Templar: Fixed lighting issues. (#4291, PR #4292)
- The Sims 2: Fix regression that made it crash with earlier DXVK versions (PR #4277)
D3D11 / DXGI
- Worked around a general issue wherein some games default to an integrated GPU based on the amount of available video memory.
- Worked around an issue where various games would misbehave when the amount of available VRAM is reported as a power of two.
- Changed shader code generation for dot product instructions to be more in line with code generation on native drivers.
This fixes a water rendering issue in Trails through Daybreak on Nvidia. (#4162)- Implemented a basic dead code elimination pass to avoid generating invalid SPIR-V shaders in rare situations.
Note: All these shader-related changes will invalidate fossilize databases.- Games will now leave fullscreen mode when the game window loses focus.
This is closer to Windows behaviour and fixes various issues with games hanging on some setups. (PR #2675)- Made sure the built-in options in DXVK for a game take precedence over the options enabled/disabled by DXVK-NVAPI.
This fixes a performance regression in God of War on Nvidia GPUs.- Batman Arkham Knight: Worked around an issue where the game does not start when it detects an Intel GPU. (PR #4152)
- Hunt Showdown: Fixed a crash caused by DXVK reporting a very high UMD driver version.
- Kena: Bridge of Spirits: Worked around a water rendering issue when the game detects an Intel GPU. (PR #4207)
- Microsoft Flight Simulator: Fixed garbled screen on start-up (#4276)
- Senran Kagura Peach Ball: Fixed character models being rendered the wrong way around. (#4216)
- The Sims 4: Work around a crash caused by a use-after-free bug in the game.
Pictured - Batman Arkham Knight
For the full detail see the changelog.
If you're curious on how to upgrade, you don't actually need to do anything. Proton and GE-Proton use DXVK directly, and so they both pull in updates in their new releases. However, for those who like to live on the wild side, you can upgrade the DXVK version in Proton yourself. Do it at your own risk.
To do so you can just overwrite the existing DXVK files with the release download of the latest DXVK. You can find your Proton install somewhere like this (depending on your Steam Library drives):
For Proton 9 and Proton Experimental:
path-to-your/SteamLibrary/steamapps/common/Proton x.x/files
Proton 8 and below:
path-to-your/SteamLibrary/steamapps/common/Proton x.x/dist
Where x.x is whatever Proton version installed you wish to give a new DXVK.
Inside there you will see "lib" and "lib64", for 32bit and 64bit. Inside each of those, there's a "wine" folder and inside there is a "dxvk" folder and that's where you replace the files with new versions. If you mess anything up, one way to ensure it gets reinstalled cleanly is just to remove the "/dist" folder.
2.4
2.4.1
in other things can run other newer titles
sadly seems rewrite memory allocator dont be merged in this release like doitsujin write here:
First part of a massive rework. Not going to merge this until after 2.4.1, and this needs a lot of testing anyway, especially on Nvidia and in more memory-constrained scenarios.
https://github.com/doitsujin/dxvk/pull/4280
according dxvk actions: Rewrite memory allocator is merged after 2.4.1 like as doitsujin write
rewrite memory allocator appear 1 hour after dxvk 2.4.1 release in actions
Last edited by mrdeathjr on 26 September 2024 at 12:14 pm UTC
rewrite memory allocator appear 1 hour after dxvk 2.4.1 release in actions
Note that the memory referred to in the reworks is mostly video memory.
Last edited by Blisto on 26 September 2024 at 12:22 pm UTC
Note that the memory referred to in the reworks is mostly video memory.
and huge work seems very active today in
https://github.com/doitsujin/dxvk/commits/refs/heads/memory-rework-pt2/
Im very interested because doutsujin write this:
https://github.com/doitsujin/dxvk/pull/4293
Slightly higher memory usage again, but also 20% higher frame rate
Im very interested because doutsujin write this:
https://github.com/doitsujin/dxvk/pull/4293
Slightly higher memory usage again, but also 20% higher frame rate
Also note that that qoute is not a comparison to before these reworks but instead refers to some of the other stuff also talked about in the PR.
So don't expect the performance to move much in any direction with this.
2.4.1
Lastest Master
At simple seek vram usage down around 200mb
Last edited by mrdeathjr on 26 September 2024 at 5:30 pm UTC
At simple seek vram usage down around 200mb
I guess your mileage may vary depending on the game. For low end GPUs this can mean a night and day difference.
I have a separate system with a 2GB RX 560. Many games are playable (if you temper your expectations), however performance tanks hard once it reaches the 2GB VRAM usage mark.
Last edited by Avehicle7887 on 26 September 2024 at 6:02 pm UTC
At simple seek vram usage down around 200mb
I guess your mileage may vary depending on the game. For low end GPUs this can mean a night and day difference.
I have a separate system with a 2GB RX 560. Many games are playable (if you temper your expectations), however performance tanks hard once it reaches the 2GB VRAM usage mark.
Yeah in lower specs seems show more improvements
Back to test another progress of memory rework part 1 and 2 appear in CarX Street
2.4.1
Memory Rework
in this title vram usage down around 200mb with similar gpu usage but fps up around 5-6fps
Last edited by mrdeathjr on 26 September 2024 at 6:05 pm UTC
Games will now leave fullscreen mode when the game window loses focus.
This is closer to Windows behaviour and fixes various issues with games hanging on some setups. (PR #2675)
Hopefully we will get the option to disable that new behaviour.
That basically kills the dual-monitor and workspace usage for me. Having to do one more click to bring the game up after focus loss. At least there was hope per discussions on the discord that there might be an option for this in the future to bring old method back again.
Cant have nice things because windows behaviour i guess :(
Annoying, but shouldn't this be what Borderless Windowed Mode is for in games?Games will now leave fullscreen mode when the game window loses focus.
This is closer to Windows behaviour and fixes various issues with games hanging on some setups. (PR #2675)
Hopefully we will get the option to disable that new behaviour.
That basically kills the dual-monitor and workspace usage for me. Having to do one more click to bring the game up after focus loss. At least there was hope per discussions on the discord that there might be an option for this in the future to bring old method back again.
Cant have nice things because windows behaviour i guess :(
Annoying, but shouldn't this be what Borderless Windowed Mode is for in games?
In theory yes, but not all games do same thing sadly
For Proton 9 and Proton Experimental:Thank you so much for providing this info! BTW VKD3D version too can be altered the same way right?
path-to-your/SteamLibrary/steamapps/common/Proton x.x/files
Proton 8 and below:
path-to-your/SteamLibrary/steamapps/common/Proton x.x/dist
Where x.x is whatever Proton version installed you wish to give a new DXVK.
Inside there you will see "lib" and "lib64", for 32bit and 64bit. Inside each of those, there's a "wine" folder and inside there is a "dxvk" folder and that's where you replace the files with new versions. If you mess anything up, one way to ensure it gets reinstalled cleanly is just to remove the "/dist" folder.
Last edited by Mangojuicedrinker on 27 September 2024 at 2:22 pm UTC
See more from me