summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTapani Pälli <[email protected]>2016-10-25 11:29:53 +0300
committerTapani Pälli <[email protected]>2016-10-27 07:06:41 +0300
commit6bf6fcfcd9a916530bfbd47351bd1f0df47c4a3d (patch)
tree762fb32154b03a5a484a739cd78decf18df05933
parentca035006c86a5055c8e640f49c858f04770681eb (diff)
egl: fix error handling in _eglCreateSync
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 <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98339 Reviewed-by: Eric Engestrom <[email protected]>
-rw-r--r--src/egl/main/eglapi.c11
1 files 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) {