[Mesa-dev] [PATCH] nir: fix load/store_var validation for matrix types

Timothy Arceri tarceri at itsqueeze.com
Fri Oct 27 04:25:21 UTC 2017


On second thoughts I'm splitting the matrix as well so I probably don't 
need this.

On 27/10/17 14:58, Timothy Arceri wrote:
> 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));
> 


More information about the mesa-dev mailing list