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/.
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
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)]
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;
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);
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,
339 undefined invalidateFramebuffer(GLenum target, sequence<GLenum> attachments);
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 */
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,
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);
365 undefined texImage2D(GLenum target, GLint level, GLint internalformat,
366 GLenum format, GLenum type, HTMLCanvasElement source); // May throw DOMException
368 undefined texImage2D(GLenum target, GLint level, GLint internalformat,
369 GLenum format, GLenum type, HTMLImageElement source); // May throw DOMException
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);
391 undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
392 GLenum format, GLenum type, HTMLCanvasElement source); // May throw DOMException
394 undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
395 GLenum format, GLenum type, HTMLImageElement source); // May throw DOMException
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);
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
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
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,
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,
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,
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,
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);
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
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
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,
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,
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,
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,
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);
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
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
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,
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,
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,
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,
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,
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
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
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,
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,
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,
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);
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);
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 */
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);
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,
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);
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);
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);
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);