diff options
Diffstat (limited to 'src/compiler/glsl')
-rw-r--r-- | src/compiler/glsl/glsl_parser_extras.cpp | 9 | ||||
-rw-r--r-- | src/compiler/glsl/shader_cache.cpp | 7 |
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); |