Upstream version 6.35.121.0
[platform/framework/web/crosswalk.git] / src / third_party / webgl / src / specs / latest / 2.0 / webgl2.idl
1 // AUTOGENERATED FILE -- DO NOT EDIT -- SEE Makefile
2 //
3 // WebGL IDL definitions scraped from the Khronos specification:
4 // https://www.khronos.org/registry/webgl/specs/latest/
5 //
6 // This IDL depends on the typed array specification defined at:
7 // https://www.khronos.org/registry/typedarray/specs/latest/typedarrays.idl
8
9 typedef long long GLint64;
10 typedef unsigned long long GLuint64;
11
12
13 interface WebGLQuery : WebGLObject {
14 };
15
16 interface WebGLSampler : WebGLObject {
17 };
18
19 interface WebGLSync : WebGLObject {
20 };
21
22 interface WebGLTransformFeedback : WebGLObject {
23 };
24
25 interface WebGLVertexArrayObject : WebGLObject {
26 };
27
28 [NoInterfaceObject]
29 interface WebGL2RenderingContextBase
30 {
31   const GLenum READ_BUFFER                                   = 0x0C02;
32   const GLenum UNPACK_ROW_LENGTH                             = 0x0CF2;
33   const GLenum UNPACK_SKIP_ROWS                              = 0x0CF3;
34   const GLenum UNPACK_SKIP_PIXELS                            = 0x0CF4;
35   const GLenum PACK_ROW_LENGTH                               = 0x0D02;
36   const GLenum PACK_SKIP_ROWS                                = 0x0D03;
37   const GLenum PACK_SKIP_PIXELS                              = 0x0D04;
38   const GLenum COLOR                                         = 0x1800;
39   const GLenum DEPTH                                         = 0x1801;
40   const GLenum STENCIL                                       = 0x1802;
41   const GLenum RED                                           = 0x1903;
42   const GLenum RGB8                                          = 0x8051;
43   const GLenum RGBA8                                         = 0x8058;
44   const GLenum RGB10_A2                                      = 0x8059;
45   const GLenum TEXTURE_BINDING_3D                            = 0x806A;
46   const GLenum UNPACK_SKIP_IMAGES                            = 0x806D;
47   const GLenum UNPACK_IMAGE_HEIGHT                           = 0x806E;
48   const GLenum TEXTURE_3D                                    = 0x806F;
49   const GLenum TEXTURE_WRAP_R                                = 0x8072;
50   const GLenum MAX_3D_TEXTURE_SIZE                           = 0x8073;
51   const GLenum UNSIGNED_INT_2_10_10_10_REV                   = 0x8368;
52   const GLenum MAX_ELEMENTS_VERTICES                         = 0x80E8;
53   const GLenum MAX_ELEMENTS_INDICES                          = 0x80E9;
54   const GLenum TEXTURE_MIN_LOD                               = 0x813A;
55   const GLenum TEXTURE_MAX_LOD                               = 0x813B;
56   const GLenum TEXTURE_BASE_LEVEL                            = 0x813C;
57   const GLenum TEXTURE_MAX_LEVEL                             = 0x813D;
58   const GLenum MIN                                           = 0x8007;
59   const GLenum MAX                                           = 0x8008;
60   const GLenum DEPTH_COMPONENT24                             = 0x81A6;
61   const GLenum MAX_TEXTURE_LOD_BIAS                          = 0x84FD;
62   const GLenum TEXTURE_COMPARE_MODE                          = 0x884C;
63   const GLenum TEXTURE_COMPARE_FUNC                          = 0x884D;
64   const GLenum CURRENT_QUERY                                 = 0x8865;
65   const GLenum QUERY_RESULT                                  = 0x8866;
66   const GLenum QUERY_RESULT_AVAILABLE                        = 0x8867;
67   const GLenum BUFFER_MAPPED                                 = 0x88BC;
68   const GLenum BUFFER_MAP_POINTER                            = 0x88BD;
69   const GLenum STREAM_READ                                   = 0x88E1;
70   const GLenum STREAM_COPY                                   = 0x88E2;
71   const GLenum STATIC_READ                                   = 0x88E5;
72   const GLenum STATIC_COPY                                   = 0x88E6;
73   const GLenum DYNAMIC_READ                                  = 0x88E9;
74   const GLenum DYNAMIC_COPY                                  = 0x88EA;
75   const GLenum MAX_DRAW_BUFFERS                              = 0x8824;
76   const GLenum DRAW_BUFFER0                                  = 0x8825;
77   const GLenum DRAW_BUFFER1                                  = 0x8826;
78   const GLenum DRAW_BUFFER2                                  = 0x8827;
79   const GLenum DRAW_BUFFER3                                  = 0x8828;
80   const GLenum DRAW_BUFFER4                                  = 0x8829;
81   const GLenum DRAW_BUFFER5                                  = 0x882A;
82   const GLenum DRAW_BUFFER6                                  = 0x882B;
83   const GLenum DRAW_BUFFER7                                  = 0x882C;
84   const GLenum DRAW_BUFFER8                                  = 0x882D;
85   const GLenum DRAW_BUFFER9                                  = 0x882E;
86   const GLenum DRAW_BUFFER10                                 = 0x882F;
87   const GLenum DRAW_BUFFER11                                 = 0x8830;
88   const GLenum DRAW_BUFFER12                                 = 0x8831;
89   const GLenum DRAW_BUFFER13                                 = 0x8832;
90   const GLenum DRAW_BUFFER14                                 = 0x8833;
91   const GLenum DRAW_BUFFER15                                 = 0x8834;
92   const GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS               = 0x8B49;
93   const GLenum MAX_VERTEX_UNIFORM_COMPONENTS                 = 0x8B4A;
94   const GLenum SAMPLER_3D                                    = 0x8B5F;
95   const GLenum SAMPLER_2D_SHADOW                             = 0x8B62;
96   const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT               = 0x8B8B;
97   const GLenum PIXEL_PACK_BUFFER                             = 0x88EB;
98   const GLenum PIXEL_UNPACK_BUFFER                           = 0x88EC;
99   const GLenum PIXEL_PACK_BUFFER_BINDING                     = 0x88ED;
100   const GLenum PIXEL_UNPACK_BUFFER_BINDING                   = 0x88EF;
101   const GLenum FLOAT_MAT2x3                                  = 0x8B65;
102   const GLenum FLOAT_MAT2x4                                  = 0x8B66;
103   const GLenum FLOAT_MAT3x2                                  = 0x8B67;
104   const GLenum FLOAT_MAT3x4                                  = 0x8B68;
105   const GLenum FLOAT_MAT4x2                                  = 0x8B69;
106   const GLenum FLOAT_MAT4x3                                  = 0x8B6A;
107   const GLenum SRGB                                          = 0x8C40;
108   const GLenum SRGB8                                         = 0x8C41;
109   const GLenum SRGB8_ALPHA8                                  = 0x8C43;
110   const GLenum COMPARE_REF_TO_TEXTURE                        = 0x884E;
111   const GLenum RGBA32F                                       = 0x8814;
112   const GLenum RGB32F                                        = 0x8815;
113   const GLenum RGBA16F                                       = 0x881A;
114   const GLenum RGB16F                                        = 0x881B;
115   const GLenum VERTEX_ATTRIB_ARRAY_INTEGER                   = 0x88FD;
116   const GLenum MAX_ARRAY_TEXTURE_LAYERS                      = 0x88FF;
117   const GLenum MIN_PROGRAM_TEXEL_OFFSET                      = 0x8904;
118   const GLenum MAX_PROGRAM_TEXEL_OFFSET                      = 0x8905;
119   const GLenum MAX_VARYING_COMPONENTS                        = 0x8B4B;
120   const GLenum TEXTURE_2D_ARRAY                              = 0x8C1A;
121   const GLenum TEXTURE_BINDING_2D_ARRAY                      = 0x8C1D;
122   const GLenum R11F_G11F_B10F                                = 0x8C3A;
123   const GLenum UNSIGNED_INT_10F_11F_11F_REV                  = 0x8C3B;
124   const GLenum RGB9_E5                                       = 0x8C3D;
125   const GLenum UNSIGNED_INT_5_9_9_9_REV                      = 0x8C3E;
126   const GLenum TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH         = 0x8C76;
127   const GLenum TRANSFORM_FEEDBACK_BUFFER_MODE                = 0x8C7F;
128   const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS    = 0x8C80;
129   const GLenum TRANSFORM_FEEDBACK_VARYINGS                   = 0x8C83;
130   const GLenum TRANSFORM_FEEDBACK_BUFFER_START               = 0x8C84;
131   const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE                = 0x8C85;
132   const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN         = 0x8C88;
133   const GLenum RASTERIZER_DISCARD                            = 0x8C89;
134   const GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A;
135   const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS       = 0x8C8B;
136   const GLenum INTERLEAVED_ATTRIBS                           = 0x8C8C;
137   const GLenum SEPARATE_ATTRIBS                              = 0x8C8D;
138   const GLenum TRANSFORM_FEEDBACK_BUFFER                     = 0x8C8E;
139   const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING             = 0x8C8F;
140   const GLenum RGBA32UI                                      = 0x8D70;
141   const GLenum RGB32UI                                       = 0x8D71;
142   const GLenum RGBA16UI                                      = 0x8D76;
143   const GLenum RGB16UI                                       = 0x8D77;
144   const GLenum RGBA8UI                                       = 0x8D7C;
145   const GLenum RGB8UI                                        = 0x8D7D;
146   const GLenum RGBA32I                                       = 0x8D82;
147   const GLenum RGB32I                                        = 0x8D83;
148   const GLenum RGBA16I                                       = 0x8D88;
149   const GLenum RGB16I                                        = 0x8D89;
150   const GLenum RGBA8I                                        = 0x8D8E;
151   const GLenum RGB8I                                         = 0x8D8F;
152   const GLenum RED_INTEGER                                   = 0x8D94;
153   const GLenum RGB_INTEGER                                   = 0x8D98;
154   const GLenum RGBA_INTEGER                                  = 0x8D99;
155   const GLenum SAMPLER_2D_ARRAY                              = 0x8DC1;
156   const GLenum SAMPLER_2D_ARRAY_SHADOW                       = 0x8DC4;
157   const GLenum SAMPLER_CUBE_SHADOW                           = 0x8DC5;
158   const GLenum UNSIGNED_INT_VEC2                             = 0x8DC6;
159   const GLenum UNSIGNED_INT_VEC3                             = 0x8DC7;
160   const GLenum UNSIGNED_INT_VEC4                             = 0x8DC8;
161   const GLenum INT_SAMPLER_2D                                = 0x8DCA;
162   const GLenum INT_SAMPLER_3D                                = 0x8DCB;
163   const GLenum INT_SAMPLER_CUBE                              = 0x8DCC;
164   const GLenum INT_SAMPLER_2D_ARRAY                          = 0x8DCF;
165   const GLenum UNSIGNED_INT_SAMPLER_2D                       = 0x8DD2;
166   const GLenum UNSIGNED_INT_SAMPLER_3D                       = 0x8DD3;
167   const GLenum UNSIGNED_INT_SAMPLER_CUBE                     = 0x8DD4;
168   const GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY                 = 0x8DD7;
169   const GLenum BUFFER_ACCESS_FLAGS                           = 0x911F;
170   const GLenum BUFFER_MAP_LENGTH                             = 0x9120;
171   const GLenum BUFFER_MAP_OFFSET                             = 0x9121;
172   const GLenum DEPTH_COMPONENT32F                            = 0x8CAC;
173   const GLenum DEPTH32F_STENCIL8                             = 0x8CAD;
174   const GLenum FLOAT_32_UNSIGNED_INT_24_8_REV                = 0x8DAD;
175   const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING         = 0x8210;
176   const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE         = 0x8211;
177   const GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE               = 0x8212;
178   const GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE             = 0x8213;
179   const GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE              = 0x8214;
180   const GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE             = 0x8215;
181   const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE             = 0x8216;
182   const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE           = 0x8217;
183   const GLenum FRAMEBUFFER_DEFAULT                           = 0x8218;
184   const GLenum FRAMEBUFFER_UNDEFINED                         = 0x8219;
185   const GLenum DEPTH_STENCIL_ATTACHMENT                      = 0x821A;
186   const GLenum DEPTH_STENCIL                                 = 0x84F9;
187   const GLenum UNSIGNED_INT_24_8                             = 0x84FA;
188   const GLenum DEPTH24_STENCIL8                              = 0x88F0;
189   const GLenum UNSIGNED_NORMALIZED                           = 0x8C17;
190   const GLenum DRAW_FRAMEBUFFER_BINDING                      = 0x8CA6; /* Same as FRAMEBUFFER_BINDING */
191   const GLenum READ_FRAMEBUFFER                              = 0x8CA8;
192   const GLenum DRAW_FRAMEBUFFER                              = 0x8CA9;
193   const GLenum READ_FRAMEBUFFER_BINDING                      = 0x8CAA;
194   const GLenum RENDERBUFFER_SAMPLES                          = 0x8CAB;
195   const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER          = 0x8CD4;
196   const GLenum MAX_COLOR_ATTACHMENTS                         = 0x8CDF;
197   const GLenum COLOR_ATTACHMENT1                             = 0x8CE1;
198   const GLenum COLOR_ATTACHMENT2                             = 0x8CE2;
199   const GLenum COLOR_ATTACHMENT3                             = 0x8CE3;
200   const GLenum COLOR_ATTACHMENT4                             = 0x8CE4;
201   const GLenum COLOR_ATTACHMENT5                             = 0x8CE5;
202   const GLenum COLOR_ATTACHMENT6                             = 0x8CE6;
203   const GLenum COLOR_ATTACHMENT7                             = 0x8CE7;
204   const GLenum COLOR_ATTACHMENT8                             = 0x8CE8;
205   const GLenum COLOR_ATTACHMENT9                             = 0x8CE9;
206   const GLenum COLOR_ATTACHMENT10                            = 0x8CEA;
207   const GLenum COLOR_ATTACHMENT11                            = 0x8CEB;
208   const GLenum COLOR_ATTACHMENT12                            = 0x8CEC;
209   const GLenum COLOR_ATTACHMENT13                            = 0x8CED;
210   const GLenum COLOR_ATTACHMENT14                            = 0x8CEE;
211   const GLenum COLOR_ATTACHMENT15                            = 0x8CEF;
212   const GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE            = 0x8D56;
213   const GLenum MAX_SAMPLES                                   = 0x8D57;
214   const GLenum HALF_FLOAT                                    = 0x140B;
215   const GLenum MAP_READ_BIT                                  = 0x0001;
216   const GLenum MAP_WRITE_BIT                                 = 0x0002;
217   const GLenum MAP_INVALIDATE_RANGE_BIT                      = 0x0004;
218   const GLenum MAP_INVALIDATE_BUFFER_BIT                     = 0x0008;
219   const GLenum MAP_FLUSH_EXPLICIT_BIT                        = 0x0010;
220   const GLenum MAP_UNSYNCHRONIZED_BIT                        = 0x0020;
221   const GLenum RG                                            = 0x8227;
222   const GLenum RG_INTEGER                                    = 0x8228;
223   const GLenum R8                                            = 0x8229;
224   const GLenum RG8                                           = 0x822B;
225   const GLenum R16F                                          = 0x822D;
226   const GLenum R32F                                          = 0x822E;
227   const GLenum RG16F                                         = 0x822F;
228   const GLenum RG32F                                         = 0x8230;
229   const GLenum R8I                                           = 0x8231;
230   const GLenum R8UI                                          = 0x8232;
231   const GLenum R16I                                          = 0x8233;
232   const GLenum R16UI                                         = 0x8234;
233   const GLenum R32I                                          = 0x8235;
234   const GLenum R32UI                                         = 0x8236;
235   const GLenum RG8I                                          = 0x8237;
236   const GLenum RG8UI                                         = 0x8238;
237   const GLenum RG16I                                         = 0x8239;
238   const GLenum RG16UI                                        = 0x823A;
239   const GLenum RG32I                                         = 0x823B;
240   const GLenum RG32UI                                        = 0x823C;
241   const GLenum VERTEX_ARRAY_BINDING                          = 0x85B5;
242   const GLenum R8_SNORM                                      = 0x8F94;
243   const GLenum RG8_SNORM                                     = 0x8F95;
244   const GLenum RGB8_SNORM                                    = 0x8F96;
245   const GLenum RGBA8_SNORM                                   = 0x8F97;
246   const GLenum SIGNED_NORMALIZED                             = 0x8F9C;
247   const GLenum PRIMITIVE_RESTART_FIXED_INDEX                 = 0x8D69;
248   const GLenum COPY_READ_BUFFER                              = 0x8F36;
249   const GLenum COPY_WRITE_BUFFER                             = 0x8F37;
250   const GLenum COPY_READ_BUFFER_BINDING                      = 0x8F36; /* Same as COPY_READ_BUFFER */
251   const GLenum COPY_WRITE_BUFFER_BINDING                     = 0x8F37; /* Same as COPY_WRITE_BUFFER */
252   const GLenum UNIFORM_BUFFER                                = 0x8A11;
253   const GLenum UNIFORM_BUFFER_BINDING                        = 0x8A28;
254   const GLenum UNIFORM_BUFFER_START                          = 0x8A29;
255   const GLenum UNIFORM_BUFFER_SIZE                           = 0x8A2A;
256   const GLenum MAX_VERTEX_UNIFORM_BLOCKS                     = 0x8A2B;
257   const GLenum MAX_FRAGMENT_UNIFORM_BLOCKS                   = 0x8A2D;
258   const GLenum MAX_COMBINED_UNIFORM_BLOCKS                   = 0x8A2E;
259   const GLenum MAX_UNIFORM_BUFFER_BINDINGS                   = 0x8A2F;
260   const GLenum MAX_UNIFORM_BLOCK_SIZE                        = 0x8A30;
261   const GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS        = 0x8A31;
262   const GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS      = 0x8A33;
263   const GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT               = 0x8A34;
264   const GLenum ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH          = 0x8A35;
265   const GLenum ACTIVE_UNIFORM_BLOCKS                         = 0x8A36;
266   const GLenum UNIFORM_TYPE                                  = 0x8A37;
267   const GLenum UNIFORM_SIZE                                  = 0x8A38;
268   const GLenum UNIFORM_NAME_LENGTH                           = 0x8A39;
269   const GLenum UNIFORM_BLOCK_INDEX                           = 0x8A3A;
270   const GLenum UNIFORM_OFFSET                                = 0x8A3B;
271   const GLenum UNIFORM_ARRAY_STRIDE                          = 0x8A3C;
272   const GLenum UNIFORM_MATRIX_STRIDE                         = 0x8A3D;
273   const GLenum UNIFORM_IS_ROW_MAJOR                          = 0x8A3E;
274   const GLenum UNIFORM_BLOCK_BINDING                         = 0x8A3F;
275   const GLenum UNIFORM_BLOCK_DATA_SIZE                       = 0x8A40;
276   const GLenum UNIFORM_BLOCK_NAME_LENGTH                     = 0x8A41;
277   const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS                 = 0x8A42;
278   const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES          = 0x8A43;
279   const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER     = 0x8A44;
280   const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER   = 0x8A46;
281   const GLenum INVALID_INDEX                                 = 0xFFFFFFFFu; /* TODO: valid GLenum? */
282   const GLenum MAX_VERTEX_OUTPUT_COMPONENTS                  = 0x9122;
283   const GLenum MAX_FRAGMENT_INPUT_COMPONENTS                 = 0x9125;
284   const GLenum MAX_SERVER_WAIT_TIMEOUT                       = 0x9111;
285   const GLenum OBJECT_TYPE                                   = 0x9112;
286   const GLenum SYNC_CONDITION                                = 0x9113;
287   const GLenum SYNC_STATUS                                   = 0x9114;
288   const GLenum SYNC_FLAGS                                    = 0x9115;
289   const GLenum SYNC_FENCE                                    = 0x9116;
290   const GLenum SYNC_GPU_COMMANDS_COMPLETE                    = 0x9117;
291   const GLenum UNSIGNALED                                    = 0x9118;
292   const GLenum SIGNALED                                      = 0x9119;
293   const GLenum ALREADY_SIGNALED                              = 0x911A;
294   const GLenum TIMEOUT_EXPIRED                               = 0x911B;
295   const GLenum CONDITION_SATISFIED                           = 0x911C;
296   const GLenum WAIT_FAILED                                   = 0x911D;
297   const GLenum SYNC_FLUSH_COMMANDS_BIT                       = 0x00000001;
298   const GLenum TIMEOUT_IGNORED                               = 0xFFFFFFFFFFFFFFFFull;  /* TODO: valid GLenum? */
299   const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR                   = 0x88FE;
300   const GLenum ANY_SAMPLES_PASSED                            = 0x8C2F;
301   const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE               = 0x8D6A;
302   const GLenum SAMPLER_BINDING                               = 0x8919;
303   const GLenum RGB10_A2UI                                    = 0x906F;
304   const GLenum TEXTURE_SWIZZLE_R                             = 0x8E42;
305   const GLenum TEXTURE_SWIZZLE_G                             = 0x8E43;
306   const GLenum TEXTURE_SWIZZLE_B                             = 0x8E44;
307   const GLenum TEXTURE_SWIZZLE_A                             = 0x8E45;
308   const GLenum GREEN                                         = 0x1904;
309   const GLenum BLUE                                          = 0x1905;
310   const GLenum INT_2_10_10_10_REV                            = 0x8D9F;
311   const GLenum TRANSFORM_FEEDBACK                            = 0x8E22;
312   const GLenum TRANSFORM_FEEDBACK_PAUSED                     = 0x8E23;
313   const GLenum TRANSFORM_FEEDBACK_ACTIVE                     = 0x8E24;
314   const GLenum TRANSFORM_FEEDBACK_BINDING                    = 0x8E25;
315   const GLenum COMPRESSED_R11_EAC                            = 0x9270;
316   const GLenum COMPRESSED_SIGNED_R11_EAC                     = 0x9271;
317   const GLenum COMPRESSED_RG11_EAC                           = 0x9272;
318   const GLenum COMPRESSED_SIGNED_RG11_EAC                    = 0x9273;
319   const GLenum COMPRESSED_RGB8_ETC2                          = 0x9274;
320   const GLenum COMPRESSED_SRGB8_ETC2                         = 0x9275;
321   const GLenum COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2      = 0x9276;
322   const GLenum COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2     = 0x9277;
323   const GLenum COMPRESSED_RGBA8_ETC2_EAC                     = 0x9278;
324   const GLenum COMPRESSED_SRGB8_ALPHA8_ETC2_EAC              = 0x9279;
325   const GLenum TEXTURE_IMMUTABLE_FORMAT                      = 0x912F;
326   const GLenum MAX_ELEMENT_INDEX                             = 0x8D6B;
327   const GLenum NUM_SAMPLE_COUNTS                             = 0x9380;
328   const GLenum TEXTURE_IMMUTABLE_LEVELS                      = 0x82DF;
329
330   /* Buffer objects */
331   void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
332
333   /* Framebuffer objects */
334   void blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
335   void framebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
336   any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname);
337   void invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
338   void invalidateSubFramebuffer (GLenum target, sequence<GLenum> attachments, GLint x, GLint y, GLsizei width, GLsizei height);
339   void readBuffer(GLenum mode);
340   void renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
341
342   /* Texture objects */
343   void texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
344   void texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
345   void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, ArrayBufferView? pixels);
346   void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, ImageData? data);
347   void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, HTMLImageElement image);
348   void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, HTMLCanvasElement canvas);
349   void texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, HTMLVideoElement video);
350   void copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
351   void compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, ArrayBufferView data);
352   void compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, ArrayBufferView data);
353
354   /* Programs and shaders */
355   [WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram? program, DOMString name);
356
357   /* Uniforms and attributes */
358   void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
359
360   /* TODO: these will have to be exposed differently -- for example,
361      by changing the return type of getVertexAttrib based on the
362      most recently set type for the vertex attrib */
363   // void glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params);
364   // void glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params);
365
366   void uniform1ui(WebGLUniformLocation? location, GLuint v0);
367   void uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
368   void uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
369   void uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
370   void uniform1uiv(WebGLUniformLocation? location, sequence<GLuint> value);
371   void uniform2uiv(WebGLUniformLocation? location, sequence<GLuint> value);
372   void uniform3uiv(WebGLUniformLocation? location, sequence<GLuint> value);
373   void uniform4uiv(WebGLUniformLocation? location, sequence<GLuint> value);
374   void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
375   void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
376   void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
377   void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
378   void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
379   void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
380   void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
381   void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
382   void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
383   void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
384   void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
385   void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
386   /* TODO: this will be exposed as a couple of additional entries in
387      the return type table for getUniform */
388   // void glGetUniformuiv (GLuint program, GLint location, GLuint* params);
389   void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
390   void vertexAttribI4iv(GLuint index, sequence<GLint> v);
391   void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
392   void vertexAttribI4uiv(GLuint index, sequence<GLuint> v);
393
394   /* Writing to the drawing buffer */
395   void vertexAttribDivisor(GLuint index, GLuint divisor);
396   void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
397   void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
398   /* TODO(kbr): argue against exposing this because it can't safely
399      offer better performance than drawElements */
400   void drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
401
402   /* Multiple Render Targets */
403   void drawBuffers(sequence<GLenum> buffers);
404   void clearBufferiv(GLenum buffer, GLint drawbuffer, Int32Array value);
405   void clearBufferiv(GLenum buffer, GLint drawbuffer, sequence<GLint> value);
406   void clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32Array value);
407   void clearBufferuiv(GLenum buffer, GLint drawbuffer, sequence<GLuint> value);
408   void clearBufferfv(GLenum buffer, GLint drawbuffer, Float32Array value);
409   void clearBufferfv(GLenum buffer, GLint drawbuffer, sequence<GLfloat> value);
410   void clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
411
412   /* Query Objects */
413   WebGLQuery? createQuery();
414   void deleteQuery(WebGLQuery? query);
415   [WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? query);
416   void beginQuery(GLenum target, WebGLQuery? query);
417   void endQuery(GLenum target);
418   /* TODO: document return type */
419   any getQuery(GLenum target, GLenum pname);
420   /* TODO: document return type */
421   any getQueryParameter(WebGLQuery? query, GLenum pname);
422
423   /* Sampler Objects */
424   WebGLSampler? createSampler();
425   void deleteSampler(WebGLSampler? sampler);
426   [WebGLHandlesContextLoss] GLboolean isSampler(WebGLSampler? sampler);
427   void bindSampler(GLuint unit, WebGLSampler? sampler);
428   void samplerParameteri(WebGLSampler? sampler, GLenum pname, GLint param);
429   void samplerParameteriv(WebGLSampler? sampler, GLenum pname, Int32Array param);
430   void samplerParameteriv(WebGLSampler? sampler, GLenum pname, sequence<GLint> param);
431   void samplerParameterf(WebGLSampler? sampler, GLenum pname, GLfloat param);
432   void samplerParameterfv(WebGLSampler? sampler, GLenum pname, Float32Array param);
433   void samplerParameterfv(WebGLSampler? sampler, GLenum pname, sequence<GLfloat> param);
434
435   /* TODO: document return type */
436   any getSamplerParameter(WebGLSampler? sampler, GLenum pname);
437
438   /* Sync objects */
439   WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
440   GLboolean isSync(WebGLSync? sync);
441   void deleteSync(WebGLSync? sync);
442   GLenum clientWaitSync(WebGLSync? sync, GLbitfield flags, GLuint64 timeout);
443   void waitSync(WebGLSync? sync, GLbitfield flags, GLuint64 timeout);
444   /* TODO: document return type */
445   any getSyncParameter(WebGLSync? sync, GLenum pname);
446
447   /* Transform Feedback */
448   WebGLTransformFeedback? createTransformFeedback();
449   void deleteTransformFeedback(WebGLTransformFeedback?);
450   [WebGLHandlesContextLoss] GLboolean isTransformFeedback(WebGLTransformFeedback?);
451   void bindTransformFeedback (GLenum target, GLuint id);
452   void beginTransformFeedback(GLenum primitiveMode);
453   void endTransformFeedback();
454   void transformFeedbackVaryings(WebGLProgram? program, GLsizei count, sequence<DOMString> varyings, GLenum bufferMode);
455   WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram? program, GLuint index);
456   void pauseTransformFeedback();
457   void resumeTransformFeedback();
458
459   /* Uniform Buffer Objects and Transform Feedback Buffers */
460   void bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
461   void bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
462   any getIndexedParameter(GLenum target, GLuint index);
463   sequence<GLuint>? getUniformIndices(WebGLProgram? program, sequence<DOMString> uniformNames);
464   sequence<GLint>? getActiveUniforms(WebGLProgram? program, sequence<GLuint> uniformIndices, GLenum pname);
465   GLuint getUniformBlockIndex(WebGLProgram? program, DOMString uniformBlockName);
466   /* TODO: document return type; make sure unnecessary enums are deleted */
467   any getActiveUniformBlockParameter(WebGLProgram? program, GLuint uniformBlockIndex, GLenum pname);
468   /* TODO: if there were a fake enum for GL_UNIFORM_BLOCK_NAME, then this could be folded into getActiveUniformBlockParameter */
469   DOMString? getActiveUniformBlockName(WebGLProgram? program, GLuint uniformBlockIndex);
470   void uniformBlockBinding(WebGLProgram? program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
471
472   /* Vertex Array Objects */
473   WebGLVertexArrayObject? createVertexArray();
474   void deleteVertexArray(WebGLVertexArrayObject? vertexArray);
475   [WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray);
476   void bindVertexArray(WebGLVertexArrayObject? array);
477
478   /* TODO:
479    *  - Consider adding getBufferSubData replacing MapBufferRange, etc.
480    *  - Figure out what to do about glMapBufferRange, glFlushMappedBufferRange, glUnmapBuffer
481    *    - If exposing these, think about glGetBufferPointerv
482    *  - Is it necessary to expose glGetInteger64v, glGetInteger64i_v, and glGetBufferParameteri64v?
483    *    - Or are they subsumed into other queries' signatures?
484    *  - Deliberately not exposing glGetProgramBinary, glProgramBinary, glProgramParameteri
485    */
486 };
487 WebGL2RenderingContextBase implements WebGLRenderingContextBase;
488
489 interface WebGL2RenderingContext
490 {
491 };
492 WebGL2RenderingContext implements WebGL2RenderingContextBase;
493
494