Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1901 serge 1
/* -*- mode: c; tab-width: 8; -*- */
2
/* vi: set sw=4 ts=8: */
3
/* Reference version of egl.h for EGL 1.4.
4
 * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
5
 */
6
 
7
/*
8
** Copyright (c) 2007-2009 The Khronos Group Inc.
9
**
10
** Permission is hereby granted, free of charge, to any person obtaining a
11
** copy of this software and/or associated documentation files (the
12
** "Materials"), to deal in the Materials without restriction, including
13
** without limitation the rights to use, copy, modify, merge, publish,
14
** distribute, sublicense, and/or sell copies of the Materials, and to
15
** permit persons to whom the Materials are furnished to do so, subject to
16
** the following conditions:
17
**
18
** The above copyright notice and this permission notice shall be included
19
** in all copies or substantial portions of the Materials.
20
**
21
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
25
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
28
*/
29
 
30
#ifndef __egl_h_
31
#define __egl_h_
32
 
33
/* All platform-dependent types and macro boilerplate (such as EGLAPI
34
 * and EGLAPIENTRY) should go in eglplatform.h.
35
 */
36
#include 
37
 
38
#ifdef __cplusplus
39
extern "C" {
40
#endif
41
 
42
/* EGL Types */
43
/* EGLint is defined in eglplatform.h */
44
typedef unsigned int EGLBoolean;
45
typedef unsigned int EGLenum;
46
typedef void *EGLConfig;
47
typedef void *EGLContext;
48
typedef void *EGLDisplay;
49
typedef void *EGLSurface;
50
typedef void *EGLClientBuffer;
51
 
52
/* EGL Versioning */
53
#define EGL_VERSION_1_0			1
54
#define EGL_VERSION_1_1			1
55
#define EGL_VERSION_1_2			1
56
#define EGL_VERSION_1_3			1
57
#define EGL_VERSION_1_4			1
58
 
59
/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
60
 * enums are assigned unique values starting at 0x3000.
61
 */
62
 
63
/* EGL aliases */
64
#define EGL_FALSE			0
65
#define EGL_TRUE			1
66
 
67
/* Out-of-band handle values */
68
#define EGL_DEFAULT_DISPLAY		((EGLNativeDisplayType)0)
69
#define EGL_NO_CONTEXT			((EGLContext)0)
70
#define EGL_NO_DISPLAY			((EGLDisplay)0)
71
#define EGL_NO_SURFACE			((EGLSurface)0)
72
 
73
/* Out-of-band attribute value */
74
#define EGL_DONT_CARE			((EGLint)-1)
75
 
76
/* Errors / GetError return values */
77
#define EGL_SUCCESS			0x3000
78
#define EGL_NOT_INITIALIZED		0x3001
79
#define EGL_BAD_ACCESS			0x3002
80
#define EGL_BAD_ALLOC			0x3003
81
#define EGL_BAD_ATTRIBUTE		0x3004
82
#define EGL_BAD_CONFIG			0x3005
83
#define EGL_BAD_CONTEXT			0x3006
84
#define EGL_BAD_CURRENT_SURFACE		0x3007
85
#define EGL_BAD_DISPLAY			0x3008
86
#define EGL_BAD_MATCH			0x3009
87
#define EGL_BAD_NATIVE_PIXMAP		0x300A
88
#define EGL_BAD_NATIVE_WINDOW		0x300B
89
#define EGL_BAD_PARAMETER		0x300C
90
#define EGL_BAD_SURFACE			0x300D
91
#define EGL_CONTEXT_LOST		0x300E	/* EGL 1.1 - IMG_power_management */
92
 
93
/* Reserved 0x300F-0x301F for additional errors */
94
 
95
/* Config attributes */
96
#define EGL_BUFFER_SIZE			0x3020
97
#define EGL_ALPHA_SIZE			0x3021
98
#define EGL_BLUE_SIZE			0x3022
99
#define EGL_GREEN_SIZE			0x3023
100
#define EGL_RED_SIZE			0x3024
101
#define EGL_DEPTH_SIZE			0x3025
102
#define EGL_STENCIL_SIZE		0x3026
103
#define EGL_CONFIG_CAVEAT		0x3027
104
#define EGL_CONFIG_ID			0x3028
105
#define EGL_LEVEL			0x3029
106
#define EGL_MAX_PBUFFER_HEIGHT		0x302A
107
#define EGL_MAX_PBUFFER_PIXELS		0x302B
108
#define EGL_MAX_PBUFFER_WIDTH		0x302C
109
#define EGL_NATIVE_RENDERABLE		0x302D
110
#define EGL_NATIVE_VISUAL_ID		0x302E
111
#define EGL_NATIVE_VISUAL_TYPE		0x302F
112
#define EGL_SAMPLES			0x3031
113
#define EGL_SAMPLE_BUFFERS		0x3032
114
#define EGL_SURFACE_TYPE		0x3033
115
#define EGL_TRANSPARENT_TYPE		0x3034
116
#define EGL_TRANSPARENT_BLUE_VALUE	0x3035
117
#define EGL_TRANSPARENT_GREEN_VALUE	0x3036
118
#define EGL_TRANSPARENT_RED_VALUE	0x3037
119
#define EGL_NONE			0x3038	/* Attrib list terminator */
120
#define EGL_BIND_TO_TEXTURE_RGB		0x3039
121
#define EGL_BIND_TO_TEXTURE_RGBA	0x303A
122
#define EGL_MIN_SWAP_INTERVAL		0x303B
123
#define EGL_MAX_SWAP_INTERVAL		0x303C
124
#define EGL_LUMINANCE_SIZE		0x303D
125
#define EGL_ALPHA_MASK_SIZE		0x303E
126
#define EGL_COLOR_BUFFER_TYPE		0x303F
127
#define EGL_RENDERABLE_TYPE		0x3040
128
#define EGL_MATCH_NATIVE_PIXMAP		0x3041	/* Pseudo-attribute (not queryable) */
129
#define EGL_CONFORMANT			0x3042
130
 
131
/* Reserved 0x3041-0x304F for additional config attributes */
132
 
133
/* Config attribute values */
134
#define EGL_SLOW_CONFIG			0x3050	/* EGL_CONFIG_CAVEAT value */
135
#define EGL_NON_CONFORMANT_CONFIG	0x3051	/* EGL_CONFIG_CAVEAT value */
136
#define EGL_TRANSPARENT_RGB		0x3052	/* EGL_TRANSPARENT_TYPE value */
137
#define EGL_RGB_BUFFER			0x308E	/* EGL_COLOR_BUFFER_TYPE value */
138
#define EGL_LUMINANCE_BUFFER		0x308F	/* EGL_COLOR_BUFFER_TYPE value */
139
 
140
/* More config attribute values, for EGL_TEXTURE_FORMAT */
141
#define EGL_NO_TEXTURE			0x305C
142
#define EGL_TEXTURE_RGB			0x305D
143
#define EGL_TEXTURE_RGBA		0x305E
144
#define EGL_TEXTURE_2D			0x305F
145
 
146
/* Config attribute mask bits */
147
#define EGL_PBUFFER_BIT			0x0001	/* EGL_SURFACE_TYPE mask bits */
148
#define EGL_PIXMAP_BIT			0x0002	/* EGL_SURFACE_TYPE mask bits */
149
#define EGL_WINDOW_BIT			0x0004	/* EGL_SURFACE_TYPE mask bits */
150
#define EGL_VG_COLORSPACE_LINEAR_BIT	0x0020	/* EGL_SURFACE_TYPE mask bits */
151
#define EGL_VG_ALPHA_FORMAT_PRE_BIT	0x0040	/* EGL_SURFACE_TYPE mask bits */
152
#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200	/* EGL_SURFACE_TYPE mask bits */
153
#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400	/* EGL_SURFACE_TYPE mask bits */
154
 
155
#define EGL_OPENGL_ES_BIT		0x0001	/* EGL_RENDERABLE_TYPE mask bits */
156
#define EGL_OPENVG_BIT			0x0002	/* EGL_RENDERABLE_TYPE mask bits */
157
#define EGL_OPENGL_ES2_BIT		0x0004	/* EGL_RENDERABLE_TYPE mask bits */
158
#define EGL_OPENGL_BIT			0x0008	/* EGL_RENDERABLE_TYPE mask bits */
159
 
160
/* QueryString targets */
161
#define EGL_VENDOR			0x3053
162
#define EGL_VERSION			0x3054
163
#define EGL_EXTENSIONS			0x3055
164
#define EGL_CLIENT_APIS			0x308D
165
 
166
/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
167
#define EGL_HEIGHT			0x3056
168
#define EGL_WIDTH			0x3057
169
#define EGL_LARGEST_PBUFFER		0x3058
170
#define EGL_TEXTURE_FORMAT		0x3080
171
#define EGL_TEXTURE_TARGET		0x3081
172
#define EGL_MIPMAP_TEXTURE		0x3082
173
#define EGL_MIPMAP_LEVEL		0x3083
174
#define EGL_RENDER_BUFFER		0x3086
175
#define EGL_VG_COLORSPACE		0x3087
176
#define EGL_VG_ALPHA_FORMAT		0x3088
177
#define EGL_HORIZONTAL_RESOLUTION	0x3090
178
#define EGL_VERTICAL_RESOLUTION		0x3091
179
#define EGL_PIXEL_ASPECT_RATIO		0x3092
180
#define EGL_SWAP_BEHAVIOR		0x3093
181
#define EGL_MULTISAMPLE_RESOLVE		0x3099
182
 
183
/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
184
#define EGL_BACK_BUFFER			0x3084
185
#define EGL_SINGLE_BUFFER		0x3085
186
 
187
/* OpenVG color spaces */
188
#define EGL_VG_COLORSPACE_sRGB		0x3089	/* EGL_VG_COLORSPACE value */
189
#define EGL_VG_COLORSPACE_LINEAR	0x308A	/* EGL_VG_COLORSPACE value */
190
 
191
/* OpenVG alpha formats */
192
#define EGL_VG_ALPHA_FORMAT_NONPRE	0x308B	/* EGL_ALPHA_FORMAT value */
193
#define EGL_VG_ALPHA_FORMAT_PRE		0x308C	/* EGL_ALPHA_FORMAT value */
194
 
195
/* Constant scale factor by which fractional display resolutions &
196
 * aspect ratio are scaled when queried as integer values.
197
 */
198
#define EGL_DISPLAY_SCALING		10000
199
 
200
/* Unknown display resolution/aspect ratio */
201
#define EGL_UNKNOWN			((EGLint)-1)
202
 
203
/* Back buffer swap behaviors */
204
#define EGL_BUFFER_PRESERVED		0x3094	/* EGL_SWAP_BEHAVIOR value */
205
#define EGL_BUFFER_DESTROYED		0x3095	/* EGL_SWAP_BEHAVIOR value */
206
 
207
/* CreatePbufferFromClientBuffer buffer types */
208
#define EGL_OPENVG_IMAGE		0x3096
209
 
210
/* QueryContext targets */
211
#define EGL_CONTEXT_CLIENT_TYPE		0x3097
212
 
213
/* CreateContext attributes */
214
#define EGL_CONTEXT_CLIENT_VERSION	0x3098
215
 
216
/* Multisample resolution behaviors */
217
#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A	/* EGL_MULTISAMPLE_RESOLVE value */
218
#define EGL_MULTISAMPLE_RESOLVE_BOX	0x309B	/* EGL_MULTISAMPLE_RESOLVE value */
219
 
220
/* BindAPI/QueryAPI targets */
221
#define EGL_OPENGL_ES_API		0x30A0
222
#define EGL_OPENVG_API			0x30A1
223
#define EGL_OPENGL_API			0x30A2
224
 
225
/* GetCurrentSurface targets */
226
#define EGL_DRAW			0x3059
227
#define EGL_READ			0x305A
228
 
229
/* WaitNative engines */
230
#define EGL_CORE_NATIVE_ENGINE		0x305B
231
 
232
/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
233
#define EGL_COLORSPACE			EGL_VG_COLORSPACE
234
#define EGL_ALPHA_FORMAT		EGL_VG_ALPHA_FORMAT
235
#define EGL_COLORSPACE_sRGB		EGL_VG_COLORSPACE_sRGB
236
#define EGL_COLORSPACE_LINEAR		EGL_VG_COLORSPACE_LINEAR
237
#define EGL_ALPHA_FORMAT_NONPRE		EGL_VG_ALPHA_FORMAT_NONPRE
238
#define EGL_ALPHA_FORMAT_PRE		EGL_VG_ALPHA_FORMAT_PRE
239
 
240
/* EGL extensions must request enum blocks from the Khronos
241
 * API Registrar, who maintains the enumerant registry. Submit
242
 * a bug in Khronos Bugzilla against task "Registry".
243
 */
244
 
245
 
246
 
247
/* EGL Functions */
248
 
249
EGLAPI EGLint EGLAPIENTRY eglGetError(void);
250
 
251
EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
252
EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
253
EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
254
 
255
EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
256
 
257
EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
258
			 EGLint config_size, EGLint *num_config);
259
EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
260
			   EGLConfig *configs, EGLint config_size,
261
			   EGLint *num_config);
262
EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
263
			      EGLint attribute, EGLint *value);
264
 
265
EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
266
				  EGLNativeWindowType win,
267
				  const EGLint *attrib_list);
268
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
269
				   const EGLint *attrib_list);
270
EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
271
				  EGLNativePixmapType pixmap,
272
				  const EGLint *attrib_list);
273
EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
274
EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
275
			   EGLint attribute, EGLint *value);
276
 
277
EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
278
EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
279
 
280
EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
281
 
282
EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
283
 
284
EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
285
	      EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
286
	      EGLConfig config, const EGLint *attrib_list);
287
 
288
EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
289
			    EGLint attribute, EGLint value);
290
EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
291
EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
292
 
293
 
294
EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
295
 
296
 
297
EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
298
			    EGLContext share_context,
299
			    const EGLint *attrib_list);
300
EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
301
EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
302
			  EGLSurface read, EGLContext ctx);
303
 
304
EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
305
EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
306
EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
307
EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
308
			   EGLint attribute, EGLint *value);
309
 
310
EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
311
EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
312
EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
313
EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
314
			  EGLNativePixmapType target);
315
 
316
/* This is a generic function pointer type, whose name indicates it must
317
 * be cast to the proper type *and calling convention* before use.
318
 */
319
typedef void (*__eglMustCastToProperFunctionPointerType)(void);
320
 
321
/* Now, define eglGetProcAddress using the generic function ptr. type */
322
EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
323
       eglGetProcAddress(const char *procname);
324
 
325
#ifdef __cplusplus
326
}
327
#endif
328
 
329
#endif /* __egl_h_ */