Shader Compilation on PC: About to become a bigger bottleneck?

Question whats the average size of the shader cache for a single game?
If I set a limit (say 10gb) and I play a new game when the limit is reached does the driver
A: not cache the shaders for the new game
B: delete shaders from the least played games to make room
C: inform you and give you some options like increasing the cache
D: something else

ps: Unreal Tournament from 1999 has an option to precache shaders (not sure if its the same thing)

Edit: read on a forum post that overwatch uses about 150mb for its cache
 
Last edited:
Question whats the average size of the shader cache for a single game?
If I set a limit (say 10gb) and I play a new game when the limit is reached does the driver
A: not cache the shaders for the new game
B: delete shaders from the least played games to make room
C: inform you and give you some options like increasing the cache
D: something else

ps: Unreal Tournament from 1999 has an option to precache shaders (not sure if its the same thing)

I imagine it works the same way the default (1GB) option worked before, is that when it hits that limit it starts deleting the oldest caches.
 
I'm just under a gig now, with the oldest cache file being created last Saturday. Horizon Zero Dawn takes up almost 300MB in shader cache files by itself (and 16mb in new cache after the optimization stage, indicating that's why I still get the occasional stutter/CPU spikes - it's still compiling shaders at certain points during gameplay). Not even playing that many PC games lately, this 1GB default limit was likely pushing out a lot of game caches before.
 
I'm at 670 MB now and since installing the driver I've played 10 or so games.
Tbh I think that 1 GB is completely adequate for a typical gaming scenario.
 
It shouldn't hurt allocating more since it only uses what your games demand. Whatever amount you chose is a hard ceiling (maximum) that may never be reached.
 
I set mine to unlimited and after playing a few games I'm already at 2.6GB.

Now it would be nice if they were able to separate the shaders into different folders based on each game/application so that we could easily delete complied shaders for games which we no longer play.

IMO this should be an option right in the driver control panel.
 
By introducing a cap on precompiled shader/pipeline caches, you're potentially inviting yourself to recompilations or frametime spikes again. For example, if you set the storage limit to 1GB then any shader/pipelines encountered after this limit must always be recompiled again if you refuse to store the precompiled result ...
 
By introducing a cap on precompiled shader/pipeline caches, you're potentially inviting yourself to recompilations or frametime spikes again. For example, if you set the storage limit to 1GB then any shader/pipelines encountered after this limit must always be recompiled again if you refuse to store the precompiled result ...
New shaders are overwriting old ones in the cache once the limit is reached.
 
New shaders are overwriting old ones in the cache once the limit is reached.

If new shader/pipelines are overwriting then the old precompiled results are effectively deleted. Whether this cache is overwritten or not does not change my previous statement. Any refusal to keep all precompiled shader/pipelines will either mean accepting recompilation or frametime spikes.The trade-offs should be obvious to everyone by now when applying/removing storage limits to this cache. Make no mistake that this is not a unilateral solution to the PC GPU compilation problem ...
 
If new shader/pipelines are overwriting then the old precompiled results are effectively deleted. Whether this cache is overwritten or not does not change my previous statement. Any refusal to keep all precompiled shader/pipelines will either mean accepting recompilation or frametime spikes.The trade-offs should be obvious to everyone by now when applying/removing storage limits to this cache. Make no mistake that this is not a unilateral solution to the PC GPU compilation problem ...
Old cache is unlikely to be in use since people don't play a 1000 of games all at the same time.
 
By introducing a cap on precompiled shader/pipeline caches, you're potentially inviting yourself to recompilations or frametime spikes again. For example, if you set the storage limit to 1GB then any shader/pipelines encountered after this limit must always be recompiled again if you refuse to store the precompiled result ...
There's always been a cap... so in essence nothing changes... so long as you're set to default or higher.

After the cap is reached, as stated, shaders will be overwritten, as they always were. The bigger the cap simply means that cached shaders will remain cached for a longer period of time, reducing potential recompilations.
 
Back
Top