diff options
-rw-r--r-- | src/compiler/glsl/linker.cpp | 3 | ||||
-rw-r--r-- | src/mesa/main/shaderobj.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 7aaaee265fb..d8b8a183db6 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -2197,7 +2197,8 @@ link_intrastage_shaders(void *mem_ctx, return NULL; } - _mesa_reference_shader_program_data(ctx, &gl_prog->sh.data, prog->data); + if (!prog->data->cache_fallback) + _mesa_reference_shader_program_data(ctx, &gl_prog->sh.data, prog->data); /* Don't use _mesa_reference_program() just take ownership */ linked->Program = gl_prog; diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c index 222efc12c4e..2ca65442726 100644 --- a/src/mesa/main/shaderobj.c +++ b/src/mesa/main/shaderobj.c @@ -430,7 +430,8 @@ _mesa_delete_shader_program(struct gl_context *ctx, struct gl_shader_program *shProg) { _mesa_free_shader_program_data(ctx, shProg); - _mesa_reference_shader_program_data(ctx, &shProg->data, NULL); + if (!shProg->data->cache_fallback) + _mesa_reference_shader_program_data(ctx, &shProg->data, NULL); ralloc_free(shProg); } |