Flush driver, not just tnl module.
authorKeith Whitwell <keith@tungstengraphics.com>
Fri, 22 Sep 2006 11:40:35 +0000 (11:40 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Fri, 22 Sep 2006 11:40:35 +0000 (11:40 +0000)
src/mesa/main/fbobject.c

index b6a59336cb8103ef349905d2205e8a42e710e7a9..f00b37fc9f62899f51d3b1e90226cb168d705464 100644 (file)
@@ -570,6 +570,12 @@ _mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer)
    }
 
    FLUSH_VERTICES(ctx, _NEW_BUFFERS);
+   /* The above doesn't fully flush the drivers in the way that a
+    * glFlush does, but that is required here:
+    */
+   if (ctx->Driver.Flush)
+      ctx->Driver.Flush(ctx);
+
 
    if (renderbuffer) {
       newRb = _mesa_lookup_renderbuffer(ctx, renderbuffer);
@@ -1047,6 +1053,11 @@ _mesa_DeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers)
 
    ASSERT_OUTSIDE_BEGIN_END(ctx);
    FLUSH_VERTICES(ctx, _NEW_BUFFERS);
+   /* The above doesn't fully flush the drivers in the way that a
+    * glFlush does, but that is required here:
+    */
+   if (ctx->Driver.Flush)
+      ctx->Driver.Flush(ctx);
 
    for (i = 0; i < n; i++) {
       if (framebuffers[i] > 0) {
@@ -1262,6 +1273,11 @@ framebuffer_texture(GLuint dims, GLenum target, GLenum attachment,
    }
 
    FLUSH_VERTICES(ctx, _NEW_BUFFERS);
+   /* The above doesn't fully flush the drivers in the way that a
+    * glFlush does, but that is required here:
+    */
+   if (ctx->Driver.Flush)
+      ctx->Driver.Flush(ctx);
 
    _glthread_LOCK_MUTEX(fb->Mutex);
    if (texObj) {
@@ -1380,6 +1396,11 @@ _mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment,
    }
 
    FLUSH_VERTICES(ctx, _NEW_BUFFERS);
+   /* The above doesn't fully flush the drivers in the way that a
+    * glFlush does, but that is required here:
+    */
+   if (ctx->Driver.Flush)
+      ctx->Driver.Flush(ctx);
 
    assert(ctx->Driver.FramebufferRenderbuffer);
    ctx->Driver.FramebufferRenderbuffer(ctx, fb, attachment, rb);
@@ -1443,6 +1464,11 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
    }
 
    FLUSH_VERTICES(ctx, _NEW_BUFFERS);
+   /* The above doesn't fully flush the drivers in the way that a
+    * glFlush does, but that is required here:
+    */
+   if (ctx->Driver.Flush)
+      ctx->Driver.Flush(ctx);
 
    switch (pname) {
    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT: