Hi, On 13 May 2016 at 17:03, Plamena Manolova <plamena.manol...@intel.com> wrote: > @@ -444,6 +444,8 @@ _eglCreateAPIsString(_EGLDisplay *dpy) > strcat(dpy->ClientAPIsString, "OpenVG "); > > assert(strlen(dpy->ClientAPIsString) < sizeof(dpy->ClientAPIsString)); > + > + _eglGlobal.ClientAPIsString = dpy->ClientAPIsString;
What happens when the display is destroyed and this is freed? Or when different displays have different supported APIs? > @@ -69,7 +70,26 @@ struct _egl_thread_info > static inline EGLBoolean > _eglIsApiValid(EGLenum api) > { > - return (api >= _EGL_API_FIRST_API && api <= _EGL_API_LAST_API); > + char *api_string; > + switch (api) { > + case EGL_OPENGL_API: > + api_string = "OpenGL"; > + break; > + case EGL_OPENGL_ES_API: > + api_string = "OpenGL_ES"; > + break; > + case EGL_OPENVG_API: > + api_string = "OpenVG"; > + break; > + default: > + return EGL_FALSE; > + break; > + } > + > + if (strstr(api_string, _eglGlobal.ClientAPIsString)) > + return EGL_TRUE; > + else > + return EGL_FALSE; This is trivially broken: it returns TRUE if a display only supports OpenGL ES, but you request to bind OpenGL. Cheers, Daniel _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev