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 d982ce0..c876465 100644 --- a/src/compiler/glsl/shader_cache.cpp +++ b/src/compiler/glsl/shader_cache.cpp @@ -1125,6 +1125,8 @@ shader_cache_write_program_metadata(struct gl_context *ctx, metadata = blob_create(NULL); + blob_write_string(metadata, ctx->VersionString); + write_xfb(metadata, prog); write_uniforms(metadata, prog); @@ -1228,6 +1230,17 @@ shader_cache_read_program_metadata(struct gl_context *ctx, 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. + */ + cache_remove(cache, prog->sha1); + compile_shaders(ctx, prog); + free(buffer); + return false; + } + assert(prog->UniformStorage == NULL); read_xfb(&metadata, prog); -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev