[Mesa-dev] [PATCH 01/24] glsl: calculate component size for arrays of arrays when varying packing disabled
Dave Airlie
airlied at gmail.com
Sun Sep 27 17:42:28 PDT 2015
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.
More information about the mesa-dev
mailing list