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.
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.
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
Last edited by randyl on 30 May 2020 at 10:54 pm UTC
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.
Quoting: AwesamLinuxAnyone else having problems with the background processing getting stuck at 0% processing shaders with certain games?
I experience that in STRIDER
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 steamThat'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.
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!)
It is truly an amazing time for anyone to give Linux desktop a go when looking into alternatives to Windows.
See more from me