[Mesa-dev] [PATCH V7 12/24] i965: add arrays of arrays support for varyings

Samuel Iglesias Gonsálvez siglesias at igalia.com
Thu Oct 8 01:40:19 PDT 2015


Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>

On 07/10/15 00:47, Timothy Arceri wrote:
> V2: get the correct vector elements value for outputs
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp     | 4 ++--
>  src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 7 +++----
>  2 files changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 1187c67..2decfc4 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -1048,11 +1048,11 @@ fs_visitor::emit_general_interpolation(fs_reg attr, const char *name,
>     unsigned int array_elements;
>  
>     if (type->is_array()) {
> -      array_elements = type->length;
> +      array_elements = type->arrays_of_arrays_size();
>        if (array_elements == 0) {
>           fail("dereferenced array '%s' has length 0\n", name);
>        }
> -      type = type->fields.array;
> +      type = type->without_array();
>     } else {
>        array_elements = 1;
>     }
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> index 03fe680..2bf6581 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> @@ -79,7 +79,8 @@ fs_visitor::nir_setup_inputs()
>           const unsigned components = t->components();
>           const unsigned cols = t->matrix_columns;
>           const unsigned elts = t->vector_elements;
> -         unsigned array_length = var->type->is_array() ? var->type->length : 1;
> +         unsigned array_length =
> +            var->type->is_array() ? var->type->arrays_of_arrays_size() : 1;
>           for (unsigned i = 0; i < array_length; i++) {
>              for (unsigned j = 0; j < cols; j++) {
>                 for (unsigned k = 0; k < elts; k++) {
> @@ -125,9 +126,7 @@ fs_visitor::nir_setup_outputs()
>     nir_foreach_variable(var, &nir->outputs) {
>        fs_reg reg = offset(nir_outputs, bld, var->data.driver_location);
>  
> -      int vector_elements =
> -         var->type->is_array() ? var->type->fields.array->vector_elements
> -                               : var->type->vector_elements;
> +      int vector_elements = var->type->without_array()->vector_elements;
>  
>        switch (stage) {
>        case MESA_SHADER_VERTEX:
> 


More information about the mesa-dev mailing list