• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Sketchy version of egl.h (really only for reserving
2  * enumerant values to EGL tokens and sanity checking
3  * prototypes).
4  *
5  * Last modified 2006/08/13
6  */
7 
8 #ifndef __egl_h_
9 #define __egl_h_
10 
11 /* Windows calling convention boilerplate */
12 #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
13 #define WIN32_LEAN_AND_MEAN 1
14 #include <windows.h>
15 #endif
16 
17 #ifndef APIENTRY
18 #define APIENTRY
19 #endif
20 #ifndef EGLAPI
21 #define EGLAPI extern
22 #endif
23 
24 
25 /* EGL Types */
26 #include <sys/types.h>
27 
28 typedef int32_t EGLint;
29 typedef unsigned int EGLBoolean;
30 typedef unsigned int EGLenum;
31 typedef void *EGLConfig;
32 typedef void *EGLContext;
33 typedef void *EGLDisplay;
34 typedef void *EGLSurface;
35 typedef void *EGLClientBuffer;
36 /* NativeDisplayType, NativeWindowType, NativePixmapType TBD */
37 
38 /* EGL Versioning */
39 #define EGL_VERSION_1_0			1
40 #define EGL_VERSION_1_1			1
41 #define EGL_VERSION_1_2			1
42 #define EGL_VERSION_1_3			1
43 
44 /* EGL Enumerants. Exceptional cases aside, most
45  * enums are assigned unique values starting at 0x3000.
46  */
47 
48 /* EGL aliases */
49 #define EGL_FALSE			0
50 #define EGL_TRUE			1
51 
52 /* Out-of-band handle values */
53 /* These values may vary depending on semantics of native concepts */
54 #define EGL_DEFAULT_DISPLAY		((void *)0)
55 #define EGL_NO_CONTEXT			((EGLContext)0)
56 #define EGL_NO_DISPLAY			((EGLDisplay)0)
57 #define EGL_NO_SURFACE			((EGLSurface)0)
58 
59 /* Out-of-band attribute value */
60 #define EGL_DONT_CARE			((EGLint)-1)
61 
62 /* Errors / GetError return values */
63 #define EGL_SUCCESS			0x3000
64 #define EGL_NOT_INITIALIZED		0x3001
65 #define EGL_BAD_ACCESS			0x3002
66 #define EGL_BAD_ALLOC			0x3003
67 #define EGL_BAD_ATTRIBUTE		0x3004
68 #define EGL_BAD_CONFIG			0x3005
69 #define EGL_BAD_CONTEXT			0x3006
70 #define EGL_BAD_CURRENT_SURFACE		0x3007
71 #define EGL_BAD_DISPLAY			0x3008
72 #define EGL_BAD_MATCH			0x3009
73 #define EGL_BAD_NATIVE_PIXMAP		0x300A
74 #define EGL_BAD_NATIVE_WINDOW		0x300B
75 #define EGL_BAD_PARAMETER		0x300C
76 #define EGL_BAD_SURFACE			0x300D
77 #define EGL_CONTEXT_LOST		0x300E	/* EGL 1.1 - IMG_power_management */
78 
79 /* Reserved 0x300F-0x301F for additional errors */
80 
81 /* Config attributes */
82 #define EGL_BUFFER_SIZE			0x3020
83 #define EGL_ALPHA_SIZE			0x3021
84 #define EGL_BLUE_SIZE			0x3022
85 #define EGL_GREEN_SIZE			0x3023
86 #define EGL_RED_SIZE			0x3024
87 #define EGL_DEPTH_SIZE			0x3025
88 #define EGL_STENCIL_SIZE		0x3026
89 #define EGL_CONFIG_CAVEAT		0x3027
90 #define EGL_CONFIG_ID			0x3028
91 #define EGL_LEVEL			0x3029
92 #define EGL_MAX_PBUFFER_HEIGHT		0x302A
93 #define EGL_MAX_PBUFFER_PIXELS		0x302B
94 #define EGL_MAX_PBUFFER_WIDTH		0x302C
95 #define EGL_NATIVE_RENDERABLE		0x302D
96 #define EGL_NATIVE_VISUAL_ID		0x302E
97 #define EGL_NATIVE_VISUAL_TYPE		0x302F
98 #define EGL_PRESERVED_RESOURCES		0x3030
99 #define EGL_SAMPLES			0x3031
100 #define EGL_SAMPLE_BUFFERS		0x3032
101 #define EGL_SURFACE_TYPE		0x3033
102 #define EGL_TRANSPARENT_TYPE		0x3034
103 #define EGL_TRANSPARENT_BLUE_VALUE	0x3035
104 #define EGL_TRANSPARENT_GREEN_VALUE	0x3036
105 #define EGL_TRANSPARENT_RED_VALUE	0x3037
106 #define EGL_NONE			0x3038	/* Attrib list terminator */
107 #define EGL_BIND_TO_TEXTURE_RGB		0x3039
108 #define EGL_BIND_TO_TEXTURE_RGBA	0x303A
109 #define EGL_MIN_SWAP_INTERVAL		0x303B
110 #define EGL_MAX_SWAP_INTERVAL		0x303C
111 #define EGL_LUMINANCE_SIZE		0x303D
112 #define EGL_ALPHA_MASK_SIZE		0x303E
113 #define EGL_COLOR_BUFFER_TYPE		0x303F
114 #define EGL_RENDERABLE_TYPE		0x3040
115 #define EGL_MATCH_NATIVE_PIXMAP		0x3041	/* Pseudo-attribute (not queryable) */
116 
117 /* Reserved 0x3041-0x304F for additional config attributes */
118 
119 /* Config attribute values */
120 #define EGL_SLOW_CONFIG			0x3050	/* EGL_CONFIG_CAVEAT value */
121 #define EGL_NON_CONFORMANT_CONFIG	0x3051	/* EGL_CONFIG_CAVEAT value */
122 #define EGL_TRANSPARENT_RGB		0x3052	/* EGL_TRANSPARENT_TYPE value */
123 #define EGL_RGB_BUFFER			0x308E	/* EGL_COLOR_BUFFER_TYPE value */
124 #define EGL_LUMINANCE_BUFFER		0x308F	/* EGL_COLOR_BUFFER_TYPE value */
125 
126 /* More config attribute values, for EGL_TEXTURE_FORMAT */
127 #define EGL_NO_TEXTURE			0x305C
128 #define EGL_TEXTURE_RGB			0x305D
129 #define EGL_TEXTURE_RGBA		0x305E
130 #define EGL_TEXTURE_2D			0x305F
131 
132 /* Config attribute mask bits */
133 #define EGL_PBUFFER_BIT			0x01	/* EGL_SURFACE_TYPE mask bits */
134 #define EGL_PIXMAP_BIT			0x02	/* EGL_SURFACE_TYPE mask bits */
135 #define EGL_WINDOW_BIT			0x04	/* EGL_SURFACE_TYPE mask bits */
136 #define EGL_OPENGL_ES_BIT		0x01	/* EGL_RENDERABLE_TYPE mask bits */
137 #define EGL_OPENVG_BIT			0x02	/* EGL_RENDERABLE_TYPE mask bits */
138 #define EGL_OPENGL_ES2_BIT		0x04	/* EGL_RENDERABLE_TYPE mask bits */
139 
140 /* QueryString targets */
141 #define EGL_VENDOR			0x3053
142 #define EGL_VERSION			0x3054
143 #define EGL_EXTENSIONS			0x3055
144 #define EGL_CLIENT_APIS			0x308D
145 
146 /* QuerySurface / CreatePbufferSurface targets */
147 #define EGL_HEIGHT			0x3056
148 #define EGL_WIDTH			0x3057
149 #define EGL_LARGEST_PBUFFER		0x3058
150 #define EGL_TEXTURE_FORMAT		0x3080
151 #define EGL_TEXTURE_TARGET		0x3081
152 #define EGL_MIPMAP_TEXTURE		0x3082
153 #define EGL_MIPMAP_LEVEL		0x3083
154 #define EGL_RENDER_BUFFER		0x3086
155 #define EGL_COLORSPACE			0x3087
156 #define EGL_ALPHA_FORMAT		0x3088
157 #define EGL_HORIZONTAL_RESOLUTION	0x3090
158 #define EGL_VERTICAL_RESOLUTION		0x3091
159 #define EGL_PIXEL_ASPECT_RATIO		0x3092
160 #define EGL_SWAP_BEHAVIOR		0x3093
161 
162 /* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
163 #define EGL_BACK_BUFFER			0x3084
164 #define EGL_SINGLE_BUFFER		0x3085
165 
166 /* OpenVG color spaces */
167 #define EGL_COLORSPACE_sRGB		0x3089	/* EGL_COLORSPACE value */
168 #define EGL_COLORSPACE_LINEAR		0x308A	/* EGL_COLORSPACE value */
169 
170 /* OpenVG alpha formats */
171 #define EGL_ALPHA_FORMAT_NONPRE		0x308B	/* EGL_ALPHA_FORMAT value */
172 #define EGL_ALPHA_FORMAT_PRE		0x308C	/* EGL_ALPHA_FORMAT value */
173 
174 /* Constant scale factor by which fractional display resolutions &
175  * aspect ratio are scaled when queried as integer values.
176  */
177 #define EGL_DISPLAY_SCALING		10000
178 
179 /* Unknown display resolution/aspect ratio */
180 #define EGL_UNKNOWN			((EGLint)-1)
181 
182 /* Back buffer swap behaviors */
183 #define EGL_BUFFER_PRESERVED		0x3094	/* EGL_SWAP_BEHAVIOR value */
184 #define EGL_BUFFER_DESTROYED		0x3095	/* EGL_SWAP_BEHAVIOR value */
185 
186 /* CreatePbufferFromClientBuffer buffer types */
187 #define EGL_OPENVG_IMAGE		0x3096
188 
189 /* QueryContext targets */
190 #define EGL_CONTEXT_CLIENT_TYPE		0x3097
191 
192 /* CreateContext attributes */
193 #define EGL_CONTEXT_CLIENT_VERSION	0x3098
194 
195 /* BindAPI/QueryAPI targets */
196 #define EGL_OPENGL_ES_API		0x30A0
197 #define EGL_OPENVG_API			0x30A1
198 
199 /* GetCurrentSurface targets */
200 #define EGL_DRAW			0x3059
201 #define EGL_READ			0x305A
202 
203 /* WaitNative engines */
204 #define EGL_CORE_NATIVE_ENGINE		0x305B
205 
206 /* EGL extensions must request enum blocks from the OpenGL ARB
207  * Secretary, who maintains the EGL enumerant registry.
208  */
209 
210 
211 
212 /* EGL Functions */
213 
214 EGLAPI EGLint APIENTRY eglGetError();
215 
216 EGLAPI EGLDisplay APIENTRY eglGetDisplay(const char *display_id);
217 EGLAPI EGLBoolean APIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
218 EGLAPI EGLBoolean APIENTRY eglTerminate(EGLDisplay dpy);
219 
220 EGLAPI const char * APIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
221 
222 EGLAPI EGLBoolean APIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
223 			 EGLint config_size, EGLint *num_config);
224 EGLAPI EGLBoolean APIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
225 			   EGLConfig *configs, EGLint config_size,
226 			   EGLint *num_config);
227 EGLAPI EGLBoolean APIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
228 			      EGLint attribute, EGLint *value);
229 
230 EGLAPI EGLSurface APIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
231 				  NativeWindowType win,
232 				  const EGLint *attrib_list);
233 EGLAPI EGLSurface APIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
234 				   const EGLint *attrib_list);
235 EGLAPI EGLSurface APIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
236 				  NativePixmapType pixmap,
237 				  const EGLint *attrib_list);
238 EGLAPI EGLBoolean APIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
239 EGLAPI EGLBoolean APIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
240 			   EGLint attribute, EGLint *value);
241 
242 EGLAPI EGLBoolean APIENTRY eglBindAPI(EGLenum api);
243 EGLAPI EGLenum APIENTRY eglQueryAPI(void);
244 
245 EGLAPI EGLBoolean APIENTRY eglWaitClient(void);
246 
247 EGLAPI EGLBoolean APIENTRY eglReleaseThread(void);
248 
249 EGLAPI EGLSurface APIENTRY eglCreatePbufferFromClientBuffer(
250 	      EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
251 	      EGLConfig config, const EGLint *attrib_list);
252 
253 EGLAPI EGLBoolean APIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
254 			    EGLint attribute, EGLint value);
255 EGLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
256 EGLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
257 
258 
259 EGLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
260 
261 
262 EGLAPI EGLContext APIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
263 			    EGLContext share_context,
264 			    const EGLint *attrib_list);
265 EGLAPI EGLBoolean APIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
266 EGLAPI EGLBoolean APIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
267 			  EGLSurface read, EGLContext ctx);
268 
269 EGLAPI EGLContext APIENTRY eglGetCurrentContext(void);
270 EGLAPI EGLSurface APIENTRY eglGetCurrentSurface(EGLint readdraw);
271 EGLAPI EGLDisplay APIENTRY eglGetCurrentDisplay(void);
272 EGLAPI EGLBoolean APIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
273 			   EGLint attribute, EGLint *value);
274 
275 EGLAPI EGLBoolean APIENTRY eglWaitGL(void);
276 EGLAPI EGLBoolean APIENTRY eglWaitNative(EGLint engine);
277 EGLAPI EGLBoolean APIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
278 EGLAPI EGLBoolean APIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
279 			  NativePixmapType target);
280 
281 EGLAPI void (* APIENTRY eglGetProcAddress(const char *procname))();
282 
283 #endif /* __egl_h_ */
284