[Mesa-dev] [PATCH 1/3] glsl: don't apply uniform/buffer layouts to interface blocks

Samuel Iglesias Gonsálvez siglesias at igalia.com
Mon Feb 22 13:24:08 UTC 2016


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

On Sun, 2016-02-14 at 20:28 +1100, Timothy Arceri wrote:
> If the following patch we will stop setting these layouts by default
> on interface blocks, so we need to do this to avoid hitting the
> assert.
> ---
>  src/compiler/glsl/ast_to_hir.cpp | 13 +++++++------
>  1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/src/compiler/glsl/ast_to_hir.cpp
> b/src/compiler/glsl/ast_to_hir.cpp
> index 988b1e2..cf42abb 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -6490,8 +6490,10 @@
> ast_process_struct_or_iface_block_members(exec_list *instructions,
>            * the structure may contain a structure that contains ...
> a matrix
>            * that need the proper layout.
>            */
> -         if (field_type->without_array()->is_matrix()
> -             || field_type->without_array()->is_record()) {
> +         if (is_interface &&
> +             (layout->flags.q.uniform || layout->flags.q.buffer) &&
> +             (field_type->without_array()->is_matrix()
> +              || field_type->without_array()->is_record())) {
>              /* If no layout is specified for the field, inherit the
> layout
>               * from the block.
>               */
> @@ -6502,11 +6504,10 @@
> ast_process_struct_or_iface_block_members(exec_list *instructions,
>              else if (qual->flags.q.column_major)
>                 fields[i].matrix_layout =
> GLSL_MATRIX_LAYOUT_COLUMN_MAJOR;
>  
> -            /* If we're processing an interface block, the matrix
> layout must
> -             * be decided by this point.
> +            /* If we're processing an uniform or buffer block, the
> matrix
> +             * layout must be decided by this point.
>               */
> -            assert(!is_interface
> -                   || fields[i].matrix_layout ==
> GLSL_MATRIX_LAYOUT_ROW_MAJOR
> +            assert(fields[i].matrix_layout ==
> GLSL_MATRIX_LAYOUT_ROW_MAJOR
>                     || fields[i].matrix_layout ==
> GLSL_MATRIX_LAYOUT_COLUMN_MAJOR);
>           }
>  


More information about the mesa-dev mailing list