Another big release of DXVK, the Vulkan-based implementation of Direct3D for Linux with Wine / Proton, has arrived. Version 2.4 expands the Direct3D support to version 8 now thanks to D8VK. So this means now DXVK as of this version covers Direct3D 8/9/10/11 and VKD3D-Proton continues for Direct3D 12.
Developer Ethan Lee (FNA / Linux ports) also had a nice code merge for this release with the addition of support for multiple window system backends that the application can choose between at runtime. On top of that, there's now proper ABI versioning for native libraries.
The frame rate limiter was also adjusted for non-native refresh rate emulation as explained:
In environments where the display mode cannot be changed (e.g. Proton), it is possible that DXVK reports a different refresh rate to the game than what the display is currently running at. This is problematic for games that require to be run at 60 FPS but do not limit their frame rate when using a 60 Hz display mode.
To work around this, the frame rate limiter will now be engaged automatically if a game runs in full-screen mode with vertical synchronization enabled, and if the detected frame rate over a short period of time is higher than the refresh rate of the selected display mode.
In case a game runs at a lower rate than expected and does not provide an in-game option to change refresh rate, this behaviour can be disabled by setting
d3d9.maxFrameRate = -1
(or the correspondingdxgi
option for D3D10+ games). SettingDXVK_FRAME_RATE
also overrides this behaviour as usual.
This now also applies to VKD3D-Proton as of this commit or later.
You will also find game fixes for:
- Battlefield 2, 2142:
- Dead Space 2
- Dragonshard
- Fallout 4
- Fallout New Vegas
- Ghostbusters Remastered
- Gothic 3
- Guild Wars 2
- Prototype
- Star Citizen
- The Sims 2
- Tomb Raider Legend
- Red Faction Guerrila Remastered
- Rise of Nations
- Watch Dogs, Watch Dogs 2
- WRC 4
There's more like improved compatibility to third-party mods hooking various DXGI entry points and various other miscellaneous fixes and updates.
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.
on dx9 compatibility up in my case***, however i think stay related to replace** d3d8.dll - d3d9.dll - d3d10core.dll* - d3d11.dll and dxgi.dll
*also duplicate d3d10core.dll and renamed as d3d10.dll will be usefull for some apps
**this replacement must be putted in respective folders aka 32bit libraries on windows/syswow64 and 64bit libraries on windows/system32
***since sometime will be needed in some cases put dxgi as native in winecfg but now solve various titles like this:
and dxgi as native is no more required in my case
this is a little test to show dxvk 2.4 on dx8 side
![](https://www.gamingonlinux.com/templates/default/images/emoticons/smile.png)
Last edited by mrdeathjr on 11 July 2024 at 12:05 am UTC
Quoting: mrdeathjra little test can make dxvk 2.4 on dx8 sideI was about to go look for some D3D8 games but luckily we already have you :D
(..)
The ones released fairy recently are most interesting to me, like what decision or technical debt made people still use it in the 2010?!
Quoting: hardpenguinThe ones released fairy recently are most interesting to me, like what decision or technical debt made people still use it in the 2010?!
Note that many games like Half-Life 2 and Portal still feature optional Direct3D 8 modes, which are useful for using RTX Remix on them (since Direct3D 8 is fixed-function). Without this mode, Portal with RTX would not have been possible.
Most recent entries you see on this list are remasters of old games, games using old engines for legacy reasons, or a leaked game from 2001 that became available in 2022 (Duke Nukem Forever 2001). For this last example however, a Direct3D 9-based renderer was developed by the community and is the preferred way to play. Bless Unreal Engine 1's swappable renderer system :)
Last edited by Calinou on 10 July 2024 at 6:27 pm UTC
Quoting: TheRiddickWonder if they can integrate FSR3.1 and framegen with dxvk sometime since its open-source. Would be a fantastic addition.
This needs per-game integration as both require motion vectors, so DXVK can't provide an universal solution for this.
I'd love to see an open source alternative to Lossless Scaling frame generation. The best course of action for implementing this would likely to find/create an algorithm that generates motion vectors from two color buffers, feed these motion vectors to FSR3 frame generation and run all this in Gamescope (so it can be applied to any game without needing per-game support).
Quoting: CalinouThis needs per-game integration as both require motion vectors, so DXVK can't provide an universal solution for this.
I use to think this way as well. But its not the case for some upscaling and frame gen technology.
I would like to present your research project for the next week:
Last edited by TheRiddick on 13 July 2024 at 3:00 am UTC
Quoting: TheRiddickI would like to present your research project for the next week: Seemless Scaling app on steam.
This is exactly what I was referring to, except it's called Lossless Scaling. It works without motion vectors (or even a depth buffer) because it generates those on the fly the color buffer. It's not as precise as an in-engine implementation, but it can be pretty good at higher base framerates if you put in the GPU time.
Only downside I can see is when in UI screens it can scribble for a split second when switching UI.
See more from me