X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fglapi%2Fglapi.h;h=c334203394f1203487316124662a792685c512e2;hb=c212abf99af494f024b0b981a83350f7ac9821ef;hp=7cdccc1275829b7330b9900695346fd4a6629e51;hpb=03dc05a6051abe94590f21dd1451dc45ec0ac306;p=mesa.git diff --git a/src/mesa/glapi/glapi.h b/src/mesa/glapi/glapi.h index 7cdccc12758..c334203394f 100644 --- a/src/mesa/glapi/glapi.h +++ b/src/mesa/glapi/glapi.h @@ -54,10 +54,41 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); typedef void (*_glapi_proc)(void); /* generic function pointer */ -extern void *_glapi_Context; +#if defined (GLX_USE_TLS) + +const extern void *_glapi_Context; +const extern struct _glapi_table *_glapi_Dispatch; + +extern __thread void * _glapi_tls_Context + __attribute__((tls_model("initial-exec"))); +# define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_tls_Context + +#else + +extern void *_glapi_Context; extern struct _glapi_table *_glapi_Dispatch; +/** + * Macro for declaration and fetching the current context. + * + * \param C local variable which will hold the current context. + * + * It should be used in the variable declaration area of a function: + * \code + * ... + * { + * GET_CURRENT_CONTEXT(ctx); + * ... + * \endcode + */ +# ifdef THREADS +# define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) (_glapi_Context ? _glapi_Context : _glapi_get_context()) +# else +# define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) _glapi_Context +# endif + +#endif /* defined (GLX_USE_TLS) */ extern void _glapi_noop_enable_warnings(GLboolean enable); @@ -117,7 +148,7 @@ extern GLint _glapi_get_proc_offset(const char *funcName); -extern const _glapi_proc +extern _glapi_proc _glapi_get_proc_address(const char *funcName);