this post was submitted on 23 Jan 2024
80 points (97.6% liked)

Linux Gaming

15754 readers
206 users here now

Gaming on the GNU/Linux operating system.

Recommended news sources:

Related chat:

Related Communities:

Please be nice to other members. Anyone not being nice will be banned. Keep it fun, respectful and just be awesome to each other.

founded 4 years ago
MODERATORS
 

For the past few months or so, steam precaching has been out of control. I have to download between 10 and 30 GB of shader precache data per day. That is extremely ridiculous. Steam's shader caches are quite often almost as large as the game itself. For example: the image here is a game that is ~7GB for the full game, downloading 10GB of shader precache. If I download an average of 30GB of shaders per day, then that is almost 1TB of data downloaded written per month just in shaders...

Not to mention that games I play regularly like CS2 get a precache update literally every 2 days that is 5-10GB and if I manage to cancel it, there is 0 difference in performance at all.

Also fossilize replay that takes 20%-50% CPU load, sometimes for an hour and is the single highest user of disk IO on my entire system. I would be concerned about SSD wear if it was during the early times of ssd just because of the massive amount of writes.

I'm all for downloading shader precaching, but at normal intervals of after updates, not just randomly every few days when there hasn't been a game update in months or years. I don't want to delete all of my games because I only have 100/30 internet, so it would take me a long time too redownload games.

Has anyone else been seeing these ridiculous intervals and datasets of shader cache? Could there at least be a selective pre-caching setting only for games that I play regularly so I am not caching shaders for games that I haven't played in 2 years?

all 27 comments
sorted by: hot top controversial new old
[–] [email protected] 24 points 9 months ago (2 children)

I had this problem for awhile, eventually I said enough and turned off shader pre-caching. Never noticed a difference in performance.

[–] [email protected] 14 points 9 months ago* (last edited 9 months ago)

It depends on the game, turning off shader pre-caching can cause a lot of stutters. I agree it should be turned off unless you need it though.

[–] [email protected] 1 points 9 months ago

I tried to but then I got massive stuttering

[–] [email protected] 15 points 9 months ago (2 children)

What proton version are you using? I think shader cache updates go inline with proton version updates so I’d you’re on experimental or bleeding edge you’ll get more updates

[–] [email protected] 4 points 9 months ago

Fixed GE 8-25 for most games, fixed GE 8-6 for the displayed game "A Hat in Time"

[–] [email protected] 1 points 9 months ago

Didn't know this. I'll have to try to set it to a certain version instead of proton experimental. Thanks

[–] [email protected] 12 points 9 months ago (3 children)

Same issues here, opening steam each night greets me with every single game downloading 500 mb - 5 gb of shader updates. It’s insane. I don’t get why my steamdeck doesn’t do this but an Arch desktop does?

[–] [email protected] 8 points 9 months ago (2 children)

It doesn't? My deck has shader updates for nearly every installed game every time I touch it.

[–] [email protected] 1 points 9 months ago (1 children)

I get a few, but not every single game like my desktop does.

[–] [email protected] 1 points 9 months ago

It should update about when you get a new driver version. I'm using your desktop gets more frequent updates than your Steam Deck.

Whenever I install updates on my Steam Deck, I get a bunch of shader updates.

[–] [email protected] 4 points 9 months ago

My Deck and Linux desktop regularly have shader cache updates every few days, but they're generally tiny and finish near-instantly. I've never seen the behavior here of needing to download multiple gigabytes of shaders daily (and I'm thankful for it, with the frustrating data cap I have from my ISP).

[–] [email protected] 3 points 9 months ago* (last edited 9 months ago)

On arch you can just turn shader caching off, the newer mesa versions cache the shaders in the background, you don't need steams thing anymore Edit: spelling

[–] [email protected] 5 points 9 months ago

Personally I deactivated pre-caching quite recently actually as I noticed as well this getting quite excessive for certain games. So I now wait until this is a thing: https://github.com/ValveSoftware/steam-for-linux/issues/6486 Seemingly the issue seems to be with games that have a big workshop like A Hat in Time or just huge games like No Man's Sky. I got 10GB and 5GB shader cache updates daily for these games respectively before I turned it off.

[–] [email protected] 3 points 9 months ago
[–] [email protected] 3 points 9 months ago (1 children)

Aren't shader caches dependent on your graphics driver version? If your graphics driver gets updated it'll need to either generate them again or pull the new version from steam.

[–] [email protected] 2 points 9 months ago (1 children)

I agree that there should be better control in steam over what games are prioritized for both updates and shader caching.

But I was under the impression that most shader precaching was done by compiling locally in the background (via fossilize), not downloading. I agree that a 10GB download for AHIT is sus, but I don't see anywhere on the screen that denotes it is downloading shaders.

Nonetheless, the shader pipeline problems of these new APIs (both pipeline explosion and caching) are not solved yet. IMO caching is not solved because GPU vendors don't allow their new drivers to work with "old" shader pipelines. They have no incentive to (it would require extra driver work, and you couldn't force users to use your latest compiler optimizations), and gamers don't know to ask for it.

[–] [email protected] 6 points 9 months ago* (last edited 9 months ago) (1 children)

If you see that little i there, that is information that says "shader precaching" as the information when hovered over. It will generally be a blue patchnotes icon for a game update and an i for steam updates like precaching.

[–] [email protected] 2 points 9 months ago
[–] [email protected] 2 points 9 months ago* (last edited 9 months ago)

I would recommend to turn off auto updates, I was also having a lot of shader cache to download daily(when rebooting) but after scheduling auto updates between 4AM - 5AM and that fixed it for me

[–] [email protected] 2 points 9 months ago

Hat in time tho 🩷

[–] [email protected] 1 points 9 months ago

It's getting fucking ridiculous and I tried to turn it off but the stuttering was horrible

[–] [email protected] 1 points 9 months ago* (last edited 9 months ago)

I prefer to keep Shader Precaching on for the Media Foundation fix that Valve uses, but I left Background Processing of Vulkan Shaders off, if I'm not wrong this way it should only update when you open a game.

Alternatively you could disable it and use Proton-GE for the games that need the Media Foundation fix. Performance should be the same nowadays with it on or off.

[–] [email protected] 1 points 9 months ago

I now finally know why Rocket League updates more often for me (1-2GB of updates) than my friend on Windows.

[–] [email protected] 0 points 9 months ago* (last edited 9 months ago) (1 children)

Shader caching is a thing that happens when you're playing a game. The first time you see an effect (like particles), your computer has to process that and cache it for the future. This can sometimes cause stuttering for larger effects, so shader pre-caching is a thing that downloads all these shaders for you so you won't stutter while playing.

It's useful for older PCs where stuttering can be very noticeable, but it's probably something you should turn off unless you think you need it.

[–] [email protected] 6 points 9 months ago

Yeah normally, but in some circumstances on Linux an excessive amount of shader caches are downloaded. I tried Linux gaming on a ~50GB partition and quickly ran out of space because of all the shaders.