From 453701256d9fa4021af2828c43b912ebc1e804c9 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 10 Feb 2023 16:00:16 -0500 Subject: [PATCH] zink: store base descriptor size on the screen useful to have this around for reuse Part-of: --- src/gallium/drivers/zink/zink_descriptors.c | 3 +-- src/gallium/drivers/zink/zink_screen.c | 1 + src/gallium/drivers/zink/zink_types.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c index 0a870f97aad..157d5c045ce 100644 --- a/src/gallium/drivers/zink/zink_descriptors.c +++ b/src/gallium/drivers/zink/zink_descriptors.c @@ -1502,9 +1502,8 @@ zink_batch_descriptor_init(struct zink_screen *screen, struct zink_batch_state * } if (zink_descriptor_mode == ZINK_DESCRIPTOR_MODE_DB && !(bs->ctx->flags & ZINK_CONTEXT_COPY_ONLY)) { - size_t max_size = MAX4(screen->db_size[0], screen->db_size[1], screen->db_size[2], screen->db_size[3]); unsigned bind = ZINK_BIND_RESOURCE_DESCRIPTOR | ZINK_BIND_SAMPLER_DESCRIPTOR; - struct pipe_resource *pres = pipe_buffer_create(&screen->base, bind, 0, max_size); + struct pipe_resource *pres = pipe_buffer_create(&screen->base, bind, 0, screen->base_descriptor_size); if (!pres) return false; bs->dd.db = zink_resource(pres); diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index aba36b57836..3842b38c886 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -2921,6 +2921,7 @@ zink_internal_create_screen(const struct pipe_screen_config *config) } screen->db_size[ZINK_DESCRIPTOR_TYPE_UNIFORMS] = screen->info.db_props.robustUniformBufferDescriptorSize; screen->info.have_KHR_push_descriptor = false; + screen->base_descriptor_size = MAX4(screen->db_size[0], screen->db_size[1], screen->db_size[2], screen->db_size[3]); } simple_mtx_init(&screen->dt_lock, mtx_plain); diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 0a2a96ee84f..eb5365e1023 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -1303,6 +1303,7 @@ struct zink_screen { struct util_live_shader_cache shaders; uint64_t db_size[ZINK_DESCRIPTOR_ALL_TYPES]; + unsigned base_descriptor_size; VkDescriptorSetLayout bindless_layout; struct {