X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fegl%2Fmain%2Feglcurrent.h;h=d9a4a90174e2e62d45420ecfa5953fe66e516e38;hb=3e03a3fc5315b488468b28aa40a7e9416f506520;hp=9503e0aba0886d30f088be67dd687e6d7fa8365c;hpb=a3eb0f718e19653a2ad8e49396c904183be456f3;p=mesa.git diff --git a/src/egl/main/eglcurrent.h b/src/egl/main/eglcurrent.h index 9503e0aba08..d9a4a90174e 100644 --- a/src/egl/main/eglcurrent.h +++ b/src/egl/main/eglcurrent.h @@ -1,62 +1,82 @@ +/************************************************************************** + * + * 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" +#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) -#define _EGL_API_FIRST_API EGL_OPENGL_ES_API -#define _EGL_API_LAST_API EGL_OPENGL_API -#define _EGL_API_NUM_APIS (_EGL_API_LAST_API - _EGL_API_FIRST_API + 1) - - /** * Per-thread info */ struct _egl_thread_info { EGLint LastError; - _EGLContext *CurrentContexts[_EGL_API_NUM_APIS]; - /* 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 is recognized. */ -static INLINE EGLBoolean +static inline EGLBoolean _eglIsApiValid(EGLenum api) { - return (api >= _EGL_API_FIRST_API && api <= _EGL_API_LAST_API); -} - - -/** - * 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_API_FIRST_API; -} - - -/** - * 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 _EGL_API_FIRST_API + idx; +#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 } @@ -76,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, ...); +#define _eglReportCritical(error, funcName, ...) \ + _eglDebugReport(error, funcName, EGL_DEBUG_MSG_CRITICAL_KHR, __VA_ARGS__) -extern _EGLSurface * -_eglGetCurrentSurface(EGLint readdraw); +#define _eglReportError(error, funcName, ...) \ + _eglDebugReport(error, funcName, EGL_DEBUG_MSG_ERROR_KHR, __VA_ARGS__) +#define _eglReportWarn(funcName, ...) \ + _eglDebugReport(EGL_SUCCESS, funcName, EGL_DEBUG_MSG_WARN_KHR, __VA_ARGS__) -extern EGLBoolean -_eglError(EGLint errCode, const char *msg); +#define _eglReportInfo(funcName, ...) \ + _eglDebugReport(EGL_SUCCESS, funcName, EGL_DEBUG_MSG_INFO_KHR, __VA_ARGS__) +#ifdef __cplusplus +} +#endif #endif /* EGLCURRENT_INCLUDED */