aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/glx/glapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/glx/glapi.h')
-rw-r--r--xorg-server/glx/glapi.h125
1 files changed, 90 insertions, 35 deletions
diff --git a/xorg-server/glx/glapi.h b/xorg-server/glx/glapi.h
index bad791eab..5edec8ebd 100644
--- a/xorg-server/glx/glapi.h
+++ b/xorg-server/glx/glapi.h
@@ -22,6 +22,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+
/**
* \mainpage Mesa GL API Module
*
@@ -39,20 +40,44 @@
* with the X/DRI libGL also.
*/
+
#ifndef _GLAPI_H
#define _GLAPI_H
-#define GL_GLEXT_PROTOTYPES
+#include "glthread.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _GLAPI_NO_EXPORTS
+# define _GLAPI_EXPORT
+#else /* _GLAPI_NO_EXPORTS */
+# ifdef _WIN32
+# ifdef _GLAPI_DLL_EXPORTS
+# define _GLAPI_EXPORT __declspec(dllexport)
+# else
+# define _GLAPI_EXPORT __declspec(dllimport)
+# endif
+# elif defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+# define _GLAPI_EXPORT __attribute__((visibility("default")))
+# else
+# define _GLAPI_EXPORT
+# endif
+#endif /* _GLAPI_NO_EXPORTS */
#include "GL/gl.h"
#include "GL/glext.h"
#include "glthread.h"
+
struct _glapi_table;
-typedef void (*_glapi_proc) (void); /* generic function pointer */
+typedef void (*_glapi_proc)(void); /* generic function pointer */
+
+typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
-typedef void (*_glapi_warning_func) (void *ctx, const char *str, ...);
#if defined(USE_MGL_NAMESPACE)
#define _glapi_set_dispatch _mglapi_set_dispatch
@@ -68,68 +93,98 @@ typedef void (*_glapi_warning_func) (void *ctx, const char *str, ...);
*/
#define MAX_EXTENSION_FUNCS 300
+
/**
** Define the GET_CURRENT_CONTEXT() macro.
** \param C local variable which will hold the current context.
**/
#if defined (GLX_USE_TLS)
-const extern void *_glapi_Context;
-const extern struct _glapi_table *_glapi_Dispatch;
+_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch;
-extern TLS void *_glapi_tls_Context;
+_GLAPI_EXPORT extern const void *_glapi_Context;
+_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
-#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_tls_Context
+_GLAPI_EXPORT extern __thread void * _glapi_tls_Context;
-#else
+# define GET_DISPATCH() _glapi_tls_Dispatch
+# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_tls_Context
-extern void *_glapi_Context;
-extern struct _glapi_table *_glapi_Dispatch;
+#else
-#ifdef THREADS
-#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context())
+#ifdef INSERVER
+#define SERVEXTERN _declspec(dllimport)
#else
-#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_Context
+#define SERVEXTERN _declspec(dllexport)
#endif
-#endif /* defined (GLX_USE_TLS) */
+SERVEXTERN void *_glapi_Context;
+SERVEXTERN struct _glapi_table *_glapi_Dispatch;
+
+# ifdef THREADS
+
+# define GET_DISPATCH() \
+ (likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch())
+
+
+# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) \
+ (likely(_glapi_Context) ? _glapi_Context : _glapi_get_context())
+# else
+# define GET_DISPATCH() _glapi_Dispatch
+# define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_Context
+# endif
+
+#endif /* defined (GLX_USE_TLS) */
+
/**
** GL API public functions
**/
-extern void
- _glapi_check_multithread(void);
+SERVEXTERN void
+_glapi_check_multithread(void);
-extern void
- _glapi_set_context(void *context);
-extern void *_glapi_get_context(void);
+SERVEXTERN void
+_glapi_set_context(void *context);
-extern void
- _glapi_set_dispatch(struct _glapi_table *dispatch);
-extern struct _glapi_table *_glapi_get_dispatch(void);
+SERVEXTERN void *
+_glapi_get_context(void);
-extern int
- _glapi_begin_dispatch_override(struct _glapi_table *override);
-extern void
- _glapi_end_dispatch_override(int layer);
+SERVEXTERN void
+_glapi_set_dispatch(struct _glapi_table *dispatch);
-struct _glapi_table *_glapi_get_override_dispatch(int layer);
-extern GLuint _glapi_get_dispatch_table_size(void);
+SERVEXTERN struct _glapi_table *
+_glapi_get_dispatch(void);
-extern int
+SERVEXTERN int
+_glapi_begin_dispatch_override(struct _glapi_table *override);
-_glapi_add_dispatch(const char *const *function_names,
- const char *parameter_signature);
+SERVEXTERN void
+_glapi_end_dispatch_override(int layer);
-extern _glapi_proc _glapi_get_proc_address(const char *funcName);
+struct _glapi_table *
+_glapi_get_override_dispatch(int layer);
-extern struct _glapi_table *_glapi_create_table_from_handle(void *handle,
- const char
- *symbol_prefix);
+SERVEXTERN GLuint
+_glapi_get_dispatch_table_size(void);
+
+
+SERVEXTERN int
+_glapi_add_dispatch( const char * const * function_names,
+ const char * parameter_signature );
+
+_GLAPI_EXPORT _glapi_proc
+_glapi_get_proc_address(const char *funcName);
+
+extern struct _glapi_table *
+_glapi_create_table_from_handle(void *handle, const char *symbol_prefix);
+
+#endif
+#ifdef __cplusplus
+}
#endif