X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fegl%2Fmain%2Feglcurrent.h;h=d9a4a90174e2e62d45420ecfa5953fe66e516e38;hb=3e03a3fc5315b488468b28aa40a7e9416f506520;hp=8eb241029eca096644bfa9d680fb749b7101ca04;hpb=82c2f7756af19f0a19aeda7ea1f627262e4561c0;p=mesa.git diff --git a/src/egl/main/eglcurrent.h b/src/egl/main/eglcurrent.h index 8eb241029ec..d9a4a90174e 100644 --- a/src/egl/main/eglcurrent.h +++ b/src/egl/main/eglcurrent.h @@ -1,11 +1,49 @@ +/************************************************************************** + * + * Copyright 2009-2010 Chia-I Wu + * 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 EGLCURRENT_INCLUDED #define EGLCURRENT_INCLUDED +#include "c99_compat.h" + #include "egltypedefs.h" -#define _EGL_API_NUM_INDICES \ - (EGL_OPENGL_API - EGL_OPENGL_ES_API + 2) /* idx 0 is for EGL_NONE */ +#ifdef __cplusplus +extern "C" { +#endif + +#define _EGL_API_ALL_BITS \ + (EGL_OPENGL_ES_BIT | \ + EGL_OPENVG_BIT | \ + EGL_OPENGL_ES2_BIT | \ + EGL_OPENGL_ES3_BIT_KHR | \ + EGL_OPENGL_BIT) /** @@ -14,42 +52,31 @@ struct _egl_thread_info { EGLint LastError; - _EGLContext *CurrentContexts[_EGL_API_NUM_INDICES]; - /* use index for fast access to current context */ - EGLint CurrentAPIIndex; + _EGLContext *CurrentContext; + EGLenum CurrentAPI; + EGLLabelKHR Label; + + /** + * The name of the EGL function that's being called at the moment. This is + * used to report the function name to the EGL_KHR_debug callback. + */ + const char *CurrentFuncName; + EGLLabelKHR CurrentObjectLabel; }; /** - * Return true if a client API enum can be converted to an index. + * Return true if a client API enum is recognized. */ -static INLINE EGLBoolean +static inline EGLBoolean _eglIsApiValid(EGLenum api) { - return ((api >= EGL_OPENGL_ES_API && api <= EGL_OPENGL_API) || - api == EGL_NONE); -} - - -/** - * Convert a client API enum to an index, for use by thread info. - * The client API enum is assumed to be valid. - */ -static INLINE EGLint -_eglConvertApiToIndex(EGLenum api) -{ - return (api != EGL_NONE) ? api - EGL_OPENGL_ES_API + 1 : 0; -} - - -/** - * Convert an index, used by thread info, to a client API enum. - * The index is assumed to be valid. - */ -static INLINE EGLenum -_eglConvertApiFromIndex(EGLint idx) -{ - return (idx) ? EGL_OPENGL_ES_API + idx - 1 : EGL_NONE; +#ifdef ANDROID + /* OpenGL is not a valid/supported API on Android */ + return api == EGL_OPENGL_ES_API; +#else + return (api == EGL_OPENGL_ES_API || api == EGL_OPENGL_API); +#endif } @@ -69,16 +96,27 @@ extern _EGLContext * _eglGetCurrentContext(void); -extern _EGLDisplay * -_eglGetCurrentDisplay(void); +extern EGLBoolean +_eglError(EGLint errCode, const char *msg); +extern void +_eglDebugReport(EGLenum error, const char *funcName, + EGLint type, const char *message, ...); -extern _EGLSurface * -_eglGetCurrentSurface(EGLint readdraw); +#define _eglReportCritical(error, funcName, ...) \ + _eglDebugReport(error, funcName, EGL_DEBUG_MSG_CRITICAL_KHR, __VA_ARGS__) +#define _eglReportError(error, funcName, ...) \ + _eglDebugReport(error, funcName, EGL_DEBUG_MSG_ERROR_KHR, __VA_ARGS__) -extern EGLBoolean -_eglError(EGLint errCode, const char *msg); +#define _eglReportWarn(funcName, ...) \ + _eglDebugReport(EGL_SUCCESS, funcName, EGL_DEBUG_MSG_WARN_KHR, __VA_ARGS__) +#define _eglReportInfo(funcName, ...) \ + _eglDebugReport(EGL_SUCCESS, funcName, EGL_DEBUG_MSG_INFO_KHR, __VA_ARGS__) + +#ifdef __cplusplus +} +#endif #endif /* EGLCURRENT_INCLUDED */