From 6bf6fcfcd9a916530bfbd47351bd1f0df47c4a3d Mon Sep 17 00:00:00 2001 From: Tapani Pälli Date: Tue, 25 Oct 2016 11:29:53 +0300 Subject: egl: fix error handling in _eglCreateSync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EGL specification requires context to be current only when sync type matches EGL_SYNC_FENCE_KHR. Fixes 25 failing dEQP tests: dEQP-EGL.functional.reusable_sync.* Signed-off-by: Tapani Pälli Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98339 Reviewed-by: Eric Engestrom --- src/egl/main/eglapi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 9db9964beee..04cac038bca 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1605,9 +1605,16 @@ _eglCreateSync(_EGLDisplay *disp, EGLenum type, const EGLAttrib *attrib_list, RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR); } + /* If type is EGL_SYNC_FENCE and no context is current for the bound API + * (i.e., eglGetCurrentContext returns EGL_NO_CONTEXT ), an EGL_BAD_MATCH + * error is generated. + */ + if (!ctx && type == EGL_SYNC_FENCE_KHR) + RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR); + /* return an error if the client API doesn't support GL_OES_EGL_sync */ - if (!ctx || ctx->Resource.Display != disp || - ctx->ClientAPI != EGL_OPENGL_ES_API) + if (ctx && (ctx->Resource.Display != disp || + ctx->ClientAPI != EGL_OPENGL_ES_API)) RETURN_EGL_ERROR(disp, EGL_BAD_MATCH, EGL_NO_SYNC_KHR); switch (type) { -- cgit v1.2.3