1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/angle/include/EGL/egl.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,329 @@ 1.4 +/* -*- mode: c; tab-width: 8; -*- */ 1.5 +/* vi: set sw=4 ts=8: */ 1.6 +/* Reference version of egl.h for EGL 1.4. 1.7 + * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $ 1.8 + */ 1.9 + 1.10 +/* 1.11 +** Copyright (c) 2007-2009 The Khronos Group Inc. 1.12 +** 1.13 +** Permission is hereby granted, free of charge, to any person obtaining a 1.14 +** copy of this software and/or associated documentation files (the 1.15 +** "Materials"), to deal in the Materials without restriction, including 1.16 +** without limitation the rights to use, copy, modify, merge, publish, 1.17 +** distribute, sublicense, and/or sell copies of the Materials, and to 1.18 +** permit persons to whom the Materials are furnished to do so, subject to 1.19 +** the following conditions: 1.20 +** 1.21 +** The above copyright notice and this permission notice shall be included 1.22 +** in all copies or substantial portions of the Materials. 1.23 +** 1.24 +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1.25 +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1.26 +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 1.27 +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 1.28 +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 1.29 +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 1.30 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 1.31 +*/ 1.32 + 1.33 +#ifndef __egl_h_ 1.34 +#define __egl_h_ 1.35 + 1.36 +/* All platform-dependent types and macro boilerplate (such as EGLAPI 1.37 + * and EGLAPIENTRY) should go in eglplatform.h. 1.38 + */ 1.39 +#include <EGL/eglplatform.h> 1.40 + 1.41 +#ifdef __cplusplus 1.42 +extern "C" { 1.43 +#endif 1.44 + 1.45 +/* EGL Types */ 1.46 +/* EGLint is defined in eglplatform.h */ 1.47 +typedef unsigned int EGLBoolean; 1.48 +typedef unsigned int EGLenum; 1.49 +typedef void *EGLConfig; 1.50 +typedef void *EGLContext; 1.51 +typedef void *EGLDisplay; 1.52 +typedef void *EGLSurface; 1.53 +typedef void *EGLClientBuffer; 1.54 + 1.55 +/* EGL Versioning */ 1.56 +#define EGL_VERSION_1_0 1 1.57 +#define EGL_VERSION_1_1 1 1.58 +#define EGL_VERSION_1_2 1 1.59 +#define EGL_VERSION_1_3 1 1.60 +#define EGL_VERSION_1_4 1 1.61 + 1.62 +/* EGL Enumerants. Bitmasks and other exceptional cases aside, most 1.63 + * enums are assigned unique values starting at 0x3000. 1.64 + */ 1.65 + 1.66 +/* EGL aliases */ 1.67 +#define EGL_FALSE 0 1.68 +#define EGL_TRUE 1 1.69 + 1.70 +/* Out-of-band handle values */ 1.71 +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) 1.72 +#define EGL_NO_CONTEXT ((EGLContext)0) 1.73 +#define EGL_NO_DISPLAY ((EGLDisplay)0) 1.74 +#define EGL_NO_SURFACE ((EGLSurface)0) 1.75 + 1.76 +/* Out-of-band attribute value */ 1.77 +#define EGL_DONT_CARE ((EGLint)-1) 1.78 + 1.79 +/* Errors / GetError return values */ 1.80 +#define EGL_SUCCESS 0x3000 1.81 +#define EGL_NOT_INITIALIZED 0x3001 1.82 +#define EGL_BAD_ACCESS 0x3002 1.83 +#define EGL_BAD_ALLOC 0x3003 1.84 +#define EGL_BAD_ATTRIBUTE 0x3004 1.85 +#define EGL_BAD_CONFIG 0x3005 1.86 +#define EGL_BAD_CONTEXT 0x3006 1.87 +#define EGL_BAD_CURRENT_SURFACE 0x3007 1.88 +#define EGL_BAD_DISPLAY 0x3008 1.89 +#define EGL_BAD_MATCH 0x3009 1.90 +#define EGL_BAD_NATIVE_PIXMAP 0x300A 1.91 +#define EGL_BAD_NATIVE_WINDOW 0x300B 1.92 +#define EGL_BAD_PARAMETER 0x300C 1.93 +#define EGL_BAD_SURFACE 0x300D 1.94 +#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ 1.95 + 1.96 +/* Reserved 0x300F-0x301F for additional errors */ 1.97 + 1.98 +/* Config attributes */ 1.99 +#define EGL_BUFFER_SIZE 0x3020 1.100 +#define EGL_ALPHA_SIZE 0x3021 1.101 +#define EGL_BLUE_SIZE 0x3022 1.102 +#define EGL_GREEN_SIZE 0x3023 1.103 +#define EGL_RED_SIZE 0x3024 1.104 +#define EGL_DEPTH_SIZE 0x3025 1.105 +#define EGL_STENCIL_SIZE 0x3026 1.106 +#define EGL_CONFIG_CAVEAT 0x3027 1.107 +#define EGL_CONFIG_ID 0x3028 1.108 +#define EGL_LEVEL 0x3029 1.109 +#define EGL_MAX_PBUFFER_HEIGHT 0x302A 1.110 +#define EGL_MAX_PBUFFER_PIXELS 0x302B 1.111 +#define EGL_MAX_PBUFFER_WIDTH 0x302C 1.112 +#define EGL_NATIVE_RENDERABLE 0x302D 1.113 +#define EGL_NATIVE_VISUAL_ID 0x302E 1.114 +#define EGL_NATIVE_VISUAL_TYPE 0x302F 1.115 +#define EGL_SAMPLES 0x3031 1.116 +#define EGL_SAMPLE_BUFFERS 0x3032 1.117 +#define EGL_SURFACE_TYPE 0x3033 1.118 +#define EGL_TRANSPARENT_TYPE 0x3034 1.119 +#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 1.120 +#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 1.121 +#define EGL_TRANSPARENT_RED_VALUE 0x3037 1.122 +#define EGL_NONE 0x3038 /* Attrib list terminator */ 1.123 +#define EGL_BIND_TO_TEXTURE_RGB 0x3039 1.124 +#define EGL_BIND_TO_TEXTURE_RGBA 0x303A 1.125 +#define EGL_MIN_SWAP_INTERVAL 0x303B 1.126 +#define EGL_MAX_SWAP_INTERVAL 0x303C 1.127 +#define EGL_LUMINANCE_SIZE 0x303D 1.128 +#define EGL_ALPHA_MASK_SIZE 0x303E 1.129 +#define EGL_COLOR_BUFFER_TYPE 0x303F 1.130 +#define EGL_RENDERABLE_TYPE 0x3040 1.131 +#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ 1.132 +#define EGL_CONFORMANT 0x3042 1.133 + 1.134 +/* Reserved 0x3041-0x304F for additional config attributes */ 1.135 + 1.136 +/* Config attribute values */ 1.137 +#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ 1.138 +#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ 1.139 +#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ 1.140 +#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ 1.141 +#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ 1.142 + 1.143 +/* More config attribute values, for EGL_TEXTURE_FORMAT */ 1.144 +#define EGL_NO_TEXTURE 0x305C 1.145 +#define EGL_TEXTURE_RGB 0x305D 1.146 +#define EGL_TEXTURE_RGBA 0x305E 1.147 +#define EGL_TEXTURE_2D 0x305F 1.148 + 1.149 +/* Config attribute mask bits */ 1.150 +#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */ 1.151 +#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */ 1.152 +#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */ 1.153 +#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */ 1.154 +#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */ 1.155 +#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */ 1.156 +#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */ 1.157 + 1.158 +#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */ 1.159 +#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */ 1.160 +#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */ 1.161 +#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */ 1.162 + 1.163 +/* QueryString targets */ 1.164 +#define EGL_VENDOR 0x3053 1.165 +#define EGL_VERSION 0x3054 1.166 +#define EGL_EXTENSIONS 0x3055 1.167 +#define EGL_CLIENT_APIS 0x308D 1.168 + 1.169 +/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */ 1.170 +#define EGL_HEIGHT 0x3056 1.171 +#define EGL_WIDTH 0x3057 1.172 +#define EGL_LARGEST_PBUFFER 0x3058 1.173 +#define EGL_TEXTURE_FORMAT 0x3080 1.174 +#define EGL_TEXTURE_TARGET 0x3081 1.175 +#define EGL_MIPMAP_TEXTURE 0x3082 1.176 +#define EGL_MIPMAP_LEVEL 0x3083 1.177 +#define EGL_RENDER_BUFFER 0x3086 1.178 +#define EGL_VG_COLORSPACE 0x3087 1.179 +#define EGL_VG_ALPHA_FORMAT 0x3088 1.180 +#define EGL_HORIZONTAL_RESOLUTION 0x3090 1.181 +#define EGL_VERTICAL_RESOLUTION 0x3091 1.182 +#define EGL_PIXEL_ASPECT_RATIO 0x3092 1.183 +#define EGL_SWAP_BEHAVIOR 0x3093 1.184 +#define EGL_MULTISAMPLE_RESOLVE 0x3099 1.185 + 1.186 +/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ 1.187 +#define EGL_BACK_BUFFER 0x3084 1.188 +#define EGL_SINGLE_BUFFER 0x3085 1.189 + 1.190 +/* OpenVG color spaces */ 1.191 +#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */ 1.192 +#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */ 1.193 + 1.194 +/* OpenVG alpha formats */ 1.195 +#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ 1.196 +#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ 1.197 + 1.198 +/* Constant scale factor by which fractional display resolutions & 1.199 + * aspect ratio are scaled when queried as integer values. 1.200 + */ 1.201 +#define EGL_DISPLAY_SCALING 10000 1.202 + 1.203 +/* Unknown display resolution/aspect ratio */ 1.204 +#define EGL_UNKNOWN ((EGLint)-1) 1.205 + 1.206 +/* Back buffer swap behaviors */ 1.207 +#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ 1.208 +#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ 1.209 + 1.210 +/* CreatePbufferFromClientBuffer buffer types */ 1.211 +#define EGL_OPENVG_IMAGE 0x3096 1.212 + 1.213 +/* QueryContext targets */ 1.214 +#define EGL_CONTEXT_CLIENT_TYPE 0x3097 1.215 + 1.216 +/* CreateContext attributes */ 1.217 +#define EGL_CONTEXT_CLIENT_VERSION 0x3098 1.218 + 1.219 +/* Multisample resolution behaviors */ 1.220 +#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */ 1.221 +#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */ 1.222 + 1.223 +/* BindAPI/QueryAPI targets */ 1.224 +#define EGL_OPENGL_ES_API 0x30A0 1.225 +#define EGL_OPENVG_API 0x30A1 1.226 +#define EGL_OPENGL_API 0x30A2 1.227 + 1.228 +/* GetCurrentSurface targets */ 1.229 +#define EGL_DRAW 0x3059 1.230 +#define EGL_READ 0x305A 1.231 + 1.232 +/* WaitNative engines */ 1.233 +#define EGL_CORE_NATIVE_ENGINE 0x305B 1.234 + 1.235 +/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */ 1.236 +#define EGL_COLORSPACE EGL_VG_COLORSPACE 1.237 +#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT 1.238 +#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB 1.239 +#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR 1.240 +#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE 1.241 +#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE 1.242 + 1.243 +/* EGL extensions must request enum blocks from the Khronos 1.244 + * API Registrar, who maintains the enumerant registry. Submit 1.245 + * a bug in Khronos Bugzilla against task "Registry". 1.246 + */ 1.247 + 1.248 + 1.249 + 1.250 +/* EGL Functions */ 1.251 + 1.252 +EGLAPI EGLint EGLAPIENTRY eglGetError(void); 1.253 + 1.254 +EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id); 1.255 +EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); 1.256 +EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy); 1.257 + 1.258 +EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name); 1.259 + 1.260 +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, 1.261 + EGLint config_size, EGLint *num_config); 1.262 +EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, 1.263 + EGLConfig *configs, EGLint config_size, 1.264 + EGLint *num_config); 1.265 +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, 1.266 + EGLint attribute, EGLint *value); 1.267 + 1.268 +EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, 1.269 + EGLNativeWindowType win, 1.270 + const EGLint *attrib_list); 1.271 +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, 1.272 + const EGLint *attrib_list); 1.273 +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, 1.274 + EGLNativePixmapType pixmap, 1.275 + const EGLint *attrib_list); 1.276 +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface); 1.277 +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, 1.278 + EGLint attribute, EGLint *value); 1.279 + 1.280 +EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api); 1.281 +EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void); 1.282 + 1.283 +EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void); 1.284 + 1.285 +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void); 1.286 + 1.287 +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( 1.288 + EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, 1.289 + EGLConfig config, const EGLint *attrib_list); 1.290 + 1.291 +EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, 1.292 + EGLint attribute, EGLint value); 1.293 +EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); 1.294 +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); 1.295 + 1.296 + 1.297 +EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval); 1.298 + 1.299 + 1.300 +EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, 1.301 + EGLContext share_context, 1.302 + const EGLint *attrib_list); 1.303 +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx); 1.304 +EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, 1.305 + EGLSurface read, EGLContext ctx); 1.306 + 1.307 +EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void); 1.308 +EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw); 1.309 +EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void); 1.310 +EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, 1.311 + EGLint attribute, EGLint *value); 1.312 + 1.313 +EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void); 1.314 +EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine); 1.315 +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); 1.316 +EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, 1.317 + EGLNativePixmapType target); 1.318 + 1.319 +/* This is a generic function pointer type, whose name indicates it must 1.320 + * be cast to the proper type *and calling convention* before use. 1.321 + */ 1.322 +typedef void (*__eglMustCastToProperFunctionPointerType)(void); 1.323 + 1.324 +/* Now, define eglGetProcAddress using the generic function ptr. type */ 1.325 +EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY 1.326 + eglGetProcAddress(const char *procname); 1.327 + 1.328 +#ifdef __cplusplus 1.329 +} 1.330 +#endif 1.331 + 1.332 +#endif /* __egl_h_ */