From: Tapani Pälli Date: Thu, 30 Apr 2020 10:03:48 +0000 (+0300) Subject: st/mesa: destroy only own program variants when program is released X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=46b3cb011fd1c9198aeec33d453206846b579817;p=mesa.git st/mesa: destroy only own program variants when program is released Earlier commit tried to achieve this but actually did more. This makes sure the variants for other contexts continue to live. Fixes: de3d7dbed52 ("mesa/st: release variants for active programs before unref") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2865 Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Tapani Pälli Reviewed-by: Marek Olšák Part-of: --- diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 3fa5ff7b74c..cb9fcfdbdd6 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -70,6 +70,8 @@ #include "cso_cache/cso_context.h" +static void +destroy_program_variants(struct st_context *st, struct gl_program *target); static void set_affected_state_flags(uint64_t *states, @@ -345,7 +347,7 @@ st_release_program(struct st_context *st, struct st_program **p) if (!*p) return; - st_release_variants(st, *p); + destroy_program_variants(st, &((*p)->Base)); st_reference_prog(st, p, NULL); }