Set _NEW_BUFFERS in glRead/DrawBuffer().
authorBrian <brian.paul@tungstengraphics.com>
Mon, 29 Oct 2007 23:36:39 +0000 (17:36 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 30 Oct 2007 17:32:53 +0000 (11:32 -0600)
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
src/mesa/main/buffers.c
src/mesa/main/state.c
src/mesa/state_tracker/st_atom_framebuffer.c

index 3ee44bfbaf6195ab1458b359700962790231ea24..8ae243ae6628556a1c2763f66caf8d0a575d993f 100644 (file)
@@ -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;
 
index 7a918c53a7e155c5b2f94f7d0168e338aa96d5c6..3cbd671baba794e9b9fe7c7814a3b82dadcf2edd 100644 (file)
@@ -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.
index 41c657e9fd67df802466ed6fcb8202f8d7994a70..0e4cf047c86a7c24f8af8413c7f8d519000d9e08 100644 (file)
@@ -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))
index e776c9112d1a36d2f431687513027c12ddc5421e..aec51f5eedde5bc8ef15d7301f9a8cd1c9a099ae 100644 (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 = {
    .name = "st_update_framebuffer",
    .dirty = {
-      .mesa = (_NEW_BUFFERS | _NEW_COLOR),
+      .mesa = _NEW_BUFFERS,
       .st  = 0,
    },
    .update = update_framebuffer_state