glsl/shader_cache: restore evicted shader keys
authorGrazvydas Ignotas <notasas@gmail.com>
Sun, 26 Mar 2017 16:28:38 +0000 (19:28 +0300)
committerTimothy Arceri <tarceri@itsqueeze.com>
Sun, 26 Mar 2017 22:10:16 +0000 (09:10 +1100)
commitf2d4d116113c8eddf7e8f372d466510c31d3dba4
tree5ecbb28740685ec33f88fcc16e4539f156a76bc6
parentbdf035ea6f784b90a6cbfd4ce16f3188ab15b2d3
glsl/shader_cache: restore evicted shader keys

Even though the programs themselves stay in cache and are loaded, the
shader keys can be evicted separately. If that happens, unnecessary
compiles are caused that waste time, and no matter how many times the
program is re-run, performance never recovers to the levels of first
hot cache run. To deal with this, we need to refresh the shader keys
of shaders that were recompiled.

An easy way to currently observe this is running Deux Ex, then piglit
and Deux Ex again, or deleting just the cache index. The later is
causing over a minute of lost time on all later Deux Ex runs, with this
patch it returns to normal after 1 run.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/glsl/shader_cache.cpp