Now that DXVK is integrated into Steam, Valve could provide complete shader-caches for the supported games. So pre-compiling would bring smooth gameplay from the first time you run a game.
https://github.com/ValveSoftware/Proton feels like better place for this request
I don't think dxvk can benefit from it, since it needs to translate DXBC anyway and something in that process is dynamic and non cacheable. Actual SPIR-V shaders should be cached by the driver already.
DXVK could benefit massively from it, but as far as I'm aware, this would be implemented via some Steam<>Driver interaction, DXVK would have to do pretty much nothing in order to support it.
What exactly will be cached in such case?
I'm not entirely sure but I think they distribute shader caches for your GPU+Driver version. Of course, someone would still have to suffer through the stuttering anyway to generate those.
You mean they cache final machine code for each architecture? Isn't it what radv cache is doing for amdgpu on "use after first run" basis? They probably distribute cache for d3d pipeline so it could skip generating machine code from dxbc. How will dxvk benefit from it? I guess I'm missing something here.
I was thinking about this way:
This would fill the drivers cache and the game would run smooth on the first run with every card/driver combo.
It would also work for people using Mesa-git and update it quite often, like me.
Console-emulators like RPCS3 and Cemu do the caching in a similar way and the users share their caches to have a smooth first run. https://www.reddit.com/r/CEMUcaches/
Isn't that already implemented in Steam

This is for regular Steam games, not wine / dxvk
Is there a difference between DXVK Vulkan shader and native Vulkan shader
@sandman7920 The steam games that you would run using DXVK would be running DirectX 10/11 and not OpenGL or Vulkan :)
@SveSop
Though that shouldn't be a problem , if that was the case shader caching locally with DXVK wouldn't work at all in the first place.
They are still stored in a way that Vulkan drivers can cache and use it , only locally.
Correct me if i'm wrong because i'm not a techy graphics guy :D
@Leopard1907
I kinda thought from the wording of this:
This reduces load times and in-game stuttering during the first few launches of OpenGL- and Vulkan-based games on supported hardware.
https://store.steampowered.com/news/35534/
That it meant it only works for OpenGL and Vulkan games. Lets say you run a Vulkan game that does not have a Linux client through the Windows version of Steam - under wine. This would then utilize the wine -> Vulkan layer, and have absolutely nothing to do with DXVK. Same with OpenGL.
If you however run a DirectX game through Steam (and Wine + DXVK), it would possibly be my understanding that this "feature" in the steam client would not automatically download pre-compiled vulkan shaders, as this is a DirectX game?
Correct me if im wrong :)
There is practically no difference between native Vulkan games and games running on top of DXVK for the underlying OS and driver. I don't know how Valve's implementation works but there should be no technical reason preventing this from being used for DXVK. Valve would just have to implement it.
@SveSop
Point is , every game for Linux is basically using OGL and VLK , even if they run through Proton. Since with Steam Play , every game on Steam now has also OGL and VK renderers , in a way...
Because DX is not supported on Linux natively , there is no way to caching DX related shaders natively. Also there is no way for a gpu running on Linux drivers to understand DX shaders. It has be happen through Wine , DXVK or some other solution. So shaders must be cached as a Vulkan shader then DXVK or other implementations shouldn't matter.
I think Valve's Shader Cache is suitable for this.
Correct me if i'm wrong :)
@Leopard1907 @K0bin
I must be thick as a log today :(
So.. Windows Steam client now supports wine+dxvk?
https://arstechnica.com/gaming/2018/08/valves-steam-play-uses-vulkan-to-bring-more-windows-games-to-linux/
@SveSop
Not Windows Steam Client , Linux Steam client runs with Proton now.
https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561
Proton includes Wine , DXVK , Esync etc.
@Leopard1907
Yeah, i'm sorry. This was completely new to me. I just wish the thread starter had posted some links, and i had spent some time reading/googling that.. cos NOW i get it :)
Sorry guys..
Well.. that was certainly interesting news indeed :)
This is for regular Steam games, not wine / dxvk
That's wrong. It works with proton games, in fact that feature is meant for proton games.
You can find the shader cache directory in most games using DXVK.


So yes, this feature is already implemented in Steam for Linux (beta).
Can anyone clarify the confusion please? What exactly is missing for dxvk while Vulkan drivers already have their own cache (stored on disk after first compilation)? Just that warm up step, or something else?
@Shmerl
Confusion was , some people were not aware of new SteamPlay and because of that they thought how DXVK shaders can be in Steam's internal cache sharing system.
So after all , probably Steam is doing that also like it does with other OGL and Vulkan games on store.Which could greatly help for stutterings.
For Linux users , every game on Steam is pratically either on OGL or VLK now.
And for the record , my brother plays nearly non stop Fallout NV on Steam now and shader cache grows.
Also a Steam Shader Cache folder is in the FNV folder.
Shader Pre-Caching is supported for any Vulkan application and DXVK is no different, everything should work as expected there.
@Plagman
Thanks for clarifying this.
Same also applies to games work on Wine's OGL renderer.
Closing because this is pretty much already working.
Most helpful comment
Shader Pre-Caching is supported for any Vulkan application and DXVK is no different, everything should work as expected there.