Merge commit 'origin/gallium-master-merge'
[mesa.git] / src / egl / main / eglglobals.h
index 1a6f12d174ee65b36d7220391be5c2e4450382c9..14d8ea487af04467a83ba8d0b0f973642c434421 100644 (file)
@@ -5,20 +5,39 @@
 #include "eglhash.h"
 
 
+/**
+ * Per-thread info
+ */
+struct _egl_thread_info
+{
+   EGLint LastError;
+   _EGLContext *CurrentContext;
+   EGLenum CurrentAPI;
+};
+
+
+/**
+ * Global library data
+ */
 struct _egl_global
 {
    EGLBoolean Initialized;
 
    _EGLHashtable *Displays;
-   _EGLHashtable *Contexts;
    _EGLHashtable *Surfaces;
 
    EGLScreenMESA FreeScreenHandle;
 
-   EGLint LastError;
+   /* bitmaks of supported APIs (supported by _some_ driver) */
+   EGLint ClientAPIsMask;
 
-   /* XXX this should be per-thread someday */
-   _EGLContext *CurrentContext;
+   char ClientAPIs[1000];   /**< updated by eglQueryString */
+
+   /* XXX temporary - should be thread-specific data (TSD) */
+   _EGLThreadInfo *ThreadInfo;
+
+   EGLint NumDrivers;
+   _EGLDriver *Drivers[10];
 };
 
 
@@ -33,12 +52,20 @@ extern void
 _eglDestroyGlobals(void);
 
 
+extern _EGLThreadInfo *
+_eglNewThreadInfo(void);
+
+
 extern void
-_eglError(EGLint errCode, const char *msg);
+_eglDeleteThreadData(_EGLThreadInfo *t);
 
 
-extern EGLScreenMESA
-_eglAllocScreenHandle(void);
+extern _EGLThreadInfo *
+_eglGetCurrentThread(void);
+
+
+extern void
+_eglError(EGLint errCode, const char *msg);
 
 
 #endif /* EGLGLOBALS_INCLUDED */