Move some methods out of the WebGLRenderingContextBase mixin

Those methods are to be overloaded in WebGL2, but this can't be done with
their current definitions, thanks to https://github.com/KhronosGroup/WebGL/issues/2216.
This commit is contained in:
Anthony Ramine 2018-04-04 13:11:12 +02:00
parent bb2b6a7a41
commit 93d2082acb
2 changed files with 75 additions and 39 deletions

View file

@ -179,6 +179,7 @@ interface WebGL2RenderingContextBase
const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216; const GLenum FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216;
const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217; const GLenum FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217;
const GLenum FRAMEBUFFER_DEFAULT = 0x8218; const GLenum FRAMEBUFFER_DEFAULT = 0x8218;
// BUG: https://github.com/KhronosGroup/WebGL/issues/2216
// const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A; // const GLenum DEPTH_STENCIL_ATTACHMENT = 0x821A;
// const GLenum DEPTH_STENCIL = 0x84F9; // const GLenum DEPTH_STENCIL = 0x84F9;
const GLenum UNSIGNED_INT_24_8 = 0x84FA; const GLenum UNSIGNED_INT_24_8 = 0x84FA;
@ -303,9 +304,13 @@ interface WebGL2RenderingContextBase
/* Buffer objects */ /* Buffer objects */
// WebGL1: // WebGL1:
// void bufferData(GLenum target, GLsizeiptr size, GLenum usage); // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
// void bufferData(GLenum target, [AllowShared] BufferSource? srcData, GLenum usage); // FIXME(xanewok): https://github.com/servo/servo/issues/20513
// void bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] BufferSource srcData); [Throws]
void bufferData(GLenum target, object? data, GLenum usage);
[Throws]
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
void bufferSubData(GLenum target, GLintptr dstByteOffset, /*[AllowShared]*/ BufferSource srcData);
// WebGL2: // WebGL2:
// void bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset, // void bufferData(GLenum target, [AllowShared] ArrayBufferView srcData, GLenum usage, GLuint srcOffset,
// optional GLuint length = 0); // optional GLuint length = 0);
@ -342,17 +347,23 @@ interface WebGL2RenderingContextBase
// GLsizei height, GLsizei depth); // GLsizei height, GLsizei depth);
// WebGL1 legacy entrypoints: // WebGL1 legacy entrypoints:
// void texImage2D(GLenum target, GLint level, GLint internalformat, // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
// GLsizei width, GLsizei height, GLint border, GLenum format, [Throws]
// GLenum type, [AllowShared] ArrayBufferView? pixels); void texImage2D(GLenum target, GLint level, GLenum internalformat,
// void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format,
// GLenum format, GLenum type, TexImageSource source); // May throw DOMException GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
[Throws]
void texImage2D(GLenum target, GLint level, GLenum internalformat,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
// void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
// GLsizei width, GLsizei height, [Throws]
// GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
// void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,
// GLenum format, GLenum type, TexImageSource source); // May throw DOMException GLenum format, GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
[Throws]
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
// WebGL2 entrypoints: // WebGL2 entrypoints:
// void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, // void texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height,
@ -498,8 +509,9 @@ interface WebGL2RenderingContextBase
/* Reading back pixels */ /* Reading back pixels */
// WebGL1: // WebGL1:
// void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
// [AllowShared] ArrayBufferView? dstData); void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
/*[AllowShared]*/ ArrayBufferView? dstData);
// WebGL2: // WebGL2:
// void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, // void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type,
// GLintptr offset); // GLintptr offset);

View file

@ -491,12 +491,10 @@ interface WebGLRenderingContextBase
void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB,
GLenum srcAlpha, GLenum dstAlpha); GLenum srcAlpha, GLenum dstAlpha);
// FIXME(xanewok): https://github.com/servo/servo/issues/20513 // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
[Throws] // void bufferData(GLenum target, object? data, GLenum usage);
void bufferData(GLenum target, object? data, GLenum usage); // void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
[Throws] // void bufferSubData(GLenum target, GLintptr offset, /*[AllowShared]*/ BufferSource data);
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
void bufferSubData(GLenum target, GLintptr offset, /*[AllowShared]*/ BufferSource data);
[WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target); [WebGLHandlesContextLoss] GLenum checkFramebufferStatus(GLenum target);
void clear(GLbitfield mask); void clear(GLbitfield mask);
@ -604,8 +602,9 @@ interface WebGLRenderingContextBase
void pixelStorei(GLenum pname, GLint param); void pixelStorei(GLenum pname, GLint param);
void polygonOffset(GLfloat factor, GLfloat units); void polygonOffset(GLfloat factor, GLfloat units);
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
GLenum format, GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels); // void readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
// GLenum format, GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
void renderbufferStorage(GLenum target, GLenum internalformat, void renderbufferStorage(GLenum target, GLenum internalformat,
GLsizei width, GLsizei height); GLsizei width, GLsizei height);
@ -621,14 +620,12 @@ interface WebGLRenderingContextBase
void stencilOp(GLenum fail, GLenum zfail, GLenum zpass); void stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass); void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
// FIXME: https://github.com/servo/servo/issues/20516 // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
[Throws] // void texImage2D(GLenum target, GLint level, GLenum internalformat,
void texImage2D(GLenum target, GLint level, GLenum internalformat, // GLsizei width, GLsizei height, GLint border, GLenum format,
GLsizei width, GLsizei height, GLint border, GLenum format, // GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels); // void texImage2D(GLenum target, GLint level, GLenum internalformat,
[Throws] // GLenum format, GLenum type, TexImageSource source); // May throw DOMException
void texImage2D(GLenum target, GLint level, GLenum internalformat,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
[Throws, Pref="dom.webgl.dom_to_texture.enabled"] [Throws, Pref="dom.webgl.dom_to_texture.enabled"]
void texImageDOM(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, void texImageDOM(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
GLenum format, GLenum type, HTMLIFrameElement source); // May throw DOMException GLenum format, GLenum type, HTMLIFrameElement source); // May throw DOMException
@ -636,14 +633,12 @@ interface WebGLRenderingContextBase
void texParameterf(GLenum target, GLenum pname, GLfloat param); void texParameterf(GLenum target, GLenum pname, GLfloat param);
void texParameteri(GLenum target, GLenum pname, GLint param); void texParameteri(GLenum target, GLenum pname, GLint param);
// FIXME: https://github.com/servo/servo/issues/20516 // BUG: https://github.com/KhronosGroup/WebGL/issues/2216
[Throws] // void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, // GLsizei width, GLsizei height,
GLsizei width, GLsizei height, // GLenum format, GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
GLenum format, GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels); // void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
[Throws] // GLenum format, GLenum type, TexImageSource source); // May throw DOMException
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
void uniform1f(WebGLUniformLocation? location, GLfloat x); void uniform1f(WebGLUniformLocation? location, GLfloat x);
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
@ -691,5 +686,34 @@ interface WebGLRenderingContextBase
[Exposed=Window] [Exposed=Window]
interface WebGLRenderingContext interface WebGLRenderingContext
{ {
// BUG: https://github.com/KhronosGroup/WebGL/issues/2216
// FIXME(xanewok): https://github.com/servo/servo/issues/20513
[Throws]
void bufferData(GLenum target, object? data, GLenum usage);
[Throws]
void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
void bufferSubData(GLenum target, GLintptr offset, /*[AllowShared]*/ BufferSource data);
// FIXME: https://github.com/servo/servo/issues/20516
[Throws]
void texImage2D(GLenum target, GLint level, GLenum internalformat,
GLsizei width, GLsizei height, GLint border, GLenum format,
GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
[Throws]
void texImage2D(GLenum target, GLint level, GLenum internalformat,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
// FIXME: https://github.com/servo/servo/issues/20516
[Throws]
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
[Throws]
void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
GLenum format, GLenum type, TexImageSource source); // May throw DOMException
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
GLenum format, GLenum type, /*[AllowShared]*/ ArrayBufferView? pixels);
}; };
WebGLRenderingContext implements WebGLRenderingContextBase; WebGLRenderingContext implements WebGLRenderingContextBase;