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