+static bool
+_eglDisplaySupportsApi(_EGLDisplay *dpy, EGLenum api)
+{
+ if (!dpy->Initialized) {
+ return false;
+ }
+
+ switch (api) {
+ case EGL_OPENGL_API:
+ return !!(dpy->ClientAPIs & EGL_OPENGL_BIT);
+ case EGL_OPENGL_ES_API:
+ return dpy->ClientAPIs & EGL_OPENGL_ES_BIT ||
+ dpy->ClientAPIs & EGL_OPENGL_ES2_BIT ||
+ dpy->ClientAPIs & EGL_OPENGL_ES3_BIT_KHR;
+ case EGL_OPENVG_API:
+ return !!(dpy->ClientAPIs & EGL_OPENVG_BIT);
+ }
+
+ return false;
+}
+
+
+/**
+ * Return true if a client API enum is recognized.
+ */
+static bool
+_eglIsApiValid(EGLenum api)
+{
+ _EGLDisplay *dpy = _eglGlobal.DisplayList;
+ _EGLThreadInfo *current_thread = _eglGetCurrentThread();
+
+ if (api != EGL_OPENGL_API && api != EGL_OPENGL_ES_API &&
+ api != EGL_OPENVG_API) {
+ return false;
+ }
+
+ while (dpy) {
+ _EGLThreadInfo *thread = dpy->ThreadList;
+
+ while (thread) {
+ if (thread == current_thread) {
+ if (_eglDisplaySupportsApi(dpy, api))
+ return true;
+ }
+
+ thread = thread->Next;
+ }
+
+ dpy = dpy->Next;
+ }
+
+ return false;
+}
+
+