On 2018-07-06 12:15 AM, Marek Olšák wrote:
> From: Marek Olšák <[email protected]>
> 
> Ported from i965 including the comment.
> 
> This fixes:
>     dEQP-EGL.functional.reusable_sync.valid.wait_server
> 
> Cc: 18.1 <[email protected]>
> ---
>  src/gallium/state_trackers/dri/dri_helpers.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/gallium/state_trackers/dri/dri_helpers.c 
> b/src/gallium/state_trackers/dri/dri_helpers.c
> index f1501bfb815..5d42873a208 100644
> --- a/src/gallium/state_trackers/dri/dri_helpers.c
> +++ b/src/gallium/state_trackers/dri/dri_helpers.c
> @@ -207,20 +207,26 @@ dri2_client_wait_sync(__DRIcontext *_ctx, void *_fence, 
> unsigned flags,
>        return false;
>     }
>  }
>  
>  static void
>  dri2_server_wait_sync(__DRIcontext *_ctx, void *_fence, unsigned flags)
>  {
>     struct pipe_context *ctx = dri_context(_ctx)->st->pipe;
>     struct dri2_fence *fence = (struct dri2_fence*)_fence;
>  
> +   /* We might be called here with a NULL fence as a result of WaitSyncKHR
> +    * on a EGL_KHR_reusable_sync fence. Nothing to do here in such case.
> +    */
> +   if (!fence)
> +      return;
> +
>     if (ctx->fence_server_sync)
>        ctx->fence_server_sync(ctx, fence->pipe_fence);
>  }
>  
>  const __DRI2fenceExtension dri2FenceExtension = {
>     .base = { __DRI2_FENCE, 2 },
>  
>     .create_fence = dri2_create_fence,
>     .get_fence_from_cl_event = dri2_get_fence_from_cl_event,
>     .destroy_fence = dri2_destroy_fence,
> 

Reviewed-by: Michel Dänzer <[email protected]>


-- 
Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to