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