Simplify ctx->_NumColorDrawBuffers, _ColorDrawBuffers and fix bug 13835.
These fields are no longer indexed by shader output. Now, we just have a simple array of renderbuffer pointers. If the shader writes to gl_FragData[i], send those colors to the N _ColorDrawBuffers. Otherwise, replicate the single gl_FragColor (or the fixed-function color) to the N _ColorDrawBuffers. A few more changes and simplifications can follow from this...
This commit is contained in:
@@ -167,11 +167,11 @@ run_program(GLcontext *ctx, SWspan *span, GLuint start, GLuint end)
|
||||
* Note that colors beyond 0 and 1 will overwrite other
|
||||
* attributes, such as FOGC, TEX0, TEX1, etc. That's OK.
|
||||
*/
|
||||
GLuint output;
|
||||
for (output = 0; output < swrast->_NumColorOutputs; output++) {
|
||||
if (outputsWritten & (1 << (FRAG_RESULT_DATA0 + output))) {
|
||||
COPY_4V(span->array->attribs[FRAG_ATTRIB_COL0+output][i],
|
||||
machine->Outputs[FRAG_RESULT_DATA0 + output]);
|
||||
GLuint buf;
|
||||
for (buf = 0; buf < ctx->DrawBuffer->_NumColorDrawBuffers; buf++) {
|
||||
if (outputsWritten & (1 << (FRAG_RESULT_DATA0 + buf))) {
|
||||
COPY_4V(span->array->attribs[FRAG_ATTRIB_COL0 + buf][i],
|
||||
machine->Outputs[FRAG_RESULT_DATA0 + buf]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user