protonscr

enabling shader pre-caching content per game

steamopen Feature RequestSteam client
ValveSoftware/steam-for-linux#6486 · opened 2019-09-07 by ghost · updated 2026-08-27 · 22 comments · github
?ghost 2019-09-07 github

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

Ggitvalds 2020-05-03 github

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.

?ghost 2022-05-15 github

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.

KKrisCris 2022-10-25 github

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).
image

Ggel-crabs 2022-11-25 github

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.

Iikaikahub 2023-10-01 github

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
Image

RR1chterScale 2024-09-25 github

Is there any chance of there being progress on this issue?

DD00T-5layer 2024-12-22 github

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

Ffallenguru 2024-12-23 github

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.

RRandy28CR 2024-12-28 github

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.

Jjn64 2025-03-01 github

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.

CcookiEoverdose 2025-06-08 github

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.

RReonu 2025-09-08 github

Please add this feature. The lack of a per-game toggle makes fossilize way less useful than it could be.

GGreenArron 2025-10-16 github

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

Jjack-avery 2026-05-04 github

+1. As someone who plays a lot of Warframe, Steam's built-in shader pre-caching has been the source of a lot of grief... before learning all of the issues it has, apparently with specifically Warframe. The addition of a per-game toggle would be a blessing.

SSkyrion9 2026-06-13 github

Wuthering Waves downloads 50 GB of transcoded video files. Add this option so I can disable it.

PP1kaPMD 2026-06-13 github

Either a per game toggle or a function toggle would be nice

By the second idea i mean something like
Pre-cache shaders y/n
pre-cache videos y/n

Zzen42 2026-06-15 github

Just wanted to +1. X4 downloading 2GB+ on multiple hosts on slow rural FTTC. Please put in a per game switch.

Also would downloading deltas work?

TThatZaliaSGuy 2026-07-12 github

+1 for per-title pre-cache toggle.

ZZeroLegend000000 2026-07-14 github

is this gonna get added? I really like shaders pre-caching and it does wonders for stuttering, however I get hit by a 50 gb of transcoded videos for wuthering waves, so the game now is almost 150 gb, nah, I'm gonna disable the feature altogether, until this is fixed

Ddeadbronco 2026-08-26 github

the symlinks are failing, and i am also dealing with an absurdly large transcoded_video.foz file of 54GB for Wuthering Waves. although shader pre-caching genuinely helps with my other games like Counter-Strike 2, but an individual toggle would be a nice addition.

.rwxr-xr-x 54G deadbronco 26 Aug 23:25  transcoded_video.foz

AAonodensetsu 2026-08-27 github

either prevent games from putting 50gb into the shader cache somehow or add per-game toggles, wuthering waves is being ridiculous

RReonu 2026-08-27 github

Here's a mockup of what the setting could look like.

Global toggle:

Image

Per-game toggle:

Image

Please give this feature request some thought. The usability improvement that would come from it would be massive.

Proton versions

Upstream links