[Mesa-dev] [PATCH V6 18/27] glsl: add std140 layout support for AoA

Ian Romanick idr at freedesktop.org
Tue Oct 6 13:15:51 PDT 2015


On 09/28/2015 07:42 PM, Timothy Arceri wrote:
> Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> ---
>  src/glsl/glsl_types.cpp | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp
> index 6664a47..cc2f102 100644
> --- a/src/glsl/glsl_types.cpp
> +++ b/src/glsl/glsl_types.cpp
> @@ -1330,8 +1330,8 @@ glsl_type::std140_size(bool row_major) const
>        unsigned int array_len;
>  
>        if (this->is_array()) {
> -         element_type = this->fields.array;
> -         array_len = this->length;
> +	 element_type = this->without_array();
> +	 array_len = this->arrays_of_arrays_size();

There are some mixed tabs and spaces in this patch.  With those fixed,
this patch is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

>        } else {
>           element_type = this;
>           array_len = 1;
> @@ -1364,12 +1364,13 @@ glsl_type::std140_size(bool row_major) const
>      *      the array are laid out in order, according to rule (9).
>      */
>     if (this->is_array()) {
> -      if (this->fields.array->is_record()) {
> -         return this->length * this->fields.array->std140_size(row_major);
> +      if (this->without_array()->is_record()) {
> +	 return this->arrays_of_arrays_size() *
> +            this->without_array()->std140_size(row_major);
>        } else {
> -         unsigned element_base_align =
> -            this->fields.array->std140_base_alignment(row_major);
> -         return this->length * MAX2(element_base_align, 16);
> +	 unsigned element_base_align =
> +	    this->without_array()->std140_base_alignment(row_major);
> +	 return this->arrays_of_arrays_size() * MAX2(element_base_align, 16);
>        }
>     }
>  
> 



More information about the mesa-dev mailing list