util/idalloc: fold the size call into init
authorMarek Olšák <marek.olsak@amd.com>
Mon, 17 May 2021 19:38:34 +0000 (15:38 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 9 Jul 2021 10:05:46 +0000 (10:05 +0000)
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 <pierre-eric.pelloux-prayer@amd.com> (v1)
Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v2)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11493>

src/gallium/drivers/radeonsi/si_descriptors.c
src/mesa/main/hash.c
src/util/u_idalloc.c
src/util/u_idalloc.h
src/virtio/vulkan/vn_renderer_virtgpu.c

index afa22d3..2391a93 100644 (file)
@@ -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);
index 8d2cef7..da3636c 100644 (file)
@@ -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);
 }
index 0e1258a..6a59fa2 100644 (file)
 #include <stdlib.h>
 
 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);
index 09cd144..3c02967 100644 (file)
@@ -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);
index 5b6a25c..5a29fb6 100644 (file)
@@ -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,