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.
Quoting: t3gI 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
Quoting: Comandante ÑoñardoI 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.
Quoting: t3gPop_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.
Quoting: t3gI 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 🙂
Quoting: mr-victoryQuoting: Comandante ÑoñardoI 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!
Quoting: Comandante ÑoñardoQuoting: mr-victoryQuoting: Comandante ÑoñardoI 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