From ba0fcc47d61be6caa2f4a5f4eb0c36eba9e2cb59 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 29 Oct 2007 17:36:39 -0600 Subject: [PATCH] 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. --- src/mesa/drivers/x11/xm_dd.c | 2 +- src/mesa/main/buffers.c | 4 ++-- src/mesa/main/state.c | 2 +- src/mesa/state_tracker/st_atom_framebuffer.c | 6 +----- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index 3ee44bf..8ae243a 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -841,7 +841,7 @@ xmesa_update_state( GLcontext *ctx, GLbitfield new_state ) * GL_DITHER, GL_READ/DRAW_BUFFER, buffer binding state, etc. effect * 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); struct xmesa_renderbuffer *front_xrb, *back_xrb; diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index 7a918c5..3cbd671 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -527,7 +527,7 @@ _mesa_drawbuffers(GLcontext *ctx, GLuint n, const GLenum *buffers, 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)) return; - ctx->NewState |= _NEW_PIXEL; + ctx->NewState |= _NEW_BUFFERS; /* * Call device driver function. diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 41c657e..0e4cf04 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -1170,7 +1170,7 @@ _mesa_update_state_locked( GLcontext *ctx ) if (new_state & (_NEW_PROGRAM|_NEW_TEXTURE|_NEW_TEXTURE_MATRIX)) _mesa_update_texture( ctx, new_state ); - if (new_state & (_NEW_BUFFERS | _NEW_COLOR | _NEW_PIXEL)) + if (new_state & _NEW_BUFFERS) _mesa_update_framebuffer(ctx); if (new_state & (_NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT)) diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c b/src/mesa/state_tracker/st_atom_framebuffer.c index e776c91..aec51f5 100644 --- a/src/mesa/state_tracker/st_atom_framebuffer.c +++ b/src/mesa/state_tracker/st_atom_framebuffer.c @@ -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 = { .name = "st_update_framebuffer", .dirty = { - .mesa = (_NEW_BUFFERS | _NEW_COLOR), + .mesa = _NEW_BUFFERS, .st = 0, }, .update = update_framebuffer_state -- 2.7.4