Valve's shader cache system can be extremely helpful for Linux gaming, however it can also at times be quite problematic but Valve may have solved a big problem with it.
The idea behind the system is that you're supposed to see small regular downloads for the shader cache of each game, as Valve continue to build it up and then spread it out to everyone to help improve game performance on Linux and Steam Deck. However, over the years quite a lot of people have reported how it kept giving full downloads of the whole thing instead of being incremental.
Writing on the GitHub bug report from 2021 today, Valve developer Pierre-Loup Griffais said:
Shader cache downloads are designed to be incremental. Reports here indicate a daily download of the full shader cache file size, which is inconsistent with expectations - a small download and full disk write is expected instead.
After looking at the logs shared on this issue and on #9200, we've investigated and found a server-side problem with the system that keeps track of the ordering of shaders in those updates.
We've just rolled out an initial fix and will continue to monitor the situation. If the issue persists, please comment on this report and attach your
shader_log[.previous].txtas indicated above.
Hopefully now fewer people (or no one) will see the issue but do let them know on the bug report if it happens to you.
Last edited by Schattenspiegel on 15 February 2023 at 9:06 pm UTC
I also second a per-game option. There are only a few games I care about at any given time, though I leave them on my HDD for faster access. I think my shader cache now uses north of 100GB... I'm not even sure if that's still useful, since Mesa also has a size limit?
I also wonder if old shaders are evicted from servers?
I will probably disable background processing again, depending on how many updates I get daily having 50 games installed.
Steam still has to process the whole cache, it's just downloading less. And I do not play all games I have installed all the time, so background processing is a waste if the increments happen often on a lot of games.
See more from me