From: Brian Date: Wed, 31 Oct 2007 00:26:34 +0000 (-0600) Subject: fix InputsRead bug in _mesa_combine_programs() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fb9cf48259a4534219c7b8dff5ceaed7afde56ad;p=mesa.git fix InputsRead bug in _mesa_combine_programs() --- diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c index 2d8b8877915..ed1aacd068d 100644 --- a/src/mesa/shader/program.c +++ b/src/mesa/shader/program.c @@ -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 {