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