12b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* -*- mode: c; tab-width: 8; -*- */
22b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* vi: set sw=4 ts=8: */
32b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Reference version of egl.h for EGL 1.4.
42b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
52b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn */
62b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
72b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/*
82b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** Copyright (c) 2007-2009 The Khronos Group Inc.
92b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn**
102b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** Permission is hereby granted, free of charge, to any person obtaining a
112b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** copy of this software and/or associated documentation files (the
122b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** "Materials"), to deal in the Materials without restriction, including
132b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** without limitation the rights to use, copy, modify, merge, publish,
142b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** distribute, sublicense, and/or sell copies of the Materials, and to
152b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** permit persons to whom the Materials are furnished to do so, subject to
162b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** the following conditions:
172b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn**
182b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** The above copyright notice and this permission notice shall be included
192b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** in all copies or substantial portions of the Materials.
202b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn**
212b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
222b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
232b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
242b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
252b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
262b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
272b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
282b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn*/
292b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
302b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#ifndef __egl_h_
312b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define __egl_h_
322b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
332b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* All platform-dependent types and macro boilerplate (such as EGLAPI
342b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn * and EGLAPIENTRY) should go in eglplatform.h.
352b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn */
362b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#include <EGL/eglplatform.h>
372b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
382b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#ifdef __cplusplus
392b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackbornextern "C" {
402b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#endif
412b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
422b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL Types */
432b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGLint is defined in eglplatform.h */
442b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef unsigned int EGLBoolean;
452b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef unsigned int EGLenum;
462b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef void *EGLConfig;
472b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef void *EGLContext;
482b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef void *EGLDisplay;
492b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef void *EGLSurface;
502b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef void *EGLClientBuffer;
512b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
522b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL Versioning */
532b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VERSION_1_0			1
542b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VERSION_1_1			1
552b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VERSION_1_2			1
562b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VERSION_1_3			1
572b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VERSION_1_4			1
582b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
592b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
602b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn * enums are assigned unique values starting at 0x3000.
612b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn */
622b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
632b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL aliases */
642b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_FALSE			0
652b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TRUE			1
662b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
672b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Out-of-band handle values */
682b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_DEFAULT_DISPLAY		((EGLNativeDisplayType)0)
692b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NO_CONTEXT			((EGLContext)0)
702b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NO_DISPLAY			((EGLDisplay)0)
712b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NO_SURFACE			((EGLSurface)0)
722b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
732b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Out-of-band attribute value */
742b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_DONT_CARE			((EGLint)-1)
752b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
762b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Errors / GetError return values */
772b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SUCCESS			0x3000
782b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NOT_INITIALIZED		0x3001
792b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_ACCESS			0x3002
802b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_ALLOC			0x3003
812b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_ATTRIBUTE		0x3004
822b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_CONFIG			0x3005
832b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_CONTEXT			0x3006
842b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_CURRENT_SURFACE		0x3007
852b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_DISPLAY			0x3008
862b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_MATCH			0x3009
872b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_NATIVE_PIXMAP		0x300A
882b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_NATIVE_WINDOW		0x300B
892b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_PARAMETER		0x300C
902b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BAD_SURFACE			0x300D
912b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CONTEXT_LOST		0x300E	/* EGL 1.1 - IMG_power_management */
922b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
932b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Reserved 0x300F-0x301F for additional errors */
942b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
952b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Config attributes */
962b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BUFFER_SIZE			0x3020
972b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_ALPHA_SIZE			0x3021
982b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BLUE_SIZE			0x3022
992b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_GREEN_SIZE			0x3023
1002b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_RED_SIZE			0x3024
1012b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_DEPTH_SIZE			0x3025
1022b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_STENCIL_SIZE		0x3026
1032b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CONFIG_CAVEAT		0x3027
1042b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CONFIG_ID			0x3028
1052b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_LEVEL			0x3029
1062b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MAX_PBUFFER_HEIGHT		0x302A
1072b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MAX_PBUFFER_PIXELS		0x302B
1082b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MAX_PBUFFER_WIDTH		0x302C
1092b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NATIVE_RENDERABLE		0x302D
1102b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NATIVE_VISUAL_ID		0x302E
1112b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NATIVE_VISUAL_TYPE		0x302F
1122b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SAMPLES			0x3031
1132b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SAMPLE_BUFFERS		0x3032
1142b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SURFACE_TYPE		0x3033
1152b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TRANSPARENT_TYPE		0x3034
1162b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TRANSPARENT_BLUE_VALUE	0x3035
1172b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TRANSPARENT_GREEN_VALUE	0x3036
1182b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TRANSPARENT_RED_VALUE	0x3037
1192b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NONE			0x3038	/* Attrib list terminator */
1202b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BIND_TO_TEXTURE_RGB		0x3039
1212b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BIND_TO_TEXTURE_RGBA	0x303A
1222b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MIN_SWAP_INTERVAL		0x303B
1232b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MAX_SWAP_INTERVAL		0x303C
1242b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_LUMINANCE_SIZE		0x303D
1252b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_ALPHA_MASK_SIZE		0x303E
1262b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_COLOR_BUFFER_TYPE		0x303F
1272b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_RENDERABLE_TYPE		0x3040
1282b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MATCH_NATIVE_PIXMAP		0x3041	/* Pseudo-attribute (not queryable) */
1292b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CONFORMANT			0x3042
1302b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1312b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Reserved 0x3041-0x304F for additional config attributes */
1322b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1332b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Config attribute values */
1342b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SLOW_CONFIG			0x3050	/* EGL_CONFIG_CAVEAT value */
1352b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NON_CONFORMANT_CONFIG	0x3051	/* EGL_CONFIG_CAVEAT value */
1362b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TRANSPARENT_RGB		0x3052	/* EGL_TRANSPARENT_TYPE value */
1372b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_RGB_BUFFER			0x308E	/* EGL_COLOR_BUFFER_TYPE value */
1382b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_LUMINANCE_BUFFER		0x308F	/* EGL_COLOR_BUFFER_TYPE value */
1392b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1402b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* More config attribute values, for EGL_TEXTURE_FORMAT */
1412b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_NO_TEXTURE			0x305C
1422b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TEXTURE_RGB			0x305D
1432b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TEXTURE_RGBA		0x305E
1442b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TEXTURE_2D			0x305F
1452b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1462b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Config attribute mask bits */
1472b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_PBUFFER_BIT			0x0001	/* EGL_SURFACE_TYPE mask bits */
1482b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_PIXMAP_BIT			0x0002	/* EGL_SURFACE_TYPE mask bits */
1492b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_WINDOW_BIT			0x0004	/* EGL_SURFACE_TYPE mask bits */
1502b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_COLORSPACE_LINEAR_BIT	0x0020	/* EGL_SURFACE_TYPE mask bits */
1512b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_ALPHA_FORMAT_PRE_BIT	0x0040	/* EGL_SURFACE_TYPE mask bits */
1522b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200	/* EGL_SURFACE_TYPE mask bits */
1532b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400	/* EGL_SURFACE_TYPE mask bits */
1542b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1552b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENGL_ES_BIT		0x0001	/* EGL_RENDERABLE_TYPE mask bits */
1562b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENVG_BIT			0x0002	/* EGL_RENDERABLE_TYPE mask bits */
1572b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENGL_ES2_BIT		0x0004	/* EGL_RENDERABLE_TYPE mask bits */
1582b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENGL_BIT			0x0008	/* EGL_RENDERABLE_TYPE mask bits */
1592b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1602b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* QueryString targets */
1612b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VENDOR			0x3053
1622b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VERSION			0x3054
1632b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_EXTENSIONS			0x3055
1642b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CLIENT_APIS			0x308D
1652b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1662b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
1672b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_HEIGHT			0x3056
1682b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_WIDTH			0x3057
1692b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_LARGEST_PBUFFER		0x3058
1702b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TEXTURE_FORMAT		0x3080
1712b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_TEXTURE_TARGET		0x3081
1722b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MIPMAP_TEXTURE		0x3082
1732b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MIPMAP_LEVEL		0x3083
1742b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_RENDER_BUFFER		0x3086
1752b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_COLORSPACE		0x3087
1762b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_ALPHA_FORMAT		0x3088
1772b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_HORIZONTAL_RESOLUTION	0x3090
1782b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VERTICAL_RESOLUTION		0x3091
1792b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_PIXEL_ASPECT_RATIO		0x3092
1802b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SWAP_BEHAVIOR		0x3093
1812b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MULTISAMPLE_RESOLVE		0x3099
1822b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1832b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
1842b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BACK_BUFFER			0x3084
1852b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_SINGLE_BUFFER		0x3085
1862b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1872b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* OpenVG color spaces */
1882b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_COLORSPACE_sRGB		0x3089	/* EGL_VG_COLORSPACE value */
1892b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_COLORSPACE_LINEAR	0x308A	/* EGL_VG_COLORSPACE value */
1902b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1912b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* OpenVG alpha formats */
1922b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_ALPHA_FORMAT_NONPRE	0x308B	/* EGL_ALPHA_FORMAT value */
1932b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_VG_ALPHA_FORMAT_PRE		0x308C	/* EGL_ALPHA_FORMAT value */
1942b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
1952b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Constant scale factor by which fractional display resolutions &
1962b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn * aspect ratio are scaled when queried as integer values.
1972b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn */
1982b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_DISPLAY_SCALING		10000
1992b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2002b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Unknown display resolution/aspect ratio */
2012b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_UNKNOWN			((EGLint)-1)
2022b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2032b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Back buffer swap behaviors */
2042b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BUFFER_PRESERVED		0x3094	/* EGL_SWAP_BEHAVIOR value */
2052b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_BUFFER_DESTROYED		0x3095	/* EGL_SWAP_BEHAVIOR value */
2062b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2072b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* CreatePbufferFromClientBuffer buffer types */
2082b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENVG_IMAGE		0x3096
2092b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2102b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* QueryContext targets */
2112b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CONTEXT_CLIENT_TYPE		0x3097
2122b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2132b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* CreateContext attributes */
2142b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CONTEXT_CLIENT_VERSION	0x3098
2152b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2162b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Multisample resolution behaviors */
2172b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A	/* EGL_MULTISAMPLE_RESOLVE value */
2182b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_MULTISAMPLE_RESOLVE_BOX	0x309B	/* EGL_MULTISAMPLE_RESOLVE value */
2192b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2202b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* BindAPI/QueryAPI targets */
2212b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENGL_ES_API		0x30A0
2222b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENVG_API			0x30A1
2232b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_OPENGL_API			0x30A2
2242b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2252b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* GetCurrentSurface targets */
2262b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_DRAW			0x3059
2272b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_READ			0x305A
2282b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2292b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* WaitNative engines */
2302b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_CORE_NATIVE_ENGINE		0x305B
2312b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2322b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
2332b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_COLORSPACE			EGL_VG_COLORSPACE
2342b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_ALPHA_FORMAT		EGL_VG_ALPHA_FORMAT
2352b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_COLORSPACE_sRGB		EGL_VG_COLORSPACE_sRGB
2362b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_COLORSPACE_LINEAR		EGL_VG_COLORSPACE_LINEAR
2372b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_ALPHA_FORMAT_NONPRE		EGL_VG_ALPHA_FORMAT_NONPRE
2382b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#define EGL_ALPHA_FORMAT_PRE		EGL_VG_ALPHA_FORMAT_PRE
2392b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2402b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL extensions must request enum blocks from the Khronos
2412b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn * API Registrar, who maintains the enumerant registry. Submit
2422b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn * a bug in Khronos Bugzilla against task "Registry".
2432b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn */
2442b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2452b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2462b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2472b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* EGL Functions */
2482b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2492b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLint EGLAPIENTRY eglGetError(void);
2502b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2512b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
2522b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
2532b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
2542b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2552b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
2562b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2572b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
2582b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			 EGLint config_size, EGLint *num_config);
2592b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
2602b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			   EGLConfig *configs, EGLint config_size,
2612b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			   EGLint *num_config);
2622b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
2632b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			      EGLint attribute, EGLint *value);
2642b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2652b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
2662b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn				  EGLNativeWindowType win,
2672b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn				  const EGLint *attrib_list);
2682b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
2692b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn				   const EGLint *attrib_list);
2702b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
2712b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn				  EGLNativePixmapType pixmap,
2722b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn				  const EGLint *attrib_list);
2732b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
2742b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
2752b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			   EGLint attribute, EGLint *value);
2762b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2772b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
2782b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
2792b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2802b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
2812b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2822b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
2832b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2842b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
2852b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn	      EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
2862b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn	      EGLConfig config, const EGLint *attrib_list);
2872b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2882b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
2892b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			    EGLint attribute, EGLint value);
2902b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
2912b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
2922b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2932b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2942b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
2952b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2962b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
2972b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
2982b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			    EGLContext share_context,
2992b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			    const EGLint *attrib_list);
3002b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
3012b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
3022b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			  EGLSurface read, EGLContext ctx);
3032b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
3042b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
3052b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
3062b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
3072b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
3082b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			   EGLint attribute, EGLint *value);
3092b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
3102b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
3112b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
3122b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
3132b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
3142b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn			  EGLNativePixmapType target);
3152b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
3162b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* This is a generic function pointer type, whose name indicates it must
3172b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn * be cast to the proper type *and calling convention* before use.
3182b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn */
3192b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborntypedef void (*__eglMustCastToProperFunctionPointerType)(void);
3202b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
3212b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn/* Now, define eglGetProcAddress using the generic function ptr. type */
3222b352d76d84817725bf530e7e33f3b47ffb15401Dianne HackbornEGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
3232b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn       eglGetProcAddress(const char *procname);
3242b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
3252b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#ifdef __cplusplus
3262b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn}
3272b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#endif
3282b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn
3292b352d76d84817725bf530e7e33f3b47ffb15401Dianne Hackborn#endif /* __egl_h_ */
330