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