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 * This IDL depends on WebGLRenderingContext.webidl
9 [Pref="webgl.enable-prototype-webgl2"]
10 interface WebGLQuery {
13 [Pref="webgl.enable-prototype-webgl2"]
14 interface WebGL2RenderingContext : WebGLRenderingContext {
17 const GLenum UNSIGNED_INT_24_8 = 0x84FA;
21 const GLenum COLOR_ATTACHMENT1 = 0x8CE1;
22 const GLenum COLOR_ATTACHMENT2 = 0x8CE2;
23 const GLenum COLOR_ATTACHMENT3 = 0x8CE3;
24 const GLenum COLOR_ATTACHMENT4 = 0x8CE4;
25 const GLenum COLOR_ATTACHMENT5 = 0x8CE5;
26 const GLenum COLOR_ATTACHMENT6 = 0x8CE6;
27 const GLenum COLOR_ATTACHMENT7 = 0x8CE7;
28 const GLenum COLOR_ATTACHMENT8 = 0x8CE8;
29 const GLenum COLOR_ATTACHMENT9 = 0x8CE9;
30 const GLenum COLOR_ATTACHMENT10 = 0x8CEA;
31 const GLenum COLOR_ATTACHMENT11 = 0x8CEB;
32 const GLenum COLOR_ATTACHMENT12 = 0x8CEC;
33 const GLenum COLOR_ATTACHMENT13 = 0x8CED;
34 const GLenum COLOR_ATTACHMENT14 = 0x8CEE;
35 const GLenum COLOR_ATTACHMENT15 = 0x8CEF;
37 const GLenum DRAW_BUFFER0 = 0x8825;
38 const GLenum DRAW_BUFFER1 = 0x8826;
39 const GLenum DRAW_BUFFER2 = 0x8827;
40 const GLenum DRAW_BUFFER3 = 0x8828;
41 const GLenum DRAW_BUFFER4 = 0x8829;
42 const GLenum DRAW_BUFFER5 = 0x882A;
43 const GLenum DRAW_BUFFER6 = 0x882B;
44 const GLenum DRAW_BUFFER7 = 0x882C;
45 const GLenum DRAW_BUFFER8 = 0x882D;
46 const GLenum DRAW_BUFFER9 = 0x882E;
47 const GLenum DRAW_BUFFER10 = 0x882F;
48 const GLenum DRAW_BUFFER11 = 0x8830;
49 const GLenum DRAW_BUFFER12 = 0x8831;
50 const GLenum DRAW_BUFFER13 = 0x8832;
51 const GLenum DRAW_BUFFER14 = 0x8833;
52 const GLenum DRAW_BUFFER15 = 0x8834;
54 const GLenum MAX_COLOR_ATTACHMENTS = 0x8CDF;
55 const GLenum MAX_DRAW_BUFFERS = 0x8824;
57 void drawBuffers(sequence<GLenum> buffers);
61 void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
62 void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei primcount);
66 const GLenum VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE;
68 void vertexAttribDivisor(GLuint index, GLuint divisor);
72 const GLenum MIN = 0x8007;
73 const GLenum MAX = 0x8008;
76 /* transform feedback */
77 const GLenum RASTERIZER_DISCARD = 0x8C89;
78 const GLenum TRANSFORM_FEEDBACK_BUFFER = 0x8C8E;
79 const GLenum TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F;
80 const GLenum TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84;
81 const GLenum TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85;
82 const GLenum MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B;
86 const GLenum CURRENT_QUERY = 0x8865;
87 const GLenum QUERY_RESULT = 0x8866;
88 const GLenum QUERY_RESULT_AVAILABLE = 0x8867;
90 void beginQuery(GLenum target, WebGLQuery? queryObject);
91 WebGLQuery? createQuery();
92 void deleteQuery(WebGLQuery? queryObject);
93 void endQuery(GLenum target);
94 WebGLQuery? getQuery(GLenum target, GLenum pname);
95 any getQueryObject(WebGLQuery? queryObject, GLenum pname);
96 [WebGLHandlesContextLoss] GLboolean isQuery(WebGLQuery? queryObject);
99 /* occlusion queries */
100 const GLenum ANY_SAMPLES_PASSED = 0x8C2F;
101 const GLenum ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A;
104 /* transform feedback queries */
105 const GLenum TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88;
109 void bindBufferBase(GLenum target, GLuint index, WebGLBuffer? buffer);
110 void bindBufferRange(GLenum target, GLuint index, WebGLBuffer? buffer,
111 GLintptr offset, GLsizeiptr size);
114 /* standart derivatives */
115 const GLenum FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B;
119 any getParameterIndexed(GLenum pname, GLuint index);
122 /* vertex array objects */
123 const GLenum VERTEX_ARRAY_BINDING = 0x85B5;
125 void bindVertexArray(WebGLVertexArray? arrayObject);
126 WebGLVertexArray? createVertexArray();
127 void deleteVertexArray(WebGLVertexArray? arrayObject);
128 [WebGLHandlesContextLoss] GLboolean isVertexArray(WebGLVertexArray? arrayObject);