mesa: implement DEBUG_ALWAYS_FLUSH debug option
authorBrian Paul <brianp@vmware.com>
Wed, 9 May 2012 18:08:47 +0000 (12:08 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 11 May 2012 22:13:14 +0000 (16:13 -0600)
This flag has been around for a while but it wasn't actually used anywhere.

Now, setting this flag causes a glFlush() to be issued after each
drawing call (including glBegin/End, glDrawElements, glDrawArrays,
glDrawPixels, glCopyPixels and glBitmap).

src/mesa/main/drawpix.c
src/mesa/vbo/vbo_exec_api.c
src/mesa/vbo/vbo_exec_array.c

index c2f7db2e8850fb167717189687fd71fb84fefcf4..def55dddde1f1cca88d433bcc46185f4126ddf4f 100644 (file)
@@ -180,6 +180,10 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
 
 end:
    _mesa_set_vp_override(ctx, GL_FALSE);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 
@@ -280,6 +284,10 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
 
 end:
    _mesa_set_vp_override(ctx, GL_FALSE);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 
@@ -354,6 +362,10 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
    /* update raster position */
    ctx->Current.RasterPos[0] += xmove;
    ctx->Current.RasterPos[1] += ymove;
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 
index 0fd8d5915171b1fa8d8d3d4d848ff73376dadd14..28d2c4de9021e93e0332a1fd5d4b6acf6b85eb36 100644 (file)
@@ -862,6 +862,10 @@ static void GLAPIENTRY vbo_exec_End( void )
    }
    else 
       _mesa_error( ctx, GL_INVALID_OPERATION, "glEnd" );
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 
index cc94e761bc189aa397737b84f51011657d63762c..9303ad719fc3db291be3e41ef4591c2fb9aedcb5 100644 (file)
@@ -614,6 +614,10 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,
                       GL_TRUE, start, start + count - 1,
                       NULL);
    }
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 
@@ -803,6 +807,10 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode,
    check_buffers_are_unmapped(exec->array.inputs);
    vbo->draw_prims( ctx, prim, 1, &ib,
                    index_bounds_valid, start, end, NULL );
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 
@@ -1127,6 +1135,10 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
    }
 
    free(prim);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 
@@ -1201,6 +1213,10 @@ vbo_draw_transform_feedback(struct gl_context *ctx, GLenum mode,
    check_buffers_are_unmapped(exec->array.inputs);
    vbo->draw_prims(ctx, prim, 1, NULL,
                    GL_TRUE, 0, 0, obj);
+
+   if (MESA_DEBUG_FLAGS & DEBUG_ALWAYS_FLUSH) {
+      _mesa_flush(ctx);
+   }
 }
 
 /**