I think it would be better if we kept track of the type of the constant instead. That would also allow us to simplify the constant construction code in, err, something else...
On Wed, Nov 11, 2015 at 8:23 PM, Jason Ekstrand <[email protected]> wrote: > From: Rob Clark <[email protected]> > > This will simplify things somewhat in clone. > > Signed-off-by: Rob Clark <[email protected]> > Reviewed-by: Jason Ekstrand <[email protected]> > --- > src/glsl/nir/glsl_to_nir.cpp | 5 +++++ > src/glsl/nir/nir.h | 5 +++++ > 2 files changed, 10 insertions(+) > > diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp > index 8e53e22..13fa987 100644 > --- a/src/glsl/nir/glsl_to_nir.cpp > +++ b/src/glsl/nir/glsl_to_nir.cpp > @@ -241,6 +241,8 @@ constant_copy(ir_constant *ir, void *mem_ctx) > > unsigned total_elems = ir->type->components(); > unsigned i; > + > + ret->num_elements = 0; > switch (ir->type->base_type) { > case GLSL_TYPE_UINT: > for (i = 0; i < total_elems; i++) > @@ -265,6 +267,8 @@ constant_copy(ir_constant *ir, void *mem_ctx) > case GLSL_TYPE_STRUCT: > ret->elements = ralloc_array(mem_ctx, nir_constant *, > ir->type->length); > + ret->num_elements = ir->type->length; > + > i = 0; > foreach_in_list(ir_constant, field, &ir->components) { > ret->elements[i] = constant_copy(field, mem_ctx); > @@ -275,6 +279,7 @@ constant_copy(ir_constant *ir, void *mem_ctx) > case GLSL_TYPE_ARRAY: > ret->elements = ralloc_array(mem_ctx, nir_constant *, > ir->type->length); > + ret->num_elements = ir->type->length; > > for (i = 0; i < ir->type->length; i++) > ret->elements[i] = constant_copy(ir->array_elements[i], mem_ctx); > diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h > index 6ffa60b..f99af4e 100644 > --- a/src/glsl/nir/nir.h > +++ b/src/glsl/nir/nir.h > @@ -111,6 +111,11 @@ typedef struct nir_constant { > */ > union nir_constant_data value; > > + /* we could get this from the var->type but makes clone *much* easier to > + * not have to care about the type. > + */ > + unsigned num_elements; > + > /* Array elements / Structure Fields */ > struct nir_constant **elements; > } nir_constant; > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
