For some reason when we convert the following from GLSL IR to NIR: out mat4 var;
The derefence type ends up as vec4 so we don't currently end up asserting here. However I hit this with a NIR array splitting pass I'm working on. --- src/compiler/nir/nir_validate.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c index 2322c8f786d..6ff17ee6a96 100644 --- a/src/compiler/nir/nir_validate.c +++ b/src/compiler/nir/nir_validate.c @@ -498,6 +498,7 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state) const struct glsl_type *type = nir_deref_tail(&instr->variables[0]->deref)->type; validate_assert(state, glsl_type_is_vector_or_scalar(type) || + glsl_type_is_matrix(type) || (instr->variables[0]->var->data.mode == nir_var_uniform && glsl_get_base_type(type) == GLSL_TYPE_SUBROUTINE)); validate_assert(state, instr->num_components == glsl_get_vector_elements(type)); @@ -507,6 +508,7 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state) const struct glsl_type *type = nir_deref_tail(&instr->variables[0]->deref)->type; validate_assert(state, glsl_type_is_vector_or_scalar(type) || + glsl_type_is_matrix(type) || (instr->variables[0]->var->data.mode == nir_var_uniform && glsl_get_base_type(type) == GLSL_TYPE_SUBROUTINE)); validate_assert(state, instr->num_components == glsl_get_vector_elements(type)); -- 2.13.6 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev