--- src/glsl/nir/nir_validate.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/glsl/nir/nir_validate.c b/src/glsl/nir/nir_validate.c index d7ba374..2c80e44 100644 --- a/src/glsl/nir/nir_validate.c +++ b/src/glsl/nir/nir_validate.c @@ -107,6 +107,16 @@ validate_src_components(nir_src *src, int num_components) } static void +validate_dest_components(nir_dest *dest, int num_components) +{ + if (dest->is_ssa) { + assert(num_components <= dest->ssa.num_components); + } else if (!dest->reg.reg->is_packed) { + assert(num_components <= dest->reg.reg->num_components); + } +} + +static void validate_reg_src(nir_reg_src *src, validate_state *state) { assert(src->reg != NULL); @@ -383,13 +393,8 @@ validate_intrinsic_instr(nir_intrinsic_instr *instr, validate_state *state) assert(components_written > 0); - if (instr->dest.is_ssa) { - assert(components_written <= instr->dest.ssa.num_components); - } else if (!instr->dest.reg.reg->is_packed) { - assert(components_written <= instr->dest.reg.reg->num_components); - } - validate_dest(&instr->dest, state); + validate_dest_components(&instr->dest, components_written); } unsigned num_vars = nir_intrinsic_infos[instr->intrinsic].num_variables; @@ -434,6 +439,8 @@ validate_tex_instr(nir_tex_instr *instr, validate_state *state) if (instr->sampler != NULL) validate_deref_var(instr, instr->sampler, state); + + validate_dest_components(&instr->dest, nir_tex_instr_dest_size(instr)); } static void -- 2.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev