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.
Has anyone noticed any improvements?
I've heard reports of significant improvements in some cases. :)
Before that, i used to have massive spikes in game due to shaders.
Last edited by [email protected] on 30 May 2020 at 12:25 pm UTC
https://www.reddit.com/r/linux_gaming/comments/gpnhr5/stuttering_due_to_shader_compilation_why_not_just/
I believe I triggered the issue by uninstalling a few games before the background process had completed all of them. I reported that on Valves github. As it kept trying to process an uninstalled game.
But now I think there is more to this than that, the background process is now stuck at 0% processing a game that I had not uninstalled. And uninstalling/reinstalling/launching the game makes no difference.
Is there some kind of queue for the background process that can be reset, so that it starts again from fresh? Or any ideas what is causing this?
Also, this new shader pre-caching/pre-compiling helped removing the stuttering I had in GTA IV, making the game smoother with DXVK.
Is this new feature of the Linux Steam client the answer to my question linked below?Nope.
https://www.reddit.com/r/linux_gaming/comments/gpnhr5/stuttering_due_to_shader_compilation_why_not_just/
It downloads precompiled shaders, but it does not precompile.
Is this new feature of the Linux Steam client the answer to my question linked below?Nope.
https://www.reddit.com/r/linux_gaming/comments/gpnhr5/stuttering_due_to_shader_compilation_why_not_just/
It downloads precompiled shaders, but it does not precompile.
There is a new "allow background processing of Vulkan shaders" option, that when enabled does appear to precompile :)
Does anyone know if this will work with non-steam games added to your library?
I have a hard time believing that they even could make that work.
Not liking the game itself much though. The class ability thing is a bit weird for game like this imo and the game is quite slow paced compared to say Xonotic.
Some random testing action:
https://youtu.be/5abdFqxp01E
Last edited by Xpander on 30 May 2020 at 4:08 pm UTC
So the results are in, the TOP 10 games with the largest shader caches I currently have installed are:
261MB TEKKEN 7
204MB RESIDENT EVIL 2
198MB The LEGO NINJAGO Movie Video Game
176MB Street Fighter V
141MB Prey
131MB Vampyr
129MB A Plague Tale: Innocence
106MB SOULCALIBUR VI
89MB Planet Coaster
83MB Redout: Enhanced Edition
Not surprising to see TEKKEN 7 up there as it was a stutter fest :P
Is this new feature of the Linux Steam client the answer to my question linked below?Nope.
https://www.reddit.com/r/linux_gaming/comments/gpnhr5/stuttering_due_to_shader_compilation_why_not_just/
It downloads precompiled shaders, but it does not precompile.
There is a new "allow background processing of Vulkan shaders" option, that when enabled does appear to precompile :)
Maybe i'm missing something, but how can it knows in advance what shaders the game will need?
Do you have a source?
Does anyone know if this will work with non-steam games added to your library?
Definitely not. You can do it with Remote Play, though.
Is this new feature of the Linux Steam client the answer to my question linked below?Nope.
https://www.reddit.com/r/linux_gaming/comments/gpnhr5/stuttering_due_to_shader_compilation_why_not_just/
It downloads precompiled shaders, but it does not precompile.
There is a new "allow background processing of Vulkan shaders" option, that when enabled does appear to precompile :)
Maybe i'm missing something, but how can it knows in advance what shaders the game will need?
Do you have a source?
I don't understand how magic works myself and would like to see someone explain it in simple terms (Liam future article suggestion here :P )
But from my understanding, it uses Fossilize to somehow explore/record/replay the pipelines without having to actually play the game. If one searches Fossilize you find only a couple of articles on GOL and Phoronix about it like this for example.
I don't have better sources than that. But somehow it does work and is noticeable with certain games. Redout for example is so fast-paced it is easy to spot any stutter. With the background processing enabled the game is smooth on the very first run :)
I solved the issue with the background shader processing stalling at 0%, by uninstalling Steam and nuking the whole ".steam" folder the shadercache folder at where I have the Steam library. Then reinstalled Steam and the processing went without issues.1.9GB for native Borderlands 2 here. :O No wonder it took a while to process.
So the results are in, the TOP 10 games with the largest shader caches I currently have installed are:
261MB TEKKEN 7
204MB RESIDENT EVIL 2
198MB The LEGO NINJAGO Movie Video Game
176MB Street Fighter V
141MB Prey
131MB Vampyr
129MB A Plague Tale: Innocence
106MB SOULCALIBUR VI
89MB Planet Coaster
83MB Redout: Enhanced Edition
Not surprising to see TEKKEN 7 up there as it was a stutter fest :P
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%.
Shaders are what's deciding on how things will look with lights, shades and effects like glares, wetness, fire, all those things that happens on top of textures, right?
Well, in most games that will depend on what you do, when you do it and where you go? Like in GTA, there's time of day and weather, not to mention where on the map I drive?!
And - if there are some generally applicable pre-rendered work, then why not include that as part of the game install to begin with? And why are these pre-caching files handed out in small bits now and then?
I'm like... 100% blank!
Last edited by Beamboom on 30 May 2020 at 8:39 pm UTC
See more from me