Join us on the Linux Gaming community on Lemmy, the federated open source alternative to Reddit.

Valve continues to improve Linux Vulkan Shader Pre-Caching

By - | Views: 33,885

Recently we wrote about a new feature for Linux in the Steam Client Beta, where Steam can now sort out Vulkan shaders before running a game. With the latest build, it gets better.

The idea of it, as a brief reminder, is to prepare all the shaders needed for Vulkan games while you download and / or before you hit Play. This would help to stop constant stuttering seen in some games on Linux, mostly from running Windows games in the Proton compatibility layer, as native / supported Linux games would usually do it themselves. Just another way Valve are trying to get Linux gaming on Steam in all forms into tip-top shape.

Here's what's changed in the latest Steam Beta:

Linux Shader Pre-Caching

  • Added support for merging NVIDIA per-thread cache files after processing new Vulkan pipelines and after a game exits
  • Adjusted core count of background Vulkan pipeline processing to a quarter of logical cores by default
  • Changed processing tasks to idle priority
  • Updated Vulkan layer API version

Want to try out the latest Steam Beta? Go into Settings on Steam and it's on the first section you see:

Steam will then restart to do the update.

Will be great when this is rolled out to everyone, as it's a very clever way to get around the Proton shader stuttering issue using the open source Fossilize library and Vulkan layer.

Article taken from
Tags: Beta, Steam, Update, Vulkan
47 Likes , Who?
We do often include affiliate links to earn us some pennies. We are currently affiliated with GOG and Humble Store. See more here.
About the author -
author picture
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly came back to check on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly.
See more from me
Page: «3/5»
  Go to:

AwesamLinux 30 May, 2020
Quoting: Xaero_VincentThis is interesting.

I've seen this Vulkan shader pre-compile feature try to compile shaders for OpenGL games like Deus Ex Mankind Divided?

It also tries to do it with Proton games that have other launchers like Uplay behind them and just get stuck at 0%.

Hmm... For me, the processing got stuck at 0% trying to pre-compile games that weren't even installed. My theory was that the issue got triggered when uninstalling a game as I reported on Steam for Linux Github

But there could be more to this problem than that, so anyone seeing problems with processing getting stuck infinitely at 0% should probably report it on Github to get to the bottom of this. I think it should at least time-out, and move on to the next game if for whatever reason it is unable to process a game.
CatKiller 30 May, 2020
Quoting: BeamboomIf I have understood what a shader is, I can not fathom how this works?

Shaders are programs that run on your graphics card. When GPUs first became programmable, rather than fixed-function hardware pipelines, the first programs they could handle were for light calculations, so they're called shaders, but every part is programmable now.

The programs are written in whatever language and compiled to a portable Intermediate Representation, which is compatible with whichever cards follow the relevant standards. Those IRs are generally what get distributed with games, but they still can't be run directly. They need to be compiled into a form that will run on the specific hardware.

Once you've compiled the programs it would be handy if you could save them somewhere so that you didn't need to compile them again; that's the shader cache.

Last edited by CatKiller on 31 May 2020 at 4:07 am UTC
randyl 30 May, 2020
View PC info
  • Supporter
Is there a way to check which games are using Vulkan shader preloading? When I first enabled it I saw Borderlands 3, No Man's Sky, ARK, and maybe Elite Dangerous, but I'm not sure about the last one.

Last edited by randyl on 30 May 2020 at 10:54 pm UTC
Leopard 30 May, 2020
Quoting: randylIs there a way to check which games are using Vulkan shader preloading? When I first enabled it I saw Borderlands 3, No Man's Sky, ARK, and maybe Elite Dangerous, but I'm not sure about the last one.

Every game that can be used with DXVK+vkd3d ( D3D9,10,11, even d3d8 titles that people use with d3d8on9 with Proton ) + native Vulkan games are suitable canditates.

So you can even see some shader compiling for native OGL games on your system despite you're not using them with dxvk etc, because some people ran those via Proton and and they have Foz pipelines on Steam's servers.
edo 31 May, 2020
Very cool, but I also realized that if you use proton without steam you will not get any advantage, so this is a way to lock Linux players to steam
Laboratoryo_ni_Neil 31 May, 2020
Quoting: AwesamLinuxAnyone else having problems with the background processing getting stuck at 0% processing shaders with certain games?

I experience that in STRIDER
randyl 31 May, 2020
View PC info
  • Supporter
Quoting: edoVery cool, but I also realized that if you use proton without steam you will not get any advantage, so this is a way to lock Linux players to steam
That's a silly baseless claim. Proton is a custom wine compile and has nothing to do with shader pre-loading or its advantages. Lock-in means something can only be accessed through that lock or gate. Pre-caching shaders in no way locks anyone into anything. There is no lock-in here.
TheRiddick 31 May, 2020
VALVE / Gabe if your listening, please put some extra effort into communicating when we might see EasyAntiCheat and BattlEye compatibility sometime Or what needs to happen to make it happen. :)

I can't properly play games like War Thunder or ARMA3 under Linux Proton atm due to it, and yes I know WarThunder has a OpenGL3.1 old client that works, its pretty dated and not fun to use! (their vulkan test client crashes/blacks out).

We need EAC and BE! If that can be made to happen (hell I'd pay money to help it happen!) it would be a HUGE game changer for Linux and Proton! (and by extension Wine I'd take a gander, unless its something specially done within Steam Client itself!)
Shmerl 31 May, 2020
Do they cache it for each existing GPU architecture?
Kallestofeles 31 May, 2020
This is crazy. I tried The Witcher 3 a few months ago and the shader-cache buildup was the last issue that I had with it - now I just fire up the game with the latest proton and it runs exactly the same as on Windows, if not even a bit better. Truly amazing work has been put into the whole Wine project. (I mean to wine, proton, dxvk and all the other derivatives of getting dx calls translated onto Vulkan)
It is truly an amazing time for anyone to give Linux desktop a go when looking into alternatives to Windows.
While you're here, please consider supporting GamingOnLinux on:

Patreon, Liberapay or PayPal Donation.

We have no adverts, no paywalls, no timed exclusive articles. Just good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register

Or login with...
Sign in with Steam Sign in with Twitter Sign in with Google
Social logins require cookies to stay logged in.

Livestreams & Videos
None currently, submit yours here!