Mesa (main): zink: track active use counts for descriptor layouts

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 16 04:23:43 UTC 2021


Module: Mesa
Branch: main
Commit: 95fe2f7b82953f6f010b75ee8d6ff1d38fb49c24
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=95fe2f7b82953f6f010b75ee8d6ff1d38fb49c24

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Sun May  9 13:59:06 2021 -0400

zink: track active use counts for descriptor layouts

Reviewed-by: Dave Airlie <airlied at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11404>

---

 src/gallium/drivers/zink/zink_descriptors.h      | 1 +
 src/gallium/drivers/zink/zink_descriptors_lazy.c | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/src/gallium/drivers/zink/zink_descriptors.h b/src/gallium/drivers/zink/zink_descriptors.h
index d37447b8d8f..fb9ca5878dc 100644
--- a/src/gallium/drivers/zink/zink_descriptors.h
+++ b/src/gallium/drivers/zink/zink_descriptors.h
@@ -86,6 +86,7 @@ struct zink_descriptor_state_key {
 struct zink_descriptor_layout_key {
    unsigned num_descriptors;
    VkDescriptorSetLayoutBinding *bindings;
+   unsigned use_count;
 };
 
 struct zink_descriptor_layout {
diff --git a/src/gallium/drivers/zink/zink_descriptors_lazy.c b/src/gallium/drivers/zink/zink_descriptors_lazy.c
index 17ecfb9d39f..038188eec32 100644
--- a/src/gallium/drivers/zink/zink_descriptors_lazy.c
+++ b/src/gallium/drivers/zink/zink_descriptors_lazy.c
@@ -214,6 +214,7 @@ zink_descriptor_program_init_lazy(struct zink_context *ctx, struct zink_program
             }
          }
          pg->dd->layouts[pg->num_dsl] = zink_descriptor_util_layout_get(ctx, type, bindings[type], num_bindings[type], &pg->dd->layout_key[type]);
+         pg->dd->layout_key[type]->use_count++;
          pg->dsl[pg->num_dsl] = pg->dd->layouts[pg->num_dsl]->layout;
          pg->num_dsl++;
       }
@@ -276,6 +277,10 @@ zink_descriptor_program_init_lazy(struct zink_context *ctx, struct zink_program
 void
 zink_descriptor_program_deinit_lazy(struct zink_screen *screen, struct zink_program *pg)
 {
+   for (unsigned i = 0; pg->num_dsl && i < ZINK_DESCRIPTOR_TYPES; i++) {
+      if (pg->dd->layout_key[i])
+         pg->dd->layout_key[i]->use_count--;
+   }
    if (pg->dd && pg->dd->push_template)
       screen->vk.DestroyDescriptorUpdateTemplate(screen->dev, pg->dd->push_template, NULL);
    ralloc_free(pg->dd);



More information about the mesa-commit mailing list