fix cond code swizzle bug
authorBrian <brian@yutani.localnet.net>
Wed, 28 Mar 2007 21:45:24 +0000 (15:45 -0600)
committerBrian <brian@yutani.localnet.net>
Wed, 28 Mar 2007 21:45:24 +0000 (15:45 -0600)
src/mesa/shader/slang/slang_emit.c

index b00ab3c7bf3d731a818fe35d2e8abfed94d5fdcf..a726d67003eaa46b6fe99ca2820887a7c133e8c5 100644 (file)
@@ -1314,8 +1314,13 @@ emit_cont_break_if_true(slang_emit_info *emitInfo, slang_ir_node *n)
       const gl_inst_opcode opcode
          = (n->Opcode == IR_CONT_IF_TRUE) ? OPCODE_CONT : OPCODE_BRK;
       if (emitInfo->EmitCondCodes) {
+         /* Get the writemask from the previous instruction which set
+          * the condcodes.  Use that writemask as the CondSwizzle.
+          */
+         const GLuint condWritemask = inst->DstReg.WriteMask;
          inst = new_instruction(emitInfo, opcode);
          inst->DstReg.CondMask = COND_NE;
+         inst->DstReg.CondSwizzle = writemask_to_swizzle(condWritemask);
          return inst;
       }
       else {