Bug 1885602 - Part 5: Implement navigating to the SUMO help topic from the menu heade...
[gecko.git] / dom / webidl / WebGL2RenderingContext.webidl
blob765d2a52132723c26f5705cc77e29f08dd7e54f0
1 /* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4  * You can obtain one at http://mozilla.org/MPL/2.0/.
5  *
6  * The source for this IDL is found at https://www.khronos.org/registry/webgl/specs/latest/2.0
7  * This IDL depends on WebGLRenderingContext.webidl
8  */
10 typedef long long GLint64;
11 typedef unsigned long long GLuint64;
13 [Pref="webgl.enable-webgl2",
14  Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread",
15  Exposed=(Window,Worker)]
16 interface WebGLSampler {
19 [Pref="webgl.enable-webgl2",
20  Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread",
21  Exposed=(Window,Worker)]
22 interface WebGLSync {
25 [Pref="webgl.enable-webgl2",
26  Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread",
27  Exposed=(Window,Worker)]
28 interface WebGLTransformFeedback {
31 typedef ([AllowShared] Uint32Array or sequence<GLuint>) Uint32List;
33 // WebGL2 spec has this as an empty interface that pulls in everything
34 // via WebGL2RenderingContextBase.
35 [Pref="webgl.enable-webgl2",
36  Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread",
37  Exposed=(Window,Worker)]
38 interface WebGL2RenderingContext
42 interface mixin WebGL2RenderingContextBase
44     const GLenum READ_BUFFER                                   = 0x0C02;
45     const GLenum UNPACK_ROW_LENGTH                             = 0x0CF2;
46     const GLenum UNPACK_SKIP_ROWS                              = 0x0CF3;
47     const GLenum UNPACK_SKIP_PIXELS                            = 0x0CF4;
48     const GLenum PACK_ROW_LENGTH                               = 0x0D02;
49     const GLenum PACK_SKIP_ROWS                                = 0x0D03;
50     const GLenum PACK_SKIP_PIXELS                              = 0x0D04;
51     const GLenum COLOR                                         = 0x1800;
52     const GLenum DEPTH                                         = 0x1801;
53     const GLenum STENCIL                                       = 0x1802;
54     const GLenum RED                                           = 0x1903;
55     const GLenum RGB8                                          = 0x8051;
56     const GLenum RGBA8                                         = 0x8058;
57     const GLenum RGB10_A2                                      = 0x8059;
58     const GLenum TEXTURE_BINDING_3D                            = 0x806A;
59     const GLenum UNPACK_SKIP_IMAGES                            = 0x806D;
60     const GLenum UNPACK_IMAGE_HEIGHT                           = 0x806E;
61     const GLenum TEXTURE_3D                                    = 0x806F;
62     const GLenum TEXTURE_WRAP_R                                = 0x8072;
63     const GLenum MAX_3D_TEXTURE_SIZE                           = 0x8073;
64     const GLenum UNSIGNED_INT_2_10_10_10_REV                   = 0x8368;
65     const GLenum MAX_ELEMENTS_VERTICES                         = 0x80E8;
66     const GLenum MAX_ELEMENTS_INDICES                          = 0x80E9;
67     const GLenum TEXTURE_MIN_LOD                               = 0x813A;
68     const GLenum TEXTURE_MAX_LOD                               = 0x813B;
69     const GLenum TEXTURE_BASE_LEVEL                            = 0x813C;
70     const GLenum TEXTURE_MAX_LEVEL                             = 0x813D;
71     const GLenum MIN                                           = 0x8007;
72     const GLenum MAX                                           = 0x8008;
73     const GLenum DEPTH_COMPONENT24                             = 0x81A6;
74     const GLenum MAX_TEXTURE_LOD_BIAS                          = 0x84FD;
75     const GLenum TEXTURE_COMPARE_MODE                          = 0x884C;
76     const GLenum TEXTURE_COMPARE_FUNC                          = 0x884D;
77     const GLenum CURRENT_QUERY                                 = 0x8865;
78     const GLenum QUERY_RESULT                                  = 0x8866;
79     const GLenum QUERY_RESULT_AVAILABLE                        = 0x8867;
80     const GLenum STREAM_READ                                   = 0x88E1;
81     const GLenum STREAM_COPY                                   = 0x88E2;
82     const GLenum STATIC_READ                                   = 0x88E5;
83     const GLenum STATIC_COPY                                   = 0x88E6;
84     const GLenum DYNAMIC_READ                                  = 0x88E9;
85     const GLenum DYNAMIC_COPY                                  = 0x88EA;
86     const GLenum MAX_DRAW_BUFFERS                              = 0x8824;
87     const GLenum DRAW_BUFFER0                                  = 0x8825;
88     const GLenum DRAW_BUFFER1                                  = 0x8826;
89     const GLenum DRAW_BUFFER2                                  = 0x8827;
90     const GLenum DRAW_BUFFER3                                  = 0x8828;
91     const GLenum DRAW_BUFFER4                                  = 0x8829;
92     const GLenum DRAW_BUFFER5                                  = 0x882A;
93     const GLenum DRAW_BUFFER6                                  = 0x882B;
94     const GLenum DRAW_BUFFER7                                  = 0x882C;
95     const GLenum DRAW_BUFFER8                                  = 0x882D;
96     const GLenum DRAW_BUFFER9                                  = 0x882E;
97     const GLenum DRAW_BUFFER10                                 = 0x882F;
98     const GLenum DRAW_BUFFER11                                 = 0x8830;
99     const GLenum DRAW_BUFFER12                                 = 0x8831;
100     const GLenum DRAW_BUFFER13                                 = 0x8832;
101     const GLenum DRAW_BUFFER14                                 = 0x8833;
102     const GLenum DRAW_BUFFER15                                 = 0x8834;
103     const GLenum MAX_FRAGMENT_UNIFORM_COMPONENTS               = 0x8B49;
104     const GLenum MAX_VERTEX_UNIFORM_COMPONENTS                 = 0x8B4A;
105     const GLenum SAMPLER_3D                                    = 0x8B5F;
106     const GLenum SAMPLER_2D_SHADOW                             = 0x8B62;
107     const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT               = 0x8B8B;
108     const GLenum PIXEL_PACK_BUFFER                             = 0x88EB;
109     const GLenum PIXEL_UNPACK_BUFFER                           = 0x88EC;
110     const GLenum PIXEL_PACK_BUFFER_BINDING                     = 0x88ED;
111     const GLenum PIXEL_UNPACK_BUFFER_BINDING                   = 0x88EF;
112     const GLenum FLOAT_MAT2x3                                  = 0x8B65;
113     const GLenum FLOAT_MAT2x4                                  = 0x8B66;
114     const GLenum FLOAT_MAT3x2                                  = 0x8B67;
115     const GLenum FLOAT_MAT3x4                                  = 0x8B68;
116     const GLenum FLOAT_MAT4x2                                  = 0x8B69;
117     const GLenum FLOAT_MAT4x3                                  = 0x8B6A;
118     const GLenum SRGB                                          = 0x8C40;
119     const GLenum SRGB8                                         = 0x8C41;
120     const GLenum SRGB8_ALPHA8                                  = 0x8C43;
121     const GLenum COMPARE_REF_TO_TEXTURE                        = 0x884E;
122     const GLenum RGBA32F                                       = 0x8814;
123     const GLenum RGB32F                                        = 0x8815;
124     const GLenum RGBA16F                                       = 0x881A;
125     const GLenum RGB16F                                        = 0x881B;
126     const GLenum VERTEX_ATTRIB_ARRAY_INTEGER                   = 0x88FD;
127     const GLenum MAX_ARRAY_TEXTURE_LAYERS                      = 0x88FF;
128     const GLenum MIN_PROGRAM_TEXEL_OFFSET                      = 0x8904;
129     const GLenum MAX_PROGRAM_TEXEL_OFFSET                      = 0x8905;
130     const GLenum MAX_VARYING_COMPONENTS                        = 0x8B4B;
131     const GLenum TEXTURE_2D_ARRAY                              = 0x8C1A;
132     const GLenum TEXTURE_BINDING_2D_ARRAY                      = 0x8C1D;
133     const GLenum R11F_G11F_B10F                                = 0x8C3A;
134     const GLenum UNSIGNED_INT_10F_11F_11F_REV                  = 0x8C3B;
135     const GLenum RGB9_E5                                       = 0x8C3D;
136     const GLenum UNSIGNED_INT_5_9_9_9_REV                      = 0x8C3E;
137     const GLenum TRANSFORM_FEEDBACK_BUFFER_MODE                = 0x8C7F;
138     const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS    = 0x8C80;
139     const GLenum TRANSFORM_FEEDBACK_VARYINGS                   = 0x8C83;
140     const GLenum TRANSFORM_FEEDBACK_BUFFER_START               = 0x8C84;
141     const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE                = 0x8C85;
142     const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN         = 0x8C88;
143     const GLenum RASTERIZER_DISCARD                            = 0x8C89;
144     const GLenum MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A;
145     const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS       = 0x8C8B;
146     const GLenum INTERLEAVED_ATTRIBS                           = 0x8C8C;
147     const GLenum SEPARATE_ATTRIBS                              = 0x8C8D;
148     const GLenum TRANSFORM_FEEDBACK_BUFFER                     = 0x8C8E;
149     const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING             = 0x8C8F;
150     const GLenum RGBA32UI                                      = 0x8D70;
151     const GLenum RGB32UI                                       = 0x8D71;
152     const GLenum RGBA16UI                                      = 0x8D76;
153     const GLenum RGB16UI                                       = 0x8D77;
154     const GLenum RGBA8UI                                       = 0x8D7C;
155     const GLenum RGB8UI                                        = 0x8D7D;
156     const GLenum RGBA32I                                       = 0x8D82;
157     const GLenum RGB32I                                        = 0x8D83;
158     const GLenum RGBA16I                                       = 0x8D88;
159     const GLenum RGB16I                                        = 0x8D89;
160     const GLenum RGBA8I                                        = 0x8D8E;
161     const GLenum RGB8I                                         = 0x8D8F;
162     const GLenum RED_INTEGER                                   = 0x8D94;
163     const GLenum RGB_INTEGER                                   = 0x8D98;
164     const GLenum RGBA_INTEGER                                  = 0x8D99;
165     const GLenum SAMPLER_2D_ARRAY                              = 0x8DC1;
166     const GLenum SAMPLER_2D_ARRAY_SHADOW                       = 0x8DC4;
167     const GLenum SAMPLER_CUBE_SHADOW                           = 0x8DC5;
168     const GLenum UNSIGNED_INT_VEC2                             = 0x8DC6;
169     const GLenum UNSIGNED_INT_VEC3                             = 0x8DC7;
170     const GLenum UNSIGNED_INT_VEC4                             = 0x8DC8;
171     const GLenum INT_SAMPLER_2D                                = 0x8DCA;
172     const GLenum INT_SAMPLER_3D                                = 0x8DCB;
173     const GLenum INT_SAMPLER_CUBE                              = 0x8DCC;
174     const GLenum INT_SAMPLER_2D_ARRAY                          = 0x8DCF;
175     const GLenum UNSIGNED_INT_SAMPLER_2D                       = 0x8DD2;
176     const GLenum UNSIGNED_INT_SAMPLER_3D                       = 0x8DD3;
177     const GLenum UNSIGNED_INT_SAMPLER_CUBE                     = 0x8DD4;
178     const GLenum UNSIGNED_INT_SAMPLER_2D_ARRAY                 = 0x8DD7;
179     const GLenum DEPTH_COMPONENT32F                            = 0x8CAC;
180     const GLenum DEPTH32F_STENCIL8                             = 0x8CAD;
181     const GLenum FLOAT_32_UNSIGNED_INT_24_8_REV                = 0x8DAD;
182     const GLenum FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING         = 0x8210;
183     const GLenum FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE         = 0x8211;
184     const GLenum FRAMEBUFFER_ATTACHMENT_RED_SIZE               = 0x8212;
185     const GLenum FRAMEBUFFER_ATTACHMENT_GREEN_SIZE             = 0x8213;
186     const GLenum FRAMEBUFFER_ATTACHMENT_BLUE_SIZE              = 0x8214;
187     const GLenum FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE             = 0x8215;
188     const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE             = 0x8216;
189     const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE           = 0x8217;
190     const GLenum FRAMEBUFFER_DEFAULT                           = 0x8218;
191     const GLenum UNSIGNED_INT_24_8                             = 0x84FA;
192     const GLenum DEPTH24_STENCIL8                              = 0x88F0;
193     const GLenum UNSIGNED_NORMALIZED                           = 0x8C17;
194     const GLenum DRAW_FRAMEBUFFER_BINDING                      = 0x8CA6; /* Same as FRAMEBUFFER_BINDING */
195     const GLenum READ_FRAMEBUFFER                              = 0x8CA8;
196     const GLenum DRAW_FRAMEBUFFER                              = 0x8CA9;
197     const GLenum READ_FRAMEBUFFER_BINDING                      = 0x8CAA;
198     const GLenum RENDERBUFFER_SAMPLES                          = 0x8CAB;
199     const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER          = 0x8CD4;
200     const GLenum MAX_COLOR_ATTACHMENTS                         = 0x8CDF;
201     const GLenum COLOR_ATTACHMENT1                             = 0x8CE1;
202     const GLenum COLOR_ATTACHMENT2                             = 0x8CE2;
203     const GLenum COLOR_ATTACHMENT3                             = 0x8CE3;
204     const GLenum COLOR_ATTACHMENT4                             = 0x8CE4;
205     const GLenum COLOR_ATTACHMENT5                             = 0x8CE5;
206     const GLenum COLOR_ATTACHMENT6                             = 0x8CE6;
207     const GLenum COLOR_ATTACHMENT7                             = 0x8CE7;
208     const GLenum COLOR_ATTACHMENT8                             = 0x8CE8;
209     const GLenum COLOR_ATTACHMENT9                             = 0x8CE9;
210     const GLenum COLOR_ATTACHMENT10                            = 0x8CEA;
211     const GLenum COLOR_ATTACHMENT11                            = 0x8CEB;
212     const GLenum COLOR_ATTACHMENT12                            = 0x8CEC;
213     const GLenum COLOR_ATTACHMENT13                            = 0x8CED;
214     const GLenum COLOR_ATTACHMENT14                            = 0x8CEE;
215     const GLenum COLOR_ATTACHMENT15                            = 0x8CEF;
216     const GLenum FRAMEBUFFER_INCOMPLETE_MULTISAMPLE            = 0x8D56;
217     const GLenum MAX_SAMPLES                                   = 0x8D57;
218     const GLenum HALF_FLOAT                                    = 0x140B;
219     const GLenum RG                                            = 0x8227;
220     const GLenum RG_INTEGER                                    = 0x8228;
221     const GLenum R8                                            = 0x8229;
222     const GLenum RG8                                           = 0x822B;
223     const GLenum R16F                                          = 0x822D;
224     const GLenum R32F                                          = 0x822E;
225     const GLenum RG16F                                         = 0x822F;
226     const GLenum RG32F                                         = 0x8230;
227     const GLenum R8I                                           = 0x8231;
228     const GLenum R8UI                                          = 0x8232;
229     const GLenum R16I                                          = 0x8233;
230     const GLenum R16UI                                         = 0x8234;
231     const GLenum R32I                                          = 0x8235;
232     const GLenum R32UI                                         = 0x8236;
233     const GLenum RG8I                                          = 0x8237;
234     const GLenum RG8UI                                         = 0x8238;
235     const GLenum RG16I                                         = 0x8239;
236     const GLenum RG16UI                                        = 0x823A;
237     const GLenum RG32I                                         = 0x823B;
238     const GLenum RG32UI                                        = 0x823C;
239     const GLenum VERTEX_ARRAY_BINDING                          = 0x85B5;
240     const GLenum R8_SNORM                                      = 0x8F94;
241     const GLenum RG8_SNORM                                     = 0x8F95;
242     const GLenum RGB8_SNORM                                    = 0x8F96;
243     const GLenum RGBA8_SNORM                                   = 0x8F97;
244     const GLenum SIGNED_NORMALIZED                             = 0x8F9C;
245     const GLenum COPY_READ_BUFFER                              = 0x8F36;
246     const GLenum COPY_WRITE_BUFFER                             = 0x8F37;
247     const GLenum COPY_READ_BUFFER_BINDING                      = 0x8F36; /* Same as COPY_READ_BUFFER */
248     const GLenum COPY_WRITE_BUFFER_BINDING                     = 0x8F37; /* Same as COPY_WRITE_BUFFER */
249     const GLenum UNIFORM_BUFFER                                = 0x8A11;
250     const GLenum UNIFORM_BUFFER_BINDING                        = 0x8A28;
251     const GLenum UNIFORM_BUFFER_START                          = 0x8A29;
252     const GLenum UNIFORM_BUFFER_SIZE                           = 0x8A2A;
253     const GLenum MAX_VERTEX_UNIFORM_BLOCKS                     = 0x8A2B;
254     const GLenum MAX_FRAGMENT_UNIFORM_BLOCKS                   = 0x8A2D;
255     const GLenum MAX_COMBINED_UNIFORM_BLOCKS                   = 0x8A2E;
256     const GLenum MAX_UNIFORM_BUFFER_BINDINGS                   = 0x8A2F;
257     const GLenum MAX_UNIFORM_BLOCK_SIZE                        = 0x8A30;
258     const GLenum MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS        = 0x8A31;
259     const GLenum MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS      = 0x8A33;
260     const GLenum UNIFORM_BUFFER_OFFSET_ALIGNMENT               = 0x8A34;
261     const GLenum ACTIVE_UNIFORM_BLOCKS                         = 0x8A36;
262     const GLenum UNIFORM_TYPE                                  = 0x8A37;
263     const GLenum UNIFORM_SIZE                                  = 0x8A38;
264     const GLenum UNIFORM_BLOCK_INDEX                           = 0x8A3A;
265     const GLenum UNIFORM_OFFSET                                = 0x8A3B;
266     const GLenum UNIFORM_ARRAY_STRIDE                          = 0x8A3C;
267     const GLenum UNIFORM_MATRIX_STRIDE                         = 0x8A3D;
268     const GLenum UNIFORM_IS_ROW_MAJOR                          = 0x8A3E;
269     const GLenum UNIFORM_BLOCK_BINDING                         = 0x8A3F;
270     const GLenum UNIFORM_BLOCK_DATA_SIZE                       = 0x8A40;
271     const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORMS                 = 0x8A42;
272     const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES          = 0x8A43;
273     const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER     = 0x8A44;
274     const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER   = 0x8A46;
275     const GLenum INVALID_INDEX                                 = 0xFFFFFFFF;
276     const GLenum MAX_VERTEX_OUTPUT_COMPONENTS                  = 0x9122;
277     const GLenum MAX_FRAGMENT_INPUT_COMPONENTS                 = 0x9125;
278     const GLenum MAX_SERVER_WAIT_TIMEOUT                       = 0x9111;
279     const GLenum OBJECT_TYPE                                   = 0x9112;
280     const GLenum SYNC_CONDITION                                = 0x9113;
281     const GLenum SYNC_STATUS                                   = 0x9114;
282     const GLenum SYNC_FLAGS                                    = 0x9115;
283     const GLenum SYNC_FENCE                                    = 0x9116;
284     const GLenum SYNC_GPU_COMMANDS_COMPLETE                    = 0x9117;
285     const GLenum UNSIGNALED                                    = 0x9118;
286     const GLenum SIGNALED                                      = 0x9119;
287     const GLenum ALREADY_SIGNALED                              = 0x911A;
288     const GLenum TIMEOUT_EXPIRED                               = 0x911B;
289     const GLenum CONDITION_SATISFIED                           = 0x911C;
290     const GLenum WAIT_FAILED                                   = 0x911D;
291     const GLenum SYNC_FLUSH_COMMANDS_BIT                       = 0x00000001;
292     const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR                   = 0x88FE;
293     const GLenum ANY_SAMPLES_PASSED                            = 0x8C2F;
294     const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE               = 0x8D6A;
295     const GLenum SAMPLER_BINDING                               = 0x8919;
296     const GLenum RGB10_A2UI                                    = 0x906F;
297     const GLenum INT_2_10_10_10_REV                            = 0x8D9F;
298     const GLenum TRANSFORM_FEEDBACK                            = 0x8E22;
299     const GLenum TRANSFORM_FEEDBACK_PAUSED                     = 0x8E23;
300     const GLenum TRANSFORM_FEEDBACK_ACTIVE                     = 0x8E24;
301     const GLenum TRANSFORM_FEEDBACK_BINDING                    = 0x8E25;
302     const GLenum TEXTURE_IMMUTABLE_FORMAT                      = 0x912F;
303     const GLenum MAX_ELEMENT_INDEX                             = 0x8D6B;
304     const GLenum TEXTURE_IMMUTABLE_LEVELS                      = 0x82DF;
306     const GLint64 TIMEOUT_IGNORED                              = -1;
308     /* WebGL-specific enums */
309     const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL                 = 0x9247;
311     /* Buffer objects */
312     // WebGL1:
313     undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage);
314     undefined bufferData(GLenum target, [AllowShared] ArrayBuffer? srcData, GLenum usage);
315     undefined bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage);
316     undefined bufferSubData(GLenum target, GLintptr offset, [AllowShared] ArrayBuffer srcData);
317     undefined bufferSubData(GLenum target, GLintptr offset, [AllowShared] ArrayBufferView srcData);
318     // WebGL2:
319     undefined bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage,
320                          GLuint srcOffset, optional GLuint length = 0);
321     undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData,
322                             GLuint srcOffset, optional GLuint length = 0);
324     undefined copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset,
325                                 GLintptr writeOffset, GLsizeiptr size);
326     // MapBufferRange, in particular its read-only and write-only modes,
327     // can not be exposed safely to JavaScript. GetBufferSubData
328     // replaces it for the purpose of fetching data back from the GPU.
329     undefined getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstData,
330                                optional GLuint dstOffset = 0, optional GLuint length = 0);
332     /* Framebuffer objects */
333     undefined blitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0,
334                               GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
335     undefined framebufferTextureLayer(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level,
336                                       GLint layer);
338     [Throws]
339     undefined invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
341     [Throws]
342     undefined invalidateSubFramebuffer(GLenum target, sequence<GLenum> attachments,
343                                        GLint x, GLint y, GLsizei width, GLsizei height);
345     undefined readBuffer(GLenum src);
347     /* Renderbuffer objects */
348     [Throws]
349     any getInternalformatParameter(GLenum target, GLenum internalformat, GLenum pname);
350     undefined renderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat,
351                                              GLsizei width, GLsizei height);
353     /* Texture objects */
354     undefined texStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
355                            GLsizei height);
356     undefined texStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width,
357                            GLsizei height, GLsizei depth);
359     // WebGL1 legacy entrypoints:
360     [Throws] // Another overhead throws.
361     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
362                          GLsizei width, GLsizei height, GLint border, GLenum format,
363                          GLenum type, [AllowShared] ArrayBufferView? pixels);
364     [Throws]
365     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
366                          GLenum format, GLenum type, HTMLCanvasElement source); // May throw DOMException
367     [Throws]
368     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
369                          GLenum format, GLenum type, HTMLImageElement source); // May throw DOMException
370     [Throws]
371     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
372                          GLenum format, GLenum type, HTMLVideoElement source); // May throw DOMException
373     [Throws] // Another overhead throws.
374     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
375                          GLenum format, GLenum type, ImageBitmap source);
376     [Throws] // Another overhead throws.
377     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
378                          GLenum format, GLenum type, ImageData source);
379     [Throws] // Another overhead throws.
380     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
381                          GLenum format, GLenum type, OffscreenCanvas source);
382     [Throws] // Another overhead throws.
383     undefined texImage2D(GLenum target, GLint level, GLint internalformat,
384                          GLenum format, GLenum type, VideoFrame source);
386     [Throws] // Another overhead throws.
387     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
388                             GLsizei width, GLsizei height,
389                             GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels);
390     [Throws]
391     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
392                             GLenum format, GLenum type, HTMLCanvasElement source); // May throw DOMException
393     [Throws]
394     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
395                             GLenum format, GLenum type, HTMLImageElement source); // May throw DOMException
396     [Throws]
397     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
398                             GLenum format, GLenum type, HTMLVideoElement source); // May throw DOMException
399     [Throws] // Another overhead throws.
400     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
401                             GLenum format, GLenum type, ImageBitmap source);
402     [Throws] // Another overhead throws.
403     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
404                             GLenum format, GLenum type, ImageData source);
405     [Throws] // Another overhead throws.
406     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
407                             GLenum format, GLenum type, OffscreenCanvas source);
408     [Throws] // Another overhead throws.
409     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
410                             GLenum format, GLenum type, VideoFrame source);
412     // WebGL2 entrypoints:
413     [Throws] // Another overhead throws.
414     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
415                          GLint border, GLenum format, GLenum type, GLintptr pboOffset);
416     [Throws]
417     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
418                          GLint border, GLenum format, GLenum type,
419                          HTMLCanvasElement source); // May throw DOMException
420     [Throws]
421     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
422                          GLint border, GLenum format, GLenum type,
423                          HTMLImageElement source); // May throw DOMException
424     [Throws]
425     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
426                          GLint border, GLenum format, GLenum type,
427                          HTMLVideoElement source); // May throw DOMException
428     [Throws] // Another overhead throws.
429     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
430                          GLint border, GLenum format, GLenum type,
431                          ImageBitmap source);
432     [Throws] // Another overhead throws.
433     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
434                          GLint border, GLenum format, GLenum type,
435                          ImageData source);
436     [Throws] // Another overhead throws.
437     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
438                          GLint border, GLenum format, GLenum type,
439                          OffscreenCanvas source);
440     [Throws] // Another overhead throws.
441     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
442                          GLint border, GLenum format, GLenum type,
443                          VideoFrame source);
444     [Throws] // Another overhead throws.
445     undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
446                          GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
447                          GLuint srcOffset);
449     [Throws] // Another overhead throws.
450     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
451                          GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
452     [Throws]
453     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
454                          GLsizei depth, GLint border, GLenum format, GLenum type,
455                          HTMLCanvasElement source); // May throw DOMException
456     [Throws]
457     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
458                          GLsizei depth, GLint border, GLenum format, GLenum type,
459                          HTMLImageElement source); // May throw DOMException
460     [Throws]
461     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
462                          GLsizei depth, GLint border, GLenum format, GLenum type,
463                          HTMLVideoElement source); // May throw DOMException
464     [Throws] // Another overhead throws.
465     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
466                          GLsizei depth, GLint border, GLenum format, GLenum type,
467                          ImageBitmap source);
468     [Throws] // Another overhead throws.
469     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
470                          GLsizei depth, GLint border, GLenum format, GLenum type,
471                          ImageData source);
472     [Throws] // Another overhead throws.
473     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
474                          GLsizei depth, GLint border, GLenum format, GLenum type,
475                          OffscreenCanvas source);
476     [Throws] // Another overhead throws.
477     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
478                          GLsizei depth, GLint border, GLenum format, GLenum type,
479                          VideoFrame source);
480     [Throws] // Another overhead throws.
481     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
482                          GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData);
483     [Throws] // Another overhead throws.
484     undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
485                          GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
486                          GLuint srcOffset);
488     [Throws] // Another overhead throws.
489     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
490                             GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
491     [Throws]
492     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
493                             GLsizei height, GLenum format, GLenum type,
494                             HTMLCanvasElement source); // May throw DOMException
495     [Throws]
496     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
497                             GLsizei height, GLenum format, GLenum type,
498                             HTMLImageElement source); // May throw DOMException
499     [Throws]
500     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
501                             GLsizei height, GLenum format, GLenum type,
502                             HTMLVideoElement source); // May throw DOMException
503     [Throws] // Another overhead throws.
504     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
505                             GLsizei height, GLenum format, GLenum type,
506                             ImageBitmap source);
507     [Throws] // Another overhead throws.
508     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
509                             GLsizei height, GLenum format, GLenum type,
510                             ImageData source);
511     [Throws] // Another overhead throws.
512     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
513                             GLsizei height, GLenum format, GLenum type,
514                             OffscreenCanvas source);
515     [Throws] // Another overhead throws.
516     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
517                             GLsizei height, GLenum format, GLenum type,
518                             VideoFrame source);
519     [Throws] // Another overhead throws.
520     undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
521                             GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData,
522                             GLuint srcOffset);
524     [Throws] // Another overhead throws.
525     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
526                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
527                             GLintptr pboOffset);
528     [Throws]
529     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
530                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
531                             HTMLCanvasElement source); // May throw DOMException
532     [Throws]
533     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
534                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
535                             HTMLImageElement source); // May throw DOMException
536     [Throws]
537     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
538                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
539                             HTMLVideoElement source); // May throw DOMException
540     [Throws] // Another overhead throws.
541     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
542                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
543                             ImageBitmap source);
544     [Throws] // Another overhead throws.
545     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
546                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
547                             ImageData source);
548     [Throws] // Another overhead throws.
549     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
550                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
551                             OffscreenCanvas source);
552     [Throws] // Another overhead throws.
553     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
554                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
555                             VideoFrame source);
556     [Throws] // Another overhead throws.
557     undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
558                             GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type,
559                             [AllowShared] ArrayBufferView? srcData, optional GLuint srcOffset = 0);
561     undefined copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
562                                 GLint x, GLint y, GLsizei width, GLsizei height);
564     undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
565                                    GLsizei height, GLint border, GLsizei imageSize,  GLintptr offset);
566     undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
567                                    GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData,
568                                    optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
570     undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
571                                    GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset);
572     undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width,
573                                    GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData,
574                                    optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);
576     undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
577                                       GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset);
578     undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
579                                       GLsizei width, GLsizei height, GLenum format,
580                                       [AllowShared] ArrayBufferView srcData,
581                                       optional GLuint srcOffset = 0,
582                                       optional GLuint srcLengthOverride = 0);
584     undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
585                                       GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
586                                       GLenum format, GLsizei imageSize, GLintptr offset);
587     undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
588                                       GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
589                                       GLenum format, [AllowShared] ArrayBufferView srcData,
590                                       optional GLuint srcOffset = 0,
591                                       optional GLuint srcLengthOverride = 0);
593     /* Programs and shaders */
594     [WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram program, DOMString name);
596     /* Uniforms */
597     undefined uniform1ui(WebGLUniformLocation? location, GLuint v0);
598     undefined uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
599     undefined uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
600     undefined uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
602     undefined uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
603                          optional GLuint srcLength = 0);
604     undefined uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
605                          optional GLuint srcLength = 0);
606     undefined uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
607                          optional GLuint srcLength = 0);
608     undefined uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
609                          optional GLuint srcLength = 0);
611     undefined uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
612                          optional GLuint srcLength = 0);
613     undefined uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
614                          optional GLuint srcLength = 0);
615     undefined uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
616                          optional GLuint srcLength = 0);
617     undefined uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
618                          optional GLuint srcLength = 0);
620     undefined uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
621                           optional GLuint srcLength = 0);
622     undefined uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
623                           optional GLuint srcLength = 0);
624     undefined uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
625                           optional GLuint srcLength = 0);
626     undefined uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
627                           optional GLuint srcLength = 0);
629     undefined uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
630                                optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
631     undefined uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
632                                  optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
633     undefined uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
634                                  optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
636     undefined uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
637                                  optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
638     undefined uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
639                                optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
640     undefined uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
641                                  optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
643     undefined uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
644                                  optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
645     undefined uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
646                                  optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
647     undefined uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
648                                optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
650     /* Vertex attribs */
651     undefined vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
652     undefined vertexAttribI4iv(GLuint index, Int32List values);
653     undefined vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
654     undefined vertexAttribI4uiv(GLuint index, Uint32List values);
655     undefined vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
657     /* Writing to the drawing buffer */
658     undefined vertexAttribDivisor(GLuint index, GLuint divisor);
659     undefined drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
660     undefined drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
661     undefined drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
663     /* Reading back pixels */
664     // WebGL1:
665     [Throws, NeedsCallerType] // Throws on readback in a write-only context.
666     undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
667                          [AllowShared] ArrayBufferView? dstData);
668     // WebGL2:
669     [Throws, NeedsCallerType] // Throws on readback in a write-only context.
670     undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
671                          GLintptr offset);
672     [Throws, NeedsCallerType] // Throws on readback in a write-only context.
673     undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
674                          [AllowShared] ArrayBufferView dstData, GLuint dstOffset);
676     /* Multiple Render Targets */
677     undefined drawBuffers(sequence<GLenum> buffers);
679     undefined clearBufferfv(GLenum buffer, GLint drawbuffer, Float32List values,
680                             optional GLuint srcOffset = 0);
681     undefined clearBufferiv(GLenum buffer, GLint drawbuffer, Int32List values,
682                             optional GLuint srcOffset = 0);
683     undefined clearBufferuiv(GLenum buffer, GLint drawbuffer, Uint32List values,
684                              optional GLuint srcOffset = 0);
686     undefined clearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
688     /* Query Objects */
689     WebGLQuery? createQuery();
690     undefined deleteQuery(WebGLQuery? query);
691     [WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? query);
692     undefined beginQuery(GLenum target, WebGLQuery query);
693     undefined endQuery(GLenum target);
694     any getQuery(GLenum target, GLenum pname);
695     any getQueryParameter(WebGLQuery query, GLenum pname);
697     /* Sampler Objects */
698     WebGLSampler? createSampler();
699     undefined deleteSampler(WebGLSampler? sampler);
700     [WebGLHandlesContextLoss] GLboolean isSampler(WebGLSampler? sampler);
701     undefined bindSampler(GLuint unit, WebGLSampler? sampler);
702     undefined samplerParameteri(WebGLSampler sampler, GLenum pname, GLint param);
703     undefined samplerParameterf(WebGLSampler sampler, GLenum pname, GLfloat param);
704     any getSamplerParameter(WebGLSampler sampler, GLenum pname);
706     /* Sync objects */
707     WebGLSync? fenceSync(GLenum condition, GLbitfield flags);
708     [WebGLHandlesContextLoss] GLboolean isSync(WebGLSync? sync);
709     undefined deleteSync(WebGLSync? sync);
710     GLenum clientWaitSync(WebGLSync sync, GLbitfield flags, GLuint64 timeout);
711     undefined waitSync(WebGLSync sync, GLbitfield flags, GLint64 timeout);
712     any getSyncParameter(WebGLSync sync, GLenum pname);
714     /* Transform Feedback */
715     WebGLTransformFeedback? createTransformFeedback();
716     undefined deleteTransformFeedback(WebGLTransformFeedback? tf);
717     [WebGLHandlesContextLoss] GLboolean isTransformFeedback(WebGLTransformFeedback? tf);
718     undefined bindTransformFeedback(GLenum target, WebGLTransformFeedback? tf);
719     undefined beginTransformFeedback(GLenum primitiveMode);
720     undefined endTransformFeedback();
721     undefined transformFeedbackVaryings(WebGLProgram program, sequence<DOMString> varyings, GLenum bufferMode);
722     [NewObject]
723     WebGLActiveInfo? getTransformFeedbackVarying(WebGLProgram program, GLuint index);
724     undefined pauseTransformFeedback();
725     undefined resumeTransformFeedback();
727     /* Uniform Buffer Objects and Transform Feedback Buffers */
728     undefined bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
729     undefined bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer, GLintptr offset, GLsizeiptr size);
730     [Throws] // GetOrCreateDOMReflector can fail.
731     any getIndexedParameter(GLenum target, GLuint index);
732     sequence<GLuint>? getUniformIndices(WebGLProgram program, sequence<DOMString> uniformNames);
733     any getActiveUniforms(WebGLProgram program, sequence<GLuint> uniformIndices, GLenum pname);
734     GLuint getUniformBlockIndex(WebGLProgram program, DOMString uniformBlockName);
735     [Throws] // Creating a Uint32Array can fail.
736     any getActiveUniformBlockParameter(WebGLProgram program, GLuint uniformBlockIndex, GLenum pname);
737     DOMString? getActiveUniformBlockName(WebGLProgram program, GLuint uniformBlockIndex);
738     undefined uniformBlockBinding(WebGLProgram program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
740     /* Vertex Array Objects */
741     WebGLVertexArrayObject? createVertexArray();
742     undefined deleteVertexArray(WebGLVertexArrayObject? vertexArray);
743     [WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray);
744     undefined bindVertexArray(WebGLVertexArrayObject? array);
747 WebGL2RenderingContext includes WebGLRenderingContextBase;
748 WebGL2RenderingContext includes WebGL2RenderingContextBase;
750 [LegacyNoInterfaceObject,
751  Exposed=(Window,Worker)]
752 interface EXT_color_buffer_float {
755 [LegacyNoInterfaceObject,
756  Exposed=(Window,Worker)]
757 interface OVR_multiview2 {
758     const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630;
759     const GLenum FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632;
760     const GLenum MAX_VIEWS_OVR = 0x9631;
761     const GLenum FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633;
763     undefined framebufferTextureMultiviewOVR(GLenum target, GLenum attachment, WebGLTexture? texture, GLint level, GLint baseViewIndex, GLsizei numViews);