summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorCorbin Simpson <[email protected]>2009-03-16 06:48:05 -0700
committerCorbin Simpson <[email protected]>2009-03-16 06:49:22 -0700
commit5ad17215405700accc2a2cde04a0023725633c57 (patch)
treefb65a1fc79817213c87b50eaee7f7326b346ee55 /src/gallium/drivers
parent567aead92ae1b51578b0dea4709662b0d9c130e2 (diff)
r300-gallium: r500-fs: Add ABS.
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/r300/r300_state_shader.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_state_shader.c b/src/gallium/drivers/r300/r300_state_shader.c
index 0a4f7c8d7e9..564acad83b3 100644
--- a/src/gallium/drivers/r300/r300_state_shader.c
+++ b/src/gallium/drivers/r300/r300_state_shader.c
@@ -398,6 +398,19 @@ static void r500_fs_instruction(struct r500_fragment_shader* fs,
&inst->FullDstRegisters[0], inst->Instruction.Opcode, 3,
false);
break;
+ case TGSI_OPCODE_ABS:
+ r500_emit_maths(fs, assembler, inst->FullSrcRegisters,
+ &inst->FullDstRegisters[0], inst->Instruction.Opcode, 3,
+ false);
+ /* Set absolute value modifiers. */
+ i = fs->instruction_count - 1;
+ fs->instructions[i].inst3 |=
+ R500_ALU_RGB_MOD_A_ABS |
+ R500_ALU_RGB_MOD_B_ABS;
+ fs->instructions[i].inst4 |=
+ R500_ALPHA_MOD_A_ABS |
+ R500_ALPHA_MOD_B_ABS;
+ break;
case TGSI_OPCODE_MAD:
r500_emit_maths(fs, assembler, inst->FullSrcRegisters,
&inst->FullDstRegisters[0], inst->Instruction.Opcode, 3,