r300-gallium: r500-fs: Clamp only when saturation flags are set.

This commit is contained in:
Corbin Simpson 2009-03-16 06:41:57 -07:00
parent 3cce08e313
commit 567aead92a

View file

@ -228,9 +228,7 @@ static INLINE void r500_emit_alu(struct r500_fragment_shader* fs,
R500_ALU_WMASK(dst->DstRegister.WriteMask);
}
fs->instructions[i].inst0 |=
R500_INST_TEX_SEM_WAIT |
R500_INST_RGB_CLAMP | R500_INST_ALPHA_CLAMP;
fs->instructions[i].inst0 |= R500_INST_TEX_SEM_WAIT;
fs->instructions[i].inst4 =
R500_ALPHA_ADDRD(r300_fs_dst(assembler, &dst->DstRegister));
@ -421,6 +419,12 @@ static void r500_fs_instruction(struct r500_fragment_shader* fs,
inst->Instruction.Opcode);
break;
}
/* Clamp, if saturation flags are set. */
if (inst->Instruction.Saturate == TGSI_SAT_ZERO_ONE) {
fs->instructions[fs->instruction_count - 1].inst0 |=
R500_INST_RGB_CLAMP | R500_INST_ALPHA_CLAMP;
}
}
static void r500_fs_finalize(struct r500_fragment_shader* fs,