From 94cc01105ec70cc364d6cea3f909b0b04dcad7c1 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 23 Aug 2017 09:42:58 +0200 Subject: [PATCH] radeonsi: do not assert when reserving bindless slot 0 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 Reviewed-by: Timothy Arceri --- src/gallium/drivers/radeonsi/si_descriptors.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c index 3fdfdbbec7f..cc897c9817e 100644 --- a/src/gallium/drivers/radeonsi/si_descriptors.c +++ b/src/gallium/drivers/radeonsi/si_descriptors.c @@ -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) -- 2.30.2