diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index 9c74b31fd1e..8f9f4e70a31 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -533,7 +533,6 @@ parameters! { FrontFace = gl::FRONT_FACE, GenerateMipmapHint = gl::GENERATE_MIPMAP_HINT, GreenBits = gl::GREEN_BITS, - PackAlignment = gl::PACK_ALIGNMENT, RedBits = gl::RED_BITS, SampleBuffers = gl::SAMPLE_BUFFERS, Samples = gl::SAMPLES, @@ -554,7 +553,6 @@ parameters! { StencilValueMask = gl::STENCIL_VALUE_MASK, StencilWritemask = gl::STENCIL_WRITEMASK, SubpixelBits = gl::SUBPIXEL_BITS, - UnpackAlignment = gl::UNPACK_ALIGNMENT, }), Int2(ParameterInt2 { MaxViewportDims = gl::MAX_VIEWPORT_DIMS, diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index fc1977a2962..94ec89b2b1c 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -149,7 +149,9 @@ pub struct WebGLRenderingContext { canvas: Dom, #[ignore_malloc_size_of = "Defined in canvas_traits"] last_error: Cell>, + texture_packing_alignment: Cell, texture_unpacking_settings: Cell, + // TODO(nox): Should be Cell. texture_unpacking_alignment: Cell, bound_framebuffer: MutNullableDom, bound_renderbuffer: MutNullableDom, @@ -193,7 +195,7 @@ impl WebGLRenderingContext { result.map(|ctx_data| { let max_combined_texture_image_units = ctx_data.limits.max_combined_texture_image_units; - WebGLRenderingContext { + Self { reflector_: Reflector::new(), webgl_sender: ctx_data.sender, webrender_image: Cell::new(None), @@ -203,6 +205,7 @@ impl WebGLRenderingContext { limits: ctx_data.limits, canvas: Dom::from_ref(canvas), last_error: Cell::new(None), + texture_packing_alignment: Cell::new(4), texture_unpacking_settings: Cell::new(TextureUnpacking::CONVERT_COLORSPACE), texture_unpacking_alignment: Cell::new(4), bound_framebuffer: MutNullableDom::new(None), @@ -1223,6 +1226,12 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { let unpack = self.texture_unpacking_settings.get(); return BooleanValue(unpack.contains(TextureUnpacking::PREMULTIPLY_ALPHA)); } + constants::PACK_ALIGNMENT => { + return UInt32Value(self.texture_packing_alignment.get() as u32); + }, + constants::UNPACK_ALIGNMENT => { + return UInt32Value(self.texture_unpacking_alignment.get()); + }, _ => {} } @@ -2530,8 +2539,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { }; texture_settings.set(TextureUnpacking::CONVERT_COLORSPACE, convert); }, - constants::UNPACK_ALIGNMENT | - constants::PACK_ALIGNMENT => { + constants::UNPACK_ALIGNMENT => { match param_value { 1 | 2 | 4 | 8 => (), _ => return self.webgl_error(InvalidValue), @@ -2539,6 +2547,17 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { self.texture_unpacking_alignment.set(param_value as u32); return; }, + constants::PACK_ALIGNMENT => { + match param_value { + 1 | 2 | 4 | 8 => (), + _ => return self.webgl_error(InvalidValue), + } + // We never actually change the actual value on the GL side + // because it's better to receive the pixels without the padding + // and then write the result at the right place in ReadPixels. + self.texture_packing_alignment.set(param_value as u8); + return; + } _ => return self.webgl_error(InvalidEnum), } self.texture_unpacking_settings.set(texture_settings); @@ -2553,105 +2572,115 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { #[allow(unsafe_code)] fn ReadPixels(&self, x: i32, y: i32, width: i32, height: i32, format: u32, pixel_type: u32, mut pixels: CustomAutoRooterGuard>) { - let (array_type, data) = match *pixels { - // Spec: If data is null then an INVALID_VALUE error is generated. - None => return self.webgl_error(InvalidValue), - // The typed array is rooted and we should have a unique reference to it, - // so retrieving its mutable slice is safe here - Some(ref mut data) => (data.get_array_type(), unsafe { data.as_mut_slice() }), - }; - - handle_potential_webgl_error!(self, self.validate_framebuffer(), return); - - match array_type { - Type::Uint8 => (), - _ => return self.webgl_error(InvalidOperation), - } - - // From the WebGL specification, 5.14.12 Reading back pixels - // - // "Only two combinations of format and type are - // accepted. The first is format RGBA and type - // UNSIGNED_BYTE. The second is an implementation-chosen - // format. The values of format and type for this format - // may be determined by calling getParameter with the - // symbolic constants IMPLEMENTATION_COLOR_READ_FORMAT - // and IMPLEMENTATION_COLOR_READ_TYPE, respectively. The - // implementation-chosen format may vary depending on the - // format of the currently bound rendering - // surface. Unsupported combinations of format and type - // will generate an INVALID_OPERATION error." - // - // To avoid having to support general format packing math, we - // always report RGBA/UNSIGNED_BYTE as our only supported - // format. - if format != constants::RGBA || pixel_type != constants::UNSIGNED_BYTE { - return self.webgl_error(InvalidOperation); - } - let cpp = 4; - - // "If pixels is non-null, but is not large enough to - // retrieve all of the pixels in the specified rectangle - // taking into account pixel store modes, an - // INVALID_OPERATION error is generated." - let stride = match width.checked_mul(cpp) { - Some(stride) => stride, - _ => return self.webgl_error(InvalidOperation), - }; - - match height.checked_mul(stride) { - Some(size) if size <= data.len() as i32 => {} - _ => return self.webgl_error(InvalidOperation), - } - - // "For any pixel lying outside the frame buffer, the - // corresponding destination buffer range remains - // untouched; see Reading Pixels Outside the - // Framebuffer." - let mut x = x; - let mut y = y; - let mut width = width; - let mut height = height; - let mut dst_offset = 0; - - if x < 0 { - dst_offset += cpp * -x; - width += x; - x = 0; - } - - if y < 0 { - dst_offset += stride * -y; - height += y; - y = 0; - } + let pixels = handle_potential_webgl_error!( + self, + pixels.as_mut().ok_or(InvalidValue), + return + ); if width < 0 || height < 0 { return self.webgl_error(InvalidValue); } - match self.get_current_framebuffer_size() { - Some((fb_width, fb_height)) => { - if x + width > fb_width { - width = fb_width - x; - } - if y + height > fb_height { - height = fb_height - y; - } - } - _ => return self.webgl_error(InvalidOperation), + if format != constants::RGBA || pixel_type != constants::UNSIGNED_BYTE { + return self.webgl_error(InvalidOperation); + } + + if pixels.get_array_type() != Type::Uint8 { + return self.webgl_error(InvalidOperation); + } + + handle_potential_webgl_error!(self, self.validate_framebuffer(), return); + let (fb_width, fb_height) = handle_potential_webgl_error!( + self, + self.get_current_framebuffer_size().ok_or(InvalidOperation), + return + ); + + if width == 0 || height == 0 { + return; + } + + let bytes_per_pixel = 4; + + let row_len = handle_potential_webgl_error!( + self, + width.checked_mul(bytes_per_pixel).ok_or(InvalidOperation), + return + ); + + let pack_alignment = self.texture_packing_alignment.get() as i32; + let dest_padding = match row_len % pack_alignment { + 0 => 0, + remainder => pack_alignment - remainder, }; + let dest_stride = row_len + dest_padding; + + let full_rows_len = handle_potential_webgl_error!( + self, + dest_stride.checked_mul(height - 1).ok_or(InvalidOperation), + return + ); + let required_dest_len = handle_potential_webgl_error!( + self, + full_rows_len.checked_add(row_len).ok_or(InvalidOperation), + return + ); + + let dest = unsafe { pixels.as_mut_slice() }; + if dest.len() < required_dest_len as usize { + return self.webgl_error(InvalidOperation); + } + + let mut src_x = x; + let mut src_y = y; + let mut src_width = width; + let mut src_height = height; + let mut dest_offset = 0; + + if src_x < 0 { + if src_width <= -src_x { + return; + } + dest_offset += bytes_per_pixel * -src_x; + src_width += src_x; + src_x = 0; + } + if src_y < 0 { + if src_height <= -src_y { + return; + } + dest_offset += row_len * -src_y; + src_height += src_y; + src_y = 0; + } + + if src_x + src_width > fb_width { + src_width = fb_width - src_x; + } + if src_y + src_height > fb_height { + src_height = fb_height - src_y; + } let (sender, receiver) = ipc::bytes_channel().unwrap(); - self.send_command(WebGLCommand::ReadPixels(x, y, width, height, format, pixel_type, sender)); + self.send_command(WebGLCommand::ReadPixels( + src_x, + src_y, + src_width, + src_height, + format, + pixel_type, + sender, + )); - let result = receiver.recv().unwrap(); - - for i in 0..height { - for j in 0..(width * cpp) { - data[(dst_offset + i * stride + j) as usize] = - result[(i * width * cpp + j) as usize]; - } + let src = receiver.recv().unwrap(); + let src_row_len = (src_width * bytes_per_pixel) as usize; + for i in 0..src_height { + let dest_start = (dest_offset + i * dest_stride) as usize; + let dest_end = dest_start + src_row_len; + let src_start = i as usize * src_row_len; + let src_end = src_start + src_row_len; + dest[dest_start..dest_end].copy_from_slice(&src[src_start..src_end]); } } diff --git a/tests/wpt/webgl/meta/conformance/reading/read-pixels-pack-alignment.html.ini b/tests/wpt/webgl/meta/conformance/reading/read-pixels-pack-alignment.html.ini deleted file mode 100644 index 0109d0a68c1..00000000000 --- a/tests/wpt/webgl/meta/conformance/reading/read-pixels-pack-alignment.html.ini +++ /dev/null @@ -1,13 +0,0 @@ -[read-pixels-pack-alignment.html] - [WebGL test #17: pixel should be 255,102,0,255. Was 0,0,0,0.] - expected: FAIL - - [WebGL test #33: pixel should be 255,102,0,255. Was 0,0,0,0.] - expected: FAIL - - [WebGL test #53: pixel should be 255,102,0,255. Was 0,0,0,0.] - expected: FAIL - - [WebGL test #61: pixel should be 255,102,0,255. Was 0,0,0,0.] - expected: FAIL - diff --git a/tests/wpt/webgl/meta/conformance2/reading/read-pixels-pack-parameters.html.ini b/tests/wpt/webgl/meta/conformance2/reading/read-pixels-pack-parameters.html.ini index 901cc15ca58..92abc7c772e 100644 --- a/tests/wpt/webgl/meta/conformance2/reading/read-pixels-pack-parameters.html.ini +++ b/tests/wpt/webgl/meta/conformance2/reading/read-pixels-pack-parameters.html.ini @@ -1,695 +1,557 @@ [read-pixels-pack-parameters.html] expected: ERROR - [WebGL test #1: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #15: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #3: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #135: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #5: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #237: last pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #7: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #77: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #9: Padding byte 0 of row 0 changed: expected 1, got 2] + [WebGL test #52: Padding byte 0 of row 0 changed: expected 1, got 249] expected: FAIL - [WebGL test #10: first pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] + [WebGL test #210: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #11: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] + [WebGL test #172: Padding byte 4 of row 0 changed: expected 1, got 249] expected: FAIL - [WebGL test #12: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #13: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #14: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #16: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #18: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #20: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #22: Padding byte 0 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #23: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #24: Padding byte 0 of row 1 changed: expected 1, got 134] - expected: FAIL - - [WebGL test #25: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #26: getError expected: NO_ERROR. Was INVALID_ENUM : readPixels should succeed] - expected: FAIL - - [WebGL test #27: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #29: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #31: Padding byte 0 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #32: first pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #33: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #34: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #35: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #36: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #38: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #40: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #42: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #44: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #46: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #48: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #50: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #52: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #54: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #56: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #58: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #60: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #62: Padding byte 0 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #63: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #64: Padding byte 0 of row 1 changed: expected 1, got 134] - expected: FAIL - - [WebGL test #65: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #66: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #68: first pixel of row 1: expected [1,2,3,4\], got [2,200,102,255\]] - expected: FAIL - - [WebGL test #69: last pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #70: Padding byte 0 of row 1 changed: expected 1, got 134] - expected: FAIL - - [WebGL test #71: first pixel of row 2: expected [1,2,3,4\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #72: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #73: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #75: Padding byte 0 of row 0 changed: expected 1, got 249] - expected: FAIL - - [WebGL test #76: last pixel of row 1: expected [249,102,0,255\], got [2,200,102,255\]] - expected: FAIL - - [WebGL test #77: Padding byte 0 of row 1 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #78: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #79: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #81: first pixel of row 1: expected [1,2,3,4\], got [249,102,0,255\]] - expected: FAIL - - [WebGL test #82: last pixel of row 1: expected [249,102,0,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #83: Padding byte 0 of row 1 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #84: first pixel of row 2: expected [1,2,3,4\], got [2,200,102,255\]] - expected: FAIL - - [WebGL test #85: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #86: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #87: getError expected: NO_ERROR. Was INVALID_VALUE : readPixels should succeed] - expected: FAIL - - [WebGL test #88: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #89: getError expected: NO_ERROR. Was INVALID_VALUE : readPixels should succeed] - expected: FAIL - - [WebGL test #90: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #92: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #93: Padding byte 0 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #94: last pixel of row 1: expected [1,2,3,4\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #95: Padding byte 0 of row 1 changed: expected 1, got 134] - expected: FAIL - - [WebGL test #96: first pixel of row 2: expected [134,87,234,255\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #97: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #99: Padding byte 0 of row 0 changed: expected 1, got 99] - expected: FAIL - - [WebGL test #100: last pixel of row 1: expected [99,5,76,255\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #101: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #102: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #103: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #105: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #106: Padding byte 0 of row 0 changed: expected 1, got 99] - expected: FAIL - - [WebGL test #107: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #108: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #109: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #110: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #112: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #113: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #114: Padding byte 0 of row 0 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #115: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #116: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #117: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #118: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #119: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #121: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #122: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #123: Padding byte 0 of row 0 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #124: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #125: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #126: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #127: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #128: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #130: Padding byte 0 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #131: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #132: Padding byte 0 of row 1 changed: expected 1, got 134] - expected: FAIL - - [WebGL test #133: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #134: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #136: first pixel of row 1: expected [1,2,3,4\], got [2,200,102,255\]] - expected: FAIL - - [WebGL test #137: last pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #138: Padding byte 0 of row 1 changed: expected 1, got 134] - expected: FAIL - - [WebGL test #139: first pixel of row 2: expected [1,2,3,4\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #140: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #141: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #143: Padding byte 0 of row 0 changed: expected 1, got 249] - expected: FAIL - - [WebGL test #144: last pixel of row 1: expected [249,102,0,255\], got [2,200,102,255\]] - expected: FAIL - - [WebGL test #145: Padding byte 0 of row 1 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #146: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #147: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #149: first pixel of row 1: expected [1,2,3,4\], got [249,102,0,255\]] - expected: FAIL - - [WebGL test #150: last pixel of row 1: expected [249,102,0,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #151: Padding byte 0 of row 1 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #152: first pixel of row 2: expected [1,2,3,4\], got [2,200,102,255\]] - expected: FAIL - - [WebGL test #153: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #154: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #155: getError expected: NO_ERROR. Was INVALID_VALUE : readPixels should succeed] - expected: FAIL - - [WebGL test #156: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #157: getError expected: NO_ERROR. Was INVALID_VALUE : readPixels should succeed] - expected: FAIL - - [WebGL test #158: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #160: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #161: Padding byte 0 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #162: last pixel of row 1: expected [1,2,3,4\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #163: Padding byte 0 of row 1 changed: expected 1, got 134] - expected: FAIL - - [WebGL test #164: first pixel of row 2: expected [134,87,234,255\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #165: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #167: Padding byte 0 of row 0 changed: expected 1, got 99] - expected: FAIL - - [WebGL test #168: last pixel of row 1: expected [99,5,76,255\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #169: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #170: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #171: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #173: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #174: Padding byte 0 of row 0 changed: expected 1, got 99] - expected: FAIL - - [WebGL test #175: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #176: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #177: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #178: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #180: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #181: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #182: Padding byte 0 of row 0 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #183: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #184: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #185: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #186: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #187: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #189: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #190: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #191: Padding byte 0 of row 0 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #192: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #193: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #194: Padding byte 0 of row 1 changed: expected 1, got 255] - expected: FAIL - - [WebGL test #195: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] - expected: FAIL - - [WebGL test #196: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #198: Padding byte 0 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #199: first pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #200: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #201: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #202: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] - expected: FAIL - - [WebGL test #203: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] - expected: FAIL - - [WebGL test #205: Padding byte 4 of row 0 changed: expected 1, got 2] - expected: FAIL - - [WebGL test #206: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] - expected: FAIL - - [WebGL test #207: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + [WebGL test #54: Padding byte 0 of row 1 changed: expected 1, got 2] expected: FAIL [WebGL test #208: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #210: Padding byte 0 of row 0 changed: expected 1, got 249] + [WebGL test #44: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #211: first pixel of row 1: expected [249,102,0,255\], got [2,200,102,255\]] + [WebGL test #238: first pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #212: last pixel of row 1: expected [249,102,0,255\], got [2,200,102,255\]] + [WebGL test #55: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #213: first pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] + [WebGL test #164: Padding byte 0 of row 0 changed: expected 1, got 249] expected: FAIL - [WebGL test #214: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] + [WebGL test #191: last pixel of row 1: expected [99,5,76,255\], got [255,255,255,255\]] expected: FAIL - [WebGL test #215: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #73: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #217: Padding byte 4 of row 0 changed: expected 1, got 249] + [WebGL test #78: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #218: last pixel of row 1: expected [249,102,0,255\], got [2,200,102,255\]] + [WebGL test #225: first pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #219: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] + [WebGL test #144: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #220: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #95: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #221: getError expected: NO_ERROR. Was INVALID_VALUE : readPixels should succeed] + [WebGL test #99: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #222: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #89: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #223: getError expected: NO_ERROR. Was INVALID_VALUE : readPixels should succeed] + [WebGL test #129: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #224: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #146: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #226: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #207: Padding byte 0 of row 1 changed: expected 1, got 255] expected: FAIL - [WebGL test #227: Padding byte 0 of row 0 changed: expected 1, got 2] + [WebGL test #104: last pixel of row 1: expected [249,102,0,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #228: first pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] + [WebGL test #205: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #229: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #80: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #230: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + [WebGL test #91: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #93: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #143: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #88: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #22: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #206: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL [WebGL test #231: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #233: Padding byte 0 of row 0 changed: expected 1, got 99] + [WebGL test #134: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #234: first pixel of row 1: expected [99,5,76,255\], got [255,255,255,255\]] + [WebGL test #139: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #235: last pixel of row 1: expected [99,5,76,255\], got [255,255,255,255\]] + [WebGL test #81: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #236: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #170: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #238: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #17: getError expected: NO_ERROR. Was INVALID_ENUM : readPixels should succeed] expected: FAIL - [WebGL test #239: Padding byte 0 of row 0 changed: expected 1, got 99] + [WebGL test #115: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #240: first pixel of row 1: expected [99,5,76,255\], got [255,255,255,255\]] + [WebGL test #106: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #241: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #107: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #242: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #169: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #244: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #187: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #245: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #56: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #246: Padding byte 0 of row 0 changed: expected 1, got 255] + [WebGL test #125: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #247: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #121: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #248: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #160: Padding byte 0 of row 1 changed: expected 1, got 134] expected: FAIL - [WebGL test #249: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #58: first pixel of row 1: expected [1,2,3,4\], got [249,102,0,255\]] expected: FAIL - [WebGL test #251: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #190: Padding byte 4 of row 0 changed: expected 1, got 99] expected: FAIL - [WebGL test #252: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #74: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #253: Padding byte 0 of row 0 changed: expected 1, got 255] + [WebGL test #200: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #254: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #193: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #255: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + [WebGL test #79: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #256: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #62: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #257: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + [WebGL test #7: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #258: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #97: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #259: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + [WebGL test #178: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #260: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #130: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #262: skipped bytes changed at index 0: expected 1 got 249] + [WebGL test #53: last pixel of row 1: expected [249,102,0,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #263: first pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] + [WebGL test #148: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #264: last pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] + [WebGL test #9: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #265: first pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] + [WebGL test #202: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #266: last pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] + [WebGL test #59: last pixel of row 1: expected [249,102,0,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #267: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + [WebGL test #176: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #268: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + [WebGL test #220: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #269: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #159: last pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #270: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + [WebGL test #34: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #271: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #188: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #272: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + [WebGL test #235: skipped bytes changed at index 0: expected 1 got 249] expected: FAIL - [WebGL test #273: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + [WebGL test #40: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #275: skipped bytes changed at index 0: expected 1 got 249] + [WebGL test #168: first pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] expected: FAIL - [WebGL test #276: first pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] + [WebGL test #94: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #277: last pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] + [WebGL test #195: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #278: first pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] + [WebGL test #18: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #279: last pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] + [WebGL test #71: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] expected: FAIL - [WebGL test #280: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + [WebGL test #186: Padding byte 0 of row 1 changed: expected 1, got 134] expected: FAIL - [WebGL test #281: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + [WebGL test #85: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] expected: FAIL - [WebGL test #282: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + [WebGL test #236: first pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #124: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #20: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #147: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #218: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #68: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #185: last pixel of row 1: expected [1,2,3,4\], got [134,87,234,255\]] + expected: FAIL + + [WebGL test #42: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #216: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #215: Padding byte 0 of row 1 changed: expected 1, got 255] + expected: FAIL + + [WebGL test #166: last pixel of row 1: expected [249,102,0,255\], got [2,200,102,255\]] + expected: FAIL + + [WebGL test #224: last pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #155: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #222: skipped bytes changed at index 0: expected 1 got 249] + expected: FAIL + + [WebGL test #69: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #103: Padding byte 0 of row 0 changed: expected 1, got 249] + expected: FAIL + + [WebGL test #232: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + expected: FAIL + + [WebGL test #11: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #3: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #162: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #5: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #183: Padding byte 4 of row 0 changed: expected 1, got 2] + expected: FAIL + + [WebGL test #167: Padding byte 0 of row 1 changed: expected 1, got 2] + expected: FAIL + + [WebGL test #204: Padding byte 4 of row 0 changed: expected 1, got 255] + expected: FAIL + + [WebGL test #84: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #24: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #198: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #153: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #120: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #128: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #226: last pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #182: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #214: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #66: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #223: first pixel of row 0: expected [249,102,0,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #36: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #217: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + expected: FAIL + + [WebGL test #158: first pixel of row 1: expected [1,2,3,4\], got [2,200,102,255\]] + expected: FAIL + + [WebGL test #32: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #173: last pixel of row 1: expected [249,102,0,255\], got [2,200,102,255\]] + expected: FAIL + + [WebGL test #230: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + expected: FAIL + + [WebGL test #28: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #180: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #241: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #219: getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination] + expected: FAIL + + [WebGL test #61: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #38: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #64: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #46: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #86: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #96: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #142: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #196: Padding byte 4 of row 0 changed: expected 1, got 99] + expected: FAIL + + [WebGL test #154: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #157: Padding byte 8 of row 0 changed: expected 1, got 2] + expected: FAIL + + [WebGL test #212: Padding byte 4 of row 0 changed: expected 1, got 255] + expected: FAIL + + [WebGL test #184: first pixel of row 1: expected [2,200,102,255\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #113: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #75: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #26: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #101: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #109: first pixel of row 1: expected [1,2,3,4\], got [249,102,0,255\]] + expected: FAIL + + [WebGL test #105: Padding byte 0 of row 1 changed: expected 1, got 2] + expected: FAIL + + [WebGL test #87: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #132: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #126: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #112: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #174: Padding byte 0 of row 1 changed: expected 1, got 2] + expected: FAIL + + [WebGL test #60: first pixel of row 2: expected [1,2,3,4\], got [2,200,102,255\]] + expected: FAIL + + [WebGL test #203: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #70: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #13: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #145: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #211: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #175: last pixel of row 2: expected [2,200,102,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #111: first pixel of row 2: expected [1,2,3,4\], got [2,200,102,255\]] + expected: FAIL + + [WebGL test #227: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #92: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #83: first pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #229: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #199: Padding byte 0 of row 1 changed: expected 1, got 255] + expected: FAIL + + [WebGL test #50: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #48: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #240: first pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #110: last pixel of row 1: expected [249,102,0,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #117: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #138: first pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #233: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #140: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #1: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #192: Padding byte 0 of row 1 changed: expected 1, got 255] + expected: FAIL + + [WebGL test #119: last pixel of row 0: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #136: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #239: last pixel of row 1: expected [2,200,102,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #131: last pixel of row 2: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #197: first pixel of row 1: expected [99,5,76,255\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #161: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #152: Padding byte 0 of row 1 changed: expected 1, got 134] + expected: FAIL + + [WebGL test #30: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #213: first pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #137: last pixel of row 1: expected [1,2,3,4\], got [255,255,255,255\]] + expected: FAIL + + [WebGL test #165: first pixel of row 1: expected [249,102,0,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #228: last pixel of row 2: expected [134,87,234,255\], got [1,2,3,4\]] + expected: FAIL + + [WebGL test #151: last pixel of row 1: expected [2,200,102,255\], got [134,87,234,255\]] + expected: FAIL + + [WebGL test #122: getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small] + expected: FAIL + + [WebGL test #242: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).] + expected: FAIL + + [WebGL test #150: Padding byte 4 of row 0 changed: expected 1, got 2] expected: FAIL