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