eglcurrent.h revision 897cb8950ae14ffe7029b1daf16113ff62ce0dfe
140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul#ifndef EGLCURRENT_INCLUDED 240fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul#define EGLCURRENT_INCLUDED 340fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul#include "egltypedefs.h" 540fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 7310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu#define _EGL_API_ALL_BITS \ 8310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu (EGL_OPENGL_ES_BIT | \ 9310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu EGL_OPENVG_BIT | \ 10310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu EGL_OPENGL_ES2_BIT | \ 11310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu EGL_OPENGL_BIT) 12310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu 13310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu 14310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu#define _EGL_API_FIRST_API EGL_OPENGL_ES_API 15310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu#define _EGL_API_LAST_API EGL_OPENGL_API 16310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu#define _EGL_API_NUM_APIS (_EGL_API_LAST_API - _EGL_API_FIRST_API + 1) 1740fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 1840fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 1940fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul/** 2040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul * Per-thread info 2140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul */ 2240fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paulstruct _egl_thread_info 2340fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul{ 2440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul EGLint LastError; 25310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu _EGLContext *CurrentContexts[_EGL_API_NUM_APIS]; 2640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul /* use index for fast access to current context */ 2740fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul EGLint CurrentAPIIndex; 2840fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul}; 2940fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 3040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 3140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul/** 32310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu * Return true if a client API enum is recognized. 3340fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul */ 3440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paulstatic INLINE EGLBoolean 3540fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglIsApiValid(EGLenum api) 3640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul{ 37310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu return (api >= _EGL_API_FIRST_API && api <= _EGL_API_LAST_API); 3840fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul} 3940fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 4040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 4140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul/** 4240fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul * Convert a client API enum to an index, for use by thread info. 4340fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul * The client API enum is assumed to be valid. 4440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul */ 4540fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paulstatic INLINE EGLint 4640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglConvertApiToIndex(EGLenum api) 4740fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul{ 48310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu return api - _EGL_API_FIRST_API; 4940fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul} 5040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 5140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 5240fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul/** 5340fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul * Convert an index, used by thread info, to a client API enum. 5440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul * The index is assumed to be valid. 5540fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul */ 5640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paulstatic INLINE EGLenum 5740fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglConvertApiFromIndex(EGLint idx) 5840fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul{ 59310c76812e5a2013dad36fc9d1686f57e7b1e626Chia-I Wu return _EGL_API_FIRST_API + idx; 6040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul} 6140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 6240fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 63897cb8950ae14ffe7029b1daf16113ff62ce0dfeChia-I WuPUBLIC _EGLThreadInfo * 6440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglGetCurrentThread(void); 6540fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 6640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 6740fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paulextern void 6840fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglDestroyCurrentThread(void); 6940fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 7040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 7140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paulextern EGLBoolean 7240fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglIsCurrentThreadDummy(void); 7340fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 7440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 75897cb8950ae14ffe7029b1daf16113ff62ce0dfeChia-I WuPUBLIC _EGLContext * 7640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglGetCurrentContext(void); 7740fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 7840fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 79897cb8950ae14ffe7029b1daf16113ff62ce0dfeChia-I WuPUBLIC _EGLDisplay * 8040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglGetCurrentDisplay(void); 8140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 8240fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 83897cb8950ae14ffe7029b1daf16113ff62ce0dfeChia-I WuPUBLIC _EGLSurface * 8440fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglGetCurrentSurface(EGLint readdraw); 8540fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 8640fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 87897cb8950ae14ffe7029b1daf16113ff62ce0dfeChia-I WuPUBLIC EGLBoolean 8840fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul_eglError(EGLint errCode, const char *msg); 8940fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 9040fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul 9140fd1019195681e3b94f5878b57190f3ae7d8e0eBrian Paul#endif /* EGLCURRENT_INCLUDED */ 92