intel-gem: Emit an MI_FLUSH at glFlush() so frontbuffer rendering is flushed.
authorEric Anholt <eric@anholt.net>
Wed, 2 Jul 2008 18:16:30 +0000 (11:16 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 2 Jul 2008 18:16:30 +0000 (11:16 -0700)
We have something similar in the X Server that covers X Server rendering, this
is the equivalent here for rendering to the front buffer.  If we cared about
avoiding this at glFlush time, we could only do this when some actual
frontbuffer rendering had occurred.

Bug #16392.

src/mesa/drivers/dri/intel/intel_context.c

index 33b8843e33e010accc920909410fe3e863176c83..fa0b4c56180e12ed9ae6e25193bcd24091bf8f78 100644 (file)
@@ -365,6 +365,12 @@ intelFlush(GLcontext * ctx)
    if (!IS_965(intel->intelScreen->deviceID))
       INTEL_FIREVERTICES(intel);
 
+   /* Emit a flush so that any frontbuffer rendering that might have occurred
+    * lands onscreen in a timely manner, even if the X Server doesn't trigger
+    * a flush for us.
+    */
+   intel_batchbuffer_emit_mi_flush(intel->batch);
+
    if (intel->batch->map != intel->batch->ptr)
       intel_batchbuffer_flush(intel->batch);
 }