summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-11-20 12:47:00 +1100
committerTimothy Arceri <[email protected]>2017-02-17 11:18:43 +1100
commit2f19accc5ecdff29c9300f0eceb420c0b1538b24 (patch)
treef7356a6f806c81a7a79112455638eea0bcc07d27 /src
parente3adde023b73cbee1423078163e925dc400078e9 (diff)
mesa/glsl: add cache_fallback flag to gl_shader_program_data
This will allow us to skip certain things when falling back to a full recompile on a cache miss such as avoiding reinitialising uniforms. In this change we use it to avoid reading the program metadata from the cache and skipping linking during a fallback. Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/compiler/glsl/shader_cache.cpp2
-rw-r--r--src/mesa/main/mtypes.h2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp
index 3bfcab9bcf5..499470b68dc 100644
--- a/src/compiler/glsl/shader_cache.cpp
+++ b/src/compiler/glsl/shader_cache.cpp
@@ -1281,7 +1281,7 @@ shader_cache_read_program_metadata(struct gl_context *ctx,
return false;
struct disk_cache *cache = ctx->Cache;
- if (!cache)
+ if (!cache || prog->data->cache_fallback)
return false;
/* Include bindings when creating sha1. These bindings change the resulting
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index e24ee3c0c00..12d68ab360d 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2686,6 +2686,8 @@ struct gl_shader_program_data
unsigned NumUniformDataSlots;
union gl_constant_value *UniformDataSlots;
+ bool cache_fallback;
+
/** List of all active resources after linking. */
struct gl_program_resource *ProgramResourceList;
unsigned NumProgramResourceList;