OSDN Git Service

r300: handle ARB_vertex_program specific instructions in NQSSADCE
authorMaciej Cencora <m.cencora@gmail.com>
Sat, 4 Jul 2009 13:22:22 +0000 (15:22 +0200)
committerMaciej Cencora <m.cencora@gmail.com>
Mon, 13 Jul 2009 17:28:07 +0000 (19:28 +0200)
src/mesa/drivers/dri/r300/radeon_nqssadce.c

index 82dfc31..c56598b 100644 (file)
@@ -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;