DXVK, the translation layer that converts Direct3D calls to Vulkan for use with Wine and Proton, has a big new release out with version 2.0. This is one of the ways that Proton performs so well for Windows games on Linux desktop and Steam Deck.
For this, you will need to ensure you have up to date drivers, they said any Vulkan 1.3 capable driver and Wine version are required now. The new recommend versions are:
Driver | Required version | Recommended version |
---|---|---|
AMD (RADV) | 22.0 | 22.2 |
Nvidia | 510.47.03 | 520.56.06 |
Intel (ANV) | 22.0 | 22.2 |
As for what's new? A lot! As expected from a major version bump.
Firstly, DXVK-Native, that provides Vulkan support for Native Linux applications has now been upstreamed and merged into DXVK directly so that it "can be used as a drop-in replacement to port D3D applications without having to change rendering code". This is really great and for developers who are looking to port their games, it's breaking down another barrier.
One of the most exciting changes is to shader compiling. Unless games already have their shaders ready, like you see in Steam when it downloads them for you, there will often be a lot of stuttering as the game builds it up with DXVK as you play. That's now changed! If you have drivers that support what's needed, the "shaders will now be compiled at the time the game loads its D3D shaders, rather than at draw time" resulting in reduced or eliminated shader compile stutter. There's some caveats with this though like some games only loading their shaders as you play anyway, 32-bit games may stutter and NVIDIA uses more space.
I cannot stress how excited I am for the above on both Steam Deck and Linux desktop!
Other highlights:
- D3D9
- Reduce the likelihood of running out of address space in 32-bit D3D9 games
- Reading from an active render target in D3D9 games is now properly supported, which previously caused rendering artifacts on newer AMD hardware and required driver-level workarounds. This affects a number of games, including GTA IV.
- The D3D9 alpha test implementation was changed to more closely match the behaviour of Nvidia's implementation, which fixes inaccuracies in various games.
- D3D10
- Removal of some unused bits
- D3D11
- DXVK now exposes D3D11 Feaure Level 12_1 with the following newly added features:
- Tiled Resources up to Tier 3, provided that the corresponding Vulkan sparse binding and sparse residency features are supported
- Conservative Rasterization up to Tier 3, provided that the corresponding Vulkan conservative rasterization features are supported.
- Rasterizer Ordered Views, provided that the corresponding Vulkan fragment shader interlock features are supported.
- Closer to Windows behaviour for "immediate contexts and deferred contexts", might help "improve compatibility to third-party libraries and mods that hook into the D3D11 immediate context specifically, and reduces CPU overhead since some frequently used code paths are now more specialized for each context type".
- More optimizations to reduce CPU overhead in games like Assassin's Creed: Origins and God of War.
- DXVK now exposes D3D11 Feaure Level 12_1 with the following newly added features:
There's also numerous game-specific bug fixes including issues solved for: Alan Wake, Alice Madness Returns, Anomaly: Warzone Earth, Beyond Good and Evil, Dragon Age Origins, Empire: Total War, Final Fantasy XV, Grand Theft Auto IV, Heroes Of Annihilated Empires, King Of Fighters XIII, Metal Gear Solid V: Ground Zeroes, Sonic Generations, Spider Man: Shattered Dimensions, The Ship, Warhammer Online and Ys Seven.
Incredible work from all involved to make Linux gaming better than ever.
For Steam Deck users: you'll have to wait for SteamOS updates to bring in a new driver for support for all the features. Some of it is not yet ready in the Mesa GPU drivers for either desktop or Steam Deck.
If you have drivers that support what's needed, the "shaders will now be compiled at the time the game loads its D3D shaders, rather than at draw time" resulting in reduced or eliminated shader compile stutter.Finally graphics pipeline library is merged into a stable branch! Now Imwait for stable Proton to pick this up...
For this, you will need to ensure you have up to date drivers, they said any Vulkan 1.2 capable driver and Wine version are required nowThe release announcement mentions Vulkan 1.3, not 1.2
Fixed, thanks for the note, glad I caught this comment. In future, be sure to send a correction instead so we don't miss it.For this, you will need to ensure you have up to date drivers, they said any Vulkan 1.2 capable driver and Wine version are required nowThe release announcement mentions Vulkan 1.3, not 1.2
Now Imwait for stable Proton to pick this up...FWIW Proton 7.0 won't get this since we don't want to bump the hw/driver requirements on a stable release. Next major update should have it though, and this has basically been in Experimental for quite some time now.
*them are part of next bunch of testing titles
In both games with i had nvidia geforce gtx 1050 have much stutter
Last edited by mrdeathjr on 10 November 2022 at 6:18 pm UTC
In my case stay testing lastest git (most of this changes comes with 2.0) and shader stutter are reduced so much in some unreal engine 3 games: for now test damnation and rise of argonautsQuick note to say I deeply appreciate your games testing and it always makes me happy to see your posts. Double thumbs up!
In both games with i had nvidia geforce gtx 1050 have much stutter
On another note, Debian currently rolls with Mesa 22.2.0 (testing), 22.2.3 (sid) and 22.3.0 (experimental)
Of course in Siduction we also have 23.0-git.
If you have drivers that support what's needed,
What do you mean with that, exactly?
What do you mean with that, exactly?
It means your Vulkan driver needs to implement the `VK_EXT_graphics_pipeline_library` extension to use the feature. The only currently released stable driver which supports it is Nvidias 520 series drivers. AMD (radv) and Intel (ANV) are still working on it.
Now Imwait for stable Proton to pick this up...FWIW Proton 7.0 won't get this since we don't want to bump the hw/driver requirements on a stable release. Next major update should have it though, and this has basically been in Experimental for quite some time now.
And it helps. It really reduces stuttering in games a lot for me. An example would be moving on horse preloading in KCD: Deliverance (maybe shadows/foilage?) and I think in God of War, since I had odd stutters but using a new nvidia driver and experimental they disappear.
May be a coincident though. I doubt it, since those were very prominent and they magically disappeared.
What do you mean with that, exactly?
It means your Vulkan driver needs to implement the `VK_EXT_graphics_pipeline_library` extension to use the feature. The only currently released stable driver which supports it is Nvidias 520 series drivers. AMD (radv) and Intel (ANV) are still working on it.
I have the 520.56.06 version..
In theory, this should improve Lutris and Bottles gaming.
I just checked and this version of DXVK is not yet available on lutris or bottles
I guess this screws over Ubuntu 22.04 users unless they upgrade to 22.10, wait for a backport, or move to Pop_OS which has 22.2 and 6.0.6 of the Linux kernel right now.https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa (actually, the standard repositories carry 520.56.06 without needing the PPA)
https://launchpad.net/~kisak/+archive/ubuntu/kisak-mesa
Mesa (and the kernel) will also get standard upgrades on LTS releases following the Hardware Enablement cadence.
Last edited by CatKiller on 11 November 2022 at 4:30 am UTC
I just checked and this version of DXVK is not yet available on lutris or bottlesDownload DXVK from github and add it to Lutris/Bottles, then.
Pop_OS which has 22.2 and 6.0.6 of the Linux kernel right now.AFAIK you need Mesa development drivers for the stutter-reducing extensions, even 22.2 is not enough.
I guess this screws over Ubuntu 22.04 users unless they upgrade to 22.10, wait for a backport, or move to Pop_OS which has 22.2 and 6.0.6 of the Linux kernel right now.
Only mesa 22.0 is needed to use dxvk 2.0 🙂
I just checked and this version of DXVK is not yet available on lutris or bottlesDownload DXVK from github and add it to Lutris/Bottles, then.
Even if I manually download and paste dxvk-2.0 folder in the right place, Lutris and bottles don't show it in their respective dxvk config menu.
Lutris DXVK config data is located in the file dxvk_versions.json
I don't know where Bottles store its DXVK config info.
LUTRIS and BOTTLES DEVS, do your job so I can try this!
I just checked and this version of DXVK is not yet available on lutris or bottlesDownload DXVK from github and add it to Lutris/Bottles, then.
Even if I manually download and paste dxvk-2.0 folder in the right place, Lutris and bottles don't show it in their respective dxvk config menu.
Lutris DXVK config data is located in the file dxvk_versions.json
I don't know where Bottles store its DXVK config info.
LUTRIS and BOTTLES DEVS, do your job so I can try this!
Seems like you can just type in the name of the folder in `~/.local/share/lutris/runtime/dxvk/` to the DXVK version field in Lutris. In your case, type in "dxvk-2.0" and it should be picked up.
I just removed v1.10.3 (it was my build anyway) and symlinked it to my v2.0 that I dropped in.
v1.10.3 -> v2.0
Then, my dxvk version field in Runner Options still says v1.10.3 and it loads the one I want it to.
I find that easier than trying to enter bogus info in that dxvk_versions.json file to get it to show up in the drop list. I didn't realize you could just type the version (directory name) in that field lol
That took care of Lutris last night, but I really wanted this for Steam where I play more shader heavy DirectX 11 games. So I fixed up a custom build of Proton-GE, and updated the dxvk sources (to the v2.0 tag) within it. The only proton patch that wouldn't apply was dxvk_async and since I don't use that, I just omitted it instead of trying to fix it. (It might just be a matter of rebasing it but I was too impatient to look at it)
See more from me