mesa/st: Actually free the driver part of memory objects on destruction.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sat, 1 Aug 2020 01:13:55 +0000 (03:13 +0200)
committerMarge Bot <eric+marge@anholt.net>
Mon, 3 Aug 2020 10:33:00 +0000 (10:33 +0000)
_mesa_delete_memory_object(ctx, obj) == free(obj) but doesn't free the
part of the gallium driver.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/1206
Fixes: 49f4ecc6777 "mesa/st: start adding memory object support"
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6148>

src/mesa/state_tracker/st_cb_memoryobjects.c

index b193eb37cb2f9e82aef7a6e37f5f2efa48768770..3ef316a45f872eb6131e4c95f60c26068baf230c 100644 (file)
@@ -54,6 +54,12 @@ static void
 st_memoryobj_free(struct gl_context *ctx,
                   struct gl_memory_object *obj)
 {
 st_memoryobj_free(struct gl_context *ctx,
                   struct gl_memory_object *obj)
 {
+   struct st_memory_object *st_obj = st_memory_object(obj);
+   struct st_context *st = st_context(ctx);
+   struct pipe_context *pipe = st->pipe;
+   struct pipe_screen *screen = pipe->screen;
+
+   screen->memobj_destroy(screen, st_obj->memory);
    _mesa_delete_memory_object(ctx, obj);
 }
 
    _mesa_delete_memory_object(ctx, obj);
 }