radeonsi: do not assert when reserving bindless slot 0
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 23 Aug 2017 07:42:58 +0000 (09:42 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 23 Aug 2017 11:38:56 +0000 (13:38 +0200)
When assertions were disabled, the compiler removed
the call to util_idalloc_alloc() and the first allocated
bindless slot was 0 which is invalid per the spec.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/gallium/drivers/radeonsi/si_descriptors.c

index 3fdfdbbec7f2d03fe860d3a78c6486cf1d5fe384..cc897c9817ed3c4724063047fd80a3aa28370ee2 100644 (file)
@@ -2179,6 +2179,8 @@ static void si_init_bindless_descriptors(struct si_context *sctx,
                                         unsigned shader_userdata_index,
                                         unsigned num_elements)
 {
+       MAYBE_UNUSED unsigned desc_slot;
+
        si_init_descriptors(desc, shader_userdata_index, 16, num_elements);
        sctx->bindless_descriptors.num_active_slots = num_elements;
 
@@ -2192,7 +2194,8 @@ static void si_init_bindless_descriptors(struct si_context *sctx,
        util_idalloc_resize(&sctx->bindless_used_slots, num_elements);
 
        /* Reserve slot 0 because it's an invalid handle for bindless. */
-       assert(!util_idalloc_alloc(&sctx->bindless_used_slots));
+       desc_slot = util_idalloc_alloc(&sctx->bindless_used_slots);
+       assert(desc_slot != 0);
 }
 
 static void si_release_bindless_descriptors(struct si_context *sctx)