--- a/dom/webidl/WebGL2RenderingContext.webidl
+++ b/dom/webidl/WebGL2RenderingContext.webidl
@@ -25,16 +25,18 @@ interface WebGLSync {
[Pref="webgl.enable-webgl2"]
interface WebGLTransformFeedback {
};
[Pref="webgl.enable-webgl2"]
interface WebGLVertexArrayObject {
};
+typedef (Uint32Array or sequence<GLuint>) Uint32List;
+
[Pref="webgl.enable-webgl2"]
interface WebGL2RenderingContext : WebGLRenderingContext
{
const GLenum READ_BUFFER = 0x0C02;
const GLenum UNPACK_ROW_LENGTH = 0x0CF2;
const GLenum UNPACK_SKIP_ROWS = 0x0CF3;
const GLenum UNPACK_SKIP_PIXELS = 0x0CF4;
const GLenum PACK_ROW_LENGTH = 0x0D02;
@@ -503,45 +505,75 @@ interface WebGL2RenderingContext : WebGL
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, HTMLVideoElement video);
////////////////////////////////////
/* Programs and shaders */
[WebGLHandlesContextLoss] GLint getFragDataLocation(WebGLProgram? program, DOMString name);
- /* Uniforms and attributes */
+ /* Uniforms */
void uniform1ui(WebGLUniformLocation? location, GLuint v0);
void uniform2ui(WebGLUniformLocation? location, GLuint v0, GLuint v1);
void uniform3ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2);
void uniform4ui(WebGLUniformLocation? location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
- void uniform1uiv(WebGLUniformLocation? location, Uint32Array value);
- void uniform1uiv(WebGLUniformLocation? location, sequence<GLuint> value);
- void uniform2uiv(WebGLUniformLocation? location, Uint32Array value);
- void uniform2uiv(WebGLUniformLocation? location, sequence<GLuint> value);
- void uniform3uiv(WebGLUniformLocation? location, Uint32Array value);
- void uniform3uiv(WebGLUniformLocation? location, sequence<GLuint> value);
- void uniform4uiv(WebGLUniformLocation? location, Uint32Array value);
- void uniform4uiv(WebGLUniformLocation? location, sequence<GLuint> value);
- void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
- void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
- void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
- void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
- void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
- void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
- void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
- void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
- void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
- void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
- void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32Array value);
- void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, sequence<GLfloat> value);
+
+ void uniform1fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform2fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform3fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform4fv(WebGLUniformLocation? location, Float32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+
+ void uniform1iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform2iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform3iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform4iv(WebGLUniformLocation? location, Int32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+
+ void uniform1uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform2uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform3uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+ void uniform4uiv(WebGLUniformLocation? location, Uint32List data, optional GLuint srcOffset = 0,
+ optional GLuint srcLength = 0);
+
+ void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix3x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix4x2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+
+ void uniformMatrix2x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix4x3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+
+ void uniformMatrix2x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix3x4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+ void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data,
+ optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
+
+ /* Vertex attribs */
void vertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w);
- void vertexAttribI4iv(GLuint index, sequence<GLint> v);
+ void vertexAttribI4iv(GLuint index, Int32List values);
void vertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
- void vertexAttribI4uiv(GLuint index, sequence<GLuint> v);
+ void vertexAttribI4uiv(GLuint index, Uint32List values);
void vertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
/* Writing to the drawing buffer */
void vertexAttribDivisor(GLuint index, GLuint divisor);
void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, GLintptr offset, GLsizei instanceCount);
void drawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLintptr offset);
--- a/dom/webidl/WebGLRenderingContext.webidl
+++ b/dom/webidl/WebGLRenderingContext.webidl
@@ -95,16 +95,19 @@ interface WebGLActiveInfo {
[Exposed=(Window,Worker),
Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"]
interface WebGLShaderPrecisionFormat {
readonly attribute GLint rangeMin;
readonly attribute GLint rangeMax;
readonly attribute GLint precision;
};
+typedef (Float32Array or sequence<GLfloat>) Float32List;
+typedef (Int32Array or sequence<GLint>) Int32List;
+
[Exposed=(Window,Worker),
Func="mozilla::dom::OffscreenCanvas::PrefEnabledOnWorkerThread"]
interface WebGLRenderingContext {
/* ClearBufferMask */
const GLenum DEPTH_BUFFER_BIT = 0x00000100;
const GLenum STENCIL_BUFFER_BIT = 0x00000400;
const GLenum COLOR_BUFFER_BIT = 0x00004000;
@@ -726,52 +729,38 @@ interface WebGLRenderingContext {
[Throws]
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, HTMLCanvasElement canvas); // May throw DOMException
[Throws]
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, HTMLVideoElement video); // May throw DOMException
void uniform1f(WebGLUniformLocation? location, GLfloat x);
- void uniform1fv(WebGLUniformLocation? location, Float32Array v);
- void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v);
- void uniform1i(WebGLUniformLocation? location, GLint x);
- void uniform1iv(WebGLUniformLocation? location, Int32Array v);
- void uniform1iv(WebGLUniformLocation? location, sequence<long> v);
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
- void uniform2fv(WebGLUniformLocation? location, Float32Array v);
- void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v);
- void uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
- void uniform2iv(WebGLUniformLocation? location, Int32Array v);
- void uniform2iv(WebGLUniformLocation? location, sequence<long> v);
void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
- void uniform3fv(WebGLUniformLocation? location, Float32Array v);
- void uniform3fv(WebGLUniformLocation? location, sequence<GLfloat> v);
- void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
- void uniform3iv(WebGLUniformLocation? location, Int32Array v);
- void uniform3iv(WebGLUniformLocation? location, sequence<long> v);
void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
- void uniform4fv(WebGLUniformLocation? location, Float32Array v);
- void uniform4fv(WebGLUniformLocation? location, sequence<GLfloat> v);
+
+ void uniform1i(WebGLUniformLocation? location, GLint x);
+ void uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
+ void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
- void uniform4iv(WebGLUniformLocation? location, Int32Array v);
- void uniform4iv(WebGLUniformLocation? location, sequence<long> v);
- void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose,
- Float32Array value);
- void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose,
- sequence<GLfloat> value);
- void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose,
- Float32Array value);
- void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose,
- sequence<GLfloat> value);
- void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose,
- Float32Array value);
- void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose,
- sequence<GLfloat> value);
+ void uniform1fv(WebGLUniformLocation? location, Float32List data);
+ void uniform2fv(WebGLUniformLocation? location, Float32List data);
+ void uniform3fv(WebGLUniformLocation? location, Float32List data);
+ void uniform4fv(WebGLUniformLocation? location, Float32List data);
+
+ void uniform1iv(WebGLUniformLocation? location, Int32List data);
+ void uniform2iv(WebGLUniformLocation? location, Int32List data);
+ void uniform3iv(WebGLUniformLocation? location, Int32List data);
+ void uniform4iv(WebGLUniformLocation? location, Int32List data);
+
+ void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data);
+ void uniformMatrix3fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data);
+ void uniformMatrix4fv(WebGLUniformLocation? location, GLboolean transpose, Float32List data);
void useProgram(WebGLProgram? program);
void validateProgram(WebGLProgram? program);
void vertexAttrib1f(GLuint indx, GLfloat x);
void vertexAttrib1fv(GLuint indx, Float32Array values);
void vertexAttrib1fv(GLuint indx, sequence<GLfloat> values);
void vertexAttrib2f(GLuint indx, GLfloat x, GLfloat y);