Add WebGL function glGetTexParameter

Set the expected result of the test `tex-input-validation.html` to CRASH, since
that is caused by unrelated problems. The test was previously not executing
completely, because it stopped when it didn't find the implementation of
getTexParameter.
This commit is contained in:
Martina Kollarova 2018-02-28 16:03:48 +02:00
parent 7931df716d
commit 288ef50fb7
11 changed files with 156 additions and 264 deletions

View file

@ -758,6 +758,8 @@ impl WebGLImpl {
Self::buffer_parameter(ctx.gl(), target, param_id, chan),
WebGLCommand::GetParameter(param_id, chan) =>
Self::parameter(ctx.gl(), param_id, chan),
WebGLCommand::GetTexParameter(target, pname, chan) =>
Self::get_tex_parameter(ctx.gl(), target, pname, chan),
WebGLCommand::GetProgramParameter(program_id, param_id, chan) =>
Self::program_parameter(ctx.gl(), program_id, param_id, chan),
WebGLCommand::GetShaderParameter(shader_id, param_id, chan) =>
@ -1061,6 +1063,27 @@ impl WebGLImpl {
chan.send(result).unwrap();
}
fn get_tex_parameter(gl: &gl::Gl,
target: u32,
pname: u32,
chan: WebGLSender<WebGLResult<WebGLParameter>> ) {
let result = match pname {
gl::TEXTURE_MAG_FILTER |
gl::TEXTURE_MIN_FILTER |
gl::TEXTURE_WRAP_S |
gl::TEXTURE_WRAP_T => {
let parameter = gl.get_tex_parameter_iv(target, pname);
if parameter == 0 {
Ok(WebGLParameter::Invalid)
} else {
Ok(WebGLParameter::Int(parameter))
}
}
_ => Err(WebGLError::InvalidEnum)
};
chan.send(result).unwrap();
}
fn finish(gl: &gl::Gl, chan: WebGLSender<()>) {
gl.finish();
chan.send(()).unwrap();

View file

@ -207,6 +207,7 @@ pub enum WebGLCommand {
GetBufferParameter(u32, u32, WebGLSender<WebGLResult<WebGLParameter>>),
GetExtensions(WebGLSender<String>),
GetParameter(u32, WebGLSender<WebGLResult<WebGLParameter>>),
GetTexParameter(u32, u32, WebGLSender<WebGLResult<WebGLParameter>>),
GetProgramParameter(WebGLProgramId, u32, WebGLSender<WebGLResult<WebGLParameter>>),
GetShaderParameter(WebGLShaderId, u32, WebGLSender<WebGLResult<WebGLParameter>>),
GetShaderPrecisionFormat(u32, u32, WebGLSender<WebGLResult<(i32, i32, i32)>>),
@ -477,6 +478,7 @@ impl fmt::Debug for WebGLCommand {
GetBufferParameter(..) => "GetBufferParameter",
GetExtensions(..) => "GetExtensions",
GetParameter(..) => "GetParameter",
GetTexParameter(..) => "GetTexParameter",
GetProgramParameter(..) => "GetProgramParameter",
GetShaderParameter(..) => "GetShaderParameter",
GetShaderPrecisionFormat(..) => "GetShaderPrecisionFormat",

View file

@ -115,6 +115,12 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {
self.base.GetParameter(cx, parameter)
}
#[allow(unsafe_code)]
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8
unsafe fn GetTexParameter(&self, cx: *mut JSContext, target: u32, pname: u32) -> JSVal {
self.base.GetTexParameter(cx, target, pname)
}
/// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn GetError(&self) -> u32 {
self.base.GetError()

View file

@ -1336,6 +1336,37 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
}
#[allow(unsafe_code)]
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8
unsafe fn GetTexParameter(&self, _cx: *mut JSContext, target: u32, pname: u32) -> JSVal {
let texture = match target {
constants::TEXTURE_2D |
constants::TEXTURE_CUBE_MAP => self.bound_texture(target),
_ => {
self.webgl_error(InvalidEnum);
return NullValue();
}
};
if texture.is_some() {
let (sender, receiver) = webgl_channel().unwrap();
self.send_command(WebGLCommand::GetTexParameter(target, pname, sender));
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
WebGLParameter::Int(val) => Int32Value(val),
WebGLParameter::Bool(_) => panic!("Texture parameter should not be bool"),
WebGLParameter::Float(_) => panic!("Texture parameter should not be float"),
WebGLParameter::FloatArray(_) => panic!("Texture parameter should not be float array"),
WebGLParameter::String(_) => panic!("Texture parameter should not be string"),
WebGLParameter::Invalid => {
self.webgl_error(InvalidEnum);
NullValue()
}
}
} else {
self.webgl_error(InvalidOperation);
NullValue()
}
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
fn GetError(&self) -> u32 {
let error_code = if let Some(error) = self.last_error.get() {

View file

@ -600,7 +600,7 @@ interface WebGLRenderingContextBase
DOMString? getShaderSource(WebGLShader? shader);
//any getTexParameter(GLenum target, GLenum pname);
any getTexParameter(GLenum target, GLenum pname);
//any getUniform(WebGLProgram? program, WebGLUniformLocation? location);

View file

@ -9,12 +9,9 @@
[WebGL test #2: Property either does not exist or is not a function: getRenderbufferParameter]
expected: FAIL
[WebGL test #3: Property either does not exist or is not a function: getTexParameter]
[WebGL test #3: Property either does not exist or is not a function: getUniform]
expected: FAIL
[WebGL test #4: Property either does not exist or is not a function: getUniform]
expected: FAIL
[WebGL test #5: Property either does not exist or is not a function: isContextLost]
[WebGL test #4: Property either does not exist or is not a function: isContextLost]
expected: FAIL

View file

@ -1,6 +0,0 @@
[ext-texture-filter-anisotropic.html]
type: testharness
expected: ERROR
[WebGL test #2: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL

View file

@ -1,12 +0,0 @@
[gl-enum-tests.html]
type: testharness
expected: ERROR
[WebGL test #18: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL
[WebGL test #1: context does not exist]
expected: FAIL

View file

@ -1,146 +0,0 @@
[gl-get-tex-parameter.html]
type: testharness
[WebGL test #1: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_S"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #2: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_S"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #3: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_S"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #4: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_S"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #5: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_T"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #6: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_T"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #7: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_T"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #8: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_T"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #9: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #10: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #11: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #12: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #13: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #14: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #15: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #16: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_FILTER"\]) should be 9986. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #17: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_S"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #18: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_S"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #19: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_S"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #20: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_S"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #21: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_T"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #22: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_T"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #23: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_T"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #24: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_T"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #25: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #26: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #27: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #28: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #29: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #30: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #31: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #32: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #33: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_S"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #34: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_S"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #35: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_S"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #36: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_S"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #37: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_T"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #38: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_WRAP_T"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #39: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_T"\]) should be 33071. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #40: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_WRAP_T"\]) should be 10497. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #41: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #42: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #43: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAG_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #44: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MAG_FILTER"\]) should be 9729. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #45: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #46: gl.getTexParameter(gl["TEXTURE_2D"\], gl["TEXTURE_MIN_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #47: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_FILTER"\]) should be 9987. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL
[WebGL test #48: gl.getTexParameter(gl["TEXTURE_CUBE_MAP"\], gl["TEXTURE_MIN_FILTER"\]) should be 9728. Threw exception TypeError: gl.getTexParameter is not a function]
expected: FAIL

View file

@ -1,6 +1,6 @@
[tex-input-validation.html]
type: testharness
expected: ERROR
expected: CRASH
[WebGL test #3: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL

View file

@ -8,276 +8,273 @@
[WebGL test #2: Property either does not exist or is not a function: getRenderbufferParameter]
expected: FAIL
[WebGL test #3: Property either does not exist or is not a function: getTexParameter]
[WebGL test #3: Property either does not exist or is not a function: getUniform]
expected: FAIL
[WebGL test #4: Property either does not exist or is not a function: getUniform]
[WebGL test #4: Property either does not exist or is not a function: isContextLost]
expected: FAIL
[WebGL test #5: Property either does not exist or is not a function: isContextLost]
[WebGL test #5: Property either does not exist or is not a function: getBufferSubData]
expected: FAIL
[WebGL test #6: Property either does not exist or is not a function: getBufferSubData]
[WebGL test #6: Property either does not exist or is not a function: copyBufferSubData]
expected: FAIL
[WebGL test #7: Property either does not exist or is not a function: copyBufferSubData]
[WebGL test #7: Property either does not exist or is not a function: blitFramebuffer]
expected: FAIL
[WebGL test #8: Property either does not exist or is not a function: blitFramebuffer]
[WebGL test #8: Property either does not exist or is not a function: framebufferTextureLayer]
expected: FAIL
[WebGL test #9: Property either does not exist or is not a function: framebufferTextureLayer]
[WebGL test #9: Property either does not exist or is not a function: getInternalformatParameter]
expected: FAIL
[WebGL test #10: Property either does not exist or is not a function: getInternalformatParameter]
[WebGL test #10: Property either does not exist or is not a function: invalidateFramebuffer]
expected: FAIL
[WebGL test #11: Property either does not exist or is not a function: invalidateFramebuffer]
[WebGL test #11: Property either does not exist or is not a function: invalidateSubFramebuffer]
expected: FAIL
[WebGL test #12: Property either does not exist or is not a function: invalidateSubFramebuffer]
[WebGL test #12: Property either does not exist or is not a function: readBuffer]
expected: FAIL
[WebGL test #13: Property either does not exist or is not a function: readBuffer]
[WebGL test #13: Property either does not exist or is not a function: renderbufferStorageMultisample]
expected: FAIL
[WebGL test #14: Property either does not exist or is not a function: renderbufferStorageMultisample]
[WebGL test #14: Property either does not exist or is not a function: texImage3D]
expected: FAIL
[WebGL test #15: Property either does not exist or is not a function: texImage3D]
[WebGL test #15: Property either does not exist or is not a function: texStorage2D]
expected: FAIL
[WebGL test #16: Property either does not exist or is not a function: texStorage2D]
[WebGL test #16: Property either does not exist or is not a function: texStorage3D]
expected: FAIL
[WebGL test #17: Property either does not exist or is not a function: texStorage3D]
[WebGL test #17: Property either does not exist or is not a function: texSubImage3D]
expected: FAIL
[WebGL test #18: Property either does not exist or is not a function: texSubImage3D]
[WebGL test #18: Property either does not exist or is not a function: copyTexSubImage3D]
expected: FAIL
[WebGL test #19: Property either does not exist or is not a function: copyTexSubImage3D]
[WebGL test #19: Property either does not exist or is not a function: compressedTexImage3D]
expected: FAIL
[WebGL test #20: Property either does not exist or is not a function: compressedTexImage3D]
[WebGL test #20: Property either does not exist or is not a function: compressedTexSubImage3D]
expected: FAIL
[WebGL test #21: Property either does not exist or is not a function: compressedTexSubImage3D]
[WebGL test #21: Property either does not exist or is not a function: getFragDataLocation]
expected: FAIL
[WebGL test #22: Property either does not exist or is not a function: getFragDataLocation]
[WebGL test #22: Property either does not exist or is not a function: uniform1ui]
expected: FAIL
[WebGL test #23: Property either does not exist or is not a function: uniform1ui]
[WebGL test #23: Property either does not exist or is not a function: uniform2ui]
expected: FAIL
[WebGL test #24: Property either does not exist or is not a function: uniform2ui]
[WebGL test #24: Property either does not exist or is not a function: uniform3ui]
expected: FAIL
[WebGL test #25: Property either does not exist or is not a function: uniform3ui]
[WebGL test #25: Property either does not exist or is not a function: uniform4ui]
expected: FAIL
[WebGL test #26: Property either does not exist or is not a function: uniform4ui]
[WebGL test #26: Property either does not exist or is not a function: uniform1uiv]
expected: FAIL
[WebGL test #27: Property either does not exist or is not a function: uniform1uiv]
[WebGL test #27: Property either does not exist or is not a function: uniform2uiv]
expected: FAIL
[WebGL test #28: Property either does not exist or is not a function: uniform2uiv]
[WebGL test #28: Property either does not exist or is not a function: uniform3uiv]
expected: FAIL
[WebGL test #29: Property either does not exist or is not a function: uniform3uiv]
[WebGL test #29: Property either does not exist or is not a function: uniform4uiv]
expected: FAIL
[WebGL test #30: Property either does not exist or is not a function: uniform4uiv]
[WebGL test #30: Property either does not exist or is not a function: uniformMatrix2x3fv]
expected: FAIL
[WebGL test #31: Property either does not exist or is not a function: uniformMatrix2x3fv]
[WebGL test #31: Property either does not exist or is not a function: uniformMatrix3x2fv]
expected: FAIL
[WebGL test #32: Property either does not exist or is not a function: uniformMatrix3x2fv]
[WebGL test #32: Property either does not exist or is not a function: uniformMatrix2x4fv]
expected: FAIL
[WebGL test #33: Property either does not exist or is not a function: uniformMatrix2x4fv]
[WebGL test #33: Property either does not exist or is not a function: uniformMatrix4x2fv]
expected: FAIL
[WebGL test #34: Property either does not exist or is not a function: uniformMatrix4x2fv]
[WebGL test #34: Property either does not exist or is not a function: uniformMatrix3x4fv]
expected: FAIL
[WebGL test #35: Property either does not exist or is not a function: uniformMatrix3x4fv]
[WebGL test #35: Property either does not exist or is not a function: uniformMatrix4x3fv]
expected: FAIL
[WebGL test #36: Property either does not exist or is not a function: uniformMatrix4x3fv]
[WebGL test #36: Property either does not exist or is not a function: vertexAttribI4i]
expected: FAIL
[WebGL test #37: Property either does not exist or is not a function: vertexAttribI4i]
[WebGL test #37: Property either does not exist or is not a function: vertexAttribI4iv]
expected: FAIL
[WebGL test #38: Property either does not exist or is not a function: vertexAttribI4iv]
[WebGL test #38: Property either does not exist or is not a function: vertexAttribI4ui]
expected: FAIL
[WebGL test #39: Property either does not exist or is not a function: vertexAttribI4ui]
[WebGL test #39: Property either does not exist or is not a function: vertexAttribI4uiv]
expected: FAIL
[WebGL test #40: Property either does not exist or is not a function: vertexAttribI4uiv]
[WebGL test #40: Property either does not exist or is not a function: vertexAttribIPointer]
expected: FAIL
[WebGL test #41: Property either does not exist or is not a function: vertexAttribIPointer]
[WebGL test #41: Property either does not exist or is not a function: vertexAttribDivisor]
expected: FAIL
[WebGL test #42: Property either does not exist or is not a function: vertexAttribDivisor]
[WebGL test #42: Property either does not exist or is not a function: drawArraysInstanced]
expected: FAIL
[WebGL test #43: Property either does not exist or is not a function: drawArraysInstanced]
[WebGL test #43: Property either does not exist or is not a function: drawElementsInstanced]
expected: FAIL
[WebGL test #44: Property either does not exist or is not a function: drawElementsInstanced]
[WebGL test #44: Property either does not exist or is not a function: drawRangeElements]
expected: FAIL
[WebGL test #45: Property either does not exist or is not a function: drawRangeElements]
[WebGL test #45: Property either does not exist or is not a function: drawBuffers]
expected: FAIL
[WebGL test #46: Property either does not exist or is not a function: drawBuffers]
[WebGL test #46: Property either does not exist or is not a function: clearBufferiv]
expected: FAIL
[WebGL test #47: Property either does not exist or is not a function: clearBufferiv]
[WebGL test #47: Property either does not exist or is not a function: clearBufferuiv]
expected: FAIL
[WebGL test #48: Property either does not exist or is not a function: clearBufferuiv]
[WebGL test #48: Property either does not exist or is not a function: clearBufferfv]
expected: FAIL
[WebGL test #49: Property either does not exist or is not a function: clearBufferfv]
[WebGL test #49: Property either does not exist or is not a function: clearBufferfi]
expected: FAIL
[WebGL test #50: Property either does not exist or is not a function: clearBufferfi]
[WebGL test #50: Property either does not exist or is not a function: createQuery]
expected: FAIL
[WebGL test #51: Property either does not exist or is not a function: createQuery]
[WebGL test #51: Property either does not exist or is not a function: deleteQuery]
expected: FAIL
[WebGL test #52: Property either does not exist or is not a function: deleteQuery]
[WebGL test #52: Property either does not exist or is not a function: isQuery]
expected: FAIL
[WebGL test #53: Property either does not exist or is not a function: isQuery]
[WebGL test #53: Property either does not exist or is not a function: beginQuery]
expected: FAIL
[WebGL test #54: Property either does not exist or is not a function: beginQuery]
[WebGL test #54: Property either does not exist or is not a function: endQuery]
expected: FAIL
[WebGL test #55: Property either does not exist or is not a function: endQuery]
[WebGL test #55: Property either does not exist or is not a function: getQuery]
expected: FAIL
[WebGL test #56: Property either does not exist or is not a function: getQuery]
[WebGL test #56: Property either does not exist or is not a function: getQueryParameter]
expected: FAIL
[WebGL test #57: Property either does not exist or is not a function: getQueryParameter]
[WebGL test #57: Property either does not exist or is not a function: createSampler]
expected: FAIL
[WebGL test #58: Property either does not exist or is not a function: createSampler]
[WebGL test #58: Property either does not exist or is not a function: deleteSampler]
expected: FAIL
[WebGL test #59: Property either does not exist or is not a function: deleteSampler]
[WebGL test #59: Property either does not exist or is not a function: isSampler]
expected: FAIL
[WebGL test #60: Property either does not exist or is not a function: isSampler]
[WebGL test #60: Property either does not exist or is not a function: bindSampler]
expected: FAIL
[WebGL test #61: Property either does not exist or is not a function: bindSampler]
[WebGL test #61: Property either does not exist or is not a function: samplerParameteri]
expected: FAIL
[WebGL test #62: Property either does not exist or is not a function: samplerParameteri]
[WebGL test #62: Property either does not exist or is not a function: samplerParameterf]
expected: FAIL
[WebGL test #63: Property either does not exist or is not a function: samplerParameterf]
[WebGL test #63: Property either does not exist or is not a function: getSamplerParameter]
expected: FAIL
[WebGL test #64: Property either does not exist or is not a function: getSamplerParameter]
[WebGL test #64: Property either does not exist or is not a function: fenceSync]
expected: FAIL
[WebGL test #65: Property either does not exist or is not a function: fenceSync]
[WebGL test #65: Property either does not exist or is not a function: isSync]
expected: FAIL
[WebGL test #66: Property either does not exist or is not a function: isSync]
[WebGL test #66: Property either does not exist or is not a function: deleteSync]
expected: FAIL
[WebGL test #67: Property either does not exist or is not a function: deleteSync]
[WebGL test #67: Property either does not exist or is not a function: clientWaitSync]
expected: FAIL
[WebGL test #68: Property either does not exist or is not a function: clientWaitSync]
[WebGL test #68: Property either does not exist or is not a function: waitSync]
expected: FAIL
[WebGL test #69: Property either does not exist or is not a function: waitSync]
[WebGL test #69: Property either does not exist or is not a function: getSyncParameter]
expected: FAIL
[WebGL test #70: Property either does not exist or is not a function: getSyncParameter]
[WebGL test #70: Property either does not exist or is not a function: createTransformFeedback]
expected: FAIL
[WebGL test #71: Property either does not exist or is not a function: createTransformFeedback]
[WebGL test #71: Property either does not exist or is not a function: deleteTransformFeedback]
expected: FAIL
[WebGL test #72: Property either does not exist or is not a function: deleteTransformFeedback]
[WebGL test #72: Property either does not exist or is not a function: isTransformFeedback]
expected: FAIL
[WebGL test #73: Property either does not exist or is not a function: isTransformFeedback]
[WebGL test #73: Property either does not exist or is not a function: bindTransformFeedback]
expected: FAIL
[WebGL test #74: Property either does not exist or is not a function: bindTransformFeedback]
[WebGL test #74: Property either does not exist or is not a function: beginTransformFeedback]
expected: FAIL
[WebGL test #75: Property either does not exist or is not a function: beginTransformFeedback]
[WebGL test #75: Property either does not exist or is not a function: endTransformFeedback]
expected: FAIL
[WebGL test #76: Property either does not exist or is not a function: endTransformFeedback]
[WebGL test #76: Property either does not exist or is not a function: transformFeedbackVaryings]
expected: FAIL
[WebGL test #77: Property either does not exist or is not a function: transformFeedbackVaryings]
[WebGL test #77: Property either does not exist or is not a function: getTransformFeedbackVarying]
expected: FAIL
[WebGL test #78: Property either does not exist or is not a function: getTransformFeedbackVarying]
[WebGL test #78: Property either does not exist or is not a function: pauseTransformFeedback]
expected: FAIL
[WebGL test #79: Property either does not exist or is not a function: pauseTransformFeedback]
[WebGL test #79: Property either does not exist or is not a function: resumeTransformFeedback]
expected: FAIL
[WebGL test #80: Property either does not exist or is not a function: resumeTransformFeedback]
[WebGL test #80: Property either does not exist or is not a function: bindBufferBase]
expected: FAIL
[WebGL test #81: Property either does not exist or is not a function: bindBufferBase]
[WebGL test #81: Property either does not exist or is not a function: bindBufferRange]
expected: FAIL
[WebGL test #82: Property either does not exist or is not a function: bindBufferRange]
[WebGL test #82: Property either does not exist or is not a function: getIndexedParameter]
expected: FAIL
[WebGL test #83: Property either does not exist or is not a function: getIndexedParameter]
[WebGL test #83: Property either does not exist or is not a function: getUniformIndices]
expected: FAIL
[WebGL test #84: Property either does not exist or is not a function: getUniformIndices]
[WebGL test #84: Property either does not exist or is not a function: getActiveUniforms]
expected: FAIL
[WebGL test #85: Property either does not exist or is not a function: getActiveUniforms]
[WebGL test #85: Property either does not exist or is not a function: getUniformBlockIndex]
expected: FAIL
[WebGL test #86: Property either does not exist or is not a function: getUniformBlockIndex]
[WebGL test #86: Property either does not exist or is not a function: getActiveUniformBlockParameter]
expected: FAIL
[WebGL test #87: Property either does not exist or is not a function: getActiveUniformBlockParameter]
[WebGL test #87: Property either does not exist or is not a function: getActiveUniformBlockName]
expected: FAIL
[WebGL test #88: Property either does not exist or is not a function: getActiveUniformBlockName]
[WebGL test #88: Property either does not exist or is not a function: uniformBlockBinding]
expected: FAIL
[WebGL test #89: Property either does not exist or is not a function: uniformBlockBinding]
[WebGL test #89: Property either does not exist or is not a function: createVertexArray]
expected: FAIL
[WebGL test #90: Property either does not exist or is not a function: createVertexArray]
[WebGL test #90: Property either does not exist or is not a function: deleteVertexArray]
expected: FAIL
[WebGL test #91: Property either does not exist or is not a function: deleteVertexArray]
[WebGL test #91: Property either does not exist or is not a function: isVertexArray]
expected: FAIL
[WebGL test #92: Property either does not exist or is not a function: isVertexArray]
expected: FAIL
[WebGL test #93: Property either does not exist or is not a function: bindVertexArray]
[WebGL test #92: Property either does not exist or is not a function: bindVertexArray]
expected: FAIL