Module: Mesa
Branch: master
Commit: c839174d55216cf1da5cdc4bf0f735ab8359d221
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c839174d55216cf1da5cdc4bf0f735ab8359d221

Author: Jason Ekstrand <[email protected]>
Date:   Thu Oct 22 16:53:27 2015 -0700

nir/validate: Add better validation of load/store types

Reviewed-by: Connor Abbott <[email protected]>

---

 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);

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to