r300/compiler: set the MSB of ADDR for inline constants
authorMarek Olšák <maraeo@gmail.com>
Tue, 5 Apr 2011 00:44:03 +0000 (02:44 +0200)
committerMarek Olšák <maraeo@gmail.com>
Tue, 5 Apr 2011 04:36:56 +0000 (06:36 +0200)
The docs say so.

src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c

index 2f8d6e4d04b14b41c9a99cdf3f5b0953ff3ea959..9b5c7c6e4897d0a7ead8e3b1c417002fd0ebc124 100644 (file)
@@ -197,11 +197,14 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int
 
 static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src)
 {
+       /* From docs:
+        *   Note that inline constants set the MSB of ADDR0 and clear ADDR0_CONST.
+        * MSB = 1 << 7 */
        if (!src.Used)
-               return 0;
+               return 1 << 7;
 
        if (src.File == RC_FILE_CONSTANT) {
-               return src.Index | 0x100;
+               return src.Index | R500_RGB_ADDR0_CONST;
        } else if (src.File == RC_FILE_TEMPORARY) {
                use_temporary(code, src.Index);
                return src.Index;