1#ifndef __eglext_h_
2#define __eglext_h_
3
4#ifdef __cplusplus
5extern "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
76EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
77EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface);
78#endif /* EGL_EGLEXT_PROTOTYPES */
79typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
80typedef 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 */
86typedef void *EGLImageKHR;
87#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
88#ifdef EGL_EGLEXT_PROTOTYPES
89EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
90EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
91#endif /* EGL_EGLEXT_PROTOTYPES */
92typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
93typedef 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
154typedef void* EGLSyncKHR;
155
156/*
157* EGLTimeKHR is a 64-bit unsigned integer representing intervals
158* in nanoseconds.
159*/
160
161typedef 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
180EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
181EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
182EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
183EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
184EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
185#endif /* EGL_EGLEXT_PROTOTYPES */
186typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
187typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
188typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
189typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
190typedef 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