[Mesa-dev] [PATCH v4 3/6] radeonsi: only initialize dirty_mask when CE is used

Samuel Pitoiset samuel.pitoiset at gmail.com
Mon Aug 21 14:50:36 UTC 2017


Looks like it's useless to initialize that field when CE is
unused. This will also allow to declare more than 64 elements
for the array of bindless descriptors.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
---
 src/gallium/drivers/radeonsi/si_descriptors.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index 537dc7fa50..45e31c5c6b 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -125,19 +125,20 @@ static void si_init_descriptors(struct si_context *sctx,
 				unsigned num_ce_slots,
 				unsigned *ce_offset)
 {
-	assert(num_elements <= sizeof(desc->dirty_mask)*8);
-
 	desc->list = CALLOC(num_elements, element_dw_size * 4);
 	desc->element_dw_size = element_dw_size;
 	desc->num_elements = num_elements;
 	desc->first_ce_slot = sctx->ce_ib ? first_ce_slot : 0;
 	desc->num_ce_slots = sctx->ce_ib ? num_ce_slots : 0;
-	desc->dirty_mask = u_bit_consecutive64(0, num_elements);
+	desc->dirty_mask = 0;
 	desc->shader_userdata_offset = shader_userdata_index * 4;
 
 	if (desc->num_ce_slots) {
+		assert(num_elements <= sizeof(desc->dirty_mask)*8);
+
 		desc->uses_ce = true;
 		desc->ce_offset = *ce_offset;
+		desc->dirty_mask = u_bit_consecutive64(0, num_elements);
 
 		*ce_offset += element_dw_size * desc->num_ce_slots * 4;
 	}
-- 
2.14.1



More information about the mesa-dev mailing list