summaryrefslogtreecommitdiff
path: root/glamor/glamor.c
diff options
context:
space:
mode:
Diffstat (limited to 'glamor/glamor.c')
-rw-r--r--glamor/glamor.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/glamor/glamor.c b/glamor/glamor.c
index 7d82ce806..030e7b4f1 100644
--- a/glamor/glamor.c
+++ b/glamor/glamor.c
@@ -266,6 +266,13 @@ _glamor_block_handler(ScreenPtr screen, void *timeout, void *readmask)
glamor_make_current(glamor_priv);
glFlush();
+ if (glamor_priv->sync[glamor_priv->sync_id]) {
+ glClientWaitSync(glamor_priv->sync[glamor_priv->sync_id],
+ 0,
+ GL_TIMEOUT_IGNORED);
+ }
+ glamor_priv->sync[glamor_priv->sync_id] = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
+ glamor_priv->sync_id = (glamor_priv->sync_id + 1) % ARRAY_SIZE(glamor_priv->sync);
screen->BlockHandler = glamor_priv->saved_procs.block_handler;
screen->BlockHandler(screen, timeout, readmask);