From 3e8c2d659aa7c1a28971a6c15d16a57259e674a3 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 18 Jul 2018 18:22:15 +0200 Subject: [PATCH] Implement gl.getUniform() --- components/canvas/webgl_thread.rs | 113 +++++++++++ components/canvas_traits/webgl.rs | 14 ++ .../script/dom/webgl2renderingcontext.rs | 11 ++ .../script/dom/webglrenderingcontext.rs | 82 +++++++- .../dom/webidls/WebGLRenderingContext.webidl | 2 +- ...ncorrect-context-object-behaviour.html.ini | 3 - .../conformance/context/methods.html.ini | 5 +- .../misc/bad-arguments-test.html.ini | 14 -- .../functions/uniformMatrixBadArgs.html.ini | 5 - .../state/gl-object-get-calls.html.ini | 52 ------ .../uniforms/gl-uniform-arrays.html.ini | 5 - .../uniforms/uniform-default-values.html.ini | 5 - .../uniforms/uniform-location.html.ini | 20 +- .../conformance2/context/methods-2.html.ini | 175 +++++++++--------- 14 files changed, 306 insertions(+), 200 deletions(-) delete mode 100644 tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/misc/bad-arguments-test.html.ini delete mode 100644 tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/more/functions/uniformMatrixBadArgs.html.ini delete mode 100644 tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini delete mode 100644 tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/gl-uniform-arrays.html.ini delete mode 100644 tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 4c6deace945..ec65b7d144f 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -982,6 +982,119 @@ impl WebGLImpl { WebGLCommand::VertexAttribDivisor { index, divisor } => { ctx.gl().vertex_attrib_divisor(index, divisor) } + WebGLCommand::GetUniformBool(program_id, loc, ref sender) => { + let mut value = [0]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + sender.send(value[0] != 0).unwrap(); + } + WebGLCommand::GetUniformBool2(program_id, loc, ref sender) => { + let mut value = [0; 2]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + let value = [ + value[0] != 0, + value[1] != 0, + ]; + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformBool3(program_id, loc, ref sender) => { + let mut value = [0; 3]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + let value = [ + value[0] != 0, + value[1] != 0, + value[2] != 0, + ]; + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformBool4(program_id, loc, ref sender) => { + let mut value = [0; 4]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + let value = [ + value[0] != 0, + value[1] != 0, + value[2] != 0, + value[3] != 0, + ]; + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformInt(program_id, loc, ref sender) => { + let mut value = [0]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + sender.send(value[0]).unwrap(); + } + WebGLCommand::GetUniformInt2(program_id, loc, ref sender) => { + let mut value = [0; 2]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformInt3(program_id, loc, ref sender) => { + let mut value = [0; 3]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformInt4(program_id, loc, ref sender) => { + let mut value = [0; 4]; + unsafe { + ctx.gl().get_uniform_iv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformFloat(program_id, loc, ref sender) => { + let mut value = [0.]; + unsafe { + ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value); + } + sender.send(value[0]).unwrap(); + } + WebGLCommand::GetUniformFloat2(program_id, loc, ref sender) => { + let mut value = [0.; 2]; + unsafe { + ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformFloat3(program_id, loc, ref sender) => { + let mut value = [0.; 3]; + unsafe { + ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformFloat4(program_id, loc, ref sender) => { + let mut value = [0.; 4]; + unsafe { + ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformFloat9(program_id, loc, ref sender) => { + let mut value = [0.; 9]; + unsafe { + ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } + WebGLCommand::GetUniformFloat16(program_id, loc, ref sender) => { + let mut value = [0.; 16]; + unsafe { + ctx.gl().get_uniform_fv(program_id.get(), loc, &mut value); + } + sender.send(value).unwrap(); + } } // TODO: update test expectations in order to enable debug assertions diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index e4fc9d0d739..5fb9d0befb2 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -284,6 +284,20 @@ pub enum WebGLCommand { DrawArraysInstanced { mode: u32, first: i32, count: i32, primcount: i32 }, DrawElementsInstanced { mode: u32, count: i32, type_: u32, offset: u32, primcount: i32 }, VertexAttribDivisor { index: u32, divisor: u32 }, + GetUniformBool(WebGLProgramId, i32, WebGLSender), + GetUniformBool2(WebGLProgramId, i32, WebGLSender<[bool; 2]>), + GetUniformBool3(WebGLProgramId, i32, WebGLSender<[bool; 3]>), + GetUniformBool4(WebGLProgramId, i32, WebGLSender<[bool; 4]>), + GetUniformInt(WebGLProgramId, i32, WebGLSender), + GetUniformInt2(WebGLProgramId, i32, WebGLSender<[i32; 2]>), + GetUniformInt3(WebGLProgramId, i32, WebGLSender<[i32; 3]>), + GetUniformInt4(WebGLProgramId, i32, WebGLSender<[i32; 4]>), + GetUniformFloat(WebGLProgramId, i32, WebGLSender), + GetUniformFloat2(WebGLProgramId, i32, WebGLSender<[f32; 2]>), + GetUniformFloat3(WebGLProgramId, i32, WebGLSender<[f32; 3]>), + GetUniformFloat4(WebGLProgramId, i32, WebGLSender<[f32; 4]>), + GetUniformFloat9(WebGLProgramId, i32, WebGLSender<[f32; 9]>), + GetUniformFloat16(WebGLProgramId, i32, WebGLSender<[f32; 16]>), } macro_rules! define_resource_id_struct { diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs index deb82e9ced2..811fc100e6b 100644 --- a/components/script/dom/webgl2renderingcontext.rs +++ b/components/script/dom/webgl2renderingcontext.rs @@ -766,6 +766,17 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext { self.base.UniformMatrix4fv(location, transpose, v) } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 + #[allow(unsafe_code)] + unsafe fn GetUniform( + &self, + cx: *mut JSContext, + program: &WebGLProgram, + location: &WebGLUniformLocation, + ) -> JSVal { + self.base.GetUniform(cx, program, location) + } + /// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 fn UseProgram(&self, program: Option<&WebGLProgram>) { self.base.UseProgram(program) diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 317a51d0cbf..45923d1b27c 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -8,8 +8,8 @@ use canvas_traits::webgl::{ActiveAttribInfo, DOMToTextureCommand, Parameter}; use canvas_traits::webgl::{ShaderParameter, TexParameter, WebGLCommand}; use canvas_traits::webgl::{WebGLContextShareMode, WebGLError}; use canvas_traits::webgl::{WebGLFramebufferBindingRequest, WebGLMsg, WebGLMsgSender}; -use canvas_traits::webgl::{WebGLResult, WebGLSLVersion, WebGLVersion}; -use canvas_traits::webgl::{WebVRCommand, webgl_channel}; +use canvas_traits::webgl::{WebGLProgramId, WebGLResult, WebGLSLVersion, WebGLSender}; +use canvas_traits::webgl::{WebGLVersion, WebVRCommand, webgl_channel}; use canvas_traits::webgl::WebGLError::*; use dom::bindings::cell::DomRefCell; use dom::bindings::codegen::Bindings::ANGLEInstancedArraysBinding::ANGLEInstancedArraysConstants; @@ -56,12 +56,14 @@ use js::jsapi::{JSContext, JSObject, Type}; use js::jsval::{BooleanValue, DoubleValue, Int32Value, UInt32Value, JSVal}; use js::jsval::{ObjectValue, NullValue, UndefinedValue}; use js::rust::CustomAutoRooterGuard; -use js::typedarray::{ArrayBufferView, CreateWith, Float32Array, Int32Array, Uint32Array}; +use js::typedarray::{ArrayBufferView, CreateWith, Float32, Float32Array, Int32, Int32Array, Uint32Array}; +use js::typedarray::{TypedArray, TypedArrayElementCreator}; use net_traits::image::base::PixelFormat; use net_traits::image_cache::ImageResponse; use offscreen_gl_context::{GLContextAttributes, GLLimits}; use ref_filter_map::ref_filter_map; use script_layout_interface::HTMLCanvasDataSource; +use serde::{Deserialize, Serialize}; use servo_config::prefs::PREFS; use std::cell::{Cell, Ref}; use std::cmp; @@ -3600,6 +3602,80 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { }); } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10 + #[allow(unsafe_code)] + unsafe fn GetUniform( + &self, + cx: *mut JSContext, + program: &WebGLProgram, + location: &WebGLUniformLocation, + ) -> JSVal { + // FIXME(nox): https://github.com/servo/servo/issues/21133 + + if program.is_deleted() || !program.is_linked() || program.id() != location.program_id() { + self.webgl_error(InvalidOperation); + return NullValue(); + } + + fn get( + triple: (&WebGLRenderingContext, WebGLProgramId, i32), + f: F, + ) -> T + where + F: FnOnce(WebGLProgramId, i32, WebGLSender) -> WebGLCommand, + T: for<'de> Deserialize<'de> + Serialize, + { + let (sender, receiver) = webgl_channel().unwrap(); + triple.0.send_command(f(triple.1, triple.2, sender)); + receiver.recv().unwrap() + } + + let triple = (self, program.id(), location.id()); + + unsafe fn typed(cx: *mut JSContext, value: &[T::Element]) -> JSVal + where + T: TypedArrayElementCreator, + { + rooted!(in(cx) let mut rval = ptr::null_mut::()); + >::create(cx, CreateWith::Slice(&value), rval.handle_mut()).unwrap(); + ObjectValue(rval.get()) + } + + match location.type_() { + constants::BOOL => BooleanValue(get(triple, WebGLCommand::GetUniformBool)), + constants::BOOL_VEC2 => { + rooted!(in(cx) let mut rval = NullValue()); + get(triple, WebGLCommand::GetUniformBool2).to_jsval(cx, rval.handle_mut()); + rval.get() + } + constants::BOOL_VEC3 => { + rooted!(in(cx) let mut rval = NullValue()); + get(triple, WebGLCommand::GetUniformBool3).to_jsval(cx, rval.handle_mut()); + rval.get() + } + constants::BOOL_VEC4 => { + rooted!(in(cx) let mut rval = NullValue()); + get(triple, WebGLCommand::GetUniformBool4).to_jsval(cx, rval.handle_mut()); + rval.get() + } + constants::INT | constants::SAMPLER_2D | constants::SAMPLER_CUBE => { + Int32Value(get(triple, WebGLCommand::GetUniformInt)) + } + constants::INT_VEC2 => typed::(cx, &get(triple, WebGLCommand::GetUniformInt2)), + constants::INT_VEC3 => typed::(cx, &get(triple, WebGLCommand::GetUniformInt3)), + constants::INT_VEC4 => typed::(cx, &get(triple, WebGLCommand::GetUniformInt4)), + constants::FLOAT => DoubleValue(get(triple, WebGLCommand::GetUniformFloat) as f64), + constants::FLOAT_VEC2 => typed::(cx, &get(triple, WebGLCommand::GetUniformFloat2)), + constants::FLOAT_VEC3 => typed::(cx, &get(triple, WebGLCommand::GetUniformFloat3)), + constants::FLOAT_VEC4 | constants::FLOAT_MAT2 => { + typed::(cx, &get(triple, WebGLCommand::GetUniformFloat4)) + } + constants::FLOAT_MAT3 => typed::(cx, &get(triple, WebGLCommand::GetUniformFloat9)), + constants::FLOAT_MAT4 => typed::(cx, &get(triple, WebGLCommand::GetUniformFloat16)), + _ => panic!("wrong uniform type"), + } + } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 fn UseProgram(&self, program: Option<&WebGLProgram>) { if let Some(program) = program { diff --git a/components/script/dom/webidls/WebGLRenderingContext.webidl b/components/script/dom/webidls/WebGLRenderingContext.webidl index 82769410062..d36154c7355 100644 --- a/components/script/dom/webidls/WebGLRenderingContext.webidl +++ b/components/script/dom/webidls/WebGLRenderingContext.webidl @@ -580,7 +580,7 @@ interface WebGLRenderingContextBase any getTexParameter(GLenum target, GLenum pname); - // any getUniform(WebGLProgram program, WebGLUniformLocation location); + any getUniform(WebGLProgram program, WebGLUniformLocation location); WebGLUniformLocation? getUniformLocation(WebGLProgram program, DOMString name); diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/incorrect-context-object-behaviour.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/incorrect-context-object-behaviour.html.ini index 990a546f051..7bf7795c56a 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/incorrect-context-object-behaviour.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/incorrect-context-object-behaviour.html.ini @@ -43,9 +43,6 @@ [WebGL test #19: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.getShaderSource(shaderB)] expected: FAIL - [WebGL test #20: contextA.getUniform(programB, locationA) threw exception TypeError: contextA.getUniform is not a function] - expected: FAIL - [WebGL test #21: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.getUniformLocation(programB, 'u_modelViewProjMatrix')] expected: FAIL diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/methods.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/methods.html.ini index 9afaa0848b6..44c46a26ede 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/methods.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/methods.html.ini @@ -1,7 +1,4 @@ [methods.html] - [WebGL test #0: Property either does not exist or is not a function: getUniform] - expected: FAIL - - [WebGL test #1: Property either does not exist or is not a function: isContextLost] + [WebGL test #0: Property either does not exist or is not a function: isContextLost] expected: FAIL diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/misc/bad-arguments-test.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/misc/bad-arguments-test.html.ini deleted file mode 100644 index 9caac9fee7c..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/misc/bad-arguments-test.html.ini +++ /dev/null @@ -1,14 +0,0 @@ -[bad-arguments-test.html] - type: testharness - [WebGL test #78: context.getUniform(argument, loc) should be null. Threw exception TypeError: context.getUniform is not a function] - expected: FAIL - - [WebGL test #79: context.getUniform(program, argument) should be null. Threw exception TypeError: context.getUniform is not a function] - expected: FAIL - - [WebGL test #104: context.getUniform(argument, loc) should be null. Threw exception TypeError: context.getUniform is not a function] - expected: FAIL - - [WebGL test #105: context.getUniform(program, argument) should be null. Threw exception TypeError: context.getUniform is not a function] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/more/functions/uniformMatrixBadArgs.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/more/functions/uniformMatrixBadArgs.html.ini deleted file mode 100644 index a9c34e61d2d..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/more/functions/uniformMatrixBadArgs.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[uniformMatrixBadArgs.html] - type: testharness - [WebGL test #0: testUniformf] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini deleted file mode 100644 index 6f9b9bcd5d6..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/state/gl-object-get-calls.html.ini +++ /dev/null @@ -1,52 +0,0 @@ -[gl-object-get-calls.html] - [WebGL test #57: gl.getUniform(boolProgram, bvalLoc) should be true. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #58: gl.getUniform(boolProgram, bval2Loc) should be true,false. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #59: gl.getUniform(boolProgram, bval3Loc) should be true,false,true. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #60: gl.getUniform(boolProgram, bval4Loc) should be true,false,true,false. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #63: gl.getUniform(intProgram, ivalLoc) should be 1. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #64: gl.getUniform(intProgram, ival2Loc) should be 2,3. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #65: gl.getUniform(intProgram, ival3Loc) should be 4,5,6. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #66: gl.getUniform(intProgram, ival4Loc) should be 7,8,9,10. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #69: gl.getUniform(floatProgram, fvalLoc) should be 11. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #70: gl.getUniform(floatProgram, fval2Loc) should be 12,13. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #71: gl.getUniform(floatProgram, fval3Loc) should be 14,15,16. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #72: gl.getUniform(floatProgram, fval4Loc) should be 17,18,19,20. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #75: gl.getUniform(samplerProgram, s2DValLoc) should be 0. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #76: gl.getUniform(samplerProgram, sCubeValLoc) should be 1. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #79: gl.getUniform(matProgram, mval2Loc) should be 1,2,3,4. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #80: gl.getUniform(matProgram, mval3Loc) should be 5,6,7,8,9,10,11,12,13. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - - [WebGL test #81: gl.getUniform(matProgram, mval4Loc) should be 14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29. Threw exception TypeError: gl.getUniform is not a function] - expected: FAIL - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/gl-uniform-arrays.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/gl-uniform-arrays.html.ini deleted file mode 100644 index d557119df79..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/gl-uniform-arrays.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[gl-uniform-arrays.html] - expected: ERROR - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini deleted file mode 100644 index d438933647c..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-default-values.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[uniform-default-values.html] - expected: ERROR - [Overall test] - expected: NOTRUN - diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-location.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-location.html.ini index fb6c9c25e94..0598a5b72a8 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-location.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/uniforms/uniform-location.html.ini @@ -1,25 +1,7 @@ [uniform-location.html] - [WebGL test #9: contextA.getUniform(programS, locationSx) should be 333. Threw exception TypeError: contextA.getUniform is not a function] - expected: FAIL - - [WebGL test #10: contextA.getUniform(programS, locationArray0) should be 4. Threw exception TypeError: contextA.getUniform is not a function] - expected: FAIL - - [WebGL test #11: contextA.getUniform(programS, locationArray1) should be 5. Threw exception TypeError: contextA.getUniform is not a function] - expected: FAIL - - [WebGL test #14: contextA.getUniform(programV, locationVec4) should be 1,2,3,4. Threw exception TypeError: contextA.getUniform is not a function] - expected: FAIL - [WebGL test #20: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.uniform1i(locationSx, 3)] expected: FAIL - [WebGL test #21: contextA.getUniform(programS, locationSx) threw exception TypeError: contextA.getUniform is not a function] - expected: FAIL - - [WebGL test #24: contextA.getUniform(programS, locationSx) should be 3. Threw exception TypeError: contextA.getUniform is not a function] - expected: FAIL - - [WebGL test #25: contextA.getUniform(programS, locationArray0) should be 123. Threw exception TypeError: contextA.getUniform is not a function] + [WebGL test #21: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: contextA.getUniform(programS, locationSx)] expected: FAIL diff --git a/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/context/methods-2.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/context/methods-2.html.ini index 6eedd053fe6..2498627f37b 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/context/methods-2.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/context/methods-2.html.ini @@ -1,262 +1,259 @@ [methods-2.html] - [WebGL test #0: Property either does not exist or is not a function: getUniform] + [WebGL test #0: Property either does not exist or is not a function: isContextLost] expected: FAIL - [WebGL test #1: Property either does not exist or is not a function: isContextLost] + [WebGL test #1: Property either does not exist or is not a function: getBufferSubData] expected: FAIL - [WebGL test #2: Property either does not exist or is not a function: getBufferSubData] + [WebGL test #2: Property either does not exist or is not a function: copyBufferSubData] expected: FAIL - [WebGL test #3: Property either does not exist or is not a function: copyBufferSubData] + [WebGL test #3: Property either does not exist or is not a function: blitFramebuffer] expected: FAIL - [WebGL test #4: Property either does not exist or is not a function: blitFramebuffer] + [WebGL test #4: Property either does not exist or is not a function: framebufferTextureLayer] expected: FAIL - [WebGL test #5: Property either does not exist or is not a function: framebufferTextureLayer] + [WebGL test #5: Property either does not exist or is not a function: getInternalformatParameter] expected: FAIL - [WebGL test #6: Property either does not exist or is not a function: getInternalformatParameter] + [WebGL test #6: Property either does not exist or is not a function: invalidateFramebuffer] expected: FAIL - [WebGL test #7: Property either does not exist or is not a function: invalidateFramebuffer] + [WebGL test #7: Property either does not exist or is not a function: invalidateSubFramebuffer] expected: FAIL - [WebGL test #8: Property either does not exist or is not a function: invalidateSubFramebuffer] + [WebGL test #8: Property either does not exist or is not a function: readBuffer] expected: FAIL - [WebGL test #9: Property either does not exist or is not a function: readBuffer] + [WebGL test #9: Property either does not exist or is not a function: renderbufferStorageMultisample] expected: FAIL - [WebGL test #10: Property either does not exist or is not a function: renderbufferStorageMultisample] + [WebGL test #10: Property either does not exist or is not a function: texImage3D] expected: FAIL - [WebGL test #11: Property either does not exist or is not a function: texImage3D] + [WebGL test #11: Property either does not exist or is not a function: texStorage2D] expected: FAIL - [WebGL test #12: Property either does not exist or is not a function: texStorage2D] + [WebGL test #12: Property either does not exist or is not a function: texStorage3D] expected: FAIL - [WebGL test #13: Property either does not exist or is not a function: texStorage3D] + [WebGL test #13: Property either does not exist or is not a function: texSubImage3D] expected: FAIL - [WebGL test #14: Property either does not exist or is not a function: texSubImage3D] + [WebGL test #14: Property either does not exist or is not a function: copyTexSubImage3D] expected: FAIL - [WebGL test #15: Property either does not exist or is not a function: copyTexSubImage3D] + [WebGL test #15: Property either does not exist or is not a function: compressedTexImage3D] expected: FAIL - [WebGL test #16: Property either does not exist or is not a function: compressedTexImage3D] + [WebGL test #16: Property either does not exist or is not a function: compressedTexSubImage3D] expected: FAIL - [WebGL test #17: Property either does not exist or is not a function: compressedTexSubImage3D] + [WebGL test #17: Property either does not exist or is not a function: getFragDataLocation] expected: FAIL - [WebGL test #18: Property either does not exist or is not a function: getFragDataLocation] + [WebGL test #18: Property either does not exist or is not a function: uniform1ui] expected: FAIL - [WebGL test #19: Property either does not exist or is not a function: uniform1ui] + [WebGL test #19: Property either does not exist or is not a function: uniform2ui] expected: FAIL - [WebGL test #20: Property either does not exist or is not a function: uniform2ui] + [WebGL test #20: Property either does not exist or is not a function: uniform3ui] expected: FAIL - [WebGL test #21: Property either does not exist or is not a function: uniform3ui] + [WebGL test #21: Property either does not exist or is not a function: uniform4ui] expected: FAIL - [WebGL test #22: Property either does not exist or is not a function: uniform4ui] + [WebGL test #22: Property either does not exist or is not a function: uniform1uiv] expected: FAIL - [WebGL test #23: Property either does not exist or is not a function: uniform1uiv] + [WebGL test #23: Property either does not exist or is not a function: uniform2uiv] expected: FAIL - [WebGL test #24: Property either does not exist or is not a function: uniform2uiv] + [WebGL test #24: Property either does not exist or is not a function: uniform3uiv] expected: FAIL - [WebGL test #25: Property either does not exist or is not a function: uniform3uiv] + [WebGL test #25: Property either does not exist or is not a function: uniform4uiv] expected: FAIL - [WebGL test #26: Property either does not exist or is not a function: uniform4uiv] + [WebGL test #26: Property either does not exist or is not a function: uniformMatrix2x3fv] expected: FAIL - [WebGL test #27: Property either does not exist or is not a function: uniformMatrix2x3fv] + [WebGL test #27: Property either does not exist or is not a function: uniformMatrix3x2fv] expected: FAIL - [WebGL test #28: Property either does not exist or is not a function: uniformMatrix3x2fv] + [WebGL test #28: Property either does not exist or is not a function: uniformMatrix2x4fv] expected: FAIL - [WebGL test #29: Property either does not exist or is not a function: uniformMatrix2x4fv] + [WebGL test #29: Property either does not exist or is not a function: uniformMatrix4x2fv] expected: FAIL - [WebGL test #30: Property either does not exist or is not a function: uniformMatrix4x2fv] + [WebGL test #30: Property either does not exist or is not a function: uniformMatrix3x4fv] expected: FAIL - [WebGL test #31: Property either does not exist or is not a function: uniformMatrix3x4fv] + [WebGL test #31: Property either does not exist or is not a function: uniformMatrix4x3fv] expected: FAIL - [WebGL test #32: Property either does not exist or is not a function: uniformMatrix4x3fv] + [WebGL test #32: Property either does not exist or is not a function: vertexAttribI4i] expected: FAIL - [WebGL test #33: Property either does not exist or is not a function: vertexAttribI4i] + [WebGL test #33: Property either does not exist or is not a function: vertexAttribI4iv] expected: FAIL - [WebGL test #34: Property either does not exist or is not a function: vertexAttribI4iv] + [WebGL test #34: Property either does not exist or is not a function: vertexAttribI4ui] expected: FAIL - [WebGL test #35: Property either does not exist or is not a function: vertexAttribI4ui] + [WebGL test #35: Property either does not exist or is not a function: vertexAttribI4uiv] expected: FAIL - [WebGL test #36: Property either does not exist or is not a function: vertexAttribI4uiv] + [WebGL test #36: Property either does not exist or is not a function: vertexAttribIPointer] expected: FAIL - [WebGL test #37: Property either does not exist or is not a function: vertexAttribIPointer] + [WebGL test #37: Property either does not exist or is not a function: drawRangeElements] expected: FAIL - [WebGL test #38: Property either does not exist or is not a function: drawRangeElements] + [WebGL test #38: Property either does not exist or is not a function: drawBuffers] expected: FAIL - [WebGL test #39: Property either does not exist or is not a function: drawBuffers] + [WebGL test #39: Property either does not exist or is not a function: clearBufferiv] expected: FAIL - [WebGL test #40: Property either does not exist or is not a function: clearBufferiv] + [WebGL test #40: Property either does not exist or is not a function: clearBufferuiv] expected: FAIL - [WebGL test #41: Property either does not exist or is not a function: clearBufferuiv] + [WebGL test #41: Property either does not exist or is not a function: clearBufferfv] expected: FAIL - [WebGL test #42: Property either does not exist or is not a function: clearBufferfv] + [WebGL test #42: Property either does not exist or is not a function: clearBufferfi] expected: FAIL - [WebGL test #43: Property either does not exist or is not a function: clearBufferfi] + [WebGL test #43: Property either does not exist or is not a function: createQuery] expected: FAIL - [WebGL test #44: Property either does not exist or is not a function: createQuery] + [WebGL test #44: Property either does not exist or is not a function: deleteQuery] expected: FAIL - [WebGL test #45: Property either does not exist or is not a function: deleteQuery] + [WebGL test #45: Property either does not exist or is not a function: isQuery] expected: FAIL - [WebGL test #46: Property either does not exist or is not a function: isQuery] + [WebGL test #46: Property either does not exist or is not a function: beginQuery] expected: FAIL - [WebGL test #47: Property either does not exist or is not a function: beginQuery] + [WebGL test #47: Property either does not exist or is not a function: endQuery] expected: FAIL - [WebGL test #48: Property either does not exist or is not a function: endQuery] + [WebGL test #48: Property either does not exist or is not a function: getQuery] expected: FAIL - [WebGL test #49: Property either does not exist or is not a function: getQuery] + [WebGL test #49: Property either does not exist or is not a function: getQueryParameter] expected: FAIL - [WebGL test #50: Property either does not exist or is not a function: getQueryParameter] + [WebGL test #50: Property either does not exist or is not a function: createSampler] expected: FAIL - [WebGL test #51: Property either does not exist or is not a function: createSampler] + [WebGL test #51: Property either does not exist or is not a function: deleteSampler] expected: FAIL - [WebGL test #52: Property either does not exist or is not a function: deleteSampler] + [WebGL test #52: Property either does not exist or is not a function: isSampler] expected: FAIL - [WebGL test #53: Property either does not exist or is not a function: isSampler] + [WebGL test #53: Property either does not exist or is not a function: bindSampler] expected: FAIL - [WebGL test #54: Property either does not exist or is not a function: bindSampler] + [WebGL test #54: Property either does not exist or is not a function: samplerParameteri] expected: FAIL - [WebGL test #55: Property either does not exist or is not a function: samplerParameteri] + [WebGL test #55: Property either does not exist or is not a function: samplerParameterf] expected: FAIL - [WebGL test #56: Property either does not exist or is not a function: samplerParameterf] + [WebGL test #56: Property either does not exist or is not a function: getSamplerParameter] expected: FAIL - [WebGL test #57: Property either does not exist or is not a function: getSamplerParameter] + [WebGL test #57: Property either does not exist or is not a function: fenceSync] expected: FAIL - [WebGL test #58: Property either does not exist or is not a function: fenceSync] + [WebGL test #58: Property either does not exist or is not a function: isSync] expected: FAIL - [WebGL test #59: Property either does not exist or is not a function: isSync] + [WebGL test #59: Property either does not exist or is not a function: deleteSync] expected: FAIL - [WebGL test #60: Property either does not exist or is not a function: deleteSync] + [WebGL test #60: Property either does not exist or is not a function: clientWaitSync] expected: FAIL - [WebGL test #61: Property either does not exist or is not a function: clientWaitSync] + [WebGL test #61: Property either does not exist or is not a function: waitSync] expected: FAIL - [WebGL test #62: Property either does not exist or is not a function: waitSync] + [WebGL test #62: Property either does not exist or is not a function: getSyncParameter] expected: FAIL - [WebGL test #63: Property either does not exist or is not a function: getSyncParameter] + [WebGL test #63: Property either does not exist or is not a function: createTransformFeedback] expected: FAIL - [WebGL test #64: Property either does not exist or is not a function: createTransformFeedback] + [WebGL test #64: Property either does not exist or is not a function: deleteTransformFeedback] expected: FAIL - [WebGL test #65: Property either does not exist or is not a function: deleteTransformFeedback] + [WebGL test #65: Property either does not exist or is not a function: isTransformFeedback] expected: FAIL - [WebGL test #66: Property either does not exist or is not a function: isTransformFeedback] + [WebGL test #66: Property either does not exist or is not a function: bindTransformFeedback] expected: FAIL - [WebGL test #67: Property either does not exist or is not a function: bindTransformFeedback] + [WebGL test #67: Property either does not exist or is not a function: beginTransformFeedback] expected: FAIL - [WebGL test #68: Property either does not exist or is not a function: beginTransformFeedback] + [WebGL test #68: Property either does not exist or is not a function: endTransformFeedback] expected: FAIL - [WebGL test #69: Property either does not exist or is not a function: endTransformFeedback] + [WebGL test #69: Property either does not exist or is not a function: transformFeedbackVaryings] expected: FAIL - [WebGL test #70: Property either does not exist or is not a function: transformFeedbackVaryings] + [WebGL test #70: Property either does not exist or is not a function: getTransformFeedbackVarying] expected: FAIL - [WebGL test #71: Property either does not exist or is not a function: getTransformFeedbackVarying] + [WebGL test #71: Property either does not exist or is not a function: pauseTransformFeedback] expected: FAIL - [WebGL test #72: Property either does not exist or is not a function: pauseTransformFeedback] + [WebGL test #72: Property either does not exist or is not a function: resumeTransformFeedback] expected: FAIL - [WebGL test #73: Property either does not exist or is not a function: resumeTransformFeedback] + [WebGL test #73: Property either does not exist or is not a function: bindBufferBase] expected: FAIL - [WebGL test #74: Property either does not exist or is not a function: bindBufferBase] + [WebGL test #74: Property either does not exist or is not a function: bindBufferRange] expected: FAIL - [WebGL test #75: Property either does not exist or is not a function: bindBufferRange] + [WebGL test #75: Property either does not exist or is not a function: getIndexedParameter] expected: FAIL - [WebGL test #76: Property either does not exist or is not a function: getIndexedParameter] + [WebGL test #76: Property either does not exist or is not a function: getUniformIndices] expected: FAIL - [WebGL test #77: Property either does not exist or is not a function: getUniformIndices] + [WebGL test #77: Property either does not exist or is not a function: getActiveUniforms] expected: FAIL - [WebGL test #78: Property either does not exist or is not a function: getActiveUniforms] + [WebGL test #78: Property either does not exist or is not a function: getUniformBlockIndex] expected: FAIL - [WebGL test #79: Property either does not exist or is not a function: getUniformBlockIndex] + [WebGL test #79: Property either does not exist or is not a function: getActiveUniformBlockParameter] expected: FAIL - [WebGL test #80: Property either does not exist or is not a function: getActiveUniformBlockParameter] + [WebGL test #80: Property either does not exist or is not a function: getActiveUniformBlockName] expected: FAIL - [WebGL test #81: Property either does not exist or is not a function: getActiveUniformBlockName] + [WebGL test #81: Property either does not exist or is not a function: uniformBlockBinding] expected: FAIL - [WebGL test #82: Property either does not exist or is not a function: uniformBlockBinding] + [WebGL test #82: Property either does not exist or is not a function: createVertexArray] expected: FAIL - [WebGL test #83: Property either does not exist or is not a function: createVertexArray] + [WebGL test #83: Property either does not exist or is not a function: deleteVertexArray] expected: FAIL - [WebGL test #84: Property either does not exist or is not a function: deleteVertexArray] + [WebGL test #84: Property either does not exist or is not a function: isVertexArray] expected: FAIL - [WebGL test #85: Property either does not exist or is not a function: isVertexArray] - expected: FAIL - - [WebGL test #86: Property either does not exist or is not a function: bindVertexArray] + [WebGL test #85: Property either does not exist or is not a function: bindVertexArray] expected: FAIL