diff options
author | Jose Dapena Paz <jose.dapena@lge.com> | 2018-05-24 19:56:24 +0200 |
---|---|---|
committer | Juan A. Suarez Romero <jasuarez@igalia.com> | 2018-05-25 09:59:18 +0200 |
commit | 1939affe5181beb9674060d04c905c284f4a6e0a (patch) | |
tree | 39d81022ae7870a98c91de83bdd959258e1eff86 | |
parent | 42fa7cf2bb6a61897ac3dd701622955e52df2b75 (diff) |
mesa: do not leak ctx->Shader.ReferencedProgram references
When glUseProgram is used, references to the included shaders are
added in ctx->Shader.ReferencedProgram. But those references are not
decreased when the shader data is deallocated. Thus, those shaders
are leaked.
Explicitely remove the pending references to these shaders.
Fixes: e6506b3cd23 ("mesa: retain gl_shader_programs after glDeleteProgram if they are in use")
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
(cherry picked from commit 6c61c31dc2fe52ad8a56ebe0b3aa10c223b635ba)
-rw-r--r-- | src/mesa/main/shaderapi.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 2c11e4d5bb6..167e0f4b522 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -159,6 +159,9 @@ _mesa_free_shader_state(struct gl_context *ctx) { for (int i = 0; i < MESA_SHADER_STAGES; i++) { _mesa_reference_program(ctx, &ctx->Shader.CurrentProgram[i], NULL); + _mesa_reference_shader_program(ctx, + &ctx->Shader.ReferencedPrograms[i], + NULL); } _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, NULL); |