clover: Use args.size() to compute new var locations
authorJason Ekstrand <jason@jlekstrand.net>
Tue, 1 Sep 2020 15:30:17 +0000 (10:30 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 3 Sep 2020 18:02:50 +0000 (18:02 +0000)
This is better than using num_uniforms as it guarantees what we want: a
mapping from nir_variable to the args vector.

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6472>

src/gallium/frontends/clover/nir/invocation.cpp

index 8cdef270d6fda6c36cd375554c34056e1991e5ce..0811f1b24beb028ffef81cc209e93d988f0948fb 100644 (file)
@@ -97,6 +97,7 @@ clover_lower_nir_instr(nir_builder *b, nir_instr *instr, void *_state)
          /* Even though we only place one scalar argument, clover will bind up to
           * three 32 bit values
          */
+         unsigned location = state->args.size();
          state->args.emplace_back(module::argument::scalar, 4, 4, 4,
                                   module::argument::zero_ext,
                                   module::argument::grid_offset);
@@ -106,7 +107,7 @@ clover_lower_nir_instr(nir_builder *b, nir_instr *instr, void *_state)
             state->offset_vars[i] =
                nir_variable_create(b->shader, nir_var_uniform, type,
                                    "global_invocation_id_offsets");
-            state->offset_vars[i]->data.location = b->shader->num_uniforms++;
+            state->offset_vars[i]->data.location = location + i;
          }
       }