X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fegl%2Fmain%2Feglglobals.h;h=fc3b6bd62a775a3ed735cd15bae98aea3e5ec39f;hp=5ebb914ca723c97af8730e7dc0b99ad16f3a60d5;hb=ae5ac4cbb6aee53ff7fa2246eff687b56ff7e2fe;hpb=9fd7e9ef05955834e3c4de8a1dfa7ea1a868d762 diff --git a/src/egl/main/eglglobals.h b/src/egl/main/eglglobals.h index 5ebb914ca72..fc3b6bd62a7 100644 --- a/src/egl/main/eglglobals.h +++ b/src/egl/main/eglglobals.h @@ -1,29 +1,78 @@ +/************************************************************************** + * + * 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 + * without limitation the rights to use, copy, modify, merge, publish, + * 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 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. + * + **************************************************************************/ + + #ifndef EGLGLOBALS_INCLUDED #define EGLGLOBALS_INCLUDED +#include +#include "c11/threads.h" + #include "egltypedefs.h" -#include "egldisplay.h" -#include "eglcurrent.h" -#include "eglmutex.h" +enum +{ + _EGL_DEBUG_BIT_CRITICAL = 0x1, + _EGL_DEBUG_BIT_ERROR = 0x2, + _EGL_DEBUG_BIT_WARN = 0x4, + _EGL_DEBUG_BIT_INFO = 0x8, +}; /** * Global library data */ struct _egl_global { - _EGLMutex *Mutex; + mtx_t *Mutex; /* the list of all displays */ _EGLDisplay *DisplayList; - EGLScreenMESA FreeScreenHandle; - - EGLint NumDrivers; - _EGLDriver *Drivers[10]; + _EGLDevice *DeviceList; EGLint NumAtExitCalls; void (*AtExitCalls[10])(void); + + /* + * Under libglvnd, the client extension string has to be split into two + * strings, one for platform extensions, and one for everything else. + * For a non-glvnd build create a concatenated one. + */ +#if USE_LIBGLVND + const char *ClientOnlyExtensionString; + const char *PlatformExtensionString; +#else + const char *ClientExtensionString; +#endif + + EGLDEBUGPROCKHR debugCallback; + unsigned int debugTypesEnabled; }; @@ -33,5 +82,16 @@ extern struct _egl_global _eglGlobal; extern void _eglAddAtExitCall(void (*func)(void)); +static inline unsigned int DebugBitFromType(EGLenum type) +{ + assert(type >= EGL_DEBUG_MSG_CRITICAL_KHR && type <= EGL_DEBUG_MSG_INFO_KHR); + return (1 << (type - EGL_DEBUG_MSG_CRITICAL_KHR)); +} + +/** + * Perform validity checks on a generic pointer. + */ +extern EGLBoolean +_eglPointerIsDereferencable(void *p); #endif /* EGLGLOBALS_INCLUDED */