diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_exa.c | 25 | ||||
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_exa.h | 3 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c index 458ddb66bb8..8d955513639 100644 --- a/src/gallium/state_trackers/xorg/xorg_exa.c +++ b/src/gallium/state_trackers/xorg/xorg_exa.c @@ -227,15 +227,14 @@ ExaDone(PixmapPtr pPixmap) modesettingPtr ms = modesettingPTR(pScrn); struct exa_pixmap_priv *priv = exaGetPixmapDriverPrivate(pPixmap); struct exa_context *exa = ms->exa; - struct pipe_fence_handle *fence = NULL; if (!priv) return; - exa->ctx->flush(exa->ctx, PIPE_FLUSH_RENDER_CACHE, &fence); -#if 0 - exa->ctx->screen->fence_finish(exa->ctx->screen, fence, 0); - exa->ctx->screen->fence_reference(exa->ctx->screen, &fence, NULL); +#if 1 + xorg_exa_flush(exa, PIPE_FLUSH_RENDER_CACHE, NULL); +#else + xorg_finish(exa); #endif if (priv->src_surf) @@ -728,3 +727,19 @@ exa_gpu_surface(struct exa_context *exa, struct exa_pixmap_priv *priv) } +void xorg_exa_flush(struct exa_context *exa, uint pipeFlushFlags, + struct pipe_fence_handle **fence) +{ + exa->ctx->flush(exa->ctx, pipeFlushFlags, fence); +} + +void xorg_exa_finish(struct exa_context *exa) +{ + struct pipe_fence_handle *fence = NULL; + + xorg_exa_flush(exa, PIPE_FLUSH_RENDER_CACHE, &fence); + + exa->ctx->screen->fence_finish(exa->ctx->screen, fence, 0); + exa->ctx->screen->fence_reference(exa->ctx->screen, &fence, NULL); +} + diff --git a/src/gallium/state_trackers/xorg/xorg_exa.h b/src/gallium/state_trackers/xorg/xorg_exa.h index 64b6de70485..8157c711728 100644 --- a/src/gallium/state_trackers/xorg/xorg_exa.h +++ b/src/gallium/state_trackers/xorg/xorg_exa.h @@ -46,5 +46,8 @@ struct exa_pixmap_priv struct pipe_surface * exa_gpu_surface(struct exa_context *exa, struct exa_pixmap_priv *priv); +void xorg_exa_flush(struct exa_context *exa, uint pipeFlushFlags, + struct pipe_fence_handle **fence); +void xorg_exa_finish(struct exa_context *exa); #endif |