Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /* -*- mode: c; tab-width: 8; -*- */
  2. /* vi: set sw=4 ts=8: */
  3. /* Reference version of egl.h for EGL 1.4.
  4.  * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
  5.  */
  6.  
  7. /*
  8. ** Copyright (c) 2007-2009 The Khronos Group Inc.
  9. **
  10. ** Permission is hereby granted, free of charge, to any person obtaining a
  11. ** copy of this software and/or associated documentation files (the
  12. ** "Materials"), to deal in the Materials without restriction, including
  13. ** without limitation the rights to use, copy, modify, merge, publish,
  14. ** distribute, sublicense, and/or sell copies of the Materials, and to
  15. ** permit persons to whom the Materials are furnished to do so, subject to
  16. ** the following conditions:
  17. **
  18. ** The above copyright notice and this permission notice shall be included
  19. ** in all copies or substantial portions of the Materials.
  20. **
  21. ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  22. ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  23. ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  24. ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  25. ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  26. ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  27. ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
  28. */
  29.  
  30. #ifndef __egl_h_
  31. #define __egl_h_
  32.  
  33. /* All platform-dependent types and macro boilerplate (such as EGLAPI
  34.  * and EGLAPIENTRY) should go in eglplatform.h.
  35.  */
  36. #include <EGL/eglplatform.h>
  37.  
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41.  
  42. /* EGL Types */
  43. /* EGLint is defined in eglplatform.h */
  44. typedef unsigned int EGLBoolean;
  45. typedef unsigned int EGLenum;
  46. typedef void *EGLConfig;
  47. typedef void *EGLContext;
  48. typedef void *EGLDisplay;
  49. typedef void *EGLSurface;
  50. typedef void *EGLClientBuffer;
  51.  
  52. /* EGL Versioning */
  53. #define EGL_VERSION_1_0                 1
  54. #define EGL_VERSION_1_1                 1
  55. #define EGL_VERSION_1_2                 1
  56. #define EGL_VERSION_1_3                 1
  57. #define EGL_VERSION_1_4                 1
  58.  
  59. /* EGL Enumerants. Bitmasks and other exceptional cases aside, most
  60.  * enums are assigned unique values starting at 0x3000.
  61.  */
  62.  
  63. /* EGL aliases */
  64. #define EGL_FALSE                       0
  65. #define EGL_TRUE                        1
  66.  
  67. /* Out-of-band handle values */
  68. #define EGL_DEFAULT_DISPLAY             ((EGLNativeDisplayType)0)
  69. #define EGL_NO_CONTEXT                  ((EGLContext)0)
  70. #define EGL_NO_DISPLAY                  ((EGLDisplay)0)
  71. #define EGL_NO_SURFACE                  ((EGLSurface)0)
  72.  
  73. /* Out-of-band attribute value */
  74. #define EGL_DONT_CARE                   ((EGLint)-1)
  75.  
  76. /* Errors / GetError return values */
  77. #define EGL_SUCCESS                     0x3000
  78. #define EGL_NOT_INITIALIZED             0x3001
  79. #define EGL_BAD_ACCESS                  0x3002
  80. #define EGL_BAD_ALLOC                   0x3003
  81. #define EGL_BAD_ATTRIBUTE               0x3004
  82. #define EGL_BAD_CONFIG                  0x3005
  83. #define EGL_BAD_CONTEXT                 0x3006
  84. #define EGL_BAD_CURRENT_SURFACE         0x3007
  85. #define EGL_BAD_DISPLAY                 0x3008
  86. #define EGL_BAD_MATCH                   0x3009
  87. #define EGL_BAD_NATIVE_PIXMAP           0x300A
  88. #define EGL_BAD_NATIVE_WINDOW           0x300B
  89. #define EGL_BAD_PARAMETER               0x300C
  90. #define EGL_BAD_SURFACE                 0x300D
  91. #define EGL_CONTEXT_LOST                0x300E  /* EGL 1.1 - IMG_power_management */
  92.  
  93. /* Reserved 0x300F-0x301F for additional errors */
  94.  
  95. /* Config attributes */
  96. #define EGL_BUFFER_SIZE                 0x3020
  97. #define EGL_ALPHA_SIZE                  0x3021
  98. #define EGL_BLUE_SIZE                   0x3022
  99. #define EGL_GREEN_SIZE                  0x3023
  100. #define EGL_RED_SIZE                    0x3024
  101. #define EGL_DEPTH_SIZE                  0x3025
  102. #define EGL_STENCIL_SIZE                0x3026
  103. #define EGL_CONFIG_CAVEAT               0x3027
  104. #define EGL_CONFIG_ID                   0x3028
  105. #define EGL_LEVEL                       0x3029
  106. #define EGL_MAX_PBUFFER_HEIGHT          0x302A
  107. #define EGL_MAX_PBUFFER_PIXELS          0x302B
  108. #define EGL_MAX_PBUFFER_WIDTH           0x302C
  109. #define EGL_NATIVE_RENDERABLE           0x302D
  110. #define EGL_NATIVE_VISUAL_ID            0x302E
  111. #define EGL_NATIVE_VISUAL_TYPE          0x302F
  112. #define EGL_SAMPLES                     0x3031
  113. #define EGL_SAMPLE_BUFFERS              0x3032
  114. #define EGL_SURFACE_TYPE                0x3033
  115. #define EGL_TRANSPARENT_TYPE            0x3034
  116. #define EGL_TRANSPARENT_BLUE_VALUE      0x3035
  117. #define EGL_TRANSPARENT_GREEN_VALUE     0x3036
  118. #define EGL_TRANSPARENT_RED_VALUE       0x3037
  119. #define EGL_NONE                        0x3038  /* Attrib list terminator */
  120. #define EGL_BIND_TO_TEXTURE_RGB         0x3039
  121. #define EGL_BIND_TO_TEXTURE_RGBA        0x303A
  122. #define EGL_MIN_SWAP_INTERVAL           0x303B
  123. #define EGL_MAX_SWAP_INTERVAL           0x303C
  124. #define EGL_LUMINANCE_SIZE              0x303D
  125. #define EGL_ALPHA_MASK_SIZE             0x303E
  126. #define EGL_COLOR_BUFFER_TYPE           0x303F
  127. #define EGL_RENDERABLE_TYPE             0x3040
  128. #define EGL_MATCH_NATIVE_PIXMAP         0x3041  /* Pseudo-attribute (not queryable) */
  129. #define EGL_CONFORMANT                  0x3042
  130.  
  131. /* Reserved 0x3041-0x304F for additional config attributes */
  132.  
  133. /* Config attribute values */
  134. #define EGL_SLOW_CONFIG                 0x3050  /* EGL_CONFIG_CAVEAT value */
  135. #define EGL_NON_CONFORMANT_CONFIG       0x3051  /* EGL_CONFIG_CAVEAT value */
  136. #define EGL_TRANSPARENT_RGB             0x3052  /* EGL_TRANSPARENT_TYPE value */
  137. #define EGL_RGB_BUFFER                  0x308E  /* EGL_COLOR_BUFFER_TYPE value */
  138. #define EGL_LUMINANCE_BUFFER            0x308F  /* EGL_COLOR_BUFFER_TYPE value */
  139.  
  140. /* More config attribute values, for EGL_TEXTURE_FORMAT */
  141. #define EGL_NO_TEXTURE                  0x305C
  142. #define EGL_TEXTURE_RGB                 0x305D
  143. #define EGL_TEXTURE_RGBA                0x305E
  144. #define EGL_TEXTURE_2D                  0x305F
  145.  
  146. /* Config attribute mask bits */
  147. #define EGL_PBUFFER_BIT                 0x0001  /* EGL_SURFACE_TYPE mask bits */
  148. #define EGL_PIXMAP_BIT                  0x0002  /* EGL_SURFACE_TYPE mask bits */
  149. #define EGL_WINDOW_BIT                  0x0004  /* EGL_SURFACE_TYPE mask bits */
  150. #define EGL_VG_COLORSPACE_LINEAR_BIT    0x0020  /* EGL_SURFACE_TYPE mask bits */
  151. #define EGL_VG_ALPHA_FORMAT_PRE_BIT     0x0040  /* EGL_SURFACE_TYPE mask bits */
  152. #define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200  /* EGL_SURFACE_TYPE mask bits */
  153. #define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400  /* EGL_SURFACE_TYPE mask bits */
  154.  
  155. #define EGL_OPENGL_ES_BIT               0x0001  /* EGL_RENDERABLE_TYPE mask bits */
  156. #define EGL_OPENVG_BIT                  0x0002  /* EGL_RENDERABLE_TYPE mask bits */
  157. #define EGL_OPENGL_ES2_BIT              0x0004  /* EGL_RENDERABLE_TYPE mask bits */
  158. #define EGL_OPENGL_BIT                  0x0008  /* EGL_RENDERABLE_TYPE mask bits */
  159.  
  160. /* QueryString targets */
  161. #define EGL_VENDOR                      0x3053
  162. #define EGL_VERSION                     0x3054
  163. #define EGL_EXTENSIONS                  0x3055
  164. #define EGL_CLIENT_APIS                 0x308D
  165.  
  166. /* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
  167. #define EGL_HEIGHT                      0x3056
  168. #define EGL_WIDTH                       0x3057
  169. #define EGL_LARGEST_PBUFFER             0x3058
  170. #define EGL_TEXTURE_FORMAT              0x3080
  171. #define EGL_TEXTURE_TARGET              0x3081
  172. #define EGL_MIPMAP_TEXTURE              0x3082
  173. #define EGL_MIPMAP_LEVEL                0x3083
  174. #define EGL_RENDER_BUFFER               0x3086
  175. #define EGL_VG_COLORSPACE               0x3087
  176. #define EGL_VG_ALPHA_FORMAT             0x3088
  177. #define EGL_HORIZONTAL_RESOLUTION       0x3090
  178. #define EGL_VERTICAL_RESOLUTION         0x3091
  179. #define EGL_PIXEL_ASPECT_RATIO          0x3092
  180. #define EGL_SWAP_BEHAVIOR               0x3093
  181. #define EGL_MULTISAMPLE_RESOLVE         0x3099
  182.  
  183. /* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
  184. #define EGL_BACK_BUFFER                 0x3084
  185. #define EGL_SINGLE_BUFFER               0x3085
  186.  
  187. /* OpenVG color spaces */
  188. #define EGL_VG_COLORSPACE_sRGB          0x3089  /* EGL_VG_COLORSPACE value */
  189. #define EGL_VG_COLORSPACE_LINEAR        0x308A  /* EGL_VG_COLORSPACE value */
  190.  
  191. /* OpenVG alpha formats */
  192. #define EGL_VG_ALPHA_FORMAT_NONPRE      0x308B  /* EGL_ALPHA_FORMAT value */
  193. #define EGL_VG_ALPHA_FORMAT_PRE         0x308C  /* EGL_ALPHA_FORMAT value */
  194.  
  195. /* Constant scale factor by which fractional display resolutions &
  196.  * aspect ratio are scaled when queried as integer values.
  197.  */
  198. #define EGL_DISPLAY_SCALING             10000
  199.  
  200. /* Unknown display resolution/aspect ratio */
  201. #define EGL_UNKNOWN                     ((EGLint)-1)
  202.  
  203. /* Back buffer swap behaviors */
  204. #define EGL_BUFFER_PRESERVED            0x3094  /* EGL_SWAP_BEHAVIOR value */
  205. #define EGL_BUFFER_DESTROYED            0x3095  /* EGL_SWAP_BEHAVIOR value */
  206.  
  207. /* CreatePbufferFromClientBuffer buffer types */
  208. #define EGL_OPENVG_IMAGE                0x3096
  209.  
  210. /* QueryContext targets */
  211. #define EGL_CONTEXT_CLIENT_TYPE         0x3097
  212.  
  213. /* CreateContext attributes */
  214. #define EGL_CONTEXT_CLIENT_VERSION      0x3098
  215.  
  216. /* Multisample resolution behaviors */
  217. #define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A  /* EGL_MULTISAMPLE_RESOLVE value */
  218. #define EGL_MULTISAMPLE_RESOLVE_BOX     0x309B  /* EGL_MULTISAMPLE_RESOLVE value */
  219.  
  220. /* BindAPI/QueryAPI targets */
  221. #define EGL_OPENGL_ES_API               0x30A0
  222. #define EGL_OPENVG_API                  0x30A1
  223. #define EGL_OPENGL_API                  0x30A2
  224.  
  225. /* GetCurrentSurface targets */
  226. #define EGL_DRAW                        0x3059
  227. #define EGL_READ                        0x305A
  228.  
  229. /* WaitNative engines */
  230. #define EGL_CORE_NATIVE_ENGINE          0x305B
  231.  
  232. /* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
  233. #define EGL_COLORSPACE                  EGL_VG_COLORSPACE
  234. #define EGL_ALPHA_FORMAT                EGL_VG_ALPHA_FORMAT
  235. #define EGL_COLORSPACE_sRGB             EGL_VG_COLORSPACE_sRGB
  236. #define EGL_COLORSPACE_LINEAR           EGL_VG_COLORSPACE_LINEAR
  237. #define EGL_ALPHA_FORMAT_NONPRE         EGL_VG_ALPHA_FORMAT_NONPRE
  238. #define EGL_ALPHA_FORMAT_PRE            EGL_VG_ALPHA_FORMAT_PRE
  239.  
  240. /* EGL extensions must request enum blocks from the Khronos
  241.  * API Registrar, who maintains the enumerant registry. Submit
  242.  * a bug in Khronos Bugzilla against task "Registry".
  243.  */
  244.  
  245.  
  246.  
  247. /* EGL Functions */
  248.  
  249. EGLAPI EGLint EGLAPIENTRY eglGetError(void);
  250.  
  251. EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
  252. EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
  253. EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
  254.  
  255. EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
  256.  
  257. EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
  258.                          EGLint config_size, EGLint *num_config);
  259. EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
  260.                            EGLConfig *configs, EGLint config_size,
  261.                            EGLint *num_config);
  262. EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
  263.                               EGLint attribute, EGLint *value);
  264.  
  265. EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
  266.                                   EGLNativeWindowType win,
  267.                                   const EGLint *attrib_list);
  268. EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
  269.                                    const EGLint *attrib_list);
  270. EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
  271.                                   EGLNativePixmapType pixmap,
  272.                                   const EGLint *attrib_list);
  273. EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
  274. EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
  275.                            EGLint attribute, EGLint *value);
  276.  
  277. EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
  278. EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
  279.  
  280. EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
  281.  
  282. EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
  283.  
  284. EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
  285.               EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
  286.               EGLConfig config, const EGLint *attrib_list);
  287.  
  288. EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
  289.                             EGLint attribute, EGLint value);
  290. EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
  291. EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
  292.  
  293.  
  294. EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
  295.  
  296.  
  297. EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
  298.                             EGLContext share_context,
  299.                             const EGLint *attrib_list);
  300. EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
  301. EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
  302.                           EGLSurface read, EGLContext ctx);
  303.  
  304. EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
  305. EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
  306. EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
  307. EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
  308.                            EGLint attribute, EGLint *value);
  309.  
  310. EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
  311. EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
  312. EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
  313. EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
  314.                           EGLNativePixmapType target);
  315.  
  316. /* This is a generic function pointer type, whose name indicates it must
  317.  * be cast to the proper type *and calling convention* before use.
  318.  */
  319. typedef void (*__eglMustCastToProperFunctionPointerType)(void);
  320.  
  321. /* Now, define eglGetProcAddress using the generic function ptr. type */
  322. EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
  323.        eglGetProcAddress(const char *procname);
  324.  
  325. #ifdef __cplusplus
  326. }
  327. #endif
  328.  
  329. #endif /* __egl_h_ */
  330.