summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaciej Cencora <m.cencora@gmail.com>2009-07-04 15:22:22 +0200
committerMaciej Cencora <m.cencora@gmail.com>2009-07-13 19:28:07 +0200
commit96b2eb18c5059d441873bfa562bd2ff9dec46a51 (patch)
tree77f7150a9f093581864073bf8f885d88109ac1ce /src
parente43cc28c1b6face903f3c977d6eb887335bec886 (diff)
r300: handle ARB_vertex_program specific instructions in NQSSADCE
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/r300/radeon_nqssadce.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r300/radeon_nqssadce.c b/src/mesa/drivers/dri/r300/radeon_nqssadce.c
index 82dfc31dd0..c56598b4a5 100644
--- a/src/mesa/drivers/dri/r300/radeon_nqssadce.c
+++ b/src/mesa/drivers/dri/r300/radeon_nqssadce.c
@@ -188,6 +188,8 @@ static void process_instruction(struct nqssadce_state* s)
case OPCODE_MAX:
case OPCODE_MIN:
case OPCODE_MUL:
+ case OPCODE_SGE:
+ case OPCODE_SLT:
inst = track_used_srcreg(s, inst, 0, inst->DstReg.WriteMask);
inst = track_used_srcreg(s, inst, 1, inst->DstReg.WriteMask);
break;
@@ -219,6 +221,18 @@ static void process_instruction(struct nqssadce_state* s)
case OPCODE_TXP:
inst = track_used_srcreg(s, inst, 0, 0xf);
break;
+ case OPCODE_DST:
+ inst = track_used_srcreg(s, inst, 0, 0x6);
+ inst = track_used_srcreg(s, inst, 1, 0xa);
+ break;
+ case OPCODE_EXP:
+ case OPCODE_LOG:
+ case OPCODE_POW:
+ inst = track_used_srcreg(s, inst, 0, 0x3);
+ break;
+ case OPCODE_LIT:
+ inst = track_used_srcreg(s, inst, 0, 0xb);
+ break;
default:
_mesa_problem(s->Ctx, "NqssaDce: Unknown opcode %d\n", inst->Opcode);
return;