diff options
author | Igor Gutorov <igootorov@gmail.com> | 2018-03-14 20:41:36 +0200 |
---|---|---|
committer | Igor Gutorov <igootorov@gmail.com> | 2018-03-22 18:26:18 +0200 |
commit | ee5bdbbd8b99b58eda19c117b1a06e4a90a61bb1 (patch) | |
tree | f4c3a2dcc85b6e576ddaaa585210bc293ffbff6c | |
parent | f92f0809f89593d4b70eb0f507f6ca4409c9ed91 (diff) | |
download | servo-ee5bdbbd8b99b58eda19c117b1a06e4a90a61bb1.tar.gz servo-ee5bdbbd8b99b58eda19c117b1a06e4a90a61bb1.zip |
Implement WebGL getFramebufferAttachmentParameter API
10 files changed, 338 insertions, 110 deletions
diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index e27d85c4395..785df7fd6c2 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -750,6 +750,8 @@ impl WebGLImpl { Self::active_uniform(ctx.gl(), program_id, index, chan), WebGLCommand::GetAttribLocation(program_id, name, chan) => Self::attrib_location(ctx.gl(), program_id, name, chan), + WebGLCommand::GetFramebufferAttachmentParameter(target, attachment, pname, chan) => + Self::get_framebuffer_attachment_parameter(ctx.gl(), target, attachment, pname, chan), WebGLCommand::GetVertexAttrib(index, pname, chan) => Self::vertex_attrib(ctx.gl(), index, pname, chan), WebGLCommand::GetVertexAttribOffset(index, pname, chan) => @@ -1165,6 +1167,18 @@ impl WebGLImpl { chan.send(gl.get_string(gl::EXTENSIONS)).unwrap(); } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6 + fn get_framebuffer_attachment_parameter( + gl: &gl::Gl, + target: u32, + attachment: u32, + pname: u32, + chan: WebGLSender<i32> + ) { + let parameter = gl.get_framebuffer_attachment_parameter_iv(target, attachment, pname); + chan.send(parameter).unwrap(); + } + fn uniform_location(gl: &gl::Gl, program_id: WebGLProgramId, name: String, diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index 826003d2d92..540e48fb652 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -219,6 +219,7 @@ pub enum WebGLCommand { GetVertexAttribOffset(u32, u32, WebGLSender<isize>), GetShaderInfoLog(WebGLShaderId, WebGLSender<String>), GetProgramInfoLog(WebGLProgramId, WebGLSender<String>), + GetFramebufferAttachmentParameter(u32, u32, u32, WebGLSender<i32>), PolygonOffset(f32, f32), RenderbufferStorage(u32, u32, i32, i32), ReadPixels(i32, i32, i32, i32, u32, u32, WebGLSender<Vec<u8>>), @@ -490,6 +491,7 @@ impl fmt::Debug for WebGLCommand { GetProgramInfoLog(..) => "GetProgramInfoLog", GetVertexAttrib(..) => "GetVertexAttrib", GetVertexAttribOffset(..) => "GetVertexAttribOffset", + GetFramebufferAttachmentParameter(..) => "GetFramebufferAttachmentParameter", PolygonOffset(..) => "PolygonOffset", ReadPixels(..) => "ReadPixels", RenderbufferStorage(..) => "RenderbufferStorage", diff --git a/components/script/dom/webgl2renderingcontext.rs b/components/script/dom/webgl2renderingcontext.rs index 2a25c450b08..2d1186c0dcc 100644 --- a/components/script/dom/webgl2renderingcontext.rs +++ b/components/script/dom/webgl2renderingcontext.rs @@ -142,6 +142,18 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext { self.base.GetExtension(cx, name) } + #[allow(unsafe_code)] + /// https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.4 + unsafe fn GetFramebufferAttachmentParameter( + &self, + cx: *mut JSContext, + target: u32, + attachment: u32, + pname: u32 + ) -> JSVal { + self.base.GetFramebufferAttachmentParameter(cx, target, attachment, pname) + } + /// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 fn ActiveTexture(&self, texture: u32) { self.base.ActiveTexture(texture) diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs index c9165609cdb..ccea1efec7b 100644 --- a/components/script/dom/webglframebuffer.rs +++ b/components/script/dom/webglframebuffer.rs @@ -25,6 +25,12 @@ enum WebGLFramebufferAttachment { Texture { texture: Dom<WebGLTexture>, level: i32 }, } +#[derive(Clone, JSTraceable, MallocSizeOf)] +pub enum WebGLFramebufferAttachmentRoot { + Renderbuffer(DomRoot<WebGLRenderbuffer>), + Texture(DomRoot<WebGLTexture>), +} + #[dom_struct] pub struct WebGLFramebuffer { webgl_object: WebGLObject, @@ -213,6 +219,25 @@ impl WebGLFramebuffer { Ok(()) } + pub fn attachment(&self, attachment: u32) -> Option<WebGLFramebufferAttachmentRoot> { + let binding = match attachment { + constants::COLOR_ATTACHMENT0 => &self.color, + constants::DEPTH_ATTACHMENT => &self.depth, + constants::STENCIL_ATTACHMENT => &self.stencil, + constants::DEPTH_STENCIL_ATTACHMENT => &self.depthstencil, + _ => return None, + }; + + binding.borrow().as_ref().map(|bin| { + match bin { + &WebGLFramebufferAttachment::Renderbuffer(ref rb) => + WebGLFramebufferAttachmentRoot::Renderbuffer(DomRoot::from_ref(&rb)), + &WebGLFramebufferAttachment::Texture { ref texture, .. } => + WebGLFramebufferAttachmentRoot::Texture(DomRoot::from_ref(&texture)), + } + }) + } + pub fn texture2d(&self, attachment: u32, textarget: u32, texture: Option<&WebGLTexture>, level: i32) -> WebGLResult<()> { let binding = match attachment { diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 64990da1504..ad572751607 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -10,6 +10,7 @@ use canvas_traits::webgl::DOMToTextureCommand; use canvas_traits::webgl::WebGLError::*; use canvas_traits::webgl::webgl_channel; use dom::bindings::cell::DomRefCell; +use dom::bindings::codegen::Bindings::WebGL2RenderingContextBinding::WebGL2RenderingContextConstants as WebGL2Constants; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes}; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextMethods; @@ -33,7 +34,7 @@ use dom::webgl_validations::types::{TexDataType, TexFormat, TexImageTarget}; use dom::webglactiveinfo::WebGLActiveInfo; use dom::webglbuffer::WebGLBuffer; use dom::webglcontextevent::WebGLContextEvent; -use dom::webglframebuffer::WebGLFramebuffer; +use dom::webglframebuffer::{WebGLFramebuffer, WebGLFramebufferAttachmentRoot}; use dom::webglprogram::WebGLProgram; use dom::webglrenderbuffer::WebGLRenderbuffer; use dom::webglshader::WebGLShader; @@ -1554,6 +1555,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6 fn BindFramebuffer(&self, target: u32, framebuffer: Option<&WebGLFramebuffer>) { + if target == WebGL2Constants::READ_FRAMEBUFFER { + return self.webgl_error(InvalidEnum); + } + if target != constants::FRAMEBUFFER { return self.webgl_error(InvalidOperation); } @@ -2297,6 +2302,93 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } } + #[allow(unsafe_code)] + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6 + unsafe fn GetFramebufferAttachmentParameter( + &self, + cx: *mut JSContext, + target: u32, + attachment: u32, + pname: u32 + ) -> JSVal { + // Check if currently bound framebuffer is non-zero as per spec. + if self.bound_framebuffer.get().is_none() { + self.webgl_error(InvalidOperation); + return NullValue(); + } + + // Note: commented out stuff is for the WebGL2 standard. + let target_matches = match target { + // constants::READ_FRAMEBUFFER | + // constants::DRAW_FRAMEBUFFER => true, + constants::FRAMEBUFFER => true, + _ => false + }; + let attachment_matches = match attachment { + // constants::MAX_COLOR_ATTACHMENTS ... gl::COLOR_ATTACHMENT0 | + // constants::BACK | + constants::COLOR_ATTACHMENT0 | + constants::DEPTH_STENCIL_ATTACHMENT | + constants::DEPTH_ATTACHMENT | + constants::STENCIL_ATTACHMENT => true, + _ => false, + }; + let pname_matches = match pname { + // constants::FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE | + // constants::FRAMEBUFFER_ATTACHMENT_BLUE_SIZE | + // constants::FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING | + // constants::FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE | + // constants::FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE | + // constants::FRAMEBUFFER_ATTACHMENT_GREEN_SIZE | + // constants::FRAMEBUFFER_ATTACHMENT_RED_SIZE | + // constants::FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE | + // constants::FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER | + constants::FRAMEBUFFER_ATTACHMENT_OBJECT_NAME | + constants::FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE | + constants::FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE | + constants::FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL => true, + _ => false + }; + + if !target_matches || !attachment_matches || !pname_matches { + self.webgl_error(InvalidEnum); + return NullValue(); + } + + // From the GLES2 spec: + // + // If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is NONE, + // then querying any other pname will generate INVALID_ENUM. + // + // otherwise, return `WebGLRenderbuffer` or `WebGLTexture` dom object + if pname == constants::FRAMEBUFFER_ATTACHMENT_OBJECT_NAME { + // if fb is None, an INVALID_OPERATION is returned + // at the beggining of the function, so `.unwrap()` will never panic + let fb = self.bound_framebuffer.get().unwrap(); + if let Some(webgl_attachment) = fb.attachment(attachment) { + match webgl_attachment { + WebGLFramebufferAttachmentRoot::Renderbuffer(rb) => { + rooted!(in(cx) let mut rval = NullValue()); + rb.to_jsval(cx, rval.handle_mut()); + return rval.get(); + }, + WebGLFramebufferAttachmentRoot::Texture(texture) => { + rooted!(in(cx) let mut rval = NullValue()); + texture.to_jsval(cx, rval.handle_mut()); + return rval.get(); + }, + } + } + self.webgl_error(InvalidEnum); + return NullValue(); + } + + let (sender, receiver) = webgl_channel().unwrap(); + self.send_command(WebGLCommand::GetFramebufferAttachmentParameter(target, attachment, pname, sender)); + + Int32Value(receiver.recv().unwrap()) + } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 fn GetProgramInfoLog(&self, program: Option<&WebGLProgram>) -> Option<DOMString> { if let Some(program) = program { diff --git a/components/script/dom/webidls/WebGLRenderingContext.webidl b/components/script/dom/webidls/WebGLRenderingContext.webidl index 3f845126701..05e9212d974 100644 --- a/components/script/dom/webidls/WebGLRenderingContext.webidl +++ b/components/script/dom/webidls/WebGLRenderingContext.webidl @@ -589,8 +589,8 @@ interface WebGLRenderingContextBase [WebGLHandlesContextLoss] GLenum getError(); - //any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, - // GLenum pname); + any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, + GLenum pname); any getProgramParameter(WebGLProgram? program, GLenum pname); DOMString? getProgramInfoLog(WebGLProgram? program); //any getRenderbufferParameter(GLenum target, GLenum pname); 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 e161e1d0cf8..0f3f17e39b3 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 @@ -3,15 +3,12 @@ [WebGL test #0: Property either does not exist or is not a function: getAttachedShaders] expected: FAIL - [WebGL test #1: Property either does not exist or is not a function: getFramebufferAttachmentParameter] + [WebGL test #1: Property either does not exist or is not a function: getRenderbufferParameter] expected: FAIL - [WebGL test #2: Property either does not exist or is not a function: getRenderbufferParameter] + [WebGL test #2: Property either does not exist or is not a function: getUniform] expected: FAIL - [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: isContextLost] + [WebGL test #3: 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/renderbuffers/framebuffer-test.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/renderbuffers/framebuffer-test.html.ini deleted file mode 100644 index 6172d868b20..00000000000 --- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/renderbuffers/framebuffer-test.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[framebuffer-test.html] - type: testharness - expected: ERROR - [WebGL test #1: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] - 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 05ed89bcd6e..fa30add16ed 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 @@ -2,279 +2,276 @@ [WebGL test #0: Property either does not exist or is not a function: getAttachedShaders] expected: FAIL - [WebGL test #1: Property either does not exist or is not a function: getFramebufferAttachmentParameter] + [WebGL test #1: Property either does not exist or is not a function: getRenderbufferParameter] expected: FAIL - [WebGL test #2: Property either does not exist or is not a function: getRenderbufferParameter] + [WebGL test #2: Property either does not exist or is not a function: getUniform] expected: FAIL - [WebGL test #3: Property either does not exist or is not a function: getUniform] + [WebGL test #3: Property either does not exist or is not a function: isContextLost] expected: FAIL - [WebGL test #4: Property either does not exist or is not a function: isContextLost] + [WebGL test #4: Property either does not exist or is not a function: getBufferSubData] expected: FAIL - [WebGL test #5: Property either does not exist or is not a function: getBufferSubData] + [WebGL test #5: Property either does not exist or is not a function: copyBufferSubData] expected: FAIL - [WebGL test #6: Property either does not exist or is not a function: copyBufferSubData] + [WebGL test #6: Property either does not exist or is not a function: blitFramebuffer] expected: FAIL - [WebGL test #7: Property either does not exist or is not a function: blitFramebuffer] + [WebGL test #7: Property either does not exist or is not a function: framebufferTextureLayer] expected: FAIL - [WebGL test #8: Property either does not exist or is not a function: framebufferTextureLayer] + [WebGL test #8: Property either does not exist or is not a function: getInternalformatParameter] expected: FAIL - [WebGL test #9: Property either does not exist or is not a function: getInternalformatParameter] + [WebGL test #9: Property either does not exist or is not a function: invalidateFramebuffer] expected: FAIL - [WebGL test #10: Property either does not exist or is not a function: invalidateFramebuffer] + [WebGL test #10: Property either does not exist or is not a function: invalidateSubFramebuffer] expected: FAIL - [WebGL test #11: Property either does not exist or is not a function: invalidateSubFramebuffer] + [WebGL test #11: Property either does not exist or is not a function: readBuffer] expected: FAIL - [WebGL test #12: Property either does not exist or is not a function: readBuffer] + [WebGL test #12: Property either does not exist or is not a function: renderbufferStorageMultisample] expected: FAIL - [WebGL test #13: Property either does not exist or is not a function: renderbufferStorageMultisample] + [WebGL test #13: Property either does not exist or is not a function: texImage3D] expected: FAIL - [WebGL test #14: Property either does not exist or is not a function: texImage3D] + [WebGL test #14: Property either does not exist or is not a function: texStorage2D] expected: FAIL - [WebGL test #15: Property either does not exist or is not a function: texStorage2D] + [WebGL test #15: Property either does not exist or is not a function: texStorage3D] expected: FAIL - [WebGL test #16: Property either does not exist or is not a function: texStorage3D] + [WebGL test #16: Property either does not exist or is not a function: texSubImage3D] expected: FAIL - [WebGL test #17: Property either does not exist or is not a function: texSubImage3D] + [WebGL test #17: Property either does not exist or is not a function: copyTexSubImage3D] expected: FAIL - [WebGL test #18: Property either does not exist or is not a function: copyTexSubImage3D] + [WebGL test #18: Property either does not exist or is not a function: compressedTexImage3D] expected: FAIL - [WebGL test #19: Property either does not exist or is not a function: compressedTexImage3D] + [WebGL test #19: Property either does not exist or is not a function: compressedTexSubImage3D] expected: FAIL - [WebGL test #20: Property either does not exist or is not a function: compressedTexSubImage3D] + [WebGL test #20: Property either does not exist or is not a function: getFragDataLocation] expected: FAIL - [WebGL test #21: Property either does not exist or is not a function: getFragDataLocation] + [WebGL test #21: Property either does not exist or is not a function: uniform1ui] expected: FAIL - [WebGL test #22: Property either does not exist or is not a function: uniform1ui] + [WebGL test #22: Property either does not exist or is not a function: uniform2ui] expected: FAIL - [WebGL test #23: Property either does not exist or is not a function: uniform2ui] + [WebGL test #23: Property either does not exist or is not a function: uniform3ui] expected: FAIL - [WebGL test #24: Property either does not exist or is not a function: uniform3ui] + [WebGL test #24: Property either does not exist or is not a function: uniform4ui] expected: FAIL - [WebGL test #25: Property either does not exist or is not a function: uniform4ui] + [WebGL test #25: Property either does not exist or is not a function: uniform1uiv] expected: FAIL - [WebGL test #26: Property either does not exist or is not a function: uniform1uiv] + [WebGL test #26: Property either does not exist or is not a function: uniform2uiv] expected: FAIL - [WebGL test #27: Property either does not exist or is not a function: uniform2uiv] + [WebGL test #27: Property either does not exist or is not a function: uniform3uiv] expected: FAIL - [WebGL test #28: Property either does not exist or is not a function: uniform3uiv] + [WebGL test #28: Property either does not exist or is not a function: uniform4uiv] expected: FAIL - [WebGL test #29: Property either does not exist or is not a function: uniform4uiv] + [WebGL test #29: Property either does not exist or is not a function: uniformMatrix2x3fv] expected: FAIL - [WebGL test #30: Property either does not exist or is not a function: uniformMatrix2x3fv] + [WebGL test #30: Property either does not exist or is not a function: uniformMatrix3x2fv] expected: FAIL - [WebGL test #31: Property either does not exist or is not a function: uniformMatrix3x2fv] + [WebGL test #31: Property either does not exist or is not a function: uniformMatrix2x4fv] expected: FAIL - [WebGL test #32: Property either does not exist or is not a function: uniformMatrix2x4fv] + [WebGL test #32: Property either does not exist or is not a function: uniformMatrix4x2fv] expected: FAIL - [WebGL test #33: Property either does not exist or is not a function: uniformMatrix4x2fv] + [WebGL test #33: Property either does not exist or is not a function: uniformMatrix3x4fv] expected: FAIL - [WebGL test #34: Property either does not exist or is not a function: uniformMatrix3x4fv] + [WebGL test #34: Property either does not exist or is not a function: uniformMatrix4x3fv] expected: FAIL - [WebGL test #35: Property either does not exist or is not a function: uniformMatrix4x3fv] + [WebGL test #35: Property either does not exist or is not a function: vertexAttribI4i] expected: FAIL - [WebGL test #36: Property either does not exist or is not a function: vertexAttribI4i] + [WebGL test #36: Property either does not exist or is not a function: vertexAttribI4iv] expected: FAIL - [WebGL test #37: Property either does not exist or is not a function: vertexAttribI4iv] + [WebGL test #37: Property either does not exist or is not a function: vertexAttribI4ui] expected: FAIL - [WebGL test #38: Property either does not exist or is not a function: vertexAttribI4ui] + [WebGL test #38: Property either does not exist or is not a function: vertexAttribI4uiv] expected: FAIL - [WebGL test #39: Property either does not exist or is not a function: vertexAttribI4uiv] + [WebGL test #39: Property either does not exist or is not a function: vertexAttribIPointer] expected: FAIL - [WebGL test #40: Property either does not exist or is not a function: vertexAttribIPointer] + [WebGL test #40: Property either does not exist or is not a function: vertexAttribDivisor] expected: FAIL - [WebGL test #41: Property either does not exist or is not a function: vertexAttribDivisor] + [WebGL test #41: Property either does not exist or is not a function: drawArraysInstanced] expected: FAIL - [WebGL test #42: Property either does not exist or is not a function: drawArraysInstanced] + [WebGL test #42: Property either does not exist or is not a function: drawElementsInstanced] expected: FAIL - [WebGL test #43: Property either does not exist or is not a function: drawElementsInstanced] + [WebGL test #43: Property either does not exist or is not a function: drawRangeElements] expected: FAIL - [WebGL test #44: Property either does not exist or is not a function: drawRangeElements] + [WebGL test #44: Property either does not exist or is not a function: drawBuffers] expected: FAIL - [WebGL test #45: Property either does not exist or is not a function: drawBuffers] + [WebGL test #45: Property either does not exist or is not a function: clearBufferiv] expected: FAIL - [WebGL test #46: Property either does not exist or is not a function: clearBufferiv] + [WebGL test #46: Property either does not exist or is not a function: clearBufferuiv] expected: FAIL - [WebGL test #47: Property either does not exist or is not a function: clearBufferuiv] + [WebGL test #47: Property either does not exist or is not a function: clearBufferfv] expected: FAIL - [WebGL test #48: Property either does not exist or is not a function: clearBufferfv] + [WebGL test #48: Property either does not exist or is not a function: clearBufferfi] expected: FAIL - [WebGL test #49: Property either does not exist or is not a function: clearBufferfi] + [WebGL test #49: Property either does not exist or is not a function: createQuery] expected: FAIL - [WebGL test #50: Property either does not exist or is not a function: createQuery] + [WebGL test #50: Property either does not exist or is not a function: deleteQuery] expected: FAIL - [WebGL test #51: Property either does not exist or is not a function: deleteQuery] + [WebGL test #51: Property either does not exist or is not a function: isQuery] expected: FAIL - [WebGL test #52: Property either does not exist or is not a function: isQuery] + [WebGL test #52: Property either does not exist or is not a function: beginQuery] expected: FAIL - [WebGL test #53: Property either does not exist or is not a function: beginQuery] + [WebGL test #53: Property either does not exist or is not a function: endQuery] expected: FAIL - [WebGL test #54: Property either does not exist or is not a function: endQuery] + [WebGL test #54: Property either does not exist or is not a function: getQuery] expected: FAIL - [WebGL test #55: Property either does not exist or is not a function: getQuery] + [WebGL test #55: Property either does not exist or is not a function: getQueryParameter] expected: FAIL - [WebGL test #56: Property either does not exist or is not a function: getQueryParameter] + [WebGL test #56: Property either does not exist or is not a function: createSampler] expected: FAIL - [WebGL test #57: Property either does not exist or is not a function: createSampler] + [WebGL test #57: Property either does not exist or is not a function: deleteSampler] expected: FAIL - [WebGL test #58: Property either does not exist or is not a function: deleteSampler] + [WebGL test #58: Property either does not exist or is not a function: isSampler] expected: FAIL - [WebGL test #59: Property either does not exist or is not a function: isSampler] + [WebGL test #59: Property either does not exist or is not a function: bindSampler] expected: FAIL - [WebGL test #60: Property either does not exist or is not a function: bindSampler] + [WebGL test #60: Property either does not exist or is not a function: samplerParameteri] expected: FAIL - [WebGL test #61: Property either does not exist or is not a function: samplerParameteri] + [WebGL test #61: Property either does not exist or is not a function: samplerParameterf] expected: FAIL - [WebGL test #62: Property either does not exist or is not a function: samplerParameterf] + [WebGL test #62: Property either does not exist or is not a function: getSamplerParameter] expected: FAIL - [WebGL test #63: Property either does not exist or is not a function: getSamplerParameter] + [WebGL test #63: Property either does not exist or is not a function: fenceSync] expected: FAIL - [WebGL test #64: Property either does not exist or is not a function: fenceSync] + [WebGL test #64: Property either does not exist or is not a function: isSync] expected: FAIL - [WebGL test #65: Property either does not exist or is not a function: isSync] + [WebGL test #65: Property either does not exist or is not a function: deleteSync] expected: FAIL - [WebGL test #66: Property either does not exist or is not a function: deleteSync] + [WebGL test #66: Property either does not exist or is not a function: clientWaitSync] expected: FAIL - [WebGL test #67: Property either does not exist or is not a function: clientWaitSync] + [WebGL test #67: Property either does not exist or is not a function: waitSync] expected: FAIL - [WebGL test #68: Property either does not exist or is not a function: waitSync] + [WebGL test #68: Property either does not exist or is not a function: getSyncParameter] expected: FAIL - [WebGL test #69: Property either does not exist or is not a function: getSyncParameter] + [WebGL test #69: Property either does not exist or is not a function: createTransformFeedback] expected: FAIL - [WebGL test #70: Property either does not exist or is not a function: createTransformFeedback] + [WebGL test #70: Property either does not exist or is not a function: deleteTransformFeedback] expected: FAIL - [WebGL test #71: Property either does not exist or is not a function: deleteTransformFeedback] + [WebGL test #71: Property either does not exist or is not a function: isTransformFeedback] expected: FAIL - [WebGL test #72: Property either does not exist or is not a function: isTransformFeedback] + [WebGL test #72: Property either does not exist or is not a function: bindTransformFeedback] expected: FAIL - [WebGL test #73: Property either does not exist or is not a function: bindTransformFeedback] + [WebGL test #73: Property either does not exist or is not a function: beginTransformFeedback] expected: FAIL - [WebGL test #74: Property either does not exist or is not a function: beginTransformFeedback] + [WebGL test #74: Property either does not exist or is not a function: endTransformFeedback] expected: FAIL - [WebGL test #75: Property either does not exist or is not a function: endTransformFeedback] + [WebGL test #75: Property either does not exist or is not a function: transformFeedbackVaryings] expected: FAIL - [WebGL test #76: Property either does not exist or is not a function: transformFeedbackVaryings] + [WebGL test #76: Property either does not exist or is not a function: getTransformFeedbackVarying] expected: FAIL - [WebGL test #77: Property either does not exist or is not a function: getTransformFeedbackVarying] + [WebGL test #77: Property either does not exist or is not a function: pauseTransformFeedback] expected: FAIL - [WebGL test #78: Property either does not exist or is not a function: pauseTransformFeedback] + [WebGL test #78: Property either does not exist or is not a function: resumeTransformFeedback] expected: FAIL - [WebGL test #79: Property either does not exist or is not a function: resumeTransformFeedback] + [WebGL test #79: Property either does not exist or is not a function: bindBufferBase] expected: FAIL - [WebGL test #80: Property either does not exist or is not a function: bindBufferBase] + [WebGL test #80: Property either does not exist or is not a function: bindBufferRange] expected: FAIL - [WebGL test #81: Property either does not exist or is not a function: bindBufferRange] + [WebGL test #81: Property either does not exist or is not a function: getIndexedParameter] expected: FAIL - [WebGL test #82: Property either does not exist or is not a function: getIndexedParameter] + [WebGL test #82: Property either does not exist or is not a function: getUniformIndices] expected: FAIL - [WebGL test #83: Property either does not exist or is not a function: getUniformIndices] + [WebGL test #83: Property either does not exist or is not a function: getActiveUniforms] expected: FAIL - [WebGL test #84: Property either does not exist or is not a function: getActiveUniforms] + [WebGL test #84: Property either does not exist or is not a function: getUniformBlockIndex] expected: FAIL - [WebGL test #85: Property either does not exist or is not a function: getUniformBlockIndex] + [WebGL test #85: Property either does not exist or is not a function: getActiveUniformBlockParameter] expected: FAIL - [WebGL test #86: Property either does not exist or is not a function: getActiveUniformBlockParameter] + [WebGL test #86: Property either does not exist or is not a function: getActiveUniformBlockName] expected: FAIL - [WebGL test #87: Property either does not exist or is not a function: getActiveUniformBlockName] + [WebGL test #87: Property either does not exist or is not a function: uniformBlockBinding] expected: FAIL - [WebGL test #88: Property either does not exist or is not a function: uniformBlockBinding] + [WebGL test #88: Property either does not exist or is not a function: createVertexArray] expected: FAIL - [WebGL test #89: Property either does not exist or is not a function: createVertexArray] + [WebGL test #89: Property either does not exist or is not a function: deleteVertexArray] expected: FAIL - [WebGL test #90: Property either does not exist or is not a function: deleteVertexArray] + [WebGL test #90: Property either does not exist or is not a function: isVertexArray] expected: FAIL - [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: bindVertexArray] + [WebGL test #91: Property either does not exist or is not a function: bindVertexArray] expected: FAIL diff --git a/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html.ini index 324840c2eb5..3f29b3b4a77 100644 --- a/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html.ini +++ b/tests/wpt/mozilla/meta/webgl/conformance-2.0.0/conformance2/renderbuffers/framebuffer-test.html.ini @@ -1,5 +1,100 @@ [framebuffer-test.html] - expected: ERROR [WebGL test #1: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] expected: FAIL + [WebGL test #1: getError expected: INVALID_ENUM. Was INVALID_OPERATION : getFramebufferAttachmentParameter(COLOR_ATTACHMENT0) on the default framebuffer.] + expected: FAIL + + [WebGL test #2: getError expected: NO_ERROR. Was INVALID_OPERATION : getFramebufferAttachmentParameter(BACK) on the default framebuffer.] + expected: FAIL + + [WebGL test #9: getError expected: NO_ERROR. Was INVALID_ENUM : getFramebufferAttachmentParameter(READ_FRAMEBUFFER).] + expected: FAIL + + [WebGL test #10: checkFramebufferStatus(READ_FRAMEBUFFER) should succeed.] + expected: FAIL + + [WebGL test #11: getError expected: NO_ERROR. Was INVALID_ENUM : checkFramebufferStatus(READ_FRAMEBUFFER).] + expected: FAIL + + [WebGL test #12: getError expected: NO_ERROR. Was INVALID_ENUM : bindFramebuffer(READ_FRAMEBUFFER).] + expected: FAIL + + [WebGL test #13: bindFramebuffer(READ_FRAMEBUFFER) should change READ_FRAMEBUFFER_BINDING.] + expected: FAIL + + [WebGL test #15: getError expected: NO_ERROR. Was INVALID_ENUM : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) with no attachment.] + expected: FAIL + + [WebGL test #16: getError expected: NO_ERROR. Was INVALID_ENUM : framebufferTexImage2D(READ_FRAMEBUFFER).] + expected: FAIL + + [WebGL test #17: getError expected: NO_ERROR. Was INVALID_ENUM : framebufferRenderbuffer(READ_FRAMEBUFFER).] + expected: FAIL + + [WebGL test #18: getError expected: INVALID_OPERATION. Was INVALID_ENUM : getFramebufferAttachmentParameter(GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) with no attachment.] + expected: FAIL + + [WebGL test #21: getError expected: NO_ERROR. Was INVALID_VALUE : framebufferTexture2D with an appropriate mipmap level.] + expected: FAIL + + [WebGL test #26: getError expected: NO_ERROR. Was INVALID_ENUM : attach a texture to read/draw framebuffer binding point.] + expected: FAIL + + [WebGL test #27: getError expected: NO_ERROR. Was INVALID_OPERATION : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) on read/draw framebuffer.] + expected: FAIL + + [WebGL test #29: getError expected: NO_ERROR. Was INVALID_ENUM : detach a texture from read/draw framebuffer.] + expected: FAIL + + [WebGL test #30: getError expected: NO_ERROR. Was INVALID_ENUM : attach a texture to read/draw framebuffer binding point.] + expected: FAIL + + [WebGL test #31: getError expected: NO_ERROR. Was INVALID_OPERATION : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) on read/draw framebuffer.] + expected: FAIL + + [WebGL test #33: getError expected: NO_ERROR. Was INVALID_ENUM : detach a texture from read/draw framebuffer.] + expected: FAIL + + [WebGL test #35: gl.getFramebufferAttachmentParameter(gl.DRAW_FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) should be 0 (of type number). Was null (of type object).] + expected: FAIL + + [WebGL test #36: getError expected: INVALID_OPERATION. Was INVALID_ENUM : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) on read framebuffer with no attachment.] + expected: FAIL + + [WebGL test #37: getError expected: NO_ERROR. Was INVALID_OPERATION : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) on draw framebuffer.] + expected: FAIL + + [WebGL test #38: getError expected: INVALID_OPERATION. Was INVALID_ENUM : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) on draw framebuffer with no attachment.] + expected: FAIL + + [WebGL test #39: getError expected: NO_ERROR. Was INVALID_ENUM : attaching a renderbuffer to a read/draw framebuffer.] + expected: FAIL + + [WebGL test #40: getError expected: NO_ERROR. Was INVALID_OPERATION : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) on read/draw framebuffer.] + expected: FAIL + + [WebGL test #42: getError expected: NO_ERROR. Was INVALID_ENUM : detach a renderbuffer from a read/draw framebuffer.] + expected: FAIL + + [WebGL test #43: getError expected: NO_ERROR. Was INVALID_ENUM : attaching a renderbuffer to a read/draw framebuffer.] + expected: FAIL + + [WebGL test #44: getError expected: NO_ERROR. Was INVALID_OPERATION : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) on read/draw framebuffer.] + expected: FAIL + + [WebGL test #46: getError expected: NO_ERROR. Was INVALID_ENUM : detach a renderbuffer from a read/draw framebuffer.] + expected: FAIL + + [WebGL test #49: getError expected: INVALID_OPERATION. Was INVALID_ENUM : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) on read framebuffer without depth attachment.] + expected: FAIL + + [WebGL test #52: getError expected: INVALID_OPERATION. Was INVALID_ENUM : getFramebufferAttachmentParameter(FRAMEBUFFER_ATTACHMENT_RED_SIZE) on read framebuffer with no attachment.] + expected: FAIL + + [WebGL test #55: getError expected: NO_ERROR. Was INVALID_ENUM : bind read framebuffer to default (null) framebuffer.] + expected: FAIL + + [WebGL test #56: getError expected: NO_ERROR. Was INVALID_OPERATION : bind draw framebuffer to default (null) framebuffer.] + expected: FAIL + |