Keep NumTemporaries uptodate.
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 8 Sep 2005 18:45:03 +0000 (18:45 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 8 Sep 2005 18:45:03 +0000 (18:45 +0000)
Make sure oC alpha is populated when separate_specular enabled.

src/mesa/main/texenvprogram.c

index 4cb97469a58a9e4b61cadae26c34a3c7efb3f565..7c0d40ea211e0a49df65763238b3c1b2e54bc84c 100644 (file)
@@ -362,6 +362,9 @@ static struct ureg get_temp( struct texenv_fragment_program *p )
       exit(1);
    }
 
+   if (bit > p->program->Base.NumTemporaries)
+      p->program->Base.NumTemporaries = bit;
+
    p->temp_in_use |= 1<<(bit-1);
    return make_ureg(PROGRAM_TEMPORARY, (bit-1));
 }
@@ -387,6 +390,9 @@ static struct ureg get_tex_temp( struct texenv_fragment_program *p )
       exit(1);
    }
 
+   if (bit > p->program->Base.NumTemporaries)
+      p->program->Base.NumTemporaries = bit;
+
    p->temp_in_use |= 1<<(bit-1);
    return make_ureg(PROGRAM_TEMPORARY, (bit-1));
 }
@@ -1031,6 +1037,7 @@ static void create_new_program(struct state_key *key, GLcontext *ctx,
        */
       struct ureg s = register_input(&p, FRAG_ATTRIB_COL1);
       emit_arith( &p, FP_OPCODE_ADD, out, WRITEMASK_XYZ, 0, cf, s, undef );
+      emit_arith( &p, FP_OPCODE_MOV, out, WRITEMASK_W, 0, cf, undef, undef );
    }
    else if (memcmp(&cf, &out, sizeof(cf)) != 0) {
       /* Will wind up in here if no texture enabled or a couple of