X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fegl%2Fmain%2Feglmisc.c;h=388e4b51b7a469c4c1857dad4b72c32c2a114d42;hb=1499619fe6815510d4448f0e297d097f20a0acf3;hp=e62a9e7de8ce1e13bede66e6be4fc0cbca432f19;hpb=ef9b4d20d78a748e653a61286d83f33dc6c46184;p=mesa.git diff --git a/src/egl/main/eglmisc.c b/src/egl/main/eglmisc.c index e62a9e7de8c..388e4b51b7a 100644 --- a/src/egl/main/eglmisc.c +++ b/src/egl/main/eglmisc.c @@ -1,8 +1,10 @@ /************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. + * + * Copyright 2008 VMware, Inc. + * Copyright 2009-2010 Chia-I Wu + * Copyright 2010-2011 LunarG, Inc. * All Rights Reserved. - * + * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including @@ -10,19 +12,19 @@ * distribute, sub license, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: - * + * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial portions * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * **************************************************************************/ @@ -36,6 +38,8 @@ #include "eglcurrent.h" #include "eglmisc.h" #include "egldisplay.h" +#include "egldriver.h" +#include "eglstring.h" /** @@ -45,7 +49,7 @@ static EGLint _eglAppendExtension(char **str, const char *ext) { char *s = *str; - EGLint len = strlen(ext); + size_t len = strlen(ext); if (s) { memcpy(s, ext, len); @@ -58,7 +62,7 @@ _eglAppendExtension(char **str, const char *ext) len++; } - return len; + return (EGLint) len; } @@ -73,17 +77,23 @@ _eglUpdateExtensionsString(_EGLDisplay *dpy) do { \ if (dpy->Extensions.ext) { \ _eglAppendExtension(&exts, "EGL_" #ext); \ - assert(exts <= dpy->Extensions.String + _EGL_MAX_EXTENSIONS_LEN); \ + assert(exts <= dpy->ExtensionsString + _EGL_MAX_EXTENSIONS_LEN); \ } \ } while (0) - char *exts = dpy->Extensions.String; + char *exts = dpy->ExtensionsString; if (exts[0]) return; _EGL_CHECK_EXTENSION(MESA_screen_surface); _EGL_CHECK_EXTENSION(MESA_copy_context); + _EGL_CHECK_EXTENSION(MESA_drm_display); + _EGL_CHECK_EXTENSION(MESA_drm_image); + _EGL_CHECK_EXTENSION(MESA_configless_context); + + _EGL_CHECK_EXTENSION(WL_bind_wayland_display); + _EGL_CHECK_EXTENSION(WL_create_wayland_buffer_from_image); _EGL_CHECK_EXTENSION(KHR_image_base); _EGL_CHECK_EXTENSION(KHR_image_pixmap); @@ -96,8 +106,25 @@ _eglUpdateExtensionsString(_EGLDisplay *dpy) _EGL_CHECK_EXTENSION(KHR_gl_texture_3D_image); _EGL_CHECK_EXTENSION(KHR_gl_renderbuffer_image); + _EGL_CHECK_EXTENSION(KHR_reusable_sync); + _EGL_CHECK_EXTENSION(KHR_fence_sync); + + _EGL_CHECK_EXTENSION(KHR_surfaceless_context); + _EGL_CHECK_EXTENSION(KHR_create_context); + _EGL_CHECK_EXTENSION(NOK_swap_region); _EGL_CHECK_EXTENSION(NOK_texture_from_pixmap); + + _EGL_CHECK_EXTENSION(ANDROID_image_native_buffer); + + _EGL_CHECK_EXTENSION(CHROMIUM_sync_control); + + _EGL_CHECK_EXTENSION(EXT_create_context_robustness); + _EGL_CHECK_EXTENSION(EXT_buffer_age); + _EGL_CHECK_EXTENSION(EXT_swap_buffers_with_damage); + _EGL_CHECK_EXTENSION(EXT_image_dma_buf_import); + + _EGL_CHECK_EXTENSION(NV_post_sub_buffer); #undef _EGL_CHECK_EXTENSION } @@ -105,24 +132,27 @@ _eglUpdateExtensionsString(_EGLDisplay *dpy) static void _eglUpdateAPIsString(_EGLDisplay *dpy) { - char *apis = dpy->ClientAPIs; + char *apis = dpy->ClientAPIsString; - if (apis[0] || !dpy->ClientAPIsMask) + if (apis[0] || !dpy->ClientAPIs) return; - if (dpy->ClientAPIsMask & EGL_OPENGL_BIT) + if (dpy->ClientAPIs & EGL_OPENGL_BIT) strcat(apis, "OpenGL "); - if (dpy->ClientAPIsMask & EGL_OPENGL_ES_BIT) + if (dpy->ClientAPIs & EGL_OPENGL_ES_BIT) strcat(apis, "OpenGL_ES "); - if (dpy->ClientAPIsMask & EGL_OPENGL_ES2_BIT) + if (dpy->ClientAPIs & EGL_OPENGL_ES2_BIT) strcat(apis, "OpenGL_ES2 "); - if (dpy->ClientAPIsMask & EGL_OPENVG_BIT) + if (dpy->ClientAPIs & EGL_OPENGL_ES3_BIT_KHR) + strcat(apis, "OpenGL_ES3 "); + + if (dpy->ClientAPIs & EGL_OPENVG_BIT) strcat(apis, "OpenVG "); - assert(strlen(apis) < sizeof(dpy->ClientAPIs)); + assert(strlen(apis) < sizeof(dpy->ClientAPIsString)); } @@ -130,51 +160,23 @@ const char * _eglQueryString(_EGLDriver *drv, _EGLDisplay *dpy, EGLint name) { (void) drv; - (void) dpy; + switch (name) { case EGL_VENDOR: return _EGL_VENDOR_STRING; case EGL_VERSION: - return dpy->Version; + _eglsnprintf(dpy->VersionString, sizeof(dpy->VersionString), + "%d.%d (%s)", dpy->VersionMajor, dpy->VersionMinor, + dpy->Driver->Name); + return dpy->VersionString; case EGL_EXTENSIONS: _eglUpdateExtensionsString(dpy); - return dpy->Extensions.String; -#ifdef EGL_VERSION_1_2 + return dpy->ExtensionsString; case EGL_CLIENT_APIS: _eglUpdateAPIsString(dpy); - return dpy->ClientAPIs; -#endif + return dpy->ClientAPIsString; default: _eglError(EGL_BAD_PARAMETER, "eglQueryString"); return NULL; } } - - -EGLBoolean -_eglWaitClient(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx) -{ - /* just a placeholder */ - (void) drv; - (void) dpy; - (void) ctx; - return EGL_TRUE; -} - - -EGLBoolean -_eglWaitNative(_EGLDriver *drv, _EGLDisplay *dpy, EGLint engine) -{ - /* just a placeholder */ - (void) drv; - (void) dpy; - switch (engine) { - case EGL_CORE_NATIVE_ENGINE: - break; - default: - _eglError(EGL_BAD_PARAMETER, "eglWaitNative(engine)"); - return EGL_FALSE; - } - - return EGL_TRUE; -}