zink: unset generated tcs pointer from tes on deletion

otherwise this will free the generated tcs multiple times if the tes
is used by multiple programs

cc: mesa-stable

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17010>
This commit is contained in:
Mike Blumenkrantz 2022-06-07 14:26:02 -04:00 committed by Marge Bot
parent c36c5ff057
commit cf34d3fe05

View file

@ -2897,9 +2897,11 @@ zink_shader_free(struct zink_context *ctx, struct zink_shader *shader)
prog->base.removed = true; prog->base.removed = true;
} }
prog->shaders[pstage] = NULL; prog->shaders[pstage] = NULL;
if (shader->nir->info.stage == MESA_SHADER_TESS_EVAL && shader->generated) if (shader->nir->info.stage == MESA_SHADER_TESS_EVAL && shader->generated) {
/* automatically destroy generated tcs shaders when tes is destroyed */ /* automatically destroy generated tcs shaders when tes is destroyed */
zink_shader_free(ctx, shader->generated); zink_shader_free(ctx, shader->generated);
shader->generated = NULL;
}
zink_gfx_program_reference(ctx, &prog, NULL); zink_gfx_program_reference(ctx, &prog, NULL);
} }
} }