From: Rob Clark Date: Fri, 1 Apr 2016 19:47:44 +0000 (-0400) Subject: gallium: wire up server_wait_sync X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=72cc1ca58d12495cc5a72fb9b9c316db94eb66cd;p=mesa.git gallium: wire up server_wait_sync 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 --- 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 = {