mesa/st: don't call finish in st_glFlush()
authorKeith Whitwell <keithw@vmware.com>
Fri, 13 Mar 2009 15:45:21 +0000 (15:45 +0000)
committerKeith Whitwell <keithw@vmware.com>
Fri, 13 Mar 2009 15:53:48 +0000 (15:53 +0000)
It is not the state tracker's responsibilty to inject sleeps and
pessimize performance in the hope of avoiding buffer synchronization
issues in buggy drivers.

Calling finish() here will just hide problems that need to be fixed
elsewhere.

src/mesa/state_tracker/st_cb_flush.c

index f8621ab125fbd37df70a1bb10ac28ba3073d0bef..4fdb67308799639638f3c0993dc73688f31a257d 100644 (file)
@@ -117,13 +117,16 @@ static void st_glFlush(GLcontext *ctx)
 {
    struct st_context *st = ctx->st;
 
+   /* Don't call st_finish() here.  It is not the state tracker's
+    * responsibilty to inject sleeps in the hope of avoiding buffer
+    * synchronization issues.  Calling finish() here will just hide
+    * problems that need to be fixed elsewhere.
+    */
+   st_flush(st, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, NULL);
+
    if (is_front_buffer_dirty(st)) {
-      st_finish(st);
       display_front_buffer(st);
    }
-   else {
-      st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
-   }
 }