summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compiler/glsl/glsl_parser_extras.cpp9
-rw-r--r--src/compiler/glsl/shader_cache.cpp7
2 files changed, 10 insertions, 6 deletions
diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp
index 200df7759bb..bde93dd3f37 100644
--- a/src/compiler/glsl/glsl_parser_extras.cpp
+++ b/src/compiler/glsl/glsl_parser_extras.cpp
@@ -2155,6 +2155,15 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader,
delete state->symbols;
ralloc_free(state);
+
+ if (ctx->Cache && shader->CompileStatus == COMPILE_SUCCESS) {
+ char sha1_buf[41];
+ disk_cache_put_key(ctx->Cache, shader->sha1);
+ if (ctx->_Shader->Flags & GLSL_CACHE_INFO) {
+ _mesa_sha1_format(sha1_buf, shader->sha1);
+ fprintf(stderr, "marking shader: %s\n", sha1_buf);
+ }
+ }
}
} /* extern "C" */
diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp
index 879511a9d7c..581098b88f0 100644
--- a/src/compiler/glsl/shader_cache.cpp
+++ b/src/compiler/glsl/shader_cache.cpp
@@ -121,20 +121,15 @@ shader_cache_write_program_metadata(struct gl_context *ctx,
if (!cache_item_metadata.keys)
goto fail;
- char sha1_buf[41];
for (unsigned i = 0; i < prog->NumShaders; i++) {
- disk_cache_put_key(cache, prog->Shaders[i]->sha1);
memcpy(cache_item_metadata.keys[i], prog->Shaders[i]->sha1,
sizeof(cache_key));
- if (ctx->_Shader->Flags & GLSL_CACHE_INFO) {
- _mesa_sha1_format(sha1_buf, prog->Shaders[i]->sha1);
- fprintf(stderr, "marking shader: %s\n", sha1_buf);
- }
}
disk_cache_put(cache, prog->data->sha1, metadata.data, metadata.size,
&cache_item_metadata);
+ char sha1_buf[41];
if (ctx->_Shader->Flags & GLSL_CACHE_INFO) {
_mesa_sha1_format(sha1_buf, prog->data->sha1);
fprintf(stderr, "putting program metadata in cache: %s\n", sha1_buf);