From a5ff4a8e2e5bc1b7107a1d902feaf4d5edb96b3f Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 28 Jun 2017 18:48:14 +0200 Subject: [PATCH] radeonsi: only initialize dirty_mask when CE is used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Marek Olšák --- 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 1f6e704b4bc..c26b8291cfb 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; }