From 72cc1ca58d12495cc5a72fb9b9c316db94eb66cd Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Fri, 1 Apr 2016 15:47:44 -0400 Subject: [PATCH] gallium: wire up server_wait_sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will be needed for explicit synchronization with devices outside the gpu, ie. EGL_ANDROID_native_fence_sync. Signed-off-by: Rob Clark Reviewed-by: Marek Olšák --- src/gallium/include/pipe/p_context.h | 6 ++++++ src/gallium/state_trackers/dri/dri2.c | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h index b97aad5e313..ee8a5113caa 100644 --- a/src/gallium/include/pipe/p_context.h +++ b/src/gallium/include/pipe/p_context.h @@ -474,6 +474,12 @@ struct pipe_context { struct pipe_fence_handle **fence, unsigned flags); + /** + * Insert commands to have GPU wait for fence to be signaled. + */ + void (*fence_server_sync)(struct pipe_context *pipe, + struct pipe_fence_handle *fence); + /** * Create a view on a texture to be used by a shader stage. */ diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index 9ec069b3063..1a44bcb771e 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -1548,7 +1548,11 @@ dri2_client_wait_sync(__DRIcontext *_ctx, void *_fence, unsigned flags, static void dri2_server_wait_sync(__DRIcontext *_ctx, void *_fence, unsigned flags) { - /* AFAIK, no driver currently supports parallel context execution. */ + struct pipe_context *ctx = dri_context(_ctx)->st->pipe; + struct dri2_fence *fence = (struct dri2_fence*)_fence; + + if (ctx->fence_server_sync) + ctx->fence_server_sync(ctx, fence->pipe_fence); } static __DRI2fenceExtension dri2FenceExtension = {