glsl: be much more aggressive when skipping shader compilation
authorTimothy Arceri <tarceri@itsqueeze.com>
Thu, 17 Jan 2019 06:16:29 +0000 (17:16 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Fri, 18 Jan 2019 21:24:47 +0000 (08:24 +1100)
commit64b8c86d37ebb1e1d286c69d642d52b7bcf051d3
tree3381bf22ae87a75b319dc22e8b241bfc334ee948
parentc9d7b0f18425f7c5acabb7cec6b877d5ee112543
glsl: be much more aggressive when skipping shader compilation

Currently we only add a cache key for a shader once it is linked.
However games like Team Fortress 2 compile a whole bunch of shaders
which are never actually linked. These compiled shaders can take
up a bunch of memory.

This patch changes things so that we add the key for the shader to
the cache as soon as it is compiled. This means on a warm cache we
can avoid the wasted memory from these shaders. Worst case scenario
is we need to compile the shaders at link time but this can happen
anyway if the shader has been evicted from the cache.

Reduces memory use in Team Fortress 2 from 1.3GB -> 770MB on a
warm cache from start up to the game menu.

Acked-by: Marek Olšák <marek.olsak@amd.com>
src/compiler/glsl/glsl_parser_extras.cpp
src/compiler/glsl/shader_cache.cpp