Mesa (master): zink: free pipeline cache during program destroy

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Jul 18 10:46:45 UTC 2020


Module: Mesa
Branch: master
Commit: adc4f3896ae3cfd9ef8394d11204dfd9d321cf82
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=adc4f3896ae3cfd9ef8394d11204dfd9d321cf82

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Wed Jun  3 11:42:10 2020 -0400

zink: free pipeline cache during program destroy

more leaks

Reviewed-by: Antonio Caggiano <antonio.caggiano at collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5887>

---

 src/gallium/drivers/zink/zink_program.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c
index 0de286d4691..341c3293ac2 100644
--- a/src/gallium/drivers/zink/zink_program.c
+++ b/src/gallium/drivers/zink/zink_program.c
@@ -34,6 +34,11 @@
 #include "util/u_memory.h"
 #include "tgsi/tgsi_from_mesa.h"
 
+struct pipeline_cache_entry {
+   struct zink_gfx_pipeline_state state;
+   VkPipeline pipeline;
+};
+
 static VkDescriptorSetLayout
 create_desc_set_layout(VkDevice dev,
                        struct zink_shader *stages[PIPE_SHADER_TYPES - 1],
@@ -187,14 +192,19 @@ zink_destroy_gfx_program(struct zink_screen *screen,
       _mesa_set_destroy(prog->render_passes, NULL);
    }
 
+   for (int i = 0; i < ARRAY_SIZE(prog->pipelines); ++i) {
+      hash_table_foreach(prog->pipelines[i], entry) {
+         struct pipeline_cache_entry *pc_entry = entry->data;
+
+         vkDestroyPipeline(screen->dev, pc_entry->pipeline, NULL);
+         free(pc_entry);
+      }
+      _mesa_hash_table_destroy(prog->pipelines[i], NULL);
+   }
+
    FREE(prog);
 }
 
-struct pipeline_cache_entry {
-   struct zink_gfx_pipeline_state state;
-   VkPipeline pipeline;
-};
-
 static VkPrimitiveTopology
 primitive_topology(enum pipe_prim_type mode)
 {



More information about the mesa-commit mailing list