summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/shaderimage.c
diff options
context:
space:
mode:
authorGert Wollny <[email protected]>2019-02-02 13:17:16 +0100
committerGert Wollny <[email protected]>2019-02-05 10:53:41 +0000
commitb0b3de2be750966343fca96b7123340f8656f056 (patch)
tree36507c22af4d85973ff32f612cf0037900248402 /src/mesa/main/shaderimage.c
parentf1f3640f6fe841942a7de6a74f7a5c9996077e6b (diff)
mesa: release references to image textures when a context is destroyed
When a texture is still bound as an image and the context it was bound in is destroyed but not the texture, then the texture will still hold the resource and will not be freed when it is finally destroyed. Hence, release these references when the context is destroyed. This leak was triggered by virglrenderer: https://gitlab.freedesktop.org/virgl/virglrenderer/issues/86 Signed-off-by: Gert Wollny <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/mesa/main/shaderimage.c')
-rw-r--r--src/mesa/main/shaderimage.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mesa/main/shaderimage.c b/src/mesa/main/shaderimage.c
index 31ac852d37f..242a8c29909 100644
--- a/src/mesa/main/shaderimage.c
+++ b/src/mesa/main/shaderimage.c
@@ -469,6 +469,16 @@ _mesa_init_image_units(struct gl_context *ctx)
ctx->ImageUnits[i] = _mesa_default_image_unit(ctx);
}
+
+void
+_mesa_free_image_textures(struct gl_context *ctx)
+{
+ unsigned i;
+
+ for (i = 0; i < ARRAY_SIZE(ctx->ImageUnits); ++i)
+ _mesa_reference_texobj(&ctx->ImageUnits[i].TexObj, NULL);
+}
+
GLboolean
_mesa_is_image_unit_valid(struct gl_context *ctx, struct gl_image_unit *u)
{