i965: When splitting vector variable assignment, ignore unset channels.

The new checks for sanity in ir_assignment creation got angry about
this write_mask == 0.  Fixes:
glsl-fs-dot-vec2.
glsl-fs-atan-2
glsl-fs-dot-vec2
This commit is contained in:
Eric Anholt
2010-09-22 14:40:40 -07:00
parent 86a1938aa5
commit ac3d5beb0b
@@ -271,12 +271,15 @@ ir_vector_splitting_visitor::visit_leave(ir_assignment *ir)
void *mem_ctx = lhs ? lhs->mem_ctx : rhs->mem_ctx;
unsigned int writemask;
if (!(ir->write_mask & (1 << i)))
continue;
if (lhs) {
new_lhs = new(mem_ctx) ir_dereference_variable(lhs->components[i]);
writemask = (ir->write_mask >> i) & 1;
writemask = 1;
} else {
new_lhs = ir->lhs->clone(mem_ctx, NULL);
writemask = ir->write_mask & (1 << i);
writemask = 1 << i;
}
if (rhs) {