[Mesa-dev] [PATCH 01/24] glsl: calculate component size for arrays of arrays when varying packing disabled

Timothy Arceri t_arceri at yahoo.com.au
Sun Sep 27 18:09:47 PDT 2015


On Mon, 2015-09-28 at 10:42 +1000, Dave Airlie wrote:
> On 17 September 2015 at 17:02, Timothy Arceri <t_arceri at yahoo.com.au>
> wrote:
> > Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
> > Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
> > Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
> > ---
> >  src/glsl/link_varyings.cpp | 13 ++++++++++---
> >  1 file changed, 10 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/glsl/link_varyings.cpp
> > b/src/glsl/link_varyings.cpp
> > index f7a7b8c..0d343d6 100644
> > --- a/src/glsl/link_varyings.cpp
> > +++ b/src/glsl/link_varyings.cpp
> > @@ -956,9 +956,16 @@ varying_matches::record(ir_variable
> > *producer_var, ir_variable *consumer_var)
> >           type = type->fields.array;
> >        }
> > 
> > -      slots = (type->is_array()
> > -            ? (type->length * type->fields.array->matrix_columns)
> > -            : type->matrix_columns);
> > +      if (type->is_array()) {
> > +         slots = 1;
> > +         while (type->is_array()) {
> > +            slots *= type->length;
> > +            type = type->fields.array;
> > +         }
> > +         slots *= type->matrix_columns;
> > +      } else {
> > +         slots = var->type->matrix_columns;
> 
> ^ this needs to be type->matrix_columns
> 
> else it breaks the tess cases.
> 
> Dave.

I've had this patch sitting around for over a year I can't believe I
missed that. Thanks fix sent.


More information about the mesa-dev mailing list