summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compiler/glsl/shader_cache.cpp2
-rw-r--r--src/mesa/main/mtypes.h7
-rw-r--r--src/mesa/state_tracker/st_shader_cache.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp
index 800d3a29133..dd56501258c 100644
--- a/src/compiler/glsl/shader_cache.cpp
+++ b/src/compiler/glsl/shader_cache.cpp
@@ -1292,7 +1292,7 @@ shader_cache_read_program_metadata(struct gl_context *ctx,
return false;
struct disk_cache *cache = ctx->Cache;
- if (!cache || prog->data->cache_fallback)
+ if (!cache || prog->data->cache_fallback || prog->data->skip_cache)
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 d060f8f7d33..d47c428936c 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -2814,6 +2814,13 @@ struct gl_shader_program_data
bool cache_fallback;
+ /* TODO: This used by Gallium drivers to skip the cache on tgsi fallback.
+ * All structures (gl_program, uniform storage, etc) will get recreated
+ * even though we have already loaded them from cache. Once the i965 cache
+ * lands we should switch to using the cache_fallback support.
+ */
+ bool skip_cache;
+
/** List of all active resources after linking. */
struct gl_program_resource *ProgramResourceList;
unsigned NumProgramResourceList;
diff --git a/src/mesa/state_tracker/st_shader_cache.c b/src/mesa/state_tracker/st_shader_cache.c
index 45438e56bd2..31c3430aa4a 100644
--- a/src/mesa/state_tracker/st_shader_cache.c
+++ b/src/mesa/state_tracker/st_shader_cache.c
@@ -391,7 +391,7 @@ fallback_recompile:
_mesa_glsl_compile_shader(ctx, prog->Shaders[i], false, false, true);
}
- prog->data->cache_fallback = true;
+ prog->data->skip_cache = true;
_mesa_glsl_link_shader(ctx, prog);
return true;