DXVK [GitHub], which provides a Vulkan-based D3D11 and D3D10 implementation for use in Wine has a new build out. The pace of development on this continues to absolutely mesmerise me, with each release bringing something really interesting. Reminder: See my interview with the creator of DXVK here.
New feature highlights in 0.80:
Improvements
- Added State Cache
- Direct3D Feature Level 11_1 is now supported.
- Minor overall reduction of CPU overhead.
Bug fixes
- Fixed crashes on some APU systems without dedicated video memory (#640)
- Assetto Corsa: Fixed crashes and artifacts when reflections are disabled (#648)
- Project Cars 2: Fixed crash upon loading the game (#375, #641)
About the new State Cache feature, they said this:
In order to reduce stutter on subsequent runs of an application, DXVK now caches pipeline state, which allows it to compile shaders earlier than it currently does, even if the driver's shader cache got invalidated after an update. This may temporarily cause very high CPU load.
By default, this feature is enabled, and cache files are typically created in the same directory where the game executable is located. Refer to the README for further details.
We don't know when this will be pulled into Proton for Valve's Steam Play, which is now a few versions behind. If you wish to test DXVK with Wine directly, I've no doubt Lutris will have a build up sometime soon.
Quoting: ShmerlQuoting: YoRHa-2BThe game is silly and
a) creates multiple D3D11 devices
b) changes its current working directory multiple times.
The actual cache file you're looking for is in the /bin subdir, not in /bin/x64.
Also, Witcher 3 does not compile its shaders ahead of time, so you will still encounter stutters in this game (although it should be less annoying because it can now use multiple threads to do it in parallel).
Good to know, thanks. I see the one in bin, and it's around 1 MB after a brief test.
I noticed that general stutter is lower now. A lot of Ryzen cores help (DXVK reports using 12 threads for compilation):
info: DXVK: Read 627 valid state cache entries
info: DXVK: Using 12 compiler threads
Yes.
If you have 8 cores ( 4c / 8t included ) and greater , it uses 3/4 of cores for that.
If you have less than 8 cores it uses half of them.
Quoting: LeopardThere is no need for seeking meaning in numbers.
Just enjoy it , that's what i do.
That might be true in this case; though in general (including anything mission critical), you do have to think twice, or take precautions, before using zero-point software.
Quoting: YoRHa-2BQuoting: ShmerlI tested it with The Witcher 3, and somehow witcher3.dxvk-cache that was generated is just 12 bytes.The game is silly and
a) creates multiple D3D11 devices
b) changes its current working directory multiple times.
The actual cache file you're looking for is in the /bin subdir, not in /bin/x64.
Also, Witcher 3 does not compile its shaders ahead of time, so you will still encounter stutters in this game (although it should be less annoying because it can now use multiple threads to do it in parallel).
Fantastic update, this has eliminated a lot of the stutter in Witcher 3 :-)
I have but one question - How does the new shader cache work with Nvidia? The games now seem to store shader cache in both the *.dxvk-cache file and Nvidia's own method (I'm using the __GL_SHADER_DISK_CACHE_PATH envvar). Do they work together or I can disable the Nvidia built in one?
Thanks for your work.
Quoting: Avehicle7887I have but one question - How does the new shader cache work with Nvidia? The games now seem to store shader cache in both the *.dxvk-cache file and Nvidia's own method (I'm using the __GL_SHADER_DISK_CACHE_PATH envvar). Do they work together or I can disable the Nvidia built in one?The new DXVK cache stores pipeline state, while Nvidia's cache stores compiled shaders. There's no actual overlap.
Quoting: tuubiQuoting: Avehicle7887I have but one question - How does the new shader cache work with Nvidia? The games now seem to store shader cache in both the *.dxvk-cache file and Nvidia's own method (I'm using the __GL_SHADER_DISK_CACHE_PATH envvar). Do they work together or I can disable the Nvidia built in one?The new DXVK cache stores pipeline state, while Nvidia's cache stores compiled shaders. There's no actual overlap.
That clears it, thanks :-)
Quoting: YoRHa-2BQuoting: F.UltraSo I take it that DXVK is now DX11 feature complete, this is incredible news!Not quite, Stream Output is still a big feature that's missing.
Ok so that is not part of the feature level then I suppose? (Or the Wikipedia page is wrong on 11_1 being the highest feature level for DX11).
Anyway, you are far to humble ;)
Last edited by F.Ultra on 24 September 2018 at 5:04 pm UTC
Quoting: F.UltraOk so that is not part of the feature level then I suppose?It's part of 10_0 and above, but DXVK currently just ignores that and pretends that everything is fine.
And, well, that works in games that don't need the feature, but some do need it.
Last edited by YoRHa-2B on 24 September 2018 at 5:07 pm UTC
See more from me