vbo: use FLUSH_UPDATE_CURRENT flag to indicate whether the vbo module is active
authorKeith Whitwell <keithw@vmware.com>
Wed, 4 Mar 2009 15:15:43 +0000 (15:15 +0000)
committerKeith Whitwell <keithw@vmware.com>
Wed, 4 Mar 2009 15:17:16 +0000 (15:17 +0000)
Add asserts for expected values on wakeup and flush.  Remove cases where
this flag is set or cleared except when waking up and flushing vbo module.

src/mesa/vbo/vbo_exec_api.c

index c0ffdb55e47d2b5c010cb436fe2fb6a2650f893e..9c2d0659139ff39d196e9951dbdbb591b6765198 100644 (file)
@@ -183,8 +183,6 @@ static void vbo_exec_copy_to_current( struct vbo_exec_context *exec )
       _mesa_update_color_material(ctx, 
                                  ctx->Current.Attrib[VBO_ATTRIB_COLOR0]);
    }
-
-   ctx->Driver.NeedFlush &= ~FLUSH_UPDATE_CURRENT;
 }
 
 
@@ -204,8 +202,6 @@ static void vbo_exec_copy_from_current( struct vbo_exec_context *exec )
         break;
       }
    }
-
-   ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT;
 }
 
 
@@ -346,8 +342,6 @@ static void vbo_exec_fixup_vertex( GLcontext *ctx,
     */
    if (attr == 0) 
       exec->ctx->Driver.NeedFlush |= FLUSH_STORED_VERTICES;
-   else 
-      exec->ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT;
 }
 
 
@@ -750,6 +744,9 @@ void vbo_exec_BeginVertices( GLcontext *ctx )
    struct vbo_exec_context *exec = &vbo_context(ctx)->exec;
    if (0) _mesa_printf("%s\n", __FUNCTION__);
    vbo_exec_vtx_map( exec );
+
+   assert(exec->ctx->Driver.NeedFlush == 0);
+   exec->ctx->Driver.NeedFlush = FLUSH_UPDATE_CURRENT;
 }
 
 void vbo_exec_FlushVertices_internal( GLcontext *ctx, GLboolean unmap )
@@ -785,6 +782,7 @@ void vbo_exec_FlushVertices( GLcontext *ctx, GLuint flags )
     */
    _mesa_restore_exec_vtxfmt( ctx );
 
+   assert(exec->ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT);
    exec->ctx->Driver.NeedFlush = 0;
 }