r300: fix address register handling in NQSSADCE
authorMaciej Cencora <m.cencora@gmail.com>
Wed, 22 Jul 2009 20:10:22 +0000 (22:10 +0200)
committerMaciej Cencora <m.cencora@gmail.com>
Wed, 22 Jul 2009 20:10:22 +0000 (22:10 +0200)
For address register we always use X component

src/mesa/drivers/dri/r300/radeon_nqssadce.c

index 840c9733b164788a89a444778b7cf51ac78dcebf..202a8532b6d9931aaf785d91cf69bcd9d909c7fd 100644 (file)
@@ -117,13 +117,15 @@ static struct prog_instruction* track_used_srcreg(struct nqssadce_state* s,
 
        struct register_state *regstate;
 
-       if (inst->SrcReg[src].RelAddr)
+       if (inst->SrcReg[src].RelAddr) {
                regstate = get_reg_state(s, PROGRAM_ADDRESS, 0);
-       else
+               if (regstate)
+                       regstate->Sourced |= WRITEMASK_X;
+       } else {
                regstate = get_reg_state(s, inst->SrcReg[src].File, inst->SrcReg[src].Index);
-
-       if (regstate)
-               regstate->Sourced |= deswz_source & 0xf;
+               if (regstate)
+                       regstate->Sourced |= deswz_source & 0xf;
+       }
 
        return inst;
 }