From: Timothy Arceri <timothy.arc...@collabora.com> Also remove cache item and fallback to full recompile if current Mesa version differs.
V2: don't leak buffer --- src/compiler/glsl/shader_cache.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/compiler/glsl/shader_cache.cpp b/src/compiler/glsl/shader_cache.cpp index 8b9cabc..5cd134a 100644 --- a/src/compiler/glsl/shader_cache.cpp +++ b/src/compiler/glsl/shader_cache.cpp @@ -1172,6 +1172,8 @@ shader_cache_write_program_metadata(struct gl_context *ctx, struct blob *metadata = blob_create(NULL); + blob_write_string(metadata, ctx->VersionString); + write_uniforms(metadata, prog); write_hash_tables(metadata, prog); @@ -1299,6 +1301,17 @@ shader_cache_read_program_metadata(struct gl_context *ctx, struct blob_reader metadata; blob_reader_init(&metadata, buffer, size); + char *version_string = blob_read_string(&metadata); + if (strcmp(ctx->VersionString, version_string) != 0) { + /* The cached version of the program was created with a different + * version of Mesa so remove it and fallback to full recompile. + */ + disk_cache_remove(cache, prog->data->sha1); + compile_shaders(ctx, prog); + free(buffer); + return false; + } + assert(prog->data->UniformStorage == NULL); read_uniforms(&metadata, prog); -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev