tizen 2.4 release
[framework/graphics/coregl.git] / src / headers / egl.h
1 //------------------------------------------------------//
2 //                         EGL
3 //------------------------------------------------------//
4
5 /* EGL Types */
6 /* EGLint is defined in eglplatform.h */
7
8 typedef unsigned int EGLBoolean;
9 typedef unsigned int EGLenum;
10 typedef void *EGLConfig;
11 typedef void *EGLContext;
12 typedef void *EGLDisplay;
13 typedef void *EGLSurface;
14 typedef void *EGLClientBuffer;
15
16 /* EGL Versioning */
17 #define EGL_VERSION_1_0                 1
18 #define EGL_VERSION_1_1                 1
19 #define EGL_VERSION_1_2                 1
20 #define EGL_VERSION_1_3                 1
21 #define EGL_VERSION_1_4                 1
22
23 /* EGL Enumerants. Bitmasks and other exceptional cases aside, most
24  * enums are assigned unique values starting at 0x3000.
25  */
26
27 /* EGL aliases */
28 #define EGL_FALSE                       0
29 #define EGL_TRUE                        1
30
31 /* Out-of-band handle values */
32 #define EGL_DEFAULT_DISPLAY             ((EGLNativeDisplayType)0)
33 #define EGL_NO_CONTEXT                  ((EGLContext)0)
34 #define EGL_NO_DISPLAY                  ((EGLDisplay)0)
35 #define EGL_NO_SURFACE                  ((EGLSurface)0)
36
37 /* Out-of-band attribute value */
38 #define EGL_DONT_CARE                   ((EGLint)-1)
39
40 /* Errors / GetError return values */
41 #define EGL_SUCCESS                     0x3000
42 #define EGL_NOT_INITIALIZED             0x3001
43 #define EGL_BAD_ACCESS                  0x3002
44 #define EGL_BAD_ALLOC                   0x3003
45 #define EGL_BAD_ATTRIBUTE               0x3004
46 #define EGL_BAD_CONFIG                  0x3005
47 #define EGL_BAD_CONTEXT                 0x3006
48 #define EGL_BAD_CURRENT_SURFACE         0x3007
49 #define EGL_BAD_DISPLAY                 0x3008
50 #define EGL_BAD_MATCH                   0x3009
51 #define EGL_BAD_NATIVE_PIXMAP           0x300A
52 #define EGL_BAD_NATIVE_WINDOW           0x300B
53 #define EGL_BAD_PARAMETER               0x300C
54 #define EGL_BAD_SURFACE                 0x300D
55 #define EGL_CONTEXT_LOST                0x300E  /* EGL 1.1 - IMG_power_management */
56
57 /* Reserved 0x300F-0x301F for additional errors */
58
59 /* Config attributes */
60 #define EGL_BUFFER_SIZE                 0x3020
61 #define EGL_ALPHA_SIZE                  0x3021
62 #define EGL_BLUE_SIZE                   0x3022
63 #define EGL_GREEN_SIZE                  0x3023
64 #define EGL_RED_SIZE                    0x3024
65 #define EGL_DEPTH_SIZE                  0x3025
66 #define EGL_STENCIL_SIZE                0x3026
67 #define EGL_CONFIG_CAVEAT               0x3027
68 #define EGL_CONFIG_ID                   0x3028
69 #define EGL_LEVEL                       0x3029
70 #define EGL_MAX_PBUFFER_HEIGHT          0x302A
71 #define EGL_MAX_PBUFFER_PIXELS          0x302B
72 #define EGL_MAX_PBUFFER_WIDTH           0x302C
73 #define EGL_NATIVE_RENDERABLE           0x302D
74 #define EGL_NATIVE_VISUAL_ID            0x302E
75 #define EGL_NATIVE_VISUAL_TYPE          0x302F
76 #define EGL_PRESERVED_RESOURCES         0x3030
77 #define EGL_SAMPLES                     0x3031
78 #define EGL_SAMPLE_BUFFERS              0x3032
79 #define EGL_SURFACE_TYPE                0x3033
80 #define EGL_TRANSPARENT_TYPE            0x3034
81 #define EGL_TRANSPARENT_BLUE_VALUE      0x3035
82 #define EGL_TRANSPARENT_GREEN_VALUE     0x3036
83 #define EGL_TRANSPARENT_RED_VALUE       0x3037
84 #define EGL_NONE                        0x3038  /* Attrib list terminator */
85 #define EGL_BIND_TO_TEXTURE_RGB         0x3039
86 #define EGL_BIND_TO_TEXTURE_RGBA        0x303A
87 #define EGL_MIN_SWAP_INTERVAL           0x303B
88 #define EGL_MAX_SWAP_INTERVAL           0x303C
89 #define EGL_LUMINANCE_SIZE              0x303D
90 #define EGL_ALPHA_MASK_SIZE             0x303E
91 #define EGL_COLOR_BUFFER_TYPE           0x303F
92 #define EGL_RENDERABLE_TYPE             0x3040
93 #define EGL_MATCH_NATIVE_PIXMAP         0x3041  /* Pseudo-attribute (not queryable) */
94 #define EGL_CONFORMANT                  0x3042
95
96 /* Reserved 0x3041-0x304F for additional config attributes */
97
98 /* Config attribute values */
99 #define EGL_SLOW_CONFIG                 0x3050  /* EGL_CONFIG_CAVEAT value */
100 #define EGL_NON_CONFORMANT_CONFIG       0x3051  /* EGL_CONFIG_CAVEAT value */
101 #define EGL_TRANSPARENT_RGB             0x3052  /* EGL_TRANSPARENT_TYPE value */
102 #define EGL_RGB_BUFFER                  0x308E  /* EGL_COLOR_BUFFER_TYPE value */
103 #define EGL_LUMINANCE_BUFFER            0x308F  /* EGL_COLOR_BUFFER_TYPE value */
104
105 /* More config attribute values, for EGL_TEXTURE_FORMAT */
106 #define EGL_NO_TEXTURE                  0x305C
107 #define EGL_TEXTURE_RGB                 0x305D
108 #define EGL_TEXTURE_RGBA                0x305E
109 #define EGL_TEXTURE_2D                  0x305F
110 #define EGL_GL_TEXTURE_2D_KHR   0x30B1
111 #define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR  0x30B3
112 #define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR  0x30B4
113 #define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR  0x30B5
114 #define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR  0x30B6
115 #define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR  0x30B7
116 #define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR  0x30B8
117 #define EGL_GL_TEXTURE_3D_KHR   0x30B2
118 #define EGL_GL_RENDERBUFFER_KHR 0x30B9
119
120 /* Config attribute mask bits */
121 #define EGL_PBUFFER_BIT                 0x0001  /* EGL_SURFACE_TYPE mask bits */
122 #define EGL_PIXMAP_BIT                  0x0002  /* EGL_SURFACE_TYPE mask bits */
123 #define EGL_WINDOW_BIT                  0x0004  /* EGL_SURFACE_TYPE mask bits */
124 #define EGL_VG_COLORSPACE_LINEAR_BIT    0x0020  /* EGL_SURFACE_TYPE mask bits */
125 #define EGL_VG_ALPHA_FORMAT_PRE_BIT     0x0040  /* EGL_SURFACE_TYPE mask bits */
126 #define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200  /* EGL_SURFACE_TYPE mask bits */
127 #define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400  /* EGL_SURFACE_TYPE mask bits */
128
129 #define EGL_OPENGL_ES_BIT               0x0001  /* EGL_RENDERABLE_TYPE mask bits */
130 #define EGL_OPENVG_BIT                  0x0002  /* EGL_RENDERABLE_TYPE mask bits */
131 #define EGL_OPENGL_ES2_BIT              0x0004  /* EGL_RENDERABLE_TYPE mask bits */
132 #define EGL_OPENGL_BIT                  0x0008  /* EGL_RENDERABLE_TYPE mask bits */
133
134 /* QueryString targets */
135 #define EGL_VENDOR                      0x3053
136 #define EGL_VERSION                     0x3054
137 #define EGL_EXTENSIONS                  0x3055
138 #define EGL_CLIENT_APIS                 0x308D
139
140 /* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
141 #define EGL_HEIGHT                      0x3056
142 #define EGL_WIDTH                       0x3057
143 #define EGL_LARGEST_PBUFFER             0x3058
144 #define EGL_TEXTURE_FORMAT              0x3080
145 #define EGL_TEXTURE_TARGET              0x3081
146 #define EGL_MIPMAP_TEXTURE              0x3082
147 #define EGL_MIPMAP_LEVEL                0x3083
148 #define EGL_RENDER_BUFFER               0x3086
149 #define EGL_VG_COLORSPACE               0x3087
150 #define EGL_VG_ALPHA_FORMAT             0x3088
151 #define EGL_HORIZONTAL_RESOLUTION       0x3090
152 #define EGL_VERTICAL_RESOLUTION         0x3091
153 #define EGL_PIXEL_ASPECT_RATIO          0x3092
154 #define EGL_SWAP_BEHAVIOR               0x3093
155 #define EGL_MULTISAMPLE_RESOLVE         0x3099
156
157 /* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
158 #define EGL_BACK_BUFFER                 0x3084
159 #define EGL_SINGLE_BUFFER               0x3085
160
161 /* OpenVG color spaces */
162 #define EGL_VG_COLORSPACE_sRGB          0x3089  /* EGL_VG_COLORSPACE value */
163 #define EGL_VG_COLORSPACE_LINEAR        0x308A  /* EGL_VG_COLORSPACE value */
164
165 /* OpenVG alpha formats */
166 #define EGL_VG_ALPHA_FORMAT_NONPRE      0x308B  /* EGL_ALPHA_FORMAT value */
167 #define EGL_VG_ALPHA_FORMAT_PRE         0x308C  /* EGL_ALPHA_FORMAT value */
168
169 /* Constant scale factor by which fractional display resolutions &
170  * aspect ratio are scaled when queried as integer values.
171  */
172 #define EGL_DISPLAY_SCALING             10000
173
174 /* Unknown display resolution/aspect ratio */
175 #define EGL_UNKNOWN                     ((EGLint)-1)
176
177 /* Back buffer swap behaviors */
178 #define EGL_BUFFER_PRESERVED            0x3094  /* EGL_SWAP_BEHAVIOR value */
179 #define EGL_BUFFER_DESTROYED            0x3095  /* EGL_SWAP_BEHAVIOR value */
180
181 /* CreatePbufferFromClientBuffer buffer types */
182 #define EGL_OPENVG_IMAGE                0x3096
183
184 /* QueryContext targets */
185 #define EGL_CONTEXT_CLIENT_TYPE         0x3097
186
187 /* CreateContext attributes */
188 #define EGL_CONTEXT_CLIENT_VERSION      0x3098
189
190 /* Multisample resolution behaviors */
191 #define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A  /* EGL_MULTISAMPLE_RESOLVE value */
192 #define EGL_MULTISAMPLE_RESOLVE_BOX     0x309B  /* EGL_MULTISAMPLE_RESOLVE value */
193
194 /* BindAPI/QueryAPI targets */
195 #define EGL_OPENGL_ES_API               0x30A0
196 #define EGL_OPENVG_API                  0x30A1
197 #define EGL_OPENGL_API                  0x30A2
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 1.2 tokens renamed for consistency in EGL 1.3 */
207 #define EGL_COLORSPACE                  EGL_VG_COLORSPACE
208 #define EGL_ALPHA_FORMAT                EGL_VG_ALPHA_FORMAT
209 #define EGL_COLORSPACE_sRGB             EGL_VG_COLORSPACE_sRGB
210 #define EGL_COLORSPACE_LINEAR           EGL_VG_COLORSPACE_LINEAR
211 #define EGL_ALPHA_FORMAT_NONPRE         EGL_VG_ALPHA_FORMAT_NONPRE
212 #define EGL_ALPHA_FORMAT_PRE            EGL_VG_ALPHA_FORMAT_PRE
213
214
215 // KHR Extention
216 #ifndef EGL_KHR_image
217 #define EGL_KHR_image 1
218 typedef void *EGLImageKHR;
219 #define EGL_NATIVE_PIXMAP_KHR             0x30B0
220 #define EGL_NO_IMAGE_KHR                  ((EGLImageKHR)0)
221 #endif /* EGL_KHR_image */
222
223 #ifndef EGL_KHR_create_context
224 #define EGL_KHR_create_context 1
225 #define EGL_CONTEXT_MAJOR_VERSION_KHR     0x3098
226 #define EGL_CONTEXT_MINOR_VERSION_KHR     0x30FB
227 #define EGL_CONTEXT_FLAGS_KHR             0x30FC
228 #define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
229 #define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
230 #define EGL_NO_RESET_NOTIFICATION_KHR     0x31BE
231 #define EGL_LOSE_CONTEXT_ON_RESET_KHR     0x31BF
232 #define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR  0x00000001
233 #define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
234 #define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
235 #define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
236 #define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
237 #define EGL_OPENGL_ES3_BIT_KHR            0x00000040
238 #endif /* EGL_KHR_create_context */
239