diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 81167a380f5..77a6cc5c478 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1088,6 +1088,9 @@ _mesa_free_context_data(struct gl_context *ctx, bool destroy_debug_output) _mesa_reference_program(ctx, &ctx->FragmentProgram._Current, NULL); _mesa_reference_program(ctx, &ctx->FragmentProgram._TexEnvProgram, NULL); + _mesa_reference_program(ctx, &ctx->TaskProgram._Current, NULL); + _mesa_reference_program(ctx, &ctx->MeshProgram._Current, NULL); + _mesa_reference_program(ctx, &ctx->ComputeProgram._Current, NULL); _mesa_reference_vao(ctx, &ctx->Array.VAO, NULL); diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 31d298825f3..8c72fc7a895 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -968,6 +968,8 @@ st_destroy_context(struct st_context *st) st_release_program(st, &st->tcp); st_release_program(st, &st->tep); st_release_program(st, &st->cp); + st_release_program(st, &st->tp); + st_release_program(st, &st->mp); if (st->hw_select_shaders) { hash_table_foreach(st->hw_select_shaders, entry)