From 52f1498321d81d278c472e4719f0437866d8cbb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Thu, 30 Apr 2020 13:03:48 +0300 Subject: [PATCH] st/mesa: destroy only own program variants when program is released MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: (cherry picked from commit 46b3cb011fd1c9198aeec33d453206846b579817) --- .pick_status.json | 2 +- src/mesa/state_tracker/st_program.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index f602586772a..9b7f9f57a2e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -382,7 +382,7 @@ "description": "st/mesa: destroy only own program variants when program is released", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "de3d7dbed521c40344c9f8b2b505b6e2b13a7636" }, diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 6585945f343..7a485acf8d0 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -67,6 +67,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, @@ -342,7 +344,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); }