Rev 4358 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4358 | Serge | 1 | /************************************************************************** |
2 | * |
||
3 | * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. |
||
4 | * Copyright 2009-2010 Chia-I Wu |
||
5 | * Copyright 2010-2011 LunarG, Inc. |
||
6 | * All Rights Reserved. |
||
7 | * |
||
8 | * Permission is hereby granted, free of charge, to any person obtaining a |
||
9 | * copy of this software and associated documentation files (the |
||
10 | * "Software"), to deal in the Software without restriction, including |
||
11 | * without limitation the rights to use, copy, modify, merge, publish, |
||
12 | * distribute, sub license, and/or sell copies of the Software, and to |
||
13 | * permit persons to whom the Software is furnished to do so, subject to |
||
14 | * the following conditions: |
||
15 | * |
||
16 | * The above copyright notice and this permission notice (including the |
||
17 | * next paragraph) shall be included in all copies or substantial portions |
||
18 | * of the Software. |
||
19 | * |
||
20 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||
21 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||
22 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||
23 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||
24 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||
25 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
||
26 | * DEALINGS IN THE SOFTWARE. |
||
27 | * |
||
28 | **************************************************************************/ |
||
29 | |||
30 | |||
31 | #ifndef EGLAPI_INCLUDED |
||
32 | #define EGLAPI_INCLUDED |
||
33 | |||
34 | /** |
||
35 | * A generic function ptr type |
||
36 | */ |
||
37 | typedef void (*_EGLProc)(void); |
||
38 | |||
39 | |||
40 | /** |
||
41 | * Typedefs for all EGL API entrypoint functions. |
||
42 | */ |
||
43 | |||
44 | /* driver funcs */ |
||
45 | typedef EGLBoolean (*Initialize_t)(_EGLDriver *, _EGLDisplay *dpy); |
||
46 | typedef EGLBoolean (*Terminate_t)(_EGLDriver *, _EGLDisplay *dpy); |
||
47 | |||
48 | /* config funcs */ |
||
49 | typedef EGLBoolean (*GetConfigs_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); |
||
50 | typedef EGLBoolean (*ChooseConfig_t)(_EGLDriver *drv, _EGLDisplay *dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config); |
||
51 | typedef EGLBoolean (*GetConfigAttrib_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *config, EGLint attribute, EGLint *value); |
||
52 | |||
53 | /* context funcs */ |
||
54 | typedef _EGLContext *(*CreateContext_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *config, _EGLContext *share_list, const EGLint *attrib_list); |
||
55 | typedef EGLBoolean (*DestroyContext_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx); |
||
56 | /* this is the only function (other than Initialize) that may be called with an uninitialized display */ |
||
57 | typedef EGLBoolean (*MakeCurrent_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *draw, _EGLSurface *read, _EGLContext *ctx); |
||
58 | typedef EGLBoolean (*QueryContext_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, EGLint attribute, EGLint *value); |
||
59 | |||
60 | /* surface funcs */ |
||
61 | typedef _EGLSurface *(*CreateWindowSurface_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *config, EGLNativeWindowType window, const EGLint *attrib_list); |
||
62 | typedef _EGLSurface *(*CreatePixmapSurface_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *config, EGLNativePixmapType pixmap, const EGLint *attrib_list); |
||
63 | typedef _EGLSurface *(*CreatePbufferSurface_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *config, const EGLint *attrib_list); |
||
64 | typedef EGLBoolean (*DestroySurface_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface); |
||
65 | typedef EGLBoolean (*QuerySurface_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface, EGLint attribute, EGLint *value); |
||
66 | typedef EGLBoolean (*SurfaceAttrib_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface, EGLint attribute, EGLint value); |
||
67 | typedef EGLBoolean (*BindTexImage_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface, EGLint buffer); |
||
68 | typedef EGLBoolean (*ReleaseTexImage_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface, EGLint buffer); |
||
69 | typedef EGLBoolean (*SwapInterval_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf, EGLint interval); |
||
70 | typedef EGLBoolean (*SwapBuffers_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *draw); |
||
71 | typedef EGLBoolean (*CopyBuffers_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface, EGLNativePixmapType target); |
||
72 | |||
73 | /* misc funcs */ |
||
74 | typedef const char *(*QueryString_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLint name); |
||
75 | typedef EGLBoolean (*WaitClient_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx); |
||
76 | typedef EGLBoolean (*WaitNative_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLint engine); |
||
77 | |||
78 | /* this function may be called from multiple threads at the same time */ |
||
79 | typedef _EGLProc (*GetProcAddress_t)(_EGLDriver *drv, const char *procname); |
||
80 | |||
81 | |||
82 | |||
83 | #ifdef EGL_MESA_screen_surface |
||
84 | typedef EGLBoolean (*ChooseModeMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, const EGLint *attrib_list, EGLModeMESA *modes, EGLint modes_size, EGLint *num_modes); |
||
85 | typedef EGLBoolean (*GetModesMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, EGLModeMESA *modes, EGLint mode_size, EGLint *num_mode); |
||
86 | typedef EGLBoolean (*GetModeAttribMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLMode *mode, EGLint attribute, EGLint *value); |
||
87 | typedef EGLBoolean (*CopyContextMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *source, _EGLContext *dest, EGLint mask); |
||
88 | typedef EGLBoolean (*GetScreensMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLScreenMESA *screens, EGLint max_screens, EGLint *num_screens); |
||
89 | typedef _EGLSurface *(*CreateScreenSurfaceMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLConfig *config, const EGLint *attrib_list); |
||
90 | typedef EGLBoolean (*ShowScreenSurfaceMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, _EGLSurface *surface, _EGLMode *mode); |
||
91 | typedef EGLBoolean (*ScreenPositionMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, EGLint x, EGLint y); |
||
92 | typedef EGLBoolean (*QueryScreenMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, EGLint attribute, EGLint *value); |
||
93 | typedef EGLBoolean (*QueryScreenSurfaceMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, _EGLSurface **surface); |
||
94 | typedef EGLBoolean (*QueryScreenModeMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLScreen *screen, _EGLMode **mode); |
||
95 | typedef const char * (*QueryModeStringMESA_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLMode *mode); |
||
96 | #endif /* EGL_MESA_screen_surface */ |
||
97 | |||
98 | |||
99 | typedef _EGLSurface *(*CreatePbufferFromClientBuffer_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLenum buftype, EGLClientBuffer buffer, _EGLConfig *config, const EGLint *attrib_list); |
||
100 | |||
101 | |||
102 | typedef _EGLImage *(*CreateImageKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attr_list); |
||
103 | typedef EGLBoolean (*DestroyImageKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *image); |
||
104 | |||
105 | |||
106 | typedef _EGLSync *(*CreateSyncKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, EGLenum type, const EGLint *attrib_list); |
||
107 | typedef EGLBoolean (*DestroySyncKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync); |
||
108 | typedef EGLint (*ClientWaitSyncKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, EGLint flags, EGLTimeKHR timeout); |
||
109 | typedef EGLBoolean (*SignalSyncKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, EGLenum mode); |
||
110 | typedef EGLBoolean (*GetSyncAttribKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync, EGLint attribute, EGLint *value); |
||
111 | |||
112 | |||
113 | #ifdef EGL_NOK_swap_region |
||
114 | typedef EGLBoolean (*SwapBuffersRegionNOK_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf, EGLint numRects, const EGLint *rects); |
||
115 | #endif |
||
116 | |||
117 | #ifdef EGL_MESA_drm_image |
||
118 | typedef _EGLImage *(*CreateDRMImageMESA_t)(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attr_list); |
||
119 | typedef EGLBoolean (*ExportDRMImageMESA_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *img, EGLint *name, EGLint *handle, EGLint *stride); |
||
4494 | Serge | 120 | typedef EGLImageKHR (*GetImageFB_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw, EGLint type); |
4358 | Serge | 121 | #endif |
122 | |||
123 | #ifdef EGL_WL_bind_wayland_display |
||
124 | struct wl_display; |
||
125 | typedef EGLBoolean (*BindWaylandDisplayWL_t)(_EGLDriver *drv, _EGLDisplay *disp, struct wl_display *display); |
||
126 | typedef EGLBoolean (*UnbindWaylandDisplayWL_t)(_EGLDriver *drv, _EGLDisplay *disp, struct wl_display *display); |
||
127 | typedef EGLBoolean (*QueryWaylandBufferWL_t)(_EGLDriver *drv, _EGLDisplay *displ, struct wl_buffer *buffer, EGLint attribute, EGLint *value); |
||
128 | #endif |
||
129 | |||
130 | typedef EGLBoolean (*PostSubBufferNV_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surface, EGLint x, EGLint y, EGLint width, EGLint height); |
||
131 | |||
132 | typedef EGLint (*QueryBufferAge_t)(_EGLDriver *drv, |
||
133 | _EGLDisplay *dpy, _EGLSurface *surface); |
||
134 | |||
135 | #ifdef EGL_EXT_swap_buffers_with_damage |
||
136 | typedef EGLBoolean (*SwapBuffersWithDamageEXT_t) (_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface, const EGLint *rects, EGLint n_rects); |
||
137 | #endif |
||
138 | |||
139 | /** |
||
140 | * The API dispatcher jumps through these functions |
||
141 | */ |
||
142 | struct _egl_api |
||
143 | { |
||
144 | Initialize_t Initialize; |
||
145 | Terminate_t Terminate; |
||
146 | |||
147 | GetConfigs_t GetConfigs; |
||
148 | ChooseConfig_t ChooseConfig; |
||
149 | GetConfigAttrib_t GetConfigAttrib; |
||
150 | |||
151 | CreateContext_t CreateContext; |
||
152 | DestroyContext_t DestroyContext; |
||
153 | MakeCurrent_t MakeCurrent; |
||
154 | QueryContext_t QueryContext; |
||
155 | |||
156 | CreateWindowSurface_t CreateWindowSurface; |
||
157 | CreatePixmapSurface_t CreatePixmapSurface; |
||
158 | CreatePbufferSurface_t CreatePbufferSurface; |
||
159 | DestroySurface_t DestroySurface; |
||
160 | QuerySurface_t QuerySurface; |
||
161 | SurfaceAttrib_t SurfaceAttrib; |
||
162 | BindTexImage_t BindTexImage; |
||
163 | ReleaseTexImage_t ReleaseTexImage; |
||
164 | SwapInterval_t SwapInterval; |
||
165 | SwapBuffers_t SwapBuffers; |
||
166 | CopyBuffers_t CopyBuffers; |
||
167 | |||
168 | QueryString_t QueryString; |
||
169 | WaitClient_t WaitClient; |
||
170 | WaitNative_t WaitNative; |
||
171 | GetProcAddress_t GetProcAddress; |
||
172 | |||
173 | #ifdef EGL_MESA_screen_surface |
||
174 | ChooseModeMESA_t ChooseModeMESA; |
||
175 | GetModesMESA_t GetModesMESA; |
||
176 | GetModeAttribMESA_t GetModeAttribMESA; |
||
177 | CopyContextMESA_t CopyContextMESA; |
||
178 | GetScreensMESA_t GetScreensMESA; |
||
179 | CreateScreenSurfaceMESA_t CreateScreenSurfaceMESA; |
||
180 | ShowScreenSurfaceMESA_t ShowScreenSurfaceMESA; |
||
181 | ScreenPositionMESA_t ScreenPositionMESA; |
||
182 | QueryScreenMESA_t QueryScreenMESA; |
||
183 | QueryScreenSurfaceMESA_t QueryScreenSurfaceMESA; |
||
184 | QueryScreenModeMESA_t QueryScreenModeMESA; |
||
185 | QueryModeStringMESA_t QueryModeStringMESA; |
||
186 | #endif /* EGL_MESA_screen_surface */ |
||
187 | |||
188 | CreatePbufferFromClientBuffer_t CreatePbufferFromClientBuffer; |
||
189 | |||
190 | CreateImageKHR_t CreateImageKHR; |
||
191 | DestroyImageKHR_t DestroyImageKHR; |
||
4494 | Serge | 192 | GetImageFB_t GetImageFB; |
4358 | Serge | 193 | |
194 | CreateSyncKHR_t CreateSyncKHR; |
||
195 | DestroySyncKHR_t DestroySyncKHR; |
||
196 | ClientWaitSyncKHR_t ClientWaitSyncKHR; |
||
197 | SignalSyncKHR_t SignalSyncKHR; |
||
198 | GetSyncAttribKHR_t GetSyncAttribKHR; |
||
199 | |||
200 | #ifdef EGL_NOK_swap_region |
||
201 | SwapBuffersRegionNOK_t SwapBuffersRegionNOK; |
||
202 | #endif |
||
203 | |||
204 | #ifdef EGL_MESA_drm_image |
||
205 | CreateDRMImageMESA_t CreateDRMImageMESA; |
||
206 | ExportDRMImageMESA_t ExportDRMImageMESA; |
||
207 | #endif |
||
208 | |||
209 | #ifdef EGL_WL_bind_wayland_display |
||
210 | BindWaylandDisplayWL_t BindWaylandDisplayWL; |
||
211 | UnbindWaylandDisplayWL_t UnbindWaylandDisplayWL; |
||
212 | QueryWaylandBufferWL_t QueryWaylandBufferWL; |
||
213 | #endif |
||
214 | |||
215 | #ifdef EGL_EXT_swap_buffers_with_damage |
||
216 | SwapBuffersWithDamageEXT_t SwapBuffersWithDamageEXT; |
||
217 | #endif /* EGL_EXT_swap_buffers_with_damage */ |
||
218 | |||
219 | PostSubBufferNV_t PostSubBufferNV; |
||
220 | |||
221 | QueryBufferAge_t QueryBufferAge; |
||
222 | }; |
||
223 | |||
224 | #endif /* EGLAPI_INCLUDED */ |