1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/egl/eglinterface/include/1.3/egl.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,346 @@
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 + */
1.42 +
1.43 +
1.44 +/* All platform-dependent types and macro boilerplate (such as EGLAPI
1.45 + * and EGLAPIENTRY) should go in egltypes.h.
1.46 + */
1.47 +#include <EGL/egltypes.h>
1.48 +
1.49 +#ifdef __cplusplus
1.50 +extern "C" {
1.51 +#endif
1.52 +
1.53 +/* EGL Versioning */
1.54 +#define EGL_VERSION_1_0 1
1.55 +#define EGL_VERSION_1_1 1
1.56 +#define EGL_VERSION_1_2 1
1.57 +#define EGL_VERSION_1_3 1
1.58 +
1.59 +/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
1.60 + * enums are assigned unique values starting at 0x3000.
1.61 + */
1.62 +
1.63 +/* EGL aliases */
1.64 +#define EGL_FALSE 0
1.65 +#define EGL_TRUE 1
1.66 +
1.67 +/* Out-of-band attribute value */
1.68 +#define EGL_DONT_CARE ((EGLint)-1)
1.69 +
1.70 +/* Errors / GetError return values */
1.71 +#define EGL_SUCCESS 0x3000
1.72 +#define EGL_NOT_INITIALIZED 0x3001
1.73 +#define EGL_BAD_ACCESS 0x3002
1.74 +#define EGL_BAD_ALLOC 0x3003
1.75 +#define EGL_BAD_ATTRIBUTE 0x3004
1.76 +#define EGL_BAD_CONFIG 0x3005
1.77 +#define EGL_BAD_CONTEXT 0x3006
1.78 +#define EGL_BAD_CURRENT_SURFACE 0x3007
1.79 +#define EGL_BAD_DISPLAY 0x3008
1.80 +#define EGL_BAD_MATCH 0x3009
1.81 +#define EGL_BAD_NATIVE_PIXMAP 0x300A
1.82 +#define EGL_BAD_NATIVE_WINDOW 0x300B
1.83 +#define EGL_BAD_PARAMETER 0x300C
1.84 +#define EGL_BAD_SURFACE 0x300D
1.85 +#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */
1.86 +
1.87 +/* Reserved 0x300F-0x301F for additional errors */
1.88 +
1.89 +/* Config attributes */
1.90 +#define EGL_BUFFER_SIZE 0x3020
1.91 +#define EGL_ALPHA_SIZE 0x3021
1.92 +#define EGL_BLUE_SIZE 0x3022
1.93 +#define EGL_GREEN_SIZE 0x3023
1.94 +#define EGL_RED_SIZE 0x3024
1.95 +#define EGL_DEPTH_SIZE 0x3025
1.96 +#define EGL_STENCIL_SIZE 0x3026
1.97 +#define EGL_CONFIG_CAVEAT 0x3027
1.98 +#define EGL_CONFIG_ID 0x3028
1.99 +#define EGL_LEVEL 0x3029
1.100 +#define EGL_MAX_PBUFFER_HEIGHT 0x302A
1.101 +#define EGL_MAX_PBUFFER_PIXELS 0x302B
1.102 +#define EGL_MAX_PBUFFER_WIDTH 0x302C
1.103 +#define EGL_NATIVE_RENDERABLE 0x302D
1.104 +#define EGL_NATIVE_VISUAL_ID 0x302E
1.105 +#define EGL_NATIVE_VISUAL_TYPE 0x302F
1.106 +#define EGL_PRESERVED_RESOURCES 0x3030
1.107 +#define EGL_SAMPLES 0x3031
1.108 +#define EGL_SAMPLE_BUFFERS 0x3032
1.109 +#define EGL_SURFACE_TYPE 0x3033
1.110 +#define EGL_TRANSPARENT_TYPE 0x3034
1.111 +#define EGL_TRANSPARENT_BLUE_VALUE 0x3035
1.112 +#define EGL_TRANSPARENT_GREEN_VALUE 0x3036
1.113 +#define EGL_TRANSPARENT_RED_VALUE 0x3037
1.114 +#define EGL_NONE 0x3038 /* Attrib list terminator */
1.115 +#define EGL_BIND_TO_TEXTURE_RGB 0x3039
1.116 +#define EGL_BIND_TO_TEXTURE_RGBA 0x303A
1.117 +#define EGL_MIN_SWAP_INTERVAL 0x303B
1.118 +#define EGL_MAX_SWAP_INTERVAL 0x303C
1.119 +#define EGL_LUMINANCE_SIZE 0x303D
1.120 +#define EGL_ALPHA_MASK_SIZE 0x303E
1.121 +#define EGL_COLOR_BUFFER_TYPE 0x303F
1.122 +#define EGL_RENDERABLE_TYPE 0x3040
1.123 +#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */
1.124 +#define EGL_CONFORMANT 0x3042
1.125 +
1.126 +/* Reserved 0x3041-0x304F for additional config attributes */
1.127 +
1.128 +/* Config attribute values */
1.129 +#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */
1.130 +#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */
1.131 +#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */
1.132 +#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */
1.133 +#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */
1.134 +
1.135 +/* More config attribute values, for EGL_TEXTURE_FORMAT */
1.136 +#define EGL_NO_TEXTURE 0x305C
1.137 +#define EGL_TEXTURE_RGB 0x305D
1.138 +#define EGL_TEXTURE_RGBA 0x305E
1.139 +#define EGL_TEXTURE_2D 0x305F
1.140 +
1.141 +/* Config attribute mask bits */
1.142 +#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */
1.143 +#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */
1.144 +#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */
1.145 +#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */
1.146 +#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */
1.147 +
1.148 +#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */
1.149 +#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */
1.150 +#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */
1.151 +
1.152 +/* QueryString targets */
1.153 +#define EGL_VENDOR 0x3053
1.154 +#define EGL_VERSION 0x3054
1.155 +#define EGL_EXTENSIONS 0x3055
1.156 +#define EGL_CLIENT_APIS 0x308D
1.157 +
1.158 +/* QuerySurface / CreatePbufferSurface targets */
1.159 +#define EGL_HEIGHT 0x3056
1.160 +#define EGL_WIDTH 0x3057
1.161 +#define EGL_LARGEST_PBUFFER 0x3058
1.162 +#define EGL_TEXTURE_FORMAT 0x3080
1.163 +#define EGL_TEXTURE_TARGET 0x3081
1.164 +#define EGL_MIPMAP_TEXTURE 0x3082
1.165 +#define EGL_MIPMAP_LEVEL 0x3083
1.166 +#define EGL_RENDER_BUFFER 0x3086
1.167 +#define EGL_VG_COLORSPACE 0x3087
1.168 +#define EGL_VG_ALPHA_FORMAT 0x3088
1.169 +#define EGL_HORIZONTAL_RESOLUTION 0x3090
1.170 +#define EGL_VERTICAL_RESOLUTION 0x3091
1.171 +#define EGL_PIXEL_ASPECT_RATIO 0x3092
1.172 +#define EGL_SWAP_BEHAVIOR 0x3093
1.173 +
1.174 +/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
1.175 +#define EGL_BACK_BUFFER 0x3084
1.176 +#define EGL_SINGLE_BUFFER 0x3085
1.177 +
1.178 +/* OpenVG color spaces */
1.179 +#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */
1.180 +#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */
1.181 +
1.182 +/* OpenVG alpha formats */
1.183 +#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */
1.184 +#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */
1.185 +
1.186 +/* Constant scale factor by which fractional display resolutions &
1.187 + * aspect ratio are scaled when queried as integer values.
1.188 + */
1.189 +#define EGL_DISPLAY_SCALING 10000
1.190 +
1.191 +/* Unknown display resolution/aspect ratio */
1.192 +#define EGL_UNKNOWN ((EGLint)-1)
1.193 +
1.194 +/* Back buffer swap behaviors */
1.195 +#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */
1.196 +#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */
1.197 +
1.198 +/* CreatePbufferFromClientBuffer buffer types */
1.199 +#define EGL_OPENVG_IMAGE 0x3096
1.200 +
1.201 +/* QueryContext targets */
1.202 +#define EGL_CONTEXT_CLIENT_TYPE 0x3097
1.203 +
1.204 +/* CreateContext attributes */
1.205 +#define EGL_CONTEXT_CLIENT_VERSION 0x3098
1.206 +
1.207 +/* BindAPI/QueryAPI targets */
1.208 +#define EGL_OPENGL_ES_API 0x30A0
1.209 +#define EGL_OPENVG_API 0x30A1
1.210 +
1.211 +/* GetCurrentSurface targets */
1.212 +#define EGL_DRAW 0x3059
1.213 +#define EGL_READ 0x305A
1.214 +
1.215 +/* WaitNative engines */
1.216 +#define EGL_CORE_NATIVE_ENGINE 0x305B
1.217 +
1.218 +/* eglCreateImageKHR buffer types */
1.219 +#define EGL_NATIVE_PIXMAP_KHR 0x30B0
1.220 +
1.221 +/* eglCreateImageKHR behavioural attribute */
1.222 +#define EGL_IMAGE_PRESERVED_SYMBIAN 0x30D2
1.223 +
1.224 +/* Accepted by the <type> parameter of eglCreateSyncKHR, and returned in <value>
1.225 + when eglGetSyncAttribKHR is called with <attribute> EGL_SYNC_TYPE_KHR */
1.226 +
1.227 +#define EGL_SYNC_REUSABLE_KHR 0x30FA
1.228 +
1.229 +/* Accepted by the <attribute> parameter of eglGetSyncAttribKHR */
1.230 +
1.231 +#define EGL_SYNC_TYPE_KHR 0x30F7
1.232 +#define EGL_SYNC_STATUS_KHR 0x30F1
1.233 +
1.234 +/* Accepted by the <mode> parameter of eglSignalSyncKHR and returned in <value>
1.235 + when eglGetSyncAttribKHR is called with <attribute> EGL_SYNC_STATUS_KHR */
1.236 +
1.237 +#define EGL_SIGNALED_KHR 0x30F2
1.238 +#define EGL_UNSIGNALED_KHR 0x30F3
1.239 +
1.240 +/* Accepted as in <flags> parameter of eglClientWaitSyncKHR */
1.241 +#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001
1.242 +
1.243 +/* Accepted in the <timeout> parameter of eglClientWaitSyncKHR */
1.244 +#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull
1.245 +
1.246 +/* Error code returned by eglClientWaitSyncKHR */
1.247 +
1.248 +#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5
1.249 +#define EGL_CONDITION_SATISFIED_KHR 0x30F6
1.250 +
1.251 +/* Returned by eglCreateSyncKHR in the event of an error*/
1.252 +
1.253 +#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0)
1.254 +
1.255 +/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
1.256 +#define EGL_COLORSPACE EGL_VG_COLORSPACE
1.257 +#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT
1.258 +#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB
1.259 +#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR
1.260 +#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE
1.261 +#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE
1.262 +
1.263 +/* EGL extensions must request enum blocks from the Khronos
1.264 + * API Registrar, who maintains the enumerant registry. Submit
1.265 + * a bug in Khronos Bugzilla against task "Registry".
1.266 + */
1.267 +
1.268 +
1.269 +
1.270 +/* EGL Functions */
1.271 +
1.272 +EGLAPI EGLint EGLAPIENTRY eglGetError(void);
1.273 +
1.274 +EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
1.275 +EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
1.276 +EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
1.277 +
1.278 +EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
1.279 +
1.280 +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
1.281 + EGLint config_size, EGLint *num_config);
1.282 +EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
1.283 + EGLConfig *configs, EGLint config_size,
1.284 + EGLint *num_config);
1.285 +EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
1.286 + EGLint attribute, EGLint *value);
1.287 +
1.288 +EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
1.289 + EGLNativeWindowType win,
1.290 + const EGLint *attrib_list);
1.291 +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
1.292 + const EGLint *attrib_list);
1.293 +EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
1.294 + EGLNativePixmapType pixmap,
1.295 + const EGLint *attrib_list);
1.296 +EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
1.297 +EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
1.298 + EGLint attribute, EGLint *value);
1.299 +
1.300 +EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
1.301 +EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
1.302 +
1.303 +EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
1.304 +
1.305 +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
1.306 +
1.307 +EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
1.308 + EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
1.309 + EGLConfig config, const EGLint *attrib_list);
1.310 +
1.311 +EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
1.312 + EGLint attribute, EGLint value);
1.313 +EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
1.314 +EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
1.315 +
1.316 +
1.317 +EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
1.318 +
1.319 +
1.320 +EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
1.321 + EGLContext share_context,
1.322 + const EGLint *attrib_list);
1.323 +EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
1.324 +EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
1.325 + EGLSurface read, EGLContext ctx);
1.326 +
1.327 +EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
1.328 +EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
1.329 +EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
1.330 +EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
1.331 + EGLint attribute, EGLint *value);
1.332 +
1.333 +EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
1.334 +EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
1.335 +EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
1.336 +EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
1.337 + EGLNativePixmapType target);
1.338 +
1.339 +#ifdef __cplusplus
1.340 +EGLAPI void (* EGLAPIENTRY eglGetProcAddress (const char *procname))(...);
1.341 +#else
1.342 +EGLAPI void (* EGLAPIENTRY eglGetProcAddress (const char *procname))();
1.343 +#endif
1.344 +
1.345 +#ifdef __cplusplus
1.346 +}
1.347 +#endif
1.348 +
1.349 +#endif /* __egl_h_ */