From: Eric Anholt Date: Wed, 30 Jun 2010 22:26:41 +0000 (-0700) Subject: ir_to_mesa: When generating a swizzle, respect the reg's current swizzle. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=698b84444343189357ad252856d3c5493e47e4fa;p=mesa.git ir_to_mesa: When generating a swizzle, respect the reg's current swizzle. Fixes depth-tex-modes-glsl. --- diff --git a/src/mesa/shader/ir_to_mesa.cpp b/src/mesa/shader/ir_to_mesa.cpp index 8c074a8bd9a..61a1f306c88 100644 --- a/src/mesa/shader/ir_to_mesa.cpp +++ b/src/mesa/shader/ir_to_mesa.cpp @@ -817,23 +817,23 @@ ir_to_mesa_visitor::visit(ir_swizzle *ir) if (i < ir->type->vector_elements) { switch (i) { case 0: - swizzle[i] = ir->mask.x; + swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.x); break; case 1: - swizzle[i] = ir->mask.y; + swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.y); break; case 2: - swizzle[i] = ir->mask.z; + swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.z); break; case 3: - swizzle[i] = ir->mask.w; + swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.w); break; } } else { /* If the type is smaller than a vec4, replicate the last * channel out. */ - swizzle[i] = ir->type->vector_elements - 1; + swizzle[i] = swizzle[ir->type->vector_elements - 1]; } }