enabling shader pre-caching content per game
Your system information
- Steam client version (build number or date): Aug 30 2019, at 18:54:19
- Distribution (e.g. Ubuntu): Arch Linux
- Opted into Steam client beta?: Yes
- Have you checked for system updates?: Yes
let us disable shader pre-caching contents for certain games not all people have good bandwidth for example i can't download 3.5gb shader cache every time "path of exile" gets an update but all other games have normal size ,i would like to be able to disable shader pre-caching content per game
Ideally, a game should not be re-downloading the "shader pre-caching" for no reason, like it is happening in these days for Warframe. If that is not possible, then being able to disable it for a bugged game would be nice. It is not very important though, because it is possible to disable the download for all the games, without distinction, which is what I did.
Agree with OP and gitvalds - having exactly the same experience. Whilst shader pre-caching is generally a benefit to games, there are games which do not need it - using downloads, disk space, processing resources (and electricity.) Then, there are bugged games, and games like Warframe which undergo a lot of change and subsequent processing before it is playable.
Being able to enable shader caching per-title, such as we already have on enabling the SteamUI, or allowing background downloads, would give a lot of benefits.
Agree with OP, and steam should have per-game toggles for shader caching. It doesn't make any sense to see over 10 gigs of caches of my non-steam games, like emulators (they already have built-in shader caching features).

This would be great, background shader pre-caching uses a ton of CPU with a large game library and enabling it only for the games you use the most would make the most sense.
This issue is very relevant for A Hat in Time. It's shader cache folder is excessively large (around 17 gb when finished processing iirc) which I believe is caused by the workshop. The shader cache will continue growing as long as new workshop items are created. Steam takes hours to finish processing these shaders, most of which arent for the base game (if my assumption is correct), and is kind of redundant general since A Hat in Time will preprocess shaders in game anyways.
An option to enable/disable shader caching per game would be helpful for cases like this too.
UPDATE: evidence as of 2025, for an 8 gb game
Is there any chance of there being progress on this issue?
this bug is literally killing our SSDs , why is there no progress on this still ? Every time I power on my steamdeck it just redownloads 6 GB of data ,this should not be the case with a finished product
Chiming in to say I'm (still) not affected, not on my Deck nor on any of the four Linux boxes I have Steam on. Shader caches are re-downloaded in bulk only after a relevant update, e.g. Mesa or Proton, which is as it should be. Steam client updates trigger it frequently as well, and maybe some of those are "erring on the side of caution", but all in all it's behaving as intended here.
Ideally
- it would only download shaders for stuff that's actually installed, including DLC, workshop items, whatever.
- it would only download shaders that have actually changed.
- there'd be a fail-safe to rein in badly-optimised/buggy games with runaway shader caches. Auto-disable if shader download > x % of game size or y full downloads detected over the last z client launches. Something like that. Because 17 GB shader caches for a single game is just absurd, as is re-downloading it every time.
- there'd be a per-game toggle pre-seeded by Valve or the dev. Not even because it's buggy, but because many games don't even profit much from it these days.
P.S. Unless the NVMes in the Deck are utter shite, they'll outlive you at 6 GB/day.
Hello! I would like to prise how great this is to prevent shader compilation stutter on games that normally have it on Windows. I have tested games like Ghostrunner 2, Final Fantasy VII Remake, Persona 3 Reload, Marvel Guardians of the Galaxy and thanks to Fossilize those games do not stutter at all on Linux. Thank you so much for building something that actually faces the shader compilation stutter issue on PC. However, thanks to the GPL addition, most DX11 games do not stutter anymore. Besides, I have found that DX11 games are the ones with longer size Shader cache files. With Proton Experimental, the amount of downloads of Shaders per day get increased, which is insane. In my opinion, it get annoying. I think it would be great if you provide us an option to download Shaders per game and a sort of shader update schedule, so we can decide whether we update them manually or on a daily, weekly or monthly basis. I know this might be asking for too much, however, this feature is very cool but it is being affected by some annoying stuff. I do believe this is an important step to make Steam OS way more atractive.
In the meantime, what I have done is turning off the precaching system, put games to update only when launched (I have to do it game by game, which is annoying) and when there is a game that I know will stutter, I turn on the shader pre cache system so Steam only downloads the shaders of that game. Then I start the game, shaders processes and then go back to desktop mode and then turn off shader precaching. As you can imagine, this is not practical at all. I could just select "download shaders for this game" or "keep shaders update every (day/ week/month).
I have done all of this through Bazzite on my ROG Ally but I am planning to upgrade my RTX 3070 to next AMD GPU only for Bazzite (And official Steam OS when it is ready for desktops).
Please, take this feedback into account. I think this should actually be a priority. Idk if it works in a different way for Steam Deck user, but as a Linux user using another distro, this is a great feature not being properly handled imo.
Suggestion: add a Steam client console command to download shader cache for a specific appid, similar to download_depot, download_item.
This would not require UI work, and would partially solve https://github.com/ValveSoftware/steam-for-linux/issues/9132 by allowing users to obtain transcoded video without enabling shader pre-caching globally.
Feedback: The current all or nothing approach does not work well if you have a library with several hundred games installed but only actively play 1 or 2 per week. I have shader pre-caching disabled for years now, only an opt-in per game would make me use the feature again.
Please add this feature. The lack of a per-game toggle makes fossilize way less useful than it could be.
I would like to also support adding a per-game toggle, there are games that update very often but aren't expensive to render on the-fly so the experience of playing these games just gets worse with larger updates due to shader cache
It'd be great if I could disable it for these outliers but keep it for most games