diff -ru --new-file Mesa-7.7.prepatch//src/mesa/swrast/s_span.c Mesa-7.7//src/mesa/swrast/s_span.c --- Mesa-7.7.prepatch//src/mesa/swrast/s_span.c 2010-02-18 16:43:47.000000000 +0100 +++ Mesa-7.7//src/mesa/swrast/s_span.c 2010-08-10 15:35:54.000000000 +0200 @@ -1267,6 +1267,8 @@ /* programmable shading */ if (span->primitive == GL_BITMAP && span->array->ChanType != GL_FLOAT) { convert_color_type(span, GL_FLOAT, 0); + } else { + span->array->rgba = span->array->attribs[FRAG_ATTRIB_COL0]; } if (span->primitive != GL_POINT || (span->interpMask & SPAN_RGBA) || @@ -1514,6 +1516,16 @@ if (rb->DataType != span->array->ChanType || fragOutput > 0) { convert_color_type(span, rb->DataType, fragOutput); + } else { + if (rb->DataType == GL_UNSIGNED_BYTE) { + span->array->rgba = span->array->rgba8; + } + else if (rb->DataType == GL_UNSIGNED_SHORT) { + span->array->rgba = span->array->rgba16; + } + else { + span->array->rgba = span->array->attribs[FRAG_ATTRIB_COL0]; + } } if (!multiFragOutputs && numBuffers > 1) {