i965: Emit conditional code updates as required for GLSL VS if statements.

Previously, we'd be branching based on whatever condition code happened to be
laying around.
This commit is contained in:
Eric Anholt 2009-08-04 14:13:27 -07:00
parent 011244853b
commit 7007f8b352

View file

@ -1558,6 +1558,19 @@ void brw_vs_emit(struct brw_vs_compile *c )
"unknown");
}
/* Set the predication update on the last instruction of the native
* instruction sequence.
*
* This would be problematic if it was set on a math instruction,
* but that shouldn't be the case with the current GLSL compiler.
*/
if (inst->CondUpdate) {
struct brw_instruction *hw_insn = &p->store[p->nr_insn - 1];
assert(hw_insn->header.destreg__conditionalmod == 0);
hw_insn->header.destreg__conditionalmod = BRW_CONDITIONAL_NZ;
}
if ((inst->DstReg.File == PROGRAM_OUTPUT)
&& (inst->DstReg.Index != VERT_RESULT_HPOS)
&& c->output_regs[inst->DstReg.Index].used_in_src) {