Merge branch 'master' into gallium-0.2
[mesa.git] / src / egl / main / eglglobals.h
1 #ifndef EGLGLOBALS_INCLUDED
2 #define EGLGLOBALS_INCLUDED
3
4 #include "egltypedefs.h"
5 #include "eglhash.h"
6
7
8 /**
9 * Per-thread info
10 */
11 struct _egl_thread_info
12 {
13 EGLint LastError;
14 _EGLContext *CurrentContext;
15 EGLenum CurrentAPI;
16 };
17
18
19 /**
20 * Global library data
21 */
22 struct _egl_global
23 {
24 EGLBoolean Initialized;
25
26 _EGLHashtable *Displays;
27 _EGLHashtable *Surfaces;
28
29 EGLScreenMESA FreeScreenHandle;
30
31 /* bitmaks of supported APIs (supported by _some_ driver) */
32 EGLint ClientAPIsMask;
33
34 char ClientAPIs[1000]; /**< updated by eglQueryString */
35
36 /* XXX temporary - should be thread-specific data (TSD) */
37 _EGLThreadInfo *ThreadInfo;
38
39 EGLint NumDrivers;
40 _EGLDriver *Drivers[10];
41 };
42
43
44 extern struct _egl_global _eglGlobal;
45
46
47 extern void
48 _eglInitGlobals(void);
49
50
51 extern void
52 _eglDestroyGlobals(void);
53
54
55 extern _EGLThreadInfo *
56 _eglNewThreadInfo(void);
57
58
59 extern void
60 _eglDeleteThreadData(_EGLThreadInfo *t);
61
62
63 extern _EGLThreadInfo *
64 _eglGetCurrentThread(void);
65
66
67 extern void
68 _eglError(EGLint errCode, const char *msg);
69
70
71 #endif /* EGLGLOBALS_INCLUDED */