iris: Destroy the border color pool
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 28 Nov 2018 23:15:21 +0000 (15:15 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:10 +0000 (10:26 -0800)
This plugs a 12224 byte leak

src/gallium/drivers/iris/iris_border_color.c
src/gallium/drivers/iris/iris_context.c
src/gallium/drivers/iris/iris_context.h

index 72c7ee4..ebed3e4 100644 (file)
@@ -93,6 +93,14 @@ iris_init_border_color_pool(struct iris_context *ice)
    iris_reset_border_color_pool(pool, bufmgr);
 }
 
+void
+iris_destroy_border_color_pool(struct iris_context *ice)
+{
+   struct iris_border_color_pool *pool = &ice->state.border_color_pool;
+   iris_bo_unreference(pool->bo);
+   ralloc_free(pool->ht);
+}
+
 /**
  * Reserve space for a number of border colors.  If no space, flushes any
  * batches that are referring to the old BO and makes a new one.
index 75b1be2..0bf100a 100644 (file)
@@ -110,6 +110,7 @@ iris_destroy_context(struct pipe_context *ctx)
 
    ice->vtbl.destroy_state(ice);
    iris_destroy_program_cache(ice);
+   iris_destroy_border_color_pool(ice);
    u_upload_destroy(ice->state.surface_uploader);
    u_upload_destroy(ice->state.dynamic_uploader);
 
index 601dabb..5c5fbaf 100644 (file)
@@ -587,6 +587,7 @@ void gen11_init_blorp(struct iris_context *ice);
 /* iris_border_color.c */
 
 void iris_init_border_color_pool(struct iris_context *ice);
+void iris_destroy_border_color_pool(struct iris_context *ice);
 void iris_border_color_pool_reserve(struct iris_context *ice, unsigned count);
 uint32_t iris_upload_border_color(struct iris_context *ice,
                                   union pipe_color_union *color);