1 /* Sketchy version of egl.h (really only for reserving 2 * enumerant values to EGL tokens and sanity checking 3 * prototypes). 4 * 5 * Last modified 2006/08/13 6 */ 7 8 #ifndef __egl_h_ 9 #define __egl_h_ 10 11 /* Windows calling convention boilerplate */ 12 #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) 13 #define WIN32_LEAN_AND_MEAN 1 14 #include <windows.h> 15 #endif 16 17 #ifndef APIENTRY 18 #define APIENTRY 19 #endif 20 #ifndef EGLAPI 21 #define EGLAPI extern 22 #endif 23 24 25 /* EGL Types */ 26 #include <sys/types.h> 27 28 typedef int32_t EGLint; 29 typedef unsigned int EGLBoolean; 30 typedef unsigned int EGLenum; 31 typedef void *EGLConfig; 32 typedef void *EGLContext; 33 typedef void *EGLDisplay; 34 typedef void *EGLSurface; 35 typedef void *EGLClientBuffer; 36 /* NativeDisplayType, NativeWindowType, NativePixmapType TBD */ 37 38 /* EGL Versioning */ 39 #define EGL_VERSION_1_0 1 40 #define EGL_VERSION_1_1 1 41 #define EGL_VERSION_1_2 1 42 #define EGL_VERSION_1_3 1 43 44 /* EGL Enumerants. Exceptional cases aside, most 45 * enums are assigned unique values starting at 0x3000. 46 */ 47 48 /* EGL aliases */ 49 #define EGL_FALSE 0 50 #define EGL_TRUE 1 51 52 /* Out-of-band handle values */ 53 /* These values may vary depending on semantics of native concepts */ 54 #define EGL_DEFAULT_DISPLAY ((void *)0) 55 #define EGL_NO_CONTEXT ((EGLContext)0) 56 #define EGL_NO_DISPLAY ((EGLDisplay)0) 57 #define EGL_NO_SURFACE ((EGLSurface)0) 58 59 /* Out-of-band attribute value */ 60 #define EGL_DONT_CARE ((EGLint)-1) 61 62 /* Errors / GetError return values */ 63 #define EGL_SUCCESS 0x3000 64 #define EGL_NOT_INITIALIZED 0x3001 65 #define EGL_BAD_ACCESS 0x3002 66 #define EGL_BAD_ALLOC 0x3003 67 #define EGL_BAD_ATTRIBUTE 0x3004 68 #define EGL_BAD_CONFIG 0x3005 69 #define EGL_BAD_CONTEXT 0x3006 70 #define EGL_BAD_CURRENT_SURFACE 0x3007 71 #define EGL_BAD_DISPLAY 0x3008 72 #define EGL_BAD_MATCH 0x3009 73 #define EGL_BAD_NATIVE_PIXMAP 0x300A 74 #define EGL_BAD_NATIVE_WINDOW 0x300B 75 #define EGL_BAD_PARAMETER 0x300C 76 #define EGL_BAD_SURFACE 0x300D 77 #define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ 78 79 /* Reserved 0x300F-0x301F for additional errors */ 80 81 /* Config attributes */ 82 #define EGL_BUFFER_SIZE 0x3020 83 #define EGL_ALPHA_SIZE 0x3021 84 #define EGL_BLUE_SIZE 0x3022 85 #define EGL_GREEN_SIZE 0x3023 86 #define EGL_RED_SIZE 0x3024 87 #define EGL_DEPTH_SIZE 0x3025 88 #define EGL_STENCIL_SIZE 0x3026 89 #define EGL_CONFIG_CAVEAT 0x3027 90 #define EGL_CONFIG_ID 0x3028 91 #define EGL_LEVEL 0x3029 92 #define EGL_MAX_PBUFFER_HEIGHT 0x302A 93 #define EGL_MAX_PBUFFER_PIXELS 0x302B 94 #define EGL_MAX_PBUFFER_WIDTH 0x302C 95 #define EGL_NATIVE_RENDERABLE 0x302D 96 #define EGL_NATIVE_VISUAL_ID 0x302E 97 #define EGL_NATIVE_VISUAL_TYPE 0x302F 98 #define EGL_PRESERVED_RESOURCES 0x3030 99 #define EGL_SAMPLES 0x3031 100 #define EGL_SAMPLE_BUFFERS 0x3032 101 #define EGL_SURFACE_TYPE 0x3033 102 #define EGL_TRANSPARENT_TYPE 0x3034 103 #define EGL_TRANSPARENT_BLUE_VALUE 0x3035 104 #define EGL_TRANSPARENT_GREEN_VALUE 0x3036 105 #define EGL_TRANSPARENT_RED_VALUE 0x3037 106 #define EGL_NONE 0x3038 /* Attrib list terminator */ 107 #define EGL_BIND_TO_TEXTURE_RGB 0x3039 108 #define EGL_BIND_TO_TEXTURE_RGBA 0x303A 109 #define EGL_MIN_SWAP_INTERVAL 0x303B 110 #define EGL_MAX_SWAP_INTERVAL 0x303C 111 #define EGL_LUMINANCE_SIZE 0x303D 112 #define EGL_ALPHA_MASK_SIZE 0x303E 113 #define EGL_COLOR_BUFFER_TYPE 0x303F 114 #define EGL_RENDERABLE_TYPE 0x3040 115 #define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ 116 117 /* Reserved 0x3041-0x304F for additional config attributes */ 118 119 /* Config attribute values */ 120 #define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ 121 #define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ 122 #define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ 123 #define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ 124 #define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ 125 126 /* More config attribute values, for EGL_TEXTURE_FORMAT */ 127 #define EGL_NO_TEXTURE 0x305C 128 #define EGL_TEXTURE_RGB 0x305D 129 #define EGL_TEXTURE_RGBA 0x305E 130 #define EGL_TEXTURE_2D 0x305F 131 132 /* Config attribute mask bits */ 133 #define EGL_PBUFFER_BIT 0x01 /* EGL_SURFACE_TYPE mask bits */ 134 #define EGL_PIXMAP_BIT 0x02 /* EGL_SURFACE_TYPE mask bits */ 135 #define EGL_WINDOW_BIT 0x04 /* EGL_SURFACE_TYPE mask bits */ 136 #define EGL_OPENGL_ES_BIT 0x01 /* EGL_RENDERABLE_TYPE mask bits */ 137 #define EGL_OPENVG_BIT 0x02 /* EGL_RENDERABLE_TYPE mask bits */ 138 #define EGL_OPENGL_ES2_BIT 0x04 /* EGL_RENDERABLE_TYPE mask bits */ 139 140 /* QueryString targets */ 141 #define EGL_VENDOR 0x3053 142 #define EGL_VERSION 0x3054 143 #define EGL_EXTENSIONS 0x3055 144 #define EGL_CLIENT_APIS 0x308D 145 146 /* QuerySurface / CreatePbufferSurface targets */ 147 #define EGL_HEIGHT 0x3056 148 #define EGL_WIDTH 0x3057 149 #define EGL_LARGEST_PBUFFER 0x3058 150 #define EGL_TEXTURE_FORMAT 0x3080 151 #define EGL_TEXTURE_TARGET 0x3081 152 #define EGL_MIPMAP_TEXTURE 0x3082 153 #define EGL_MIPMAP_LEVEL 0x3083 154 #define EGL_RENDER_BUFFER 0x3086 155 #define EGL_COLORSPACE 0x3087 156 #define EGL_ALPHA_FORMAT 0x3088 157 #define EGL_HORIZONTAL_RESOLUTION 0x3090 158 #define EGL_VERTICAL_RESOLUTION 0x3091 159 #define EGL_PIXEL_ASPECT_RATIO 0x3092 160 #define EGL_SWAP_BEHAVIOR 0x3093 161 162 /* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ 163 #define EGL_BACK_BUFFER 0x3084 164 #define EGL_SINGLE_BUFFER 0x3085 165 166 /* OpenVG color spaces */ 167 #define EGL_COLORSPACE_sRGB 0x3089 /* EGL_COLORSPACE value */ 168 #define EGL_COLORSPACE_LINEAR 0x308A /* EGL_COLORSPACE value */ 169 170 /* OpenVG alpha formats */ 171 #define EGL_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ 172 #define EGL_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ 173 174 /* Constant scale factor by which fractional display resolutions & 175 * aspect ratio are scaled when queried as integer values. 176 */ 177 #define EGL_DISPLAY_SCALING 10000 178 179 /* Unknown display resolution/aspect ratio */ 180 #define EGL_UNKNOWN ((EGLint)-1) 181 182 /* Back buffer swap behaviors */ 183 #define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ 184 #define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ 185 186 /* CreatePbufferFromClientBuffer buffer types */ 187 #define EGL_OPENVG_IMAGE 0x3096 188 189 /* QueryContext targets */ 190 #define EGL_CONTEXT_CLIENT_TYPE 0x3097 191 192 /* CreateContext attributes */ 193 #define EGL_CONTEXT_CLIENT_VERSION 0x3098 194 195 /* BindAPI/QueryAPI targets */ 196 #define EGL_OPENGL_ES_API 0x30A0 197 #define EGL_OPENVG_API 0x30A1 198 199 /* GetCurrentSurface targets */ 200 #define EGL_DRAW 0x3059 201 #define EGL_READ 0x305A 202 203 /* WaitNative engines */ 204 #define EGL_CORE_NATIVE_ENGINE 0x305B 205 206 /* EGL extensions must request enum blocks from the OpenGL ARB 207 * Secretary, who maintains the EGL enumerant registry. 208 */ 209 210 211 212 /* EGL Functions */ 213 214 EGLAPI EGLint APIENTRY eglGetError(); 215 216 EGLAPI EGLDisplay APIENTRY eglGetDisplay(const char *display_id); 217 EGLAPI EGLBoolean APIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); 218 EGLAPI EGLBoolean APIENTRY eglTerminate(EGLDisplay dpy); 219 220 EGLAPI const char * APIENTRY eglQueryString(EGLDisplay dpy, EGLint name); 221 222 EGLAPI EGLBoolean APIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, 223 EGLint config_size, EGLint *num_config); 224 EGLAPI EGLBoolean APIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, 225 EGLConfig *configs, EGLint config_size, 226 EGLint *num_config); 227 EGLAPI EGLBoolean APIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, 228 EGLint attribute, EGLint *value); 229 230 EGLAPI EGLSurface APIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, 231 NativeWindowType win, 232 const EGLint *attrib_list); 233 EGLAPI EGLSurface APIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, 234 const EGLint *attrib_list); 235 EGLAPI EGLSurface APIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, 236 NativePixmapType pixmap, 237 const EGLint *attrib_list); 238 EGLAPI EGLBoolean APIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface); 239 EGLAPI EGLBoolean APIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, 240 EGLint attribute, EGLint *value); 241 242 EGLAPI EGLBoolean APIENTRY eglBindAPI(EGLenum api); 243 EGLAPI EGLenum APIENTRY eglQueryAPI(void); 244 245 EGLAPI EGLBoolean APIENTRY eglWaitClient(void); 246 247 EGLAPI EGLBoolean APIENTRY eglReleaseThread(void); 248 249 EGLAPI EGLSurface APIENTRY eglCreatePbufferFromClientBuffer( 250 EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, 251 EGLConfig config, const EGLint *attrib_list); 252 253 EGLAPI EGLBoolean APIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, 254 EGLint attribute, EGLint value); 255 EGLAPI EGLBoolean APIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); 256 EGLAPI EGLBoolean APIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); 257 258 259 EGLAPI EGLBoolean APIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval); 260 261 262 EGLAPI EGLContext APIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, 263 EGLContext share_context, 264 const EGLint *attrib_list); 265 EGLAPI EGLBoolean APIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx); 266 EGLAPI EGLBoolean APIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, 267 EGLSurface read, EGLContext ctx); 268 269 EGLAPI EGLContext APIENTRY eglGetCurrentContext(void); 270 EGLAPI EGLSurface APIENTRY eglGetCurrentSurface(EGLint readdraw); 271 EGLAPI EGLDisplay APIENTRY eglGetCurrentDisplay(void); 272 EGLAPI EGLBoolean APIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, 273 EGLint attribute, EGLint *value); 274 275 EGLAPI EGLBoolean APIENTRY eglWaitGL(void); 276 EGLAPI EGLBoolean APIENTRY eglWaitNative(EGLint engine); 277 EGLAPI EGLBoolean APIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); 278 EGLAPI EGLBoolean APIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, 279 NativePixmapType target); 280 281 EGLAPI void (* APIENTRY eglGetProcAddress(const char *procname))(); 282 283 #endif /* __egl_h_ */ 284