From fb9cf48259a4534219c7b8dff5ceaed7afde56ad Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 30 Oct 2007 18:26:34 -0600 Subject: fix InputsRead bug in _mesa_combine_programs() --- src/mesa/shader/program.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/mesa/shader') 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 { -- cgit v1.2.3