[Mesa-dev] [PATCH] nir/validate: Add better validation of load/store types

Connor Abbott cwabbott0 at gmail.com
Thu Oct 22 18:29:24 PDT 2015


Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>

On Thu, Oct 22, 2015 at 7:53 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> ---
>  src/glsl/nir/nir_validate.c | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/src/glsl/nir/nir_validate.c b/src/glsl/nir/nir_validate.c
> index c6fedf9..a42e830 100644
> --- a/src/glsl/nir/nir_validate.c
> +++ b/src/glsl/nir/nir_validate.c
> @@ -398,15 +398,27 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state)
>     }
>
>     switch (instr->intrinsic) {
> -   case nir_intrinsic_load_var:
> +   case nir_intrinsic_load_var: {
> +      const struct glsl_type *type =
> +         nir_deref_tail(&instr->variables[0]->deref)->type;
> +      assert(glsl_type_is_vector_or_scalar(type));
> +      assert(instr->num_components == glsl_get_vector_elements(type));
>        assert(instr->variables[0]->var->data.mode != nir_var_shader_out);
>        break;
> -   case nir_intrinsic_store_var:
> +   }
> +   case nir_intrinsic_store_var: {
> +      const struct glsl_type *type =
> +         nir_deref_tail(&instr->variables[0]->deref)->type;
> +      assert(glsl_type_is_vector_or_scalar(type));
> +      assert(instr->num_components == glsl_get_vector_elements(type));
>        assert(instr->variables[0]->var->data.mode != nir_var_shader_in &&
>               instr->variables[0]->var->data.mode != nir_var_uniform &&
>               instr->variables[0]->var->data.mode != nir_var_shader_storage);
>        break;
> +   }
>     case nir_intrinsic_copy_var:
> +      assert(nir_deref_tail(&instr->variables[0]->deref)->type ==
> +             nir_deref_tail(&instr->variables[1]->deref)->type);
>        assert(instr->variables[0]->var->data.mode != nir_var_shader_in &&
>               instr->variables[0]->var->data.mode != nir_var_uniform &&
>               instr->variables[0]->var->data.mode != nir_var_shader_storage);
> --
> 2.5.0.400.gff86faf
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list