From ff73c783cc47361ff0dd819c82d067b4b85870dd Mon Sep 17 00:00:00 2001 From: Brian Date: Sun, 6 Jan 2008 10:43:20 -0700 Subject: 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... --- src/mesa/drivers/dri/i965/brw_fallback.c | 9 +++------ src/mesa/drivers/dri/i965/brw_sf_state.c | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) (limited to 'src/mesa/drivers/dri/i965') diff --git a/src/mesa/drivers/dri/i965/brw_fallback.c b/src/mesa/drivers/dri/i965/brw_fallback.c index 3c4c60a3ea..58aeeb4228 100644 --- a/src/mesa/drivers/dri/i965/brw_fallback.c +++ b/src/mesa/drivers/dri/i965/brw_fallback.c @@ -62,12 +62,9 @@ static GLboolean do_check_fallback(struct brw_context *brw) /* We can only handle a single draw buffer at the moment, and only as the * first color buffer. */ - for (i = 0; i < MAX_DRAW_BUFFERS; i++) { - if (fb->_NumColorDrawBuffers[i] > (i == 0 ? 1 : 0)) { - DBG("FALLBACK: draw buffer %d: 0x%08x\n", - i, ctx->DrawBuffer->_ColorDrawBufferMask[i]); - return GL_TRUE; - } + if (fb->_NumColorDrawBuffers > 1) { + DBG("FALLBACK: multiple color draw buffers\n"); + return GL_TRUE; } /* _NEW_RENDERMODE diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index 05c6490949..f083e3148b 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -43,7 +43,7 @@ static void upload_sf_vp(struct brw_context *brw) const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; struct brw_sf_viewport sfv; struct intel_renderbuffer *irb = - intel_renderbuffer(ctx->DrawBuffer->_ColorDrawBuffers[0][0]); + intel_renderbuffer(ctx->DrawBuffer->_ColorDrawBuffers[0]); GLfloat y_scale, y_bias; memset(&sfv, 0, sizeof(sfv)); -- cgit v1.2.3