From 95c34452582b1aa7e48e12e1f19274daaf1e61ba Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Tue, 16 May 2023 13:30:18 -0700 Subject: [PATCH] nir: Use find_state_var in lower_atomics_to_ssbo. Reviewed-by: Alyssa Rosenzweig Reviewed-by: Erik Faye-Lund Part-of: --- src/compiler/nir/nir_lower_atomics_to_ssbo.c | 24 ++++++++------------ 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/compiler/nir/nir_lower_atomics_to_ssbo.c b/src/compiler/nir/nir_lower_atomics_to_ssbo.c index 90b722b8405..7d709fcc66f 100644 --- a/src/compiler/nir/nir_lower_atomics_to_ssbo.c +++ b/src/compiler/nir/nir_lower_atomics_to_ssbo.c @@ -35,21 +35,17 @@ static nir_deref_instr * deref_offset_var(nir_builder *b, unsigned binding, unsigned offset_align_state) { - nir_foreach_uniform_variable(var, b->shader) { - if (var->num_state_slots != 1) - continue; - if (var->state_slots[0].tokens[0] == offset_align_state && - var->state_slots[0].tokens[1] == binding) - return nir_build_deref_var(b, var); + gl_state_index16 tokens[STATE_LENGTH] = {offset_align_state, binding}; + nir_variable *var = nir_find_state_variable(b->shader, tokens); + if (!var) { + var = nir_variable_create(b->shader, nir_var_uniform, glsl_uint_type(), "offset"); + var->state_slots = rzalloc_array(var, nir_state_slot, 1); + var->state_slots[0].tokens[0] = offset_align_state; + var->state_slots[0].tokens[1] = binding; + var->num_state_slots = 1; + var->data.how_declared = nir_var_hidden; + b->shader->num_uniforms++; } - - nir_variable *var = nir_variable_create(b->shader, nir_var_uniform, glsl_uint_type(), "offset"); - var->state_slots = rzalloc_array(var, nir_state_slot, 1); - var->state_slots[0].tokens[0] = offset_align_state; - var->state_slots[0].tokens[1] = binding; - var->num_state_slots = 1; - var->data.how_declared = nir_var_hidden; - b->shader->num_uniforms++; return nir_build_deref_var(b, var); }