xref: /aosp_15_r20/external/mesa3d/src/mapi/glapi/glapi.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Mesa 3-D graphics library
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
5*61046927SAndroid Build Coastguard Worker  *
6*61046927SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
7*61046927SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
8*61046927SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
9*61046927SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10*61046927SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
11*61046927SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
12*61046927SAndroid Build Coastguard Worker  *
13*61046927SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice shall be included
14*61046927SAndroid Build Coastguard Worker  * in all copies or substantial portions of the Software.
15*61046927SAndroid Build Coastguard Worker  *
16*61046927SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17*61046927SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18*61046927SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19*61046927SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20*61046927SAndroid Build Coastguard Worker  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21*61046927SAndroid Build Coastguard Worker  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22*61046927SAndroid Build Coastguard Worker  * OTHER DEALINGS IN THE SOFTWARE.
23*61046927SAndroid Build Coastguard Worker  */
24*61046927SAndroid Build Coastguard Worker 
25*61046927SAndroid Build Coastguard Worker 
26*61046927SAndroid Build Coastguard Worker /**
27*61046927SAndroid Build Coastguard Worker  * \mainpage Mesa GL API Module
28*61046927SAndroid Build Coastguard Worker  *
29*61046927SAndroid Build Coastguard Worker  * \section GLAPIIntroduction Introduction
30*61046927SAndroid Build Coastguard Worker  *
31*61046927SAndroid Build Coastguard Worker  * The Mesa GL API module is responsible for dispatching all the
32*61046927SAndroid Build Coastguard Worker  * gl*() functions.  All GL functions are dispatched by jumping through
33*61046927SAndroid Build Coastguard Worker  * the current dispatch table (basically a struct full of function
34*61046927SAndroid Build Coastguard Worker  * pointers.)
35*61046927SAndroid Build Coastguard Worker  *
36*61046927SAndroid Build Coastguard Worker  * A per-thread current dispatch table and per-thread current context
37*61046927SAndroid Build Coastguard Worker  * pointer are managed by this module too.
38*61046927SAndroid Build Coastguard Worker  *
39*61046927SAndroid Build Coastguard Worker  * This module is intended to be non-Mesa-specific so it can be used
40*61046927SAndroid Build Coastguard Worker  * with the X/DRI libGL also.
41*61046927SAndroid Build Coastguard Worker  */
42*61046927SAndroid Build Coastguard Worker 
43*61046927SAndroid Build Coastguard Worker 
44*61046927SAndroid Build Coastguard Worker #ifndef _GLAPI_H
45*61046927SAndroid Build Coastguard Worker #define _GLAPI_H
46*61046927SAndroid Build Coastguard Worker 
47*61046927SAndroid Build Coastguard Worker #include "util/macros.h"
48*61046927SAndroid Build Coastguard Worker #include "util/u_thread.h"
49*61046927SAndroid Build Coastguard Worker #include "util/detect_os.h"
50*61046927SAndroid Build Coastguard Worker 
51*61046927SAndroid Build Coastguard Worker 
52*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
53*61046927SAndroid Build Coastguard Worker extern "C" {
54*61046927SAndroid Build Coastguard Worker #endif
55*61046927SAndroid Build Coastguard Worker 
56*61046927SAndroid Build Coastguard Worker 
57*61046927SAndroid Build Coastguard Worker #ifdef _GLAPI_NO_EXPORTS
58*61046927SAndroid Build Coastguard Worker #  define _GLAPI_EXPORT
59*61046927SAndroid Build Coastguard Worker #else /* _GLAPI_NO_EXPORTS */
60*61046927SAndroid Build Coastguard Worker #  ifdef _WIN32
61*61046927SAndroid Build Coastguard Worker #    ifdef _GLAPI_DLL_EXPORTS
62*61046927SAndroid Build Coastguard Worker #      define _GLAPI_EXPORT __declspec(dllexport)
63*61046927SAndroid Build Coastguard Worker #    else
64*61046927SAndroid Build Coastguard Worker #      define _GLAPI_EXPORT __declspec(dllimport)
65*61046927SAndroid Build Coastguard Worker #    endif
66*61046927SAndroid Build Coastguard Worker #  elif defined(__GNUC__)
67*61046927SAndroid Build Coastguard Worker #    define _GLAPI_EXPORT __attribute__((visibility("default")))
68*61046927SAndroid Build Coastguard Worker #  else
69*61046927SAndroid Build Coastguard Worker #    define _GLAPI_EXPORT
70*61046927SAndroid Build Coastguard Worker #  endif
71*61046927SAndroid Build Coastguard Worker #endif /* _GLAPI_NO_EXPORTS */
72*61046927SAndroid Build Coastguard Worker 
73*61046927SAndroid Build Coastguard Worker 
74*61046927SAndroid Build Coastguard Worker typedef void (*_glapi_proc)(void);
75*61046927SAndroid Build Coastguard Worker 
76*61046927SAndroid Build Coastguard Worker typedef void (*_glapi_nop_handler_proc)(const char *name);
77*61046927SAndroid Build Coastguard Worker 
78*61046927SAndroid Build Coastguard Worker struct _glapi_table;
79*61046927SAndroid Build Coastguard Worker 
80*61046927SAndroid Build Coastguard Worker #if DETECT_OS_WINDOWS
81*61046927SAndroid Build Coastguard Worker extern __THREAD_INITIAL_EXEC struct _glapi_table * _glapi_tls_Dispatch;
82*61046927SAndroid Build Coastguard Worker extern __THREAD_INITIAL_EXEC void * _glapi_tls_Context;
83*61046927SAndroid Build Coastguard Worker #else
84*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT extern __THREAD_INITIAL_EXEC struct _glapi_table * _glapi_tls_Dispatch;
85*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT extern __THREAD_INITIAL_EXEC void * _glapi_tls_Context;
86*61046927SAndroid Build Coastguard Worker #endif
87*61046927SAndroid Build Coastguard Worker 
88*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
89*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT extern const void *_glapi_Context;
90*61046927SAndroid Build Coastguard Worker 
91*61046927SAndroid Build Coastguard Worker #if DETECT_OS_WINDOWS && !defined(MAPI_MODE_UTIL) && !defined(MAPI_MODE_GLAPI)
92*61046927SAndroid Build Coastguard Worker # define GET_DISPATCH() _glapi_get_dispatch()
93*61046927SAndroid Build Coastguard Worker # define GET_CURRENT_CONTEXT(C)  struct gl_context *C = (struct gl_context *) _glapi_get_context()
94*61046927SAndroid Build Coastguard Worker #else
95*61046927SAndroid Build Coastguard Worker # define GET_DISPATCH() _glapi_tls_Dispatch
96*61046927SAndroid Build Coastguard Worker # define GET_CURRENT_CONTEXT(C)  struct gl_context *C = (struct gl_context *) _glapi_tls_Context
97*61046927SAndroid Build Coastguard Worker #endif
98*61046927SAndroid Build Coastguard Worker 
99*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
100*61046927SAndroid Build Coastguard Worker _glapi_destroy_multithread(void);
101*61046927SAndroid Build Coastguard Worker 
102*61046927SAndroid Build Coastguard Worker 
103*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
104*61046927SAndroid Build Coastguard Worker _glapi_check_multithread(void);
105*61046927SAndroid Build Coastguard Worker 
106*61046927SAndroid Build Coastguard Worker 
107*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
108*61046927SAndroid Build Coastguard Worker _glapi_set_context(void *context);
109*61046927SAndroid Build Coastguard Worker 
110*61046927SAndroid Build Coastguard Worker 
111*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void *
112*61046927SAndroid Build Coastguard Worker _glapi_get_context(void);
113*61046927SAndroid Build Coastguard Worker 
114*61046927SAndroid Build Coastguard Worker 
115*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
116*61046927SAndroid Build Coastguard Worker _glapi_set_dispatch(struct _glapi_table *dispatch);
117*61046927SAndroid Build Coastguard Worker 
118*61046927SAndroid Build Coastguard Worker 
119*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT struct _glapi_table *
120*61046927SAndroid Build Coastguard Worker _glapi_get_dispatch(void);
121*61046927SAndroid Build Coastguard Worker 
122*61046927SAndroid Build Coastguard Worker 
123*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT unsigned int
124*61046927SAndroid Build Coastguard Worker _glapi_get_dispatch_table_size(void);
125*61046927SAndroid Build Coastguard Worker 
126*61046927SAndroid Build Coastguard Worker 
127*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT int
128*61046927SAndroid Build Coastguard Worker _glapi_add_dispatch( const char * function_name );
129*61046927SAndroid Build Coastguard Worker 
130*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT int
131*61046927SAndroid Build Coastguard Worker _glapi_get_proc_offset(const char *funcName);
132*61046927SAndroid Build Coastguard Worker 
133*61046927SAndroid Build Coastguard Worker 
134*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT _glapi_proc
135*61046927SAndroid Build Coastguard Worker _glapi_get_proc_address(const char *funcName);
136*61046927SAndroid Build Coastguard Worker 
137*61046927SAndroid Build Coastguard Worker 
138*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT const char *
139*61046927SAndroid Build Coastguard Worker _glapi_get_proc_name(unsigned int offset);
140*61046927SAndroid Build Coastguard Worker 
141*61046927SAndroid Build Coastguard Worker 
142*61046927SAndroid Build Coastguard Worker #if defined(GLX_USE_APPLEGL) || defined(GLX_USE_WINDOWSGL)
143*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT struct _glapi_table *
144*61046927SAndroid Build Coastguard Worker _glapi_create_table_from_handle(void *handle, const char *symbol_prefix);
145*61046927SAndroid Build Coastguard Worker 
146*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
147*61046927SAndroid Build Coastguard Worker _glapi_table_patch(struct _glapi_table *, const char *name, void *wrapper);
148*61046927SAndroid Build Coastguard Worker #endif
149*61046927SAndroid Build Coastguard Worker 
150*61046927SAndroid Build Coastguard Worker 
151*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
152*61046927SAndroid Build Coastguard Worker _glapi_set_nop_handler(_glapi_nop_handler_proc func);
153*61046927SAndroid Build Coastguard Worker 
154*61046927SAndroid Build Coastguard Worker /** Return pointer to new dispatch table filled with no-op functions */
155*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT struct _glapi_table *
156*61046927SAndroid Build Coastguard Worker _glapi_new_nop_table(unsigned num_entries);
157*61046927SAndroid Build Coastguard Worker 
158*61046927SAndroid Build Coastguard Worker 
159*61046927SAndroid Build Coastguard Worker /** Deprecated function */
160*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT unsigned long
161*61046927SAndroid Build Coastguard Worker _glthread_GetID(void);
162*61046927SAndroid Build Coastguard Worker 
163*61046927SAndroid Build Coastguard Worker 
164*61046927SAndroid Build Coastguard Worker /*
165*61046927SAndroid Build Coastguard Worker  * These stubs are kept so that the old DRI drivers still load.
166*61046927SAndroid Build Coastguard Worker  */
167*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
168*61046927SAndroid Build Coastguard Worker _glapi_noop_enable_warnings(unsigned char enable);
169*61046927SAndroid Build Coastguard Worker 
170*61046927SAndroid Build Coastguard Worker 
171*61046927SAndroid Build Coastguard Worker _GLAPI_EXPORT void
172*61046927SAndroid Build Coastguard Worker _glapi_set_warning_func(_glapi_proc func);
173*61046927SAndroid Build Coastguard Worker 
174*61046927SAndroid Build Coastguard Worker 
175*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
176*61046927SAndroid Build Coastguard Worker }
177*61046927SAndroid Build Coastguard Worker #endif
178*61046927SAndroid Build Coastguard Worker 
179*61046927SAndroid Build Coastguard Worker #endif /* _GLAPI_H */
180