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); } -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev