1 #ifndef __eglext_h_
2 #define __eglext_h_
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 /*
9 ** Copyright (c) 2007-2009 The Khronos Group Inc.
10 **
11 ** Permission is hereby granted, free of charge, to any person obtaining a
12 ** copy of this software and/or associated documentation files (the
13 ** "Materials"), to deal in the Materials without restriction, including
14 ** without limitation the rights to use, copy, modify, merge, publish,
15 ** distribute, sublicense, and/or sell copies of the Materials, and to
16 ** permit persons to whom the Materials are furnished to do so, subject to
17 ** the following conditions:
18 **
19 ** The above copyright notice and this permission notice shall be included
20 ** in all copies or substantial portions of the Materials.
21 **
22 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
26 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
28 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
29 */
30 
31 #include "eglplatform.h"
32 
33 /* We want this */
34 #ifndef EGL_EGLEXT_PROTOTYPES
35 #define EGL_EGLEXT_PROTOTYPES
36 #endif
37 
38 /*************************************************************/
39 
40 /* Header file version number */
41 /* Current version at http://www.khronos.org/registry/egl/ */
42 /* $Revision: 7244 $ on $Date: 2009-01-20 17:06:59 -0800 (Tue, 20 Jan 2009) $ */
43 #define EGL_EGLEXT_VERSION 3
44 
45 #ifndef EGL_KHR_config_attribs
46 #define EGL_KHR_config_attribs 1
47 #define EGL_CONFORMANT_KHR			0x3042	/* EGLConfig attribute */
48 #define EGL_VG_COLORSPACE_LINEAR_BIT_KHR	0x0020	/* EGL_SURFACE_TYPE bitfield */
49 #define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR		0x0040	/* EGL_SURFACE_TYPE bitfield */
50 #endif
51 
52 #ifndef EGL_KHR_lock_surface
53 #define EGL_KHR_lock_surface 1
54 #define EGL_READ_SURFACE_BIT_KHR		0x0001	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
55 #define EGL_WRITE_SURFACE_BIT_KHR		0x0002	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
56 #define EGL_LOCK_SURFACE_BIT_KHR		0x0080	/* EGL_SURFACE_TYPE bitfield */
57 #define EGL_OPTIMAL_FORMAT_BIT_KHR		0x0100	/* EGL_SURFACE_TYPE bitfield */
58 #define EGL_MATCH_FORMAT_KHR			0x3043	/* EGLConfig attribute */
59 #define EGL_FORMAT_RGB_565_EXACT_KHR		0x30C0	/* EGL_MATCH_FORMAT_KHR value */
60 #define EGL_FORMAT_RGB_565_KHR			0x30C1	/* EGL_MATCH_FORMAT_KHR value */
61 #define EGL_FORMAT_RGBA_8888_EXACT_KHR		0x30C2	/* EGL_MATCH_FORMAT_KHR value */
62 #define EGL_FORMAT_RGBA_8888_KHR		0x30C3	/* EGL_MATCH_FORMAT_KHR value */
63 #define EGL_MAP_PRESERVE_PIXELS_KHR		0x30C4	/* eglLockSurfaceKHR attribute */
64 #define EGL_LOCK_USAGE_HINT_KHR			0x30C5	/* eglLockSurfaceKHR attribute */
65 #define EGL_BITMAP_POINTER_KHR			0x30C6	/* eglQuerySurface attribute */
66 #define EGL_BITMAP_PITCH_KHR			0x30C7	/* eglQuerySurface attribute */
67 #define EGL_BITMAP_ORIGIN_KHR			0x30C8	/* eglQuerySurface attribute */
68 #define EGL_BITMAP_PIXEL_RED_OFFSET_KHR		0x30C9	/* eglQuerySurface attribute */
69 #define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR	0x30CA	/* eglQuerySurface attribute */
70 #define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR	0x30CB	/* eglQuerySurface attribute */
71 #define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR	0x30CC	/* eglQuerySurface attribute */
72 #define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR	0x30CD	/* eglQuerySurface attribute */
73 #define EGL_LOWER_LEFT_KHR			0x30CE	/* EGL_BITMAP_ORIGIN_KHR value */
74 #define EGL_UPPER_LEFT_KHR			0x30CF	/* EGL_BITMAP_ORIGIN_KHR value */
75 #ifdef EGL_EGLEXT_PROTOTYPES
76 EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
77 EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface);
78 #endif /* EGL_EGLEXT_PROTOTYPES */
79 typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
80 typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface);
81 #endif
82 
83 #ifndef EGL_KHR_image
84 #define EGL_KHR_image 1
85 #define EGL_NATIVE_PIXMAP_KHR			0x30B0	/* eglCreateImageKHR target */
86 typedef void *EGLImageKHR;
87 #define EGL_NO_IMAGE_KHR			((EGLImageKHR)0)
88 #ifdef EGL_EGLEXT_PROTOTYPES
89 EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
90 EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
91 #endif /* EGL_EGLEXT_PROTOTYPES */
92 typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
93 typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
94 #endif
95 
96 #ifndef EGL_KHR_vg_parent_image
97 #define EGL_KHR_vg_parent_image 1
98 #define EGL_VG_PARENT_IMAGE_KHR			0x30BA	/* eglCreateImageKHR target */
99 #endif
100 
101 #ifndef EGL_KHR_gl_texture_2D_image
102 #define EGL_KHR_gl_texture_2D_image 1
103 #define EGL_GL_TEXTURE_2D_KHR			0x30B1	/* eglCreateImageKHR target */
104 #define EGL_GL_TEXTURE_LEVEL_KHR		0x30BC	/* eglCreateImageKHR attribute */
105 #endif
106 
107 #ifndef EGL_KHR_gl_texture_cubemap_image
108 #define EGL_KHR_gl_texture_cubemap_image 1
109 #define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR	0x30B3	/* eglCreateImageKHR target */
110 #define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR	0x30B4	/* eglCreateImageKHR target */
111 #define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR	0x30B5	/* eglCreateImageKHR target */
112 #define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR	0x30B6	/* eglCreateImageKHR target */
113 #define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR	0x30B7	/* eglCreateImageKHR target */
114 #define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR	0x30B8	/* eglCreateImageKHR target */
115 #endif
116 
117 #ifndef EGL_KHR_gl_texture_3D_image
118 #define EGL_KHR_gl_texture_3D_image 0
119 #define EGL_GL_TEXTURE_3D_KHR			0x30B2	/* eglCreateImageKHR target */
120 #define EGL_GL_TEXTURE_ZOFFSET_KHR		0x30BD	/* eglCreateImageKHR attribute */
121 #endif
122 
123 #ifndef EGL_KHR_gl_renderbuffer_image
124 #define EGL_KHR_gl_renderbuffer_image 1
125 #define EGL_GL_RENDERBUFFER_KHR			0x30B9	/* eglCreateImageKHR target */
126 #endif
127 
128 #ifndef EGL_KHR_image_base
129 #define EGL_KHR_image_base 1
130 /* Most interfaces defined by EGL_KHR_image_pixmap above */
131 #define EGL_IMAGE_PRESERVED_KHR			0x30D2	/* eglCreateImageKHR attribute */
132 #endif
133 
134 #ifndef EGL_KHR_image_pixmap
135 #define EGL_KHR_image_pixmap 1
136 /* Interfaces defined by EGL_KHR_image above */
137 #endif
138 
139 #ifndef EGL_KHR_fence_sync
140 #define EGL_KHR_fence_sync 1
141 #define GL_OES_EGL_sync 1
142 #endif
143 
144 #ifndef EGL_KHR_sync
145 #define EGL_KHR_sync 1
146 #endif
147 
148 #if ((EGL_KHR_sync == 1) || (EGL_KHR_fence_sync == 1))
149 #define EGL_KHR_sync 1 /* EGL_KHR_fence_sync depends on this stuff */
150 /*
151 * EGLSyncKHR is an opaque handle to an EGL sync object
152 */
153 
154 typedef void* EGLSyncKHR;
155 
156 /*
157 * EGLTimeKHR is a 64-bit unsigned integer representing intervals
158 * in nanoseconds.
159 */
160 
161 typedef khronos_utime_nanoseconds_t EGLTimeKHR;
162 
163 #define EGL_SYNC_FENCE_KHR                      0x30F9
164 #define EGL_SYNC_REUSABLE_KHR                   0x30FA
165 #define EGL_SYNC_TYPE_KHR                       0x30F7
166 #define EGL_SYNC_STATUS_KHR                     0x30F1
167 #define EGL_SYNC_CONDITION_KHR                  0x30F8
168 #define EGL_SIGNALED_KHR                        0x30F2
169 #define EGL_UNSIGNALED_KHR                      0x30F3
170 #define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR    0x30F0
171 #define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR         0x0001
172 #define EGL_TIMEOUT_EXPIRED_KHR                 0x30F5
173 #define EGL_CONDITION_SATISFIED_KHR             0x30F6
174 
175 #define EGL_FOREVER_KHR                         0xFFFFFFFFFFFFFFFFull
176 
177 #define EGL_NO_SYNC_KHR                         ((EGLSyncKHR)0)
178 
179 #ifdef EGL_EGLEXT_PROTOTYPES
180 EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
181 EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
182 EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
183 EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
184 EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
185 #endif /* EGL_EGLEXT_PROTOTYPES */
186 typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
187 typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
188 typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
189 typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
190 typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
191 #endif
192 
193 
194 #ifdef __cplusplus
195 }
196 #endif
197 
198 #include "eglext_brcm.h"
199 
200 #if defined(ANDROID)
201 #include "eglext_android.h"
202 #include "eglext_nvidia.h"
203 #endif
204 
205 #endif
206