diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index e7377c82e698..7e6d16f59dbc 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -193,6 +193,15 @@ impl JSTraceable for Vec { } } +impl JSTraceable for (T, T, T, T) { + fn trace(&self, trc: *mut JSTracer) { + self.0.trace(trc); + self.1.trace(trc); + self.2.trace(trc); + self.3.trace(trc); + } +} + // XXXManishearth Check if the following three are optimized to no-ops // if e.trace() is a no-op (e.g it is an no_jsmanaged_fields type) impl JSTraceable for SmallVec<[T; 1]> { diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 70b98ce06cd2..4223598a9850 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -83,6 +83,8 @@ pub struct WebGLRenderingContext { bound_buffer_array: MutNullableHeap>, bound_buffer_element_array: MutNullableHeap>, current_program: MutNullableHeap>, + #[ignore_heap_size_of = "Because it's small"] + current_vertex_attrib_0: Cell<(f32, f32, f32, f32)>, } impl WebGLRenderingContext { @@ -111,6 +113,7 @@ impl WebGLRenderingContext { bound_buffer_array: MutNullableHeap::new(None), bound_buffer_element_array: MutNullableHeap::new(None), current_program: MutNullableHeap::new(None), + current_vertex_attrib_0: Cell::new((0f32, 0f32, 0f32, 1f32)), } }) } @@ -175,6 +178,10 @@ impl WebGLRenderingContext { return self.webgl_error(InvalidValue); } + if indx == 0 { + self.current_vertex_attrib_0.set((x, y, z, w)) + } + self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::VertexAttrib(indx, x, y, z, w))) .unwrap(); @@ -1138,6 +1145,38 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { }) } + #[allow(unsafe_code)] + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9 + fn GetVertexAttrib(&self, cx: *mut JSContext, index: u32, pname: u32) -> JSVal { + if index == 0 && pname == constants::CURRENT_VERTEX_ATTRIB { + let mut result = RootedValue::new(cx, UndefinedValue()); + let (x, y, z, w) = self.current_vertex_attrib_0.get(); + let attrib = vec![x, y, z, w]; + unsafe { + attrib.to_jsval(cx, result.handle_mut()); + } + return result.ptr + } + + let (sender, receiver) = ipc::channel().unwrap(); + self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::GetVertexAttrib(index, pname, sender))).unwrap(); + + match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) { + WebGLParameter::Int(val) => Int32Value(val), + WebGLParameter::Bool(val) => BooleanValue(val), + WebGLParameter::String(_) => panic!("Vertex attrib should not be string"), + WebGLParameter::Float(_) => panic!("Vertex attrib should not be float"), + WebGLParameter::FloatArray(val) => { + let mut result = RootedValue::new(cx, UndefinedValue()); + unsafe { + val.to_jsval(cx, result.handle_mut()); + } + result.ptr + } + WebGLParameter::Invalid => NullValue(), + } + } + // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 fn Hint(&self, target: u32, mode: u32) { if target != constants::GENERATE_MIPMAP_HINT { diff --git a/components/script/dom/webidls/WebGLRenderingContext.webidl b/components/script/dom/webidls/WebGLRenderingContext.webidl index f46da97fd653..f5f1629ca482 100644 --- a/components/script/dom/webidls/WebGLRenderingContext.webidl +++ b/components/script/dom/webidls/WebGLRenderingContext.webidl @@ -595,7 +595,7 @@ interface WebGLRenderingContextBase WebGLUniformLocation? getUniformLocation(WebGLProgram? program, DOMString name); - //any getVertexAttrib(GLuint index, GLenum pname); + any getVertexAttrib(GLuint index, GLenum pname); //[WebGLHandlesContextLoss] GLsizeiptr getVertexAttribOffset(GLuint index, GLenum pname); diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/attribs/gl-vertex-attrib.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/attribs/gl-vertex-attrib.html.ini index 237883ca267b..b6e4e17fa5cb 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/attribs/gl-vertex-attrib.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/attribs/gl-vertex-attrib.html.ini @@ -1539,3 +1539,483 @@ [WebGL test #513: getError expected: NO_ERROR. Was INVALID_VALUE : ] expected: FAIL + [WebGL test #1: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #5: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #6: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #9: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #10: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #11: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #13: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #14: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #15: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #16: gl.getVertexAttrib(0, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #33: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #37: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #38: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #41: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #42: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #43: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #45: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #46: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #47: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #48: gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #65: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #69: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #70: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #73: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #74: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #75: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #77: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #78: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #79: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #80: gl.getVertexAttrib(2, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #97: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #101: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #102: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #105: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #106: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #107: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #109: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #110: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #111: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #112: gl.getVertexAttrib(3, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #129: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #133: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #134: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #137: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #138: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #139: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #141: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #142: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #143: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #144: gl.getVertexAttrib(4, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #161: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #165: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #166: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #169: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #170: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #171: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #173: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #174: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #175: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #176: gl.getVertexAttrib(5, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #193: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #197: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #198: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #201: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #202: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #203: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #205: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #206: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #207: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #208: gl.getVertexAttrib(6, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #225: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #229: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #230: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #233: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #234: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #235: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #237: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #238: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #239: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #240: gl.getVertexAttrib(7, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #257: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #261: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #262: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #265: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #266: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #267: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #269: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #270: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #271: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #272: gl.getVertexAttrib(8, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #289: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #293: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #294: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #297: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #298: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #299: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #301: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #302: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #303: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #304: gl.getVertexAttrib(9, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #321: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #325: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #326: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #329: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #330: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #331: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #333: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #334: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #335: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #336: gl.getVertexAttrib(10, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #353: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #357: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #358: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #361: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #362: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #363: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #365: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #366: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #367: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #368: gl.getVertexAttrib(11, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #385: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #389: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #390: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #393: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #394: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #395: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #397: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #398: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #399: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #400: gl.getVertexAttrib(12, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #417: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #421: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #422: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #425: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #426: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #427: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #429: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #430: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #431: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #432: gl.getVertexAttrib(13, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #449: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #453: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #454: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #457: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #458: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #459: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #461: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #462: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #463: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #464: gl.getVertexAttrib(14, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL + + [WebGL test #481: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #485: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #486: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #489: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #490: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #491: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #493: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[0\] should be 1. Was 0.] + expected: FAIL + + [WebGL test #494: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[1\] should be 2. Was 0.] + expected: FAIL + + [WebGL test #495: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[2\] should be 3. Was 0.] + expected: FAIL + + [WebGL test #496: gl.getVertexAttrib(15, gl.CURRENT_VERTEX_ATTRIB)[3\] should be 4. Was 1.] + expected: FAIL +