1#ifndef __gl2ext_h_
2#define __gl2ext_h_
3
4/* $Revision: 10969 $ on $Date:: 2010-04-09 02:27:15 -0700 #$ */
5
6#include <GLES2/gl2.h>
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12/*
13 * This document is licensed under the SGI Free Software B License Version
14 * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
15 */
16
17#ifndef GL_APIENTRYP
18#   define GL_APIENTRYP GL_APIENTRY*
19#endif
20
21/*------------------------------------------------------------------------*
22 * OES extension tokens
23 *------------------------------------------------------------------------*/
24
25/* GL_OES_compressed_ETC1_RGB8_texture */
26#ifndef GL_OES_compressed_ETC1_RGB8_texture
27#define GL_ETC1_RGB8_OES                                        0x8D64
28#endif
29
30/* GL_OES_compressed_paletted_texture */
31#ifndef GL_OES_compressed_paletted_texture
32#define GL_PALETTE4_RGB8_OES                                    0x8B90
33#define GL_PALETTE4_RGBA8_OES                                   0x8B91
34#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92
35#define GL_PALETTE4_RGBA4_OES                                   0x8B93
36#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94
37#define GL_PALETTE8_RGB8_OES                                    0x8B95
38#define GL_PALETTE8_RGBA8_OES                                   0x8B96
39#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97
40#define GL_PALETTE8_RGBA4_OES                                   0x8B98
41#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
42#endif
43
44/* GL_OES_depth24 */
45#ifndef GL_OES_depth24
46#define GL_DEPTH_COMPONENT24_OES                                0x81A6
47#endif
48
49/* GL_OES_depth32 */
50#ifndef GL_OES_depth32
51#define GL_DEPTH_COMPONENT32_OES                                0x81A7
52#endif
53
54/* GL_OES_depth_texture */
55/* No new tokens introduced by this extension. */
56
57/* GL_OES_EGL_image */
58#ifndef GL_OES_EGL_image
59typedef void* GLeglImageOES;
60#endif
61
62/* GL_OES_element_index_uint */
63#ifndef GL_OES_element_index_uint
64#define GL_UNSIGNED_INT                                         0x1405
65#endif
66
67/* GL_OES_get_program_binary */
68#ifndef GL_OES_get_program_binary
69#define GL_PROGRAM_BINARY_LENGTH_OES                            0x8741
70#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                       0x87FE
71#define GL_PROGRAM_BINARY_FORMATS_OES                           0x87FF
72#endif
73
74/* GL_OES_mapbuffer */
75#ifndef GL_OES_mapbuffer
76#define GL_WRITE_ONLY_OES                                       0x88B9
77#define GL_BUFFER_ACCESS_OES                                    0x88BB
78#define GL_BUFFER_MAPPED_OES                                    0x88BC
79#define GL_BUFFER_MAP_POINTER_OES                               0x88BD
80#endif
81
82/* GL_OES_packed_depth_stencil */
83#ifndef GL_OES_packed_depth_stencil
84#define GL_DEPTH_STENCIL_OES                                    0x84F9
85#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
86#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
87#endif
88
89/* GL_OES_rgb8_rgba8 */
90#ifndef GL_OES_rgb8_rgba8
91#define GL_RGB8_OES                                             0x8051
92#define GL_RGBA8_OES                                            0x8058
93#endif
94
95/* GL_OES_standard_derivatives */
96#ifndef GL_OES_standard_derivatives
97#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  0x8B8B
98#endif
99
100/* GL_OES_stencil1 */
101#ifndef GL_OES_stencil1
102#define GL_STENCIL_INDEX1_OES                                   0x8D46
103#endif
104
105/* GL_OES_stencil4 */
106#ifndef GL_OES_stencil4
107#define GL_STENCIL_INDEX4_OES                                   0x8D47
108#endif
109
110/* GL_OES_texture_3D */
111#ifndef GL_OES_texture_3D
112#define GL_TEXTURE_WRAP_R_OES                                   0x8072
113#define GL_TEXTURE_3D_OES                                       0x806F
114#define GL_TEXTURE_BINDING_3D_OES                               0x806A
115#define GL_MAX_3D_TEXTURE_SIZE_OES                              0x8073
116#define GL_SAMPLER_3D_OES                                       0x8B5F
117#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES        0x8CD4
118#endif
119
120/* GL_OES_texture_float */
121/* No new tokens introduced by this extension. */
122
123/* GL_OES_texture_float_linear */
124/* No new tokens introduced by this extension. */
125
126/* GL_OES_texture_half_float */
127#ifndef GL_OES_texture_half_float
128#define GL_HALF_FLOAT_OES                                       0x8D61
129#endif
130
131/* GL_OES_texture_half_float_linear */
132/* No new tokens introduced by this extension. */
133
134/* GL_OES_texture_npot */
135/* No new tokens introduced by this extension. */
136
137/* GL_OES_vertex_array_object */
138#ifndef GL_OES_vertex_array_object
139#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5
140#endif
141
142/* GL_OES_vertex_half_float */
143/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */
144
145/* GL_OES_vertex_type_10_10_10_2 */
146#ifndef GL_OES_vertex_type_10_10_10_2
147#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6
148#define GL_INT_10_10_10_2_OES                                   0x8DF7
149#endif
150
151/* GL_OES_EGL_image_external */
152#ifndef GL_OES_EGL_image_external
153#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
154#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66
155#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
156#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
157#endif
158
159/*------------------------------------------------------------------------*
160 * AMD extension tokens
161 *------------------------------------------------------------------------*/
162
163/* GL_AMD_compressed_3DC_texture */
164#ifndef GL_AMD_compressed_3DC_texture
165#define GL_3DC_X_AMD                                            0x87F9
166#define GL_3DC_XY_AMD                                           0x87FA
167#endif
168
169/* GL_AMD_compressed_ATC_texture */
170#ifndef GL_AMD_compressed_ATC_texture
171#define GL_ATC_RGB_AMD                                          0x8C92
172#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93
173#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE
174#endif
175
176/* GL_AMD_performance_monitor */
177#ifndef GL_AMD_performance_monitor
178#define GL_COUNTER_TYPE_AMD                                     0x8BC0
179#define GL_COUNTER_RANGE_AMD                                    0x8BC1
180#define GL_UNSIGNED_INT64_AMD                                   0x8BC2
181#define GL_PERCENTAGE_AMD                                       0x8BC3
182#define GL_PERFMON_RESULT_AVAILABLE_AMD                         0x8BC4
183#define GL_PERFMON_RESULT_SIZE_AMD                              0x8BC5
184#define GL_PERFMON_RESULT_AMD                                   0x8BC6
185#endif
186
187/* GL_AMD_program_binary_Z400 */
188#ifndef GL_AMD_program_binary_Z400
189#define GL_Z400_BINARY_AMD                                      0x8740
190#endif
191
192/*------------------------------------------------------------------------*
193 * EXT extension tokens
194 *------------------------------------------------------------------------*/
195
196/* GL_EXT_blend_minmax */
197#ifndef GL_EXT_blend_minmax
198#define GL_MIN_EXT                                              0x8007
199#define GL_MAX_EXT                                              0x8008
200#endif
201
202/* GL_EXT_discard_framebuffer */
203#ifndef GL_EXT_discard_framebuffer
204#define GL_COLOR_EXT                                            0x1800
205#define GL_DEPTH_EXT                                            0x1801
206#define GL_STENCIL_EXT                                          0x1802
207#endif
208
209/* GL_EXT_multi_draw_arrays */
210/* No new tokens introduced by this extension. */
211
212/* GL_EXT_read_format_bgra */
213#ifndef GL_EXT_read_format_bgra
214#define GL_BGRA_EXT                                             0x80E1
215#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365
216#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366
217#endif
218
219/* GL_EXT_texture_filter_anisotropic */
220#ifndef GL_EXT_texture_filter_anisotropic
221#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE
222#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF
223#endif
224
225/* GL_EXT_texture_format_BGRA8888 */
226#ifndef GL_EXT_texture_format_BGRA8888
227#define GL_BGRA_EXT                                             0x80E1
228#endif
229
230/* GL_EXT_texture_type_2_10_10_10_REV */
231#ifndef GL_EXT_texture_type_2_10_10_10_REV
232#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
233#endif
234
235/* GL_EXT_texture_compression_dxt1 */
236#ifndef GL_EXT_texture_compression_dxt1
237#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                         0x83F0
238#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                        0x83F1
239#endif
240
241/*------------------------------------------------------------------------*
242 * IMG extension tokens
243 *------------------------------------------------------------------------*/
244
245/* GL_IMG_program_binary */
246#ifndef GL_IMG_program_binary
247#define GL_SGX_PROGRAM_BINARY_IMG                               0x9130
248#endif
249
250/* GL_IMG_read_format */
251#ifndef GL_IMG_read_format
252#define GL_BGRA_IMG                                             0x80E1
253#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365
254#endif
255
256/* GL_IMG_shader_binary */
257#ifndef GL_IMG_shader_binary
258#define GL_SGX_BINARY_IMG                                       0x8C0A
259#endif
260
261/* GL_IMG_texture_compression_pvrtc */
262#ifndef GL_IMG_texture_compression_pvrtc
263#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00
264#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01
265#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02
266#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03
267#endif
268
269/* GL_IMG_multisampled_render_to_texture */
270#ifndef GL_IMG_multisampled_render_to_texture
271#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133
272#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134
273#define GL_MAX_SAMPLES_IMG                                      0x9135
274#define GL_TEXTURE_SAMPLES_IMG                                  0x9136
275#endif
276
277/*------------------------------------------------------------------------*
278 * NV extension tokens
279 *------------------------------------------------------------------------*/
280
281/* GL_NV_fence */
282#ifndef GL_NV_fence
283#define GL_ALL_COMPLETED_NV                                     0x84F2
284#define GL_FENCE_STATUS_NV                                      0x84F3
285#define GL_FENCE_CONDITION_NV                                   0x84F4
286#endif
287
288/* GL_NV_coverage_sample */
289#ifndef GL_NV_coverage_sample
290#define GL_COVERAGE_COMPONENT_NV                                0x8ED0
291#define GL_COVERAGE_COMPONENT4_NV                               0x8ED1
292#define GL_COVERAGE_ATTACHMENT_NV                               0x8ED2
293#define GL_COVERAGE_BUFFERS_NV                                  0x8ED3
294#define GL_COVERAGE_SAMPLES_NV                                  0x8ED4
295#define GL_COVERAGE_ALL_FRAGMENTS_NV                            0x8ED5
296#define GL_COVERAGE_EDGE_FRAGMENTS_NV                           0x8ED6
297#define GL_COVERAGE_AUTOMATIC_NV                                0x8ED7
298#define GL_COVERAGE_BUFFER_BIT_NV                               0x8000
299#endif
300
301/* GL_NV_depth_nonlinear */
302#ifndef GL_NV_depth_nonlinear
303#define GL_DEPTH_COMPONENT16_NONLINEAR_NV                       0x8E2C
304#endif
305
306/*------------------------------------------------------------------------*
307 * QCOM extension tokens
308 *------------------------------------------------------------------------*/
309
310/* GL_QCOM_driver_control */
311/* No new tokens introduced by this extension. */
312
313/* GL_QCOM_extended_get */
314#ifndef GL_QCOM_extended_get
315#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2
316#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3
317#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4
318#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5
319#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6
320#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7
321#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8
322#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9
323#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA
324#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB
325#define GL_STATE_RESTORE                                        0x8BDC
326#endif
327
328/* GL_QCOM_extended_get2 */
329/* No new tokens introduced by this extension. */
330
331/* GL_QCOM_perfmon_global_mode */
332#ifndef GL_QCOM_perfmon_global_mode
333#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0
334#endif
335
336/* GL_QCOM_writeonly_rendering */
337#ifndef GL_QCOM_writeonly_rendering
338#define GL_WRITEONLY_RENDERING_QCOM                             0x8823
339#endif
340
341/* GL_QCOM_tiled_rendering */
342#ifndef GL_QCOM_tiled_rendering
343#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001
344#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002
345#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004
346#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008
347#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010
348#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020
349#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040
350#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080
351#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100
352#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200
353#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400
354#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800
355#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000
356#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000
357#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000
358#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000
359#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000
360#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000
361#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000
362#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000
363#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000
364#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000
365#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000
366#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000
367#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000
368#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000
369#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000
370#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000
371#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000
372#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000
373#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000
374#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000
375#endif
376
377/*------------------------------------------------------------------------*
378 * End of extension tokens, start of corresponding extension functions
379 *------------------------------------------------------------------------*/
380
381/*------------------------------------------------------------------------*
382 * OES extension functions
383 *------------------------------------------------------------------------*/
384
385/* GL_OES_compressed_ETC1_RGB8_texture */
386#ifndef GL_OES_compressed_ETC1_RGB8_texture
387#define GL_OES_compressed_ETC1_RGB8_texture 1
388#endif
389
390/* GL_OES_compressed_paletted_texture */
391#ifndef GL_OES_compressed_paletted_texture
392#define GL_OES_compressed_paletted_texture 1
393#endif
394
395/* GL_OES_depth24 */
396#ifndef GL_OES_depth24
397#define GL_OES_depth24 1
398#endif
399
400/* GL_OES_depth32 */
401#ifndef GL_OES_depth32
402#define GL_OES_depth32 1
403#endif
404
405/* GL_OES_depth_texture */
406#ifndef GL_OES_depth_texture
407#define GL_OES_depth_texture 1
408#endif
409
410/* GL_OES_EGL_image */
411#ifndef GL_OES_EGL_image
412#define GL_OES_EGL_image 1
413#ifdef GL_GLEXT_PROTOTYPES
414GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
415GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
416#endif
417typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
418typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
419#endif
420
421/* GL_OES_element_index_uint */
422#ifndef GL_OES_element_index_uint
423#define GL_OES_element_index_uint 1
424#endif
425
426/* GL_OES_fbo_render_mipmap */
427#ifndef GL_OES_fbo_render_mipmap
428#define GL_OES_fbo_render_mipmap 1
429#endif
430
431/* GL_OES_fragment_precision_high */
432#ifndef GL_OES_fragment_precision_high
433#define GL_OES_fragment_precision_high 1
434#endif
435
436/* GL_OES_get_program_binary */
437#ifndef GL_OES_get_program_binary
438#define GL_OES_get_program_binary 1
439#ifdef GL_GLEXT_PROTOTYPES
440GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
441GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
442#endif
443typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
444typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
445#endif
446
447/* GL_OES_mapbuffer */
448#ifndef GL_OES_mapbuffer
449#define GL_OES_mapbuffer 1
450#ifdef GL_GLEXT_PROTOTYPES
451GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
452GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
453GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid** params);
454#endif
455typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
456typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
457typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params);
458#endif
459
460/* GL_OES_packed_depth_stencil */
461#ifndef GL_OES_packed_depth_stencil
462#define GL_OES_packed_depth_stencil 1
463#endif
464
465/* GL_OES_rgb8_rgba8 */
466#ifndef GL_OES_rgb8_rgba8
467#define GL_OES_rgb8_rgba8 1
468#endif
469
470/* GL_OES_standard_derivatives */
471#ifndef GL_OES_standard_derivatives
472#define GL_OES_standard_derivatives 1
473#endif
474
475/* GL_OES_stencil1 */
476#ifndef GL_OES_stencil1
477#define GL_OES_stencil1 1
478#endif
479
480/* GL_OES_stencil4 */
481#ifndef GL_OES_stencil4
482#define GL_OES_stencil4 1
483#endif
484
485/* GL_OES_texture_3D */
486#ifndef GL_OES_texture_3D
487#define GL_OES_texture_3D 1
488#ifdef GL_GLEXT_PROTOTYPES
489GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
490GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
491GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
492GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
493GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
494GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
495#endif
496typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
497typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
498typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
499typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
500typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
501typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
502#endif
503
504/* GL_OES_texture_float */
505#ifndef GL_OES_texture_float
506#define GL_OES_texture_float 1
507#endif
508
509/* GL_OES_texture_float_linear */
510#ifndef GL_OES_texture_float_linear
511#define GL_OES_texture_float_linear 1
512#endif
513
514/* GL_OES_texture_half_float */
515#ifndef GL_OES_texture_half_float
516#define GL_OES_texture_half_float 1
517#endif
518
519/* GL_OES_texture_half_float_linear */
520#ifndef GL_OES_texture_half_float_linear
521#define GL_OES_texture_half_float_linear 1
522#endif
523
524/* GL_OES_texture_npot */
525#ifndef GL_OES_texture_npot
526#define GL_OES_texture_npot 1
527#endif
528
529/* GL_OES_vertex_array_object */
530#ifndef GL_OES_vertex_array_object
531#define GL_OES_vertex_array_object 1
532#ifdef GL_GLEXT_PROTOTYPES
533GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);
534GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
535GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
536GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
537#endif
538typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
539typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
540typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
541typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
542#endif
543
544/* GL_OES_vertex_half_float */
545#ifndef GL_OES_vertex_half_float
546#define GL_OES_vertex_half_float 1
547#endif
548
549/* GL_OES_vertex_type_10_10_10_2 */
550#ifndef GL_OES_vertex_type_10_10_10_2
551#define GL_OES_vertex_type_10_10_10_2 1
552#endif
553
554/* GL_OES_EGL_image_external */
555#ifndef GL_OES_EGL_image_external
556#define GL_OES_EGL_image_external 1
557#endif
558
559/*------------------------------------------------------------------------*
560 * AMD extension functions
561 *------------------------------------------------------------------------*/
562
563/* GL_AMD_compressed_3DC_texture */
564#ifndef GL_AMD_compressed_3DC_texture
565#define GL_AMD_compressed_3DC_texture 1
566#endif
567
568/* GL_AMD_compressed_ATC_texture */
569#ifndef GL_AMD_compressed_ATC_texture
570#define GL_AMD_compressed_ATC_texture 1
571#endif
572
573/* AMD_performance_monitor */
574#ifndef GL_AMD_performance_monitor
575#define GL_AMD_performance_monitor 1
576#ifdef GL_GLEXT_PROTOTYPES
577GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
578GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
579GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
580GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
581GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
582GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
583GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
584GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
585GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
586GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);
587GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
588#endif
589typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
590typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
591typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
592typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
593typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
594typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
595typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
596typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
597typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
598typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
599typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
600#endif
601
602/* GL_AMD_program_binary_Z400 */
603#ifndef GL_AMD_program_binary_Z400
604#define GL_AMD_program_binary_Z400 1
605#endif
606
607/*------------------------------------------------------------------------*
608 * EXT extension functions
609 *------------------------------------------------------------------------*/
610
611/* GL_EXT_blend_minmax */
612#ifndef GL_EXT_blend_minmax
613#define GL_EXT_blend_minmax 1
614#endif
615
616/* GL_EXT_discard_framebuffer */
617#ifndef GL_EXT_discard_framebuffer
618#define GL_EXT_discard_framebuffer 1
619#ifdef GL_GLEXT_PROTOTYPES
620GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
621#endif
622typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
623#endif
624
625#ifndef GL_EXT_multi_draw_arrays
626#define GL_EXT_multi_draw_arrays 1
627#ifdef GL_GLEXT_PROTOTYPES
628GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
629GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
630#endif /* GL_GLEXT_PROTOTYPES */
631typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
632typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
633#endif
634
635/* GL_EXT_read_format_bgra */
636#ifndef GL_EXT_read_format_bgra
637#define GL_EXT_read_format_bgra 1
638#endif
639
640/* GL_EXT_texture_filter_anisotropic */
641#ifndef GL_EXT_texture_filter_anisotropic
642#define GL_EXT_texture_filter_anisotropic 1
643#endif
644
645/* GL_EXT_texture_format_BGRA8888 */
646#ifndef GL_EXT_texture_format_BGRA8888
647#define GL_EXT_texture_format_BGRA8888 1
648#endif
649
650/* GL_EXT_texture_type_2_10_10_10_REV */
651#ifndef GL_EXT_texture_type_2_10_10_10_REV
652#define GL_EXT_texture_type_2_10_10_10_REV 1
653#endif
654
655/* GL_EXT_texture_compression_dxt1 */
656#ifndef GL_EXT_texture_compression_dxt1
657#define GL_EXT_texture_compression_dxt1 1
658#endif
659
660/*------------------------------------------------------------------------*
661 * IMG extension functions
662 *------------------------------------------------------------------------*/
663
664/* GL_IMG_program_binary */
665#ifndef GL_IMG_program_binary
666#define GL_IMG_program_binary 1
667#endif
668
669/* GL_IMG_read_format */
670#ifndef GL_IMG_read_format
671#define GL_IMG_read_format 1
672#endif
673
674/* GL_IMG_shader_binary */
675#ifndef GL_IMG_shader_binary
676#define GL_IMG_shader_binary 1
677#endif
678
679/* GL_IMG_texture_compression_pvrtc */
680#ifndef GL_IMG_texture_compression_pvrtc
681#define GL_IMG_texture_compression_pvrtc 1
682#endif
683
684/* GL_IMG_multisampled_render_to_texture */
685#ifndef GL_IMG_multisampled_render_to_texture
686#define GL_IMG_multisampled_render_to_texture 1
687#ifdef GL_GLEXT_PROTOTYPES
688GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
689GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
690#endif
691typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
692typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
693#endif
694
695/*------------------------------------------------------------------------*
696 * NV extension functions
697 *------------------------------------------------------------------------*/
698
699/* GL_NV_fence */
700#ifndef GL_NV_fence
701#define GL_NV_fence 1
702#ifdef GL_GLEXT_PROTOTYPES
703GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
704GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
705GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);
706GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);
707GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
708GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence);
709GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
710#endif
711typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
712typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
713typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
714typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
715typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
716typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
717typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
718#endif
719
720/* GL_NV_coverage_sample */
721#ifndef GL_NV_coverage_sample
722#define GL_NV_coverage_sample 1
723#ifdef GL_GLEXT_PROTOTYPES
724GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
725GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
726#endif
727typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
728typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
729#endif
730
731/* GL_NV_depth_nonlinear */
732#ifndef GL_NV_depth_nonlinear
733#define GL_NV_depth_nonlinear 1
734#endif
735
736/*------------------------------------------------------------------------*
737 * QCOM extension functions
738 *------------------------------------------------------------------------*/
739
740/* GL_QCOM_driver_control */
741#ifndef GL_QCOM_driver_control
742#define GL_QCOM_driver_control 1
743#ifdef GL_GLEXT_PROTOTYPES
744GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
745GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
746GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
747GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
748#endif
749typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
750typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
751typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
752typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
753#endif
754
755/* GL_QCOM_extended_get */
756#ifndef GL_QCOM_extended_get
757#define GL_QCOM_extended_get 1
758#ifdef GL_GLEXT_PROTOTYPES
759GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
760GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
761GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
762GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
763GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
764GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
765GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
766GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params);
767#endif
768typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
769typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
770typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
771typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
772typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
773typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
774typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
775typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params);
776#endif
777
778/* GL_QCOM_extended_get2 */
779#ifndef GL_QCOM_extended_get2
780#define GL_QCOM_extended_get2 1
781#ifdef GL_GLEXT_PROTOTYPES
782GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
783GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
784GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
785GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
786#endif
787typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
788typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
789typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
790typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
791#endif
792
793/* GL_QCOM_perfmon_global_mode */
794#ifndef GL_QCOM_perfmon_global_mode
795#define GL_QCOM_perfmon_global_mode 1
796#endif
797
798/* GL_QCOM_writeonly_rendering */
799#ifndef GL_QCOM_writeonly_rendering
800#define GL_QCOM_writeonly_rendering 1
801#endif
802
803/* GL_QCOM_tiled_rendering */
804#ifndef GL_QCOM_tiled_rendering
805#define GL_QCOM_tiled_rendering 1
806#ifdef GL_GLEXT_PROTOTYPES
807GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
808GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
809#endif
810typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
811typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
812#endif
813
814#ifdef __cplusplus
815}
816#endif
817
818#endif /* __gl2ext_h_ */
819