111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* -*- mode: c; tab-width: 8; -*- */
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* vi: set sw=4 ts=8: */
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Reference version of egl.h for EGL 1.4.
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** Copyright (c) 2007-2009 The Khronos Group Inc.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert**
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** Permission is hereby granted, free of charge, to any person obtaining a
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** copy of this software and/or associated documentation files (the
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** "Materials"), to deal in the Materials without restriction, including
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** without limitation the rights to use, copy, modify, merge, publish,
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** distribute, sublicense, and/or sell copies of the Materials, and to
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** permit persons to whom the Materials are furnished to do so, subject to
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** the following conditions:
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert**
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** The above copyright notice and this permission notice shall be included
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** in all copies or substantial portions of the Materials.
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert**
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert*/
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __egl_h_
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __egl_h_
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* All platform-dependent types and macro boilerplate (such as EGLAPI
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * and EGLAPIENTRY) should go in eglplatform.h.
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <EGL/eglplatform.h>
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern "C" {
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL Types */
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGLint is defined in eglplatform.h */
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned int EGLBoolean;
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned int EGLenum;
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void *EGLConfig;
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void *EGLContext;
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void *EGLDisplay;
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void *EGLSurface;
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void *EGLClientBuffer;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL Versioning */
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VERSION_1_0			1
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VERSION_1_1			1
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VERSION_1_2			1
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VERSION_1_3			1
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VERSION_1_4			1
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * enums are assigned unique values starting at 0x3000.
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL aliases */
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_FALSE			0
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TRUE			1
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Out-of-band handle values */
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_DEFAULT_DISPLAY		((EGLNativeDisplayType)0)
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NO_CONTEXT			((EGLContext)0)
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NO_DISPLAY			((EGLDisplay)0)
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NO_SURFACE			((EGLSurface)0)
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Out-of-band attribute value */
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_DONT_CARE			((EGLint)-1)
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Errors / GetError return values */
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SUCCESS			0x3000
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NOT_INITIALIZED		0x3001
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_ACCESS			0x3002
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_ALLOC			0x3003
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_ATTRIBUTE		0x3004
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_CONFIG			0x3005
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_CONTEXT			0x3006
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_CURRENT_SURFACE		0x3007
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_DISPLAY			0x3008
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_MATCH			0x3009
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_NATIVE_PIXMAP		0x300A
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_NATIVE_WINDOW		0x300B
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_PARAMETER		0x300C
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BAD_SURFACE			0x300D
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CONTEXT_LOST		0x300E	/* EGL 1.1 - IMG_power_management */
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Reserved 0x300F-0x301F for additional errors */
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Config attributes */
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BUFFER_SIZE			0x3020
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_ALPHA_SIZE			0x3021
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BLUE_SIZE			0x3022
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_GREEN_SIZE			0x3023
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_RED_SIZE			0x3024
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_DEPTH_SIZE			0x3025
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_STENCIL_SIZE		0x3026
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CONFIG_CAVEAT		0x3027
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CONFIG_ID			0x3028
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_LEVEL			0x3029
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MAX_PBUFFER_HEIGHT		0x302A
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MAX_PBUFFER_PIXELS		0x302B
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MAX_PBUFFER_WIDTH		0x302C
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NATIVE_RENDERABLE		0x302D
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NATIVE_VISUAL_ID		0x302E
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NATIVE_VISUAL_TYPE		0x302F
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SAMPLES			0x3031
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SAMPLE_BUFFERS		0x3032
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SURFACE_TYPE		0x3033
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TRANSPARENT_TYPE		0x3034
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TRANSPARENT_BLUE_VALUE	0x3035
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TRANSPARENT_GREEN_VALUE	0x3036
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TRANSPARENT_RED_VALUE	0x3037
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NONE			0x3038	/* Attrib list terminator */
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BIND_TO_TEXTURE_RGB		0x3039
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BIND_TO_TEXTURE_RGBA	0x303A
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MIN_SWAP_INTERVAL		0x303B
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MAX_SWAP_INTERVAL		0x303C
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_LUMINANCE_SIZE		0x303D
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_ALPHA_MASK_SIZE		0x303E
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_COLOR_BUFFER_TYPE		0x303F
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_RENDERABLE_TYPE		0x3040
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MATCH_NATIVE_PIXMAP		0x3041	/* Pseudo-attribute (not queryable) */
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CONFORMANT			0x3042
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Reserved 0x3041-0x304F for additional config attributes */
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Config attribute values */
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SLOW_CONFIG			0x3050	/* EGL_CONFIG_CAVEAT value */
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NON_CONFORMANT_CONFIG	0x3051	/* EGL_CONFIG_CAVEAT value */
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TRANSPARENT_RGB		0x3052	/* EGL_TRANSPARENT_TYPE value */
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_RGB_BUFFER			0x308E	/* EGL_COLOR_BUFFER_TYPE value */
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_LUMINANCE_BUFFER		0x308F	/* EGL_COLOR_BUFFER_TYPE value */
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* More config attribute values, for EGL_TEXTURE_FORMAT */
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_NO_TEXTURE			0x305C
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TEXTURE_RGB			0x305D
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TEXTURE_RGBA		0x305E
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TEXTURE_2D			0x305F
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Config attribute mask bits */
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_PBUFFER_BIT			0x0001	/* EGL_SURFACE_TYPE mask bits */
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_PIXMAP_BIT			0x0002	/* EGL_SURFACE_TYPE mask bits */
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_WINDOW_BIT			0x0004	/* EGL_SURFACE_TYPE mask bits */
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_COLORSPACE_LINEAR_BIT	0x0020	/* EGL_SURFACE_TYPE mask bits */
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_ALPHA_FORMAT_PRE_BIT	0x0040	/* EGL_SURFACE_TYPE mask bits */
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200	/* EGL_SURFACE_TYPE mask bits */
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400	/* EGL_SURFACE_TYPE mask bits */
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENGL_ES_BIT		0x0001	/* EGL_RENDERABLE_TYPE mask bits */
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENVG_BIT			0x0002	/* EGL_RENDERABLE_TYPE mask bits */
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENGL_ES2_BIT		0x0004	/* EGL_RENDERABLE_TYPE mask bits */
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENGL_BIT			0x0008	/* EGL_RENDERABLE_TYPE mask bits */
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* QueryString targets */
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VENDOR			0x3053
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VERSION			0x3054
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_EXTENSIONS			0x3055
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CLIENT_APIS			0x308D
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_HEIGHT			0x3056
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_WIDTH			0x3057
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_LARGEST_PBUFFER		0x3058
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TEXTURE_FORMAT		0x3080
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_TEXTURE_TARGET		0x3081
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MIPMAP_TEXTURE		0x3082
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MIPMAP_LEVEL		0x3083
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_RENDER_BUFFER		0x3086
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_COLORSPACE		0x3087
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_ALPHA_FORMAT		0x3088
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_HORIZONTAL_RESOLUTION	0x3090
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VERTICAL_RESOLUTION		0x3091
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_PIXEL_ASPECT_RATIO		0x3092
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SWAP_BEHAVIOR		0x3093
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MULTISAMPLE_RESOLVE		0x3099
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BACK_BUFFER			0x3084
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_SINGLE_BUFFER		0x3085
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* OpenVG color spaces */
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_COLORSPACE_sRGB		0x3089	/* EGL_VG_COLORSPACE value */
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_COLORSPACE_LINEAR	0x308A	/* EGL_VG_COLORSPACE value */
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* OpenVG alpha formats */
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_ALPHA_FORMAT_NONPRE	0x308B	/* EGL_ALPHA_FORMAT value */
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_VG_ALPHA_FORMAT_PRE		0x308C	/* EGL_ALPHA_FORMAT value */
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Constant scale factor by which fractional display resolutions &
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * aspect ratio are scaled when queried as integer values.
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_DISPLAY_SCALING		10000
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Unknown display resolution/aspect ratio */
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_UNKNOWN			((EGLint)-1)
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Back buffer swap behaviors */
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BUFFER_PRESERVED		0x3094	/* EGL_SWAP_BEHAVIOR value */
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_BUFFER_DESTROYED		0x3095	/* EGL_SWAP_BEHAVIOR value */
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* CreatePbufferFromClientBuffer buffer types */
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENVG_IMAGE		0x3096
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* QueryContext targets */
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CONTEXT_CLIENT_TYPE		0x3097
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* CreateContext attributes */
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CONTEXT_CLIENT_VERSION	0x3098
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Multisample resolution behaviors */
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A	/* EGL_MULTISAMPLE_RESOLVE value */
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_MULTISAMPLE_RESOLVE_BOX	0x309B	/* EGL_MULTISAMPLE_RESOLVE value */
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* BindAPI/QueryAPI targets */
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENGL_ES_API		0x30A0
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENVG_API			0x30A1
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_OPENGL_API			0x30A2
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* GetCurrentSurface targets */
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_DRAW			0x3059
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_READ			0x305A
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WaitNative engines */
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_CORE_NATIVE_ENGINE		0x305B
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_COLORSPACE			EGL_VG_COLORSPACE
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_ALPHA_FORMAT		EGL_VG_ALPHA_FORMAT
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_COLORSPACE_sRGB		EGL_VG_COLORSPACE_sRGB
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_COLORSPACE_LINEAR		EGL_VG_COLORSPACE_LINEAR
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_ALPHA_FORMAT_NONPRE		EGL_VG_ALPHA_FORMAT_NONPRE
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EGL_ALPHA_FORMAT_PRE		EGL_VG_ALPHA_FORMAT_PRE
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL extensions must request enum blocks from the Khronos
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * API Registrar, who maintains the enumerant registry. Submit
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * a bug in Khronos Bugzilla against task "Registry".
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EGL Functions */
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLint EGLAPIENTRY eglGetError(void);
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
25211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
25311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			 EGLint config_size, EGLint *num_config);
25911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			   EGLConfig *configs, EGLint config_size,
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			   EGLint *num_config);
26211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			      EGLint attribute, EGLint *value);
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert				  EGLNativeWindowType win,
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert				  const EGLint *attrib_list);
26811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert				   const EGLint *attrib_list);
27011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert				  EGLNativePixmapType pixmap,
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert				  const EGLint *attrib_list);
27311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
27411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			   EGLint attribute, EGLint *value);
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
27811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	      EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	      EGLConfig config, const EGLint *attrib_list);
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			    EGLint attribute, EGLint value);
29011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
29111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			    EGLContext share_context,
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			    const EGLint *attrib_list);
30011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
30111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			  EGLSurface read, EGLContext ctx);
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
30511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
30611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
30711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			   EGLint attribute, EGLint *value);
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
31111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
31211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
31311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert			  EGLNativePixmapType target);
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* This is a generic function pointer type, whose name indicates it must
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * be cast to the proper type *and calling convention* before use.
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (*__eglMustCastToProperFunctionPointerType)(void);
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Now, define eglGetProcAddress using the generic function ptr. type */
32211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertEGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert       eglGetProcAddress(const char *procname);
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __egl_h_ */
330