Set _NEW_BUFFERS in glRead/DrawBuffer().

Previously, we set _NEW_PIXEL and _NEW_COLOR in these functions, respectively.
That correponds to the GL attribute groups, but doesn't make much sense
otherwise.  This could improve validation efficiency in a few places too.
It looks like all the drivers are already checking for _NEW_BUFFERS in the
right places (since that's the bit for FBO state) so we can trim out
_NEW_PIXEL and _NEW_COLOR at any time.
This commit is contained in:
Brian
2007-10-29 17:36:39 -06:00
parent b19a933930
commit ba0fcc47d6
4 changed files with 5 additions and 9 deletions

View File

@@ -841,7 +841,7 @@ xmesa_update_state( GLcontext *ctx, GLbitfield new_state )
* GL_DITHER, GL_READ/DRAW_BUFFER, buffer binding state, etc. effect * GL_DITHER, GL_READ/DRAW_BUFFER, buffer binding state, etc. effect
* renderbuffer span/clear funcs. * renderbuffer span/clear funcs.
*/ */
if (new_state & (_NEW_COLOR | _NEW_PIXEL | _NEW_BUFFERS)) { if (new_state & (_NEW_COLOR | _NEW_BUFFERS)) {
XMesaBuffer xmbuf = XMESA_BUFFER(ctx->DrawBuffer); XMesaBuffer xmbuf = XMESA_BUFFER(ctx->DrawBuffer);
struct xmesa_renderbuffer *front_xrb, *back_xrb; struct xmesa_renderbuffer *front_xrb, *back_xrb;

View File

@@ -527,7 +527,7 @@ _mesa_drawbuffers(GLcontext *ctx, GLuint n, const GLenum *buffers,
set_color_output(ctx, output, GL_NONE, 0x0); set_color_output(ctx, output, GL_NONE, 0x0);
} }
ctx->NewState |= _NEW_COLOR; ctx->NewState |= _NEW_BUFFERS;
} }
@@ -588,7 +588,7 @@ _mesa_ReadBuffer(GLenum buffer)
if (!_mesa_readbuffer_update_fields(ctx, buffer)) if (!_mesa_readbuffer_update_fields(ctx, buffer))
return; return;
ctx->NewState |= _NEW_PIXEL; ctx->NewState |= _NEW_BUFFERS;
/* /*
* Call device driver function. * Call device driver function.

View File

@@ -1170,7 +1170,7 @@ _mesa_update_state_locked( GLcontext *ctx )
if (new_state & (_NEW_PROGRAM|_NEW_TEXTURE|_NEW_TEXTURE_MATRIX)) if (new_state & (_NEW_PROGRAM|_NEW_TEXTURE|_NEW_TEXTURE_MATRIX))
_mesa_update_texture( ctx, new_state ); _mesa_update_texture( ctx, new_state );
if (new_state & (_NEW_BUFFERS | _NEW_COLOR | _NEW_PIXEL)) if (new_state & _NEW_BUFFERS)
_mesa_update_framebuffer(ctx); _mesa_update_framebuffer(ctx);
if (new_state & (_NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT)) if (new_state & (_NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT))

View File

@@ -85,14 +85,10 @@ update_framebuffer_state( struct st_context *st )
} }
/**
* Note that glDrawBuffer() sets _NEW_COLOR, not _NEW_BUFFER.
*/
const struct st_tracked_state st_update_framebuffer = { const struct st_tracked_state st_update_framebuffer = {
.name = "st_update_framebuffer", .name = "st_update_framebuffer",
.dirty = { .dirty = {
.mesa = (_NEW_BUFFERS | _NEW_COLOR), .mesa = _NEW_BUFFERS,
.st = 0, .st = 0,
}, },
.update = update_framebuffer_state .update = update_framebuffer_state