diff options
Diffstat (limited to 'glamor/glamor.c')
-rw-r--r-- | glamor/glamor.c | 7 |
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); |