aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/state_tracker/st_cb_flush.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c
index 44bf77ae71e..c90bedd3e5f 100644
--- a/src/mesa/state_tracker/st_cb_flush.c
+++ b/src/mesa/state_tracker/st_cb_flush.c
@@ -60,7 +60,7 @@ static void st_gl_flush( struct st_context *st, uint pipeFlushFlags,
{
GLframebuffer *fb = st->ctx->DrawBuffer;
- st_flush( st, pipeFlushFlags, fence );
+ FLUSH_VERTICES(st->ctx, 0);
if (!fb)
return;
@@ -85,6 +85,15 @@ static void st_gl_flush( struct st_context *st, uint pipeFlushFlags,
= st_renderbuffer(fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer);
struct pipe_surface *front_surf = strb->surface;
+ /* If we aren't rendering to the frontbuffer, this is a noop.
+ * This should be uncontroversial for glFlush, though people may
+ * feel more strongly about glFinish.
+ *
+ * Additionally, need to make sure that the frontbuffer_dirty
+ * flag really gets set on frontbuffer rendering.
+ */
+ st->pipe->flush( st->pipe, pipeFlushFlags, fence );
+
/* Hook for copying "fake" frontbuffer if necessary:
*/
st->pipe->winsys->flush_frontbuffer( st->pipe->winsys, front_surf,