From 6ede24cf317550ead4a1a13d38f1c4f7fbf1ad2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 17 May 2021 15:38:34 -0400 Subject: [PATCH] util/idalloc: fold the size call into init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's required, otherwise idalloc would fail. v2: renamed util_idalloc_(mt_)init param initial_num_ids (Pierre-Eric) Reviewed-by: Pierre-Eric Pelloux-Prayer (v1) Reviewed-by: Marek Olšák (v2) Part-of: --- src/gallium/drivers/radeonsi/si_descriptors.c | 3 +-- src/mesa/main/hash.c | 3 +-- src/util/u_idalloc.c | 11 +++++------ src/util/u_idalloc.h | 4 ++-- src/virtio/vulkan/vn_renderer_virtgpu.c | 3 +-- 5 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index afa22d3ba0e..2391a9355b5 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -2135,8 +2135,7 @@ static void si_init_bindless_descriptors(struct si_context *sctx, struct si_desc sctx->num_bindless_descriptors = 1; /* Track which bindless slots are used (or not). */ - util_idalloc_init(&sctx->bindless_used_slots); - util_idalloc_resize(&sctx->bindless_used_slots, num_elements); + util_idalloc_init(&sctx->bindless_used_slots, num_elements); /* Reserve slot 0 because it's an invalid handle for bindless. */ desc_slot = util_idalloc_alloc(&sctx->bindless_used_slots); diff --git a/src/mesa/main/hash.c b/src/mesa/main/hash.c index 8d2cef7c909..da3636c24c7 100644 --- a/src/mesa/main/hash.c +++ b/src/mesa/main/hash.c @@ -104,8 +104,7 @@ static void init_name_reuse(struct _mesa_HashTable *table) { assert(_mesa_hash_table_num_entries(table->ht) == 0); table->id_alloc = MALLOC_STRUCT(util_idalloc); - util_idalloc_init(table->id_alloc); - util_idalloc_resize(table->id_alloc, 8); + util_idalloc_init(table->id_alloc, 8); ASSERTED GLuint reserve0 = util_idalloc_alloc(table->id_alloc); assert (reserve0 == 0); } diff --git a/src/util/u_idalloc.c b/src/util/u_idalloc.c index 0e1258acb87..6a59fa22a1d 100644 --- a/src/util/u_idalloc.c +++ b/src/util/u_idalloc.c @@ -37,9 +37,11 @@ #include void -util_idalloc_init(struct util_idalloc *buf) +util_idalloc_init(struct util_idalloc *buf, unsigned initial_num_ids) { memset(buf, 0, sizeof(*buf)); + assert(initial_num_ids); + util_idalloc_resize(buf, DIV_ROUND_UP(initial_num_ids, 32)); } void @@ -103,15 +105,12 @@ util_idalloc_reserve(struct util_idalloc *buf, unsigned id) void util_idalloc_mt_init(struct util_idalloc_mt *buf, - unsigned initial_num_elements, bool skip_zero) + unsigned initial_num_ids, bool skip_zero) { simple_mtx_init(&buf->mutex, mtx_plain); - util_idalloc_init(&buf->buf); + util_idalloc_init(&buf->buf, initial_num_ids); buf->skip_zero = skip_zero; - if (initial_num_elements) - util_idalloc_resize(&buf->buf, DIV_ROUND_UP(initial_num_elements, 32)); - if (skip_zero) { ASSERTED unsigned zero = util_idalloc_alloc(&buf->buf); assert(zero == 0); diff --git a/src/util/u_idalloc.h b/src/util/u_idalloc.h index 09cd1446fb5..3c02967d425 100644 --- a/src/util/u_idalloc.h +++ b/src/util/u_idalloc.h @@ -44,7 +44,7 @@ struct util_idalloc }; void -util_idalloc_init(struct util_idalloc *buf); +util_idalloc_init(struct util_idalloc *buf, unsigned initial_num_ids); void util_idalloc_fini(struct util_idalloc *buf); @@ -71,7 +71,7 @@ struct util_idalloc_mt { void util_idalloc_mt_init(struct util_idalloc_mt *buf, - unsigned initial_num_elements, bool skip_zero); + unsigned initial_num_ids, bool skip_zero); void util_idalloc_mt_init_tc(struct util_idalloc_mt *buf); diff --git a/src/virtio/vulkan/vn_renderer_virtgpu.c b/src/virtio/vulkan/vn_renderer_virtgpu.c index 5b6a25cdf8b..5a29fb6c129 100644 --- a/src/virtio/vulkan/vn_renderer_virtgpu.c +++ b/src/virtio/vulkan/vn_renderer_virtgpu.c @@ -153,8 +153,7 @@ sim_syncobj_create(struct virtgpu *gpu, bool signaled) return 0; } - util_idalloc_init(&sim.ida); - util_idalloc_resize(&sim.ida, 32); + util_idalloc_init(&sim.ida, 32); struct drm_virtgpu_execbuffer args = { .flags = VIRTGPU_EXECBUF_FENCE_FD_OUT,