fix InputsRead bug in _mesa_combine_programs()
authorBrian <brian.paul@tungstengraphics.com>
Wed, 31 Oct 2007 00:26:34 +0000 (18:26 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Wed, 31 Oct 2007 00:26:34 +0000 (18:26 -0600)
src/mesa/shader/program.c

index 2d8b8877915187c10a623f97079aa88abb72579f..ed1aacd068d6505ced0169afa595f8af7676aa14 100644 (file)
@@ -469,6 +469,7 @@ _mesa_combine_programs(GLcontext *ctx,
    const GLuint lenB = progB->NumInstructions;
    const GLuint numParamsA = _mesa_num_parameters(progA->Parameters);
    const GLuint newLength = lenA + lenB;
+   GLbitfield inputsB;
    GLuint i;
 
    ASSERT(progA->Target == progB->Target);
@@ -498,8 +499,11 @@ _mesa_combine_programs(GLcontext *ctx,
                            PROGRAM_OUTPUT, FRAG_RESULT_COLR);
       }
 
-      newProg->InputsRead = progA->InputsRead;
-      newProg->InputsRead |= (progB->InputsRead & ~(1 << FRAG_ATTRIB_COL0));
+      inputsB = progB->InputsRead;
+      if (progA->OutputsWritten & (1 << FRAG_RESULT_COLR)) {
+         inputsB &= ~(1 << FRAG_ATTRIB_COL0);
+      }
+      newProg->InputsRead = progA->InputsRead | inputsB;
       newProg->OutputsWritten = progB->OutputsWritten;
    }
    else {