[Mesa-dev] [PATCH] st/dri: fix a crash in server_wait_Sync
Michel Dänzer
michel at daenzer.net
Fri Jul 6 07:57:16 UTC 2018
On 2018-07-06 12:15 AM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> Ported from i965 including the comment.
>
> This fixes:
> dEQP-EGL.functional.reusable_sync.valid.wait_server
>
> Cc: 18.1 <mesa-stable at lists.freedesktop.org>
> ---
> 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 <michel.daenzer at amd.com>
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the mesa-dev
mailing list