1 // AUTOGENERATED FILE -- DO NOT EDIT -- SEE Makefile
3 // WebGL IDL definitions scraped from the Khronos specification:
4 // https://www.khronos.org/registry/webgl/specs/latest/
6 // This IDL depends on the typed array specification defined at:
7 // https://www.khronos.org/registry/typedarray/specs/latest/typedarrays.idl
9 typedef long long GLint64;
10 typedef unsigned long long GLuint64;
13 interface WebGLQuery : WebGLObject {
16 interface WebGLSampler : WebGLObject {
19 interface WebGLSync : WebGLObject {
22 interface WebGLTransformFeedback : WebGLObject {
25 interface WebGLVertexArrayObject : WebGLObject {
29 interface WebGL2RenderingContextBase
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;
331 void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
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);
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);
354 /* Programs and shaders */
355 [WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram? program, DOMString name);
357 /* Uniforms and attributes */
358 void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
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);
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);
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);
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);
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);
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);
435 /* TODO: document return type */
436 any getSamplerParameter(WebGLSampler? sampler, GLenum pname);
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);
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();
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);
472 /* Vertex Array Objects */
473 WebGLVertexArrayObject? createVertexArray();
474 void deleteVertexArray(WebGLVertexArrayObject? vertexArray);
475 [WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArrayObject? vertexArray);
476 void bindVertexArray(WebGLVertexArrayObject? array);
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
487 WebGL2RenderingContextBase implements WebGLRenderingContextBase;
489 interface WebGL2RenderingContext
492 WebGL2RenderingContext implements WebGL2RenderingContextBase;