On Mon, May 15, 2017 at 4:06 PM, Rob Clark <robdcl...@gmail.com> wrote: > Maybe there is a better way to do this. But by the time we get to > assigning uniform locs, we want the atomic_uint's to all be gone, > otherwise we assert in st_glsl_attrib_type_size(). > > Signed-off-by: Rob Clark <robdcl...@gmail.com> > --- > Are there any other cases? If atomic_uint is an opaque type, I'm not > sure how it could appear in a struct..
well, duh, there are also arrays of arrays of atomic_uint.. (but still assuming it cannot involve structs..) > src/compiler/nir/nir_lower_atomics_to_ssbo.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/nir/nir_lower_atomics_to_ssbo.c > b/src/compiler/nir/nir_lower_atomics_to_ssbo.c > index cd69de2..fd8e84f 100644 > --- a/src/compiler/nir/nir_lower_atomics_to_ssbo.c > +++ b/src/compiler/nir/nir_lower_atomics_to_ssbo.c > @@ -189,7 +189,9 @@ nir_lower_atomics_to_ssbo(nir_shader *shader, unsigned > ssbo_offset) > /* replace atomic_uint uniforms with ssbo's: */ > unsigned replaced = 0; > nir_foreach_variable_safe(var, &shader->uniforms) { > - if (glsl_get_base_type(var->type) == GLSL_TYPE_ATOMIC_UINT) { > + if ((glsl_get_base_type(var->type) == GLSL_TYPE_ATOMIC_UINT) || > + ((glsl_get_base_type(var->type) == GLSL_TYPE_ARRAY) && > + (glsl_get_base_type(glsl_get_array_element(var->type)) == > GLSL_TYPE_ATOMIC_UINT))) { > exec_node_remove(&var->node); > > if (replaced & (1 << var->data.binding)) > -- > 2.9.3 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev