glsl: don't recompile a shader on fallback unless needed
authorTimothy Arceri <tarceri@itsqueeze.com>
Thu, 9 Mar 2017 11:58:38 +0000 (22:58 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Sun, 12 Mar 2017 06:26:08 +0000 (17:26 +1100)
commitb607aad8e1a40c473176e31e11deaa26477c54c0
treefb061d871fbf6ee4542fd5c05ce24a359bed801c
parentbfa95997c4ecf74a329a047359d5e8d1217da49b
glsl: don't recompile a shader on fallback unless needed

Because we optimistically skip compiling shaders if we have seen them
before we may need to compile them later at link time if they haven't
yet been use in a specific combination to create a program.

Rather than always recompiling we take advantage of the
gl_compile_status enum introduced in the previous patch to only
compile when we have previously skipped compilation.

This helps with regressions in app start-up times on cold cache
runs, compared with no cache.

Deus Ex: Mankind Divided start-up times:

cache disabled:               ~3m15s
cold cache master:            ~4m23s
cold cache with this patch:   ~3m33s

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