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