From f22ab2e8b3dbd7dfdada0d353da1c6ef898f1494 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 30 Nov 2015 16:43:09 -0800 Subject: [PATCH] glsl: Don't assert on shared variable matrices with 'inherited' layout MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We use column-major for shared variable matrices. Reviewed-by: Jordan Justen Reviewed-by: Kristian Høgsberg --- src/glsl/lower_buffer_access.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/glsl/lower_buffer_access.cpp b/src/glsl/lower_buffer_access.cpp index 7e9d516..f8c8d14 100644 --- a/src/glsl/lower_buffer_access.cpp +++ b/src/glsl/lower_buffer_access.cpp @@ -278,9 +278,16 @@ lower_buffer_access::is_dereferenced_thing_row_major(const ir_rvalue *deref) glsl_matrix_layout(var_deref->var->data.matrix_layout); switch (matrix_layout) { - case GLSL_MATRIX_LAYOUT_INHERITED: - assert(!matrix); + case GLSL_MATRIX_LAYOUT_INHERITED: { + /* For interface block matrix variables we handle inherited + * layouts at HIR generation time, but we don't do that for shared + * variables, which are always column-major + */ + ir_variable *var = deref->variable_referenced(); + assert((var->is_in_buffer_block() && !matrix) || + var->data.mode == ir_var_shader_shared); return false; + } case GLSL_MATRIX_LAYOUT_COLUMN_MAJOR: return false; case GLSL_MATRIX_LAYOUT_ROW_MAJOR: -- 2.7.4