From 2e6eb547a8ec5d50acdd5b6503cb4e545fc93334 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sat, 14 Jan 2017 18:32:21 -0800 Subject: [PATCH 1/4] webgl: Implement FLIP_Y_AXIS unpacking flag for TexImage, TexSubImage. This fixes a couple of tests doing RGBA/ubyte image uploads with flipping. Other tests with flipping get their expectations changed, because some other feature is missing (premultiplication or ImageData/canvas format conversion) --- .../script/dom/webglrenderingcontext.rs | 40 +- ...b-image-2d-with-array-buffer-view.html.ini | 2251 ++++------------- ...d-sub-image-2d-with-canvas-rgb565.html.ini | 2 +- ...sub-image-2d-with-canvas-rgba4444.html.ini | 2 +- ...sub-image-2d-with-canvas-rgba5551.html.ini | 8 +- ...mage-and-sub-image-2d-with-canvas.html.ini | 8 - ...b-image-2d-with-image-data-rgb565.html.ini | 8 +- ...image-2d-with-image-data-rgba4444.html.ini | 5 +- ...image-2d-with-image-data-rgba5551.html.ini | 11 +- ...-and-sub-image-2d-with-image-data.html.ini | 8 - ...nd-sub-image-2d-with-image-rgb565.html.ini | 5 +- ...-sub-image-2d-with-image-rgba4444.html.ini | 5 +- ...-sub-image-2d-with-image-rgba5551.html.ini | 8 +- ...image-and-sub-image-2d-with-image.html.ini | 8 - 14 files changed, 563 insertions(+), 1806 deletions(-) delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image.html.ini diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 5d61d5c483e..ecef53bd069 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -471,6 +471,36 @@ impl WebGLRenderingContext { return Ok(expected_byte_length); } + /// Flips the pixels in the Vec on the Y axis if + /// UNPACK_FLIP_Y_WEBGL is currently enabled. + fn flip_teximage_y(&self, + pixels: Vec, + internal_format: TexFormat, + data_type: TexDataType, + width: usize, + height: usize) -> Vec { + if !self.texture_unpacking_settings.get().contains(FLIP_Y_AXIS) { + return pixels; + } + + let cpp = (data_type.element_size() * + internal_format.components() / data_type.components_per_element()) as usize; + + let stride = width * cpp; + + // This should have already been validated. + assert!(stride * height <= pixels.len()); + + let mut flipped = Vec::::with_capacity(pixels.len()); + + for y in 0..height { + let flipped_y = height - 1 - y; + flipped.extend_from_slice(&pixels[(flipped_y * stride)..((flipped_y + 1) * stride)]); + } + + flipped + } + fn tex_image_2d(&self, texture: Root, target: TexImageTarget, @@ -487,7 +517,8 @@ impl WebGLRenderingContext { // TODO(emilio): premultiply here. } - // TODO(emilio): Flip Y axis if necessary here + let pixels = self.flip_teximage_y(pixels, internal_format, data_type, + width as usize, height as usize); // TexImage2D depth is always equal to 1 handle_potential_webgl_error!(self, texture.initialize(target, @@ -497,7 +528,7 @@ impl WebGLRenderingContext { level, Some(data_type))); - // TODO(emilio): Invert axis, convert colorspace, premultiply alpha if requested + // TODO(emilio): convert colorspace, premultiply alpha if requested let msg = WebGLCommand::TexImage2D(target.as_gl_constant(), level as i32, internal_format.as_gl_constant() as i32, width as i32, height as i32, @@ -542,9 +573,10 @@ impl WebGLRenderingContext { return self.webgl_error(InvalidOperation); } - // TODO(emilio): Flip Y axis if necessary here + let pixels = self.flip_teximage_y(pixels, format, data_type, + width as usize, height as usize); - // TODO(emilio): Invert axis, convert colorspace, premultiply alpha if requested + // TODO(emilio): convert colorspace, premultiply alpha if requested let msg = WebGLCommand::TexSubImage2D(target.as_gl_constant(), level as i32, xoffset, yoffset, width as i32, height as i32, diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini index c1543a2a43e..d59840369b0 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini @@ -1,77 +1,5 @@ [tex-image-and-sub-image-2d-with-array-buffer-view.html] type: testharness - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #2: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #3: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #4: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #5: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #6: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #7: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #8: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #9: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #10: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #11: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #26: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #24: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #25: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #27: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #28: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #29: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #30: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #31: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #32: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #33: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #34: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #35: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #37: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -90,81 +18,6 @@ [WebGL test #47: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #48: successfullyParsed should be true. Was false.] - expected: FAIL - - [WebGL test #48: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #49: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #50: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #51: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #52: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #53: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #54: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #55: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #56: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #57: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #58: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #59: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #72: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #73: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #74: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #75: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #76: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #77: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #78: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #79: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #80: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #81: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #82: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #83: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #85: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -183,78 +36,6 @@ [WebGL test #95: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #96: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #97: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #98: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #99: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #100: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #101: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #102: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #103: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #104: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #105: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #106: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #107: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #120: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #121: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #122: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #123: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #124: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #125: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #126: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #127: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #128: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #129: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #130: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #131: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #133: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -273,78 +54,6 @@ [WebGL test #143: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #144: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #145: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #146: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #147: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #148: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #149: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #150: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #151: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #152: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #153: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #154: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #155: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #168: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #169: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #170: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #171: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #172: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #173: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #174: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #175: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #176: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #177: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #178: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #179: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #181: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -363,78 +72,6 @@ [WebGL test #191: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #192: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #193: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #194: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #195: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #196: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #197: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #198: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #199: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #200: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #201: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #202: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #203: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #216: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #217: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #218: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #219: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #220: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #221: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #222: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #223: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #224: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #225: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #226: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #227: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #229: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -453,78 +90,6 @@ [WebGL test #239: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #240: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #241: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #242: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #243: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #244: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #245: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #246: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #247: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #248: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #249: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #250: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #251: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #264: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #265: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #266: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #267: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #268: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #269: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #270: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #271: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #272: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #273: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #274: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #275: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #277: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -549,258 +114,18 @@ [WebGL test #333: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL - [WebGL test #393: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #417: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #429: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL - [WebGL test #441: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #465: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #477: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL - [WebGL test #489: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #513: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #525: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL - [WebGL test #537: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #561: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #573: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL - [WebGL test #793: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #795: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #797: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #799: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #801: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #803: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #817: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #819: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #821: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #823: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #825: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #827: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #841: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #843: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #845: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #847: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #849: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #851: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #865: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #867: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #869: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #871: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #873: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #875: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #889: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #891: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #893: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #895: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #897: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #899: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #913: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #915: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #917: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #919: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #921: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #923: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #937: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #939: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #941: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #943: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #945: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #947: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #961: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #963: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #965: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #967: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #969: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #971: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #288: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #289: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #290: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #291: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #292: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #293: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #294: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #295: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #296: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #297: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #298: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #299: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #312: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #313: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #314: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #315: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #316: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #317: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #318: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #319: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #320: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #321: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #322: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #323: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #325: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -813,78 +138,6 @@ [WebGL test #335: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #336: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #337: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #338: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #339: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #340: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #341: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #342: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #343: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #344: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #345: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #346: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #347: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #360: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #361: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #362: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #363: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #364: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #365: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #366: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #367: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #368: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #369: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #370: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #371: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #373: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -903,72 +156,6 @@ [WebGL test #383: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #384: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #385: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #386: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #387: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #388: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #389: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #390: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #391: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #392: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #394: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #395: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #408: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #409: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #410: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #411: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #412: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #413: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #414: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #415: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #416: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #418: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #419: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #421: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -984,72 +171,6 @@ [WebGL test #431: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #432: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #433: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #434: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #435: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #436: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #437: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #438: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #439: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #440: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #442: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #443: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #456: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #457: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #458: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #459: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #460: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #461: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #462: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #463: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #464: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #466: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #467: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #469: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1065,72 +186,6 @@ [WebGL test #479: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #480: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #481: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #482: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #483: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #484: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #485: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #486: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #487: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #488: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #490: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #491: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #504: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #505: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #506: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #507: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #508: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #509: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #510: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #511: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #512: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #514: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #515: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #517: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1146,72 +201,6 @@ [WebGL test #527: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #528: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #529: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #530: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #531: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #532: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #533: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #534: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #535: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #536: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #538: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #539: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #552: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #553: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #554: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #555: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #556: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #557: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #558: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #559: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #560: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #562: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #563: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #565: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1227,78 +216,6 @@ [WebGL test #575: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #576: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #577: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #578: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #579: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #580: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #581: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #582: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #583: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #584: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #585: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #586: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #587: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #600: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #601: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #602: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #603: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #604: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #605: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #606: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #607: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #608: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #609: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #610: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #611: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #613: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1317,78 +234,6 @@ [WebGL test #623: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #624: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #625: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #626: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #627: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #628: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #629: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #630: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #631: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #632: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #633: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #634: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #635: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #648: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #649: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #650: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #651: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #652: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #653: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #654: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #655: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #656: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #657: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #658: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #659: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #661: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1407,78 +252,6 @@ [WebGL test #671: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #672: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #673: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #674: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #675: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #676: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #677: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #678: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #679: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #680: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #681: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #682: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #683: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #696: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #697: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #698: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #699: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #700: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #701: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #702: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #703: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #704: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #705: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #706: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #707: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #709: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1497,78 +270,6 @@ [WebGL test #719: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #720: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #721: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #722: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #723: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #724: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #725: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #726: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #727: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #728: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #729: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #730: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #731: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #744: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #745: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #746: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #747: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #748: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #749: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #750: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #751: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #752: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #753: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #754: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #755: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #757: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1587,60 +288,6 @@ [WebGL test #767: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #768: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #769: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #770: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #771: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #772: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #773: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #774: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #775: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #776: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #777: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #778: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #779: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #792: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #794: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #796: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #798: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #800: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #802: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - [WebGL test #805: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1659,42 +306,6 @@ [WebGL test #815: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #816: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #818: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #820: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #822: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #824: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #826: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #840: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #842: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #844: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #846: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #848: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #850: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - [WebGL test #853: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1713,42 +324,6 @@ [WebGL test #863: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #864: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #866: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #868: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #870: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #872: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #874: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #888: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #890: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #892: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #894: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #896: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #898: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - [WebGL test #901: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1767,42 +342,6 @@ [WebGL test #911: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #912: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #914: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #916: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #918: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #920: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #922: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #936: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #938: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #940: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #942: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #944: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #946: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - [WebGL test #949: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1821,60 +360,6 @@ [WebGL test #959: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #960: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #962: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #964: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #966: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #968: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #970: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #984: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #985: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #986: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #987: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #988: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #989: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #990: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #991: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #992: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #993: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #994: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #995: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #997: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1893,78 +378,6 @@ [WebGL test #1007: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #1008: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1009: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1010: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1011: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1012: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1013: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1014: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1015: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1016: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1017: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1018: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1019: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1032: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1033: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1034: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1035: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1036: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1037: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1038: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1039: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1040: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1041: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1042: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1043: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #1045: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -1983,78 +396,6 @@ [WebGL test #1055: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #1056: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1057: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1058: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1059: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1060: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1061: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1062: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1063: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1064: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1065: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1066: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1067: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1080: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1081: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1082: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1083: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1084: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1085: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1086: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1087: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1088: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1089: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1090: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1091: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #1093: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -2073,78 +414,6 @@ [WebGL test #1103: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #1104: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1105: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1106: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1107: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1108: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1109: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1110: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1111: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1112: at (8, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1113: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1114: at (8, 8) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1115: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1128: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1129: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1130: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1131: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1132: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1133: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1134: at (0, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1135: at (0, 4) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1136: at (8, 0) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1137: at (0, 8) expected: 255,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1138: at (8, 8) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1139: at (8, 12) expected: 255,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #1141: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL @@ -2163,9 +432,525 @@ [WebGL test #1151: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL - [WebGL test #677: at (6, 13) expected: 0,0,0,255 was 255,230,0,255] + [WebGL test #24: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] expected: FAIL - [WebGL test #781: at (0, 10) expected: 0,0,0,255 was 255,230,0,255] + [WebGL test #26: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #28: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #30: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #32: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #34: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #72: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #74: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #76: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #78: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #80: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #82: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #120: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #122: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #124: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #126: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #128: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #130: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #168: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #170: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #172: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #174: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #176: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #178: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #216: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #218: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #220: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #222: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #224: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #226: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #264: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #266: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #268: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #270: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #272: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #274: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #288: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #289: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #312: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #313: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #314: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #316: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #318: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #320: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #322: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #336: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #337: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #360: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #361: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #362: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #364: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #366: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #368: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #370: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #408: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #410: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #412: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #414: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #416: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #418: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #456: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #458: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #460: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #462: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #464: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #466: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #504: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #506: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #508: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #510: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #512: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #514: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #552: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #554: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #556: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #558: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #560: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #562: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #576: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #577: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #600: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #601: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #602: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #604: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #606: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #608: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #610: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #624: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #625: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #648: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #649: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #650: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #652: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #654: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #656: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #658: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #672: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #673: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #696: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #697: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #698: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #700: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #702: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #704: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #706: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #720: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #721: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #744: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #745: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #746: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #748: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #750: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #752: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #754: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #792: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #794: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #796: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #798: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #800: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #802: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #840: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #842: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #844: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #846: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #848: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #850: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #888: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #890: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #892: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #894: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #896: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #898: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #936: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #938: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #940: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #942: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #944: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #946: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #960: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #961: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #984: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #985: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #986: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #988: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #990: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #992: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #994: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1008: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1009: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1032: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1033: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1034: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1036: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1038: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1040: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1042: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1056: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1057: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1080: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1081: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1082: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1084: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1086: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1088: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1090: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1104: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1105: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1128: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1129: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] + expected: FAIL + + [WebGL test #1130: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1132: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1134: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + expected: FAIL + + [WebGL test #1136: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + expected: FAIL + + [WebGL test #1138: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini index c034fc6da2c..d15e7824add 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini @@ -1,5 +1,5 @@ [tex-image-and-sub-image-2d-with-canvas-rgb565.html] type: testharness - [WebGL test #0: at (0, 16) expected: 255,0,0 was 255,227,0] + [WebGL test #0: at (0, 16) expected: 255,0,0 was 123,227,0] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini index 75f0445abd7..26ae69061d1 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini @@ -1,5 +1,5 @@ [tex-image-and-sub-image-2d-with-canvas-rgba4444.html] type: testharness - [WebGL test #0: at (0, 16) expected: 255,0,0 was 255,255,0] + [WebGL test #0: at (0, 16) expected: 255,0,0 was 119,255,0] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini index cabd2f756c6..33841bcd7fe 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini @@ -1,11 +1,5 @@ [tex-image-and-sub-image-2d-with-canvas-rgba5551.html] type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (0, 16) expected: 255,0,0 was 255,231,0] - expected: FAIL - - [WebGL test #0: at (0, 16) expected: 255,0,0 was 255,230,0] + [WebGL test #0: at (0, 16) expected: 255,0,0 was 123,231,0] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html.ini deleted file mode 100644 index 7224abf9ab9..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[tex-image-and-sub-image-2d-with-canvas.html] - type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (0, 16) expected: 255,0,0 was 0,255,0] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini index 7e5c39a8d6f..b3565f7c916 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini @@ -1,11 +1,5 @@ [tex-image-and-sub-image-2d-with-image-data-rgb565.html] type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 0,28,255,255] - expected: FAIL - - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 0,0,0,0] + [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,227,0,255] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini index 7bd16f7ec64..fa62749fc1e 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini @@ -1,8 +1,5 @@ [tex-image-and-sub-image-2d-with-image-data-rgba4444.html] type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 0,0,255,255] + [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,255,0,255] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini index 8e314c9e6b6..69872c13309 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini @@ -1,14 +1,5 @@ [tex-image-and-sub-image-2d-with-image-data-rgba5551.html] type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 0,24,255,255] - expected: FAIL - - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 0,25,255,255] - expected: FAIL - - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 0,0,0,0] + [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,231,0,255] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html.ini deleted file mode 100644 index 5f93cd2f5e6..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[tex-image-and-sub-image-2d-with-image-data.html] - type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini index 7b04e63f1ea..276c0f853ce 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini @@ -1,8 +1,5 @@ [tex-image-and-sub-image-2d-with-image-rgb565.html] type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (4, 4) expected: 0,255,0 was 0,28,255] + [WebGL test #0: at (4, 4) expected: 0,255,0 was 255,227,0] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini index 27e73d969d6..f06472bc50a 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini @@ -1,8 +1,5 @@ [tex-image-and-sub-image-2d-with-image-rgba4444.html] type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (4, 4) expected: 0,255,0 was 0,0,255] + [WebGL test #0: at (4, 4) expected: 0,255,0 was 255,255,0] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini index 22b994d39cc..097ae51ad7e 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini @@ -1,11 +1,5 @@ [tex-image-and-sub-image-2d-with-image-rgba5551.html] type: testharness - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #0: at (4, 4) expected: 0,255,0 was 0,24,255] - expected: FAIL - - [WebGL test #0: at (4, 4) expected: 0,255,0 was 0,25,255] + [WebGL test #0: at (4, 4) expected: 0,255,0 was 255,231,0] expected: FAIL diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image.html.ini deleted file mode 100644 index 02c340cacb1..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[tex-image-and-sub-image-2d-with-image.html] - type: testharness - [WebGL test #0: at (4, 4) expected: 0,255,0 was 255,0,0] - expected: FAIL - - [WebGL test #0: at (4, 4) expected: 0,255,0 was 0,0,0] - expected: FAIL - From 57ba1646bce7ecd49526657c86db30f5391e8dd7 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 9 Jan 2017 13:29:47 -0800 Subject: [PATCH 2/4] webgl: Convert non-raw TexImage sources to the requested format. The code was returning RGBA8 data from the non-raw sources (HTML canvas elements, JS ImageData, etc.), but we then validated and passed that rgba8 data as if it was whatever format/datatype was specified in TexImage2D/TexSubImage2D, so the pixels would come out as garbage. It would seem like we could just rewrite the passed in format/datatype for the TexImage call to be RGBA/UNSIGNED_BYTE, but that would leave incorrect levels of precision if the internalformat didn't match the format/datatype (and older desktop implementations often ignore the internalformat in choosing their internal format, anyway). --- Cargo.lock | 1 + components/script/Cargo.toml | 1 + .../script/dom/webglrenderingcontext.rs | 71 +++++++++++++++++-- components/script/lib.rs | 1 + ...b-image-2d-with-image-data-rgb565.html.ini | 5 -- ...image-2d-with-image-data-rgba4444.html.ini | 5 -- ...image-2d-with-image-data-rgba5551.html.ini | 5 -- ...nd-sub-image-2d-with-image-rgb565.html.ini | 5 -- ...-sub-image-2d-with-image-rgba4444.html.ini | 5 -- ...-sub-image-2d-with-image-rgba5551.html.ini | 5 -- 10 files changed, 70 insertions(+), 34 deletions(-) delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini diff --git a/Cargo.lock b/Cargo.lock index af205d7f1cc..7de481f000f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2268,6 +2268,7 @@ dependencies = [ "audio-video-metadata 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "bluetooth_traits 0.0.1", + "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "canvas_traits 0.0.1", "caseless 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index bb34846065d..4a1a7d4d01d 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -30,6 +30,7 @@ audio-video-metadata = "0.1.2" atomic_refcell = "0.1" bitflags = "0.7" bluetooth_traits = {path = "../bluetooth_traits"} +byteorder = "0.5" canvas_traits = {path = "../canvas_traits"} caseless = "0.1.0" cookie = {version = "0.2.5", features = ["serialize-rustc"]} diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index ecef53bd069..ca38df1e442 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -2,6 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +use byteorder::{NativeEndian, WriteBytesExt}; use canvas_traits::{CanvasCommonMsg, CanvasMsg, byte_swap}; use core::nonzero::NonZero; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes}; @@ -364,6 +365,67 @@ impl WebGLRenderingContext { true } + /// Translates an image in rgba8 (red in the first byte) format to + /// the format that was requested of TexImage. + /// + /// From the WebGL 1.0 spec, 5.14.8: + /// + /// "The source image data is conceptually first converted to + /// the data type and format specified by the format and type + /// arguments, and then transferred to the WebGL + /// implementation. If a packed pixel format is specified + /// which would imply loss of bits of precision from the image + /// data, this loss of precision must occur." + fn rgba8_image_to_tex_image_data(&self, + format: TexFormat, + data_type: TexDataType, + pixels: Vec) -> Vec { + // hint for vector allocation sizing. + let pixel_count = pixels.len() / 4; + + match (format, data_type) { + (TexFormat::RGBA, TexDataType::UnsignedByte) => pixels, + (TexFormat::RGB, TexDataType::UnsignedByte) => pixels, + + (TexFormat::RGBA, TexDataType::UnsignedShort4444) => { + let mut rgba4 = Vec::::with_capacity(pixel_count * 2); + for rgba8 in pixels.chunks(4) { + rgba4.write_u16::((rgba8[0] as u16 & 0xf0) << 8 | + (rgba8[1] as u16 & 0xf0) << 4 | + (rgba8[2] as u16 & 0xf0) | + (rgba8[3] as u16 & 0xf0) >> 4).unwrap(); + } + rgba4 + } + + (TexFormat::RGBA, TexDataType::UnsignedShort5551) => { + let mut rgba5551 = Vec::::with_capacity(pixel_count * 2); + for rgba8 in pixels.chunks(4) { + rgba5551.write_u16::((rgba8[0] as u16 & 0xf8) << 8 | + (rgba8[1] as u16 & 0xf8) << 3 | + (rgba8[2] as u16 & 0xf8) >> 2 | + (rgba8[3] as u16) >> 7).unwrap(); + } + rgba5551 + } + + (TexFormat::RGB, TexDataType::UnsignedShort565) => { + let mut rgb565 = Vec::::with_capacity(pixel_count * 2); + for rgba8 in pixels.chunks(4) { + rgb565.write_u16::((rgba8[0] as u16 & 0xf8) << 8 | + (rgba8[1] as u16 & 0xfc) << 3 | + (rgba8[2] as u16 & 0xf8) >> 3).unwrap(); + } + rgb565 + } + + // Validation should have ensured that we only hit the + // above cases, but we haven't turned the (format, type) + // into an enum yet so there's a default case here. + _ => unreachable!() + } + } + fn get_image_pixels(&self, source: Option) -> ImagePixelResult { @@ -398,10 +460,7 @@ impl WebGLRenderingContext { let size = Size2D::new(img.width as i32, img.height as i32); - // TODO(emilio): Validate that the format argument - // is coherent with the image. - // - // RGB8 should be easy to support too + // For now Servo's images are all stored as RGBA8 internally. let mut data = match img.format { PixelFormat::RGBA8 => img.bytes.to_vec(), _ => unimplemented!(), @@ -2690,6 +2749,8 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Err(_) => return Ok(()), // NB: The validator sets the correct error for us. }; + let pixels = self.rgba8_image_to_tex_image_data(format, data_type, pixels); + self.tex_image_2d(texture, target, data_type, format, level, width, height, border, pixels); Ok(()) @@ -2794,6 +2855,8 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Err(_) => return Ok(()), // NB: The validator sets the correct error for us. }; + let pixels = self.rgba8_image_to_tex_image_data(format, data_type, pixels); + self.tex_sub_image_2d(texture, target, level, xoffset, yoffset, width, height, format, data_type, pixels); Ok(()) diff --git a/components/script/lib.rs b/components/script/lib.rs index 15d1d2d322b..8c85efb489f 100644 --- a/components/script/lib.rs +++ b/components/script/lib.rs @@ -32,6 +32,7 @@ extern crate audio_video_metadata; #[macro_use] extern crate bitflags; extern crate bluetooth_traits; +extern crate byteorder; extern crate canvas_traits; extern crate caseless; extern crate cookie as cookie_rs; diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini deleted file mode 100644 index b3565f7c916..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgb565.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-image-data-rgb565.html] - type: testharness - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,227,0,255] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini deleted file mode 100644 index fa62749fc1e..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba4444.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-image-data-rgba4444.html] - type: testharness - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,255,0,255] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini deleted file mode 100644 index 69872c13309..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-data-rgba5551.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-image-data-rgba5551.html] - type: testharness - [WebGL test #0: at (0, 0) expected: 0,255,0,255 was 255,231,0,255] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini deleted file mode 100644 index 276c0f853ce..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgb565.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-image-rgb565.html] - type: testharness - [WebGL test #0: at (4, 4) expected: 0,255,0 was 255,227,0] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini deleted file mode 100644 index f06472bc50a..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba4444.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-image-rgba4444.html] - type: testharness - [WebGL test #0: at (4, 4) expected: 0,255,0 was 255,255,0] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini deleted file mode 100644 index 097ae51ad7e..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-image-rgba5551.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-image-rgba5551.html] - type: testharness - [WebGL test #0: at (4, 4) expected: 0,255,0 was 255,231,0] - expected: FAIL - From dfc4de0d8481c10b5ce1200a6a392acfe26c4143 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sun, 8 Jan 2017 21:34:41 -0800 Subject: [PATCH 3/4] webgl: Add support for premultiplying alpha. Now the affected testcase only fails due to unpack alignment. --- components/canvas_traits/lib.rs | 10 +- .../script/dom/webglrenderingcontext.rs | 85 +- ...b-image-2d-with-array-buffer-view.html.ini | 874 +----------------- 3 files changed, 103 insertions(+), 866 deletions(-) diff --git a/components/canvas_traits/lib.rs b/components/canvas_traits/lib.rs index 6b66f659802..e9f73a83adf 100644 --- a/components/canvas_traits/lib.rs +++ b/components/canvas_traits/lib.rs @@ -417,6 +417,10 @@ pub fn byte_swap(data: &mut [u8]) { } } +pub fn multiply_u8_pixel(a: u8, b: u8) -> u8 { + return (a as u32 * b as u32 / 255) as u8; +} + pub fn byte_swap_and_premultiply(data: &mut [u8]) { let length = data.len(); @@ -427,9 +431,9 @@ pub fn byte_swap_and_premultiply(data: &mut [u8]) { let b = data[i + 0]; let a = data[i + 3]; - data[i + 0] = ((r as u32) * (a as u32) / 255) as u8; - data[i + 1] = ((g as u32) * (a as u32) / 255) as u8; - data[i + 2] = ((b as u32) * (a as u32) / 255) as u8; + data[i + 0] = multiply_u8_pixel(r, a); + data[i + 1] = multiply_u8_pixel(g, a); + data[i + 2] = multiply_u8_pixel(b, a); i += 4; } diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index ca38df1e442..c038c0abf8f 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -2,8 +2,8 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use byteorder::{NativeEndian, WriteBytesExt}; -use canvas_traits::{CanvasCommonMsg, CanvasMsg, byte_swap}; +use byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt}; +use canvas_traits::{CanvasCommonMsg, CanvasMsg, byte_swap, multiply_u8_pixel}; use core::nonzero::NonZero; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes}; use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants; @@ -113,6 +113,7 @@ fn has_invalid_blend_constants(arg1: u32, arg2: u32) -> bool { (_, _) => false } } + /// Set of bitflags for texture unpacking (texImage2d, etc...) bitflags! { #[derive(HeapSizeOf, JSTraceable)] @@ -560,6 +561,72 @@ impl WebGLRenderingContext { flipped } + /// Performs premultiplication of the pixels if + /// UNPACK_PREMULTIPLY_ALPHA_WEBGL is currently enabled. + fn premultiply_pixels(&self, + format: TexFormat, + data_type: TexDataType, + pixels: Vec) -> Vec { + if !self.texture_unpacking_settings.get().contains(PREMULTIPLY_ALPHA) { + return pixels; + } + + match (format, data_type) { + (TexFormat::RGBA, TexDataType::UnsignedByte) => { + let mut premul = Vec::::with_capacity(pixels.len()); + for rgba in pixels.chunks(4) { + premul.push(multiply_u8_pixel(rgba[0], rgba[3])); + premul.push(multiply_u8_pixel(rgba[1], rgba[3])); + premul.push(multiply_u8_pixel(rgba[2], rgba[3])); + premul.push(rgba[3]); + } + premul + } + (TexFormat::LuminanceAlpha, TexDataType::UnsignedByte) => { + let mut premul = Vec::::with_capacity(pixels.len()); + for la in pixels.chunks(2) { + premul.push(multiply_u8_pixel(la[0], la[1])); + premul.push(la[1]); + } + premul + } + + (TexFormat::RGBA, TexDataType::UnsignedShort5551) => { + let mut premul = Vec::::with_capacity(pixels.len()); + for mut rgba in pixels.chunks(2) { + let pix = rgba.read_u16::().unwrap(); + if pix & (1 << 15) != 0 { + premul.write_u16::(pix).unwrap(); + } else { + premul.write_u16::(0).unwrap(); + } + } + premul + } + + (TexFormat::RGBA, TexDataType::UnsignedShort4444) => { + let mut premul = Vec::::with_capacity(pixels.len()); + for mut rgba in pixels.chunks(2) { + let pix = rgba.read_u16::().unwrap(); + let extend_to_8_bits = |val| { (val | val << 4) as u8 }; + let r = extend_to_8_bits(pix & 0x000f); + let g = extend_to_8_bits((pix & 0x00f0) >> 4); + let b = extend_to_8_bits((pix & 0x0f00) >> 8); + let a = extend_to_8_bits((pix & 0xf000) >> 12); + + premul.write_u16::((multiply_u8_pixel(r, a) & 0xf0) as u16 >> 4 | + (multiply_u8_pixel(g, a) & 0xf0) as u16 | + ((multiply_u8_pixel(b, a) & 0xf0) as u16) << 4 | + pix & 0xf000).unwrap(); + } + premul + } + + // Other formats don't have alpha, so return their data untouched. + _ => pixels + } + } + fn tex_image_2d(&self, texture: Root, target: TexImageTarget, @@ -570,11 +637,8 @@ impl WebGLRenderingContext { height: u32, _border: u32, pixels: Vec) { // NB: pixels should NOT be premultipied - if internal_format == TexFormat::RGBA && - data_type == TexDataType::UnsignedByte && - self.texture_unpacking_settings.get().contains(PREMULTIPLY_ALPHA) { - // TODO(emilio): premultiply here. - } + // FINISHME: Consider doing premultiply and flip in a single mutable Vec. + let pixels = self.premultiply_pixels(internal_format, data_type, pixels); let pixels = self.flip_teximage_y(pixels, internal_format, data_type, width as usize, height as usize); @@ -587,7 +651,7 @@ impl WebGLRenderingContext { level, Some(data_type))); - // TODO(emilio): convert colorspace, premultiply alpha if requested + // TODO(emilio): convert colorspace if requested let msg = WebGLCommand::TexImage2D(target.as_gl_constant(), level as i32, internal_format.as_gl_constant() as i32, width as i32, height as i32, @@ -632,10 +696,13 @@ impl WebGLRenderingContext { return self.webgl_error(InvalidOperation); } + // FINISHME: Consider doing premultiply and flip in a single mutable Vec. + let pixels = self.premultiply_pixels(format, data_type, pixels); + let pixels = self.flip_teximage_y(pixels, format, data_type, width as usize, height as usize); - // TODO(emilio): convert colorspace, premultiply alpha if requested + // TODO(emilio): convert colorspace if requested let msg = WebGLCommand::TexSubImage2D(target.as_gl_constant(), level as i32, xoffset, yoffset, width as i32, height as i32, diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini index d59840369b0..1c76e0ed842 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini @@ -1,956 +1,122 @@ [tex-image-and-sub-image-2d-with-array-buffer-view.html] type: testharness - [WebGL test #37: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #39: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #41: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #43: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #45: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #47: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #85: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #87: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #89: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #91: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #93: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #95: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #133: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #135: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #137: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #139: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #141: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #143: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #181: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #183: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #185: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #187: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #189: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #191: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #229: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #231: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #233: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #235: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #237: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #239: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #277: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #279: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #281: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #283: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #285: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #287: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #331: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #333: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #429: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #477: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #525: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #573: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #325: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #327: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #329: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #335: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #373: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #375: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #377: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #379: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #381: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #383: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #421: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #423: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #425: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #427: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #431: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #469: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #471: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #473: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #475: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #479: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #517: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #519: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #521: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #523: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #527: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #565: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #567: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #569: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #571: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #575: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #613: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #615: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #617: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #619: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #621: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #623: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #661: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #663: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #665: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #667: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #669: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #671: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #709: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #711: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #713: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #715: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #717: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #719: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #757: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #759: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #761: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #763: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #765: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #767: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #805: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #807: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #809: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #811: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #813: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #815: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #853: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #855: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #857: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #859: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #861: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #863: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #901: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #903: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #905: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #907: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #909: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #911: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #949: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #951: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #953: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #955: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #957: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #959: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #997: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #999: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1001: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1003: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1005: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1007: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1045: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1047: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1049: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1051: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1053: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1055: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1093: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1095: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1097: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1099: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1101: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1103: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1141: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1143: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1145: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1147: at (0, 4) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1149: at (0, 8) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1151: at (8, 12) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #24: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #26: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #28: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #30: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #32: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #34: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #72: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #74: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #76: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #78: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #80: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #82: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #120: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #122: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #124: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #126: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #128: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #130: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #168: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #170: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #172: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #174: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #176: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #178: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #216: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #218: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #220: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #222: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #224: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #226: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #264: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #266: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #268: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #270: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #272: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #274: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #288: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #289: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #312: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #313: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #314: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #316: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #318: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #320: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #322: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #336: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #337: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #360: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #361: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #362: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #364: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #366: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #368: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #370: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #408: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #410: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #412: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #414: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #416: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #418: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #456: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #458: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #460: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #462: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #464: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #466: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #504: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #506: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #508: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #510: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #512: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #514: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #552: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #554: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #556: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #558: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #560: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #562: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #576: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #577: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #600: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #601: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #602: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #604: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #606: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #608: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #610: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #624: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #625: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #648: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #649: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #650: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #652: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #654: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #656: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #658: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #672: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #673: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #696: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #697: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #698: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #700: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #702: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #704: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #706: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #720: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #721: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #744: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #745: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #746: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #748: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #750: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #752: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #754: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #792: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #794: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #796: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #798: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #800: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #802: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #840: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #842: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #844: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #846: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #848: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #850: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #888: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #890: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #892: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #894: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #896: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #898: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #936: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #938: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #940: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #942: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #944: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #946: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #960: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #961: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #984: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #985: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #986: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #988: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #990: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #992: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #994: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #1008: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #1009: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #1032: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #1033: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #1034: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1036: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1038: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1040: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1042: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #1056: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #1057: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #1080: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #1081: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #1082: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1084: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1086: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #1088: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - - [WebGL test #1090: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] - expected: FAIL - [WebGL test #1104: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] expected: FAIL [WebGL test #1105: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #1128: at (0, 0) expected: 0,0,0,255 was 0,255,0,255] - expected: FAIL - [WebGL test #1129: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] expected: FAIL - [WebGL test #1130: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + [WebGL test #312: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] expected: FAIL - [WebGL test #1132: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + [WebGL test #360: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] expected: FAIL - [WebGL test #1134: at (0, 0) expected: 0,0,0,255 was 0,0,255,255] + [WebGL test #600: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] expected: FAIL - [WebGL test #1136: at (8, 0) expected: 0,0,0,255 was 0,255,0,255] + [WebGL test #648: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] expected: FAIL - [WebGL test #1138: at (8, 8) expected: 0,0,0,255 was 0,0,255,255] + [WebGL test #696: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] + expected: FAIL + + [WebGL test #744: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] + expected: FAIL + + [WebGL test #984: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] + expected: FAIL + + [WebGL test #1032: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] + expected: FAIL + + [WebGL test #1080: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] + expected: FAIL + + [WebGL test #1128: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] expected: FAIL From fcef92f5ba308af3ab6b1ebafd6425995fabe834 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sat, 28 Jan 2017 14:46:31 -0800 Subject: [PATCH 4/4] webgl: Fix handling of UNPACK_ALIGNMENT. We were setting it to whatever value from {1,2,4,8} the user requested and otherwise ignoring it. There were two problems there: 1) Validation ignored it, so GL could read outside of the user's array in TexImage() or TexSubImage() if the aligment was greater than cpp. 2) TexImage()/TexSubImage() from image/canvas sources wasn't packing its data according to the unpack alignment. To fix this, start tracking the user-requested alignment in the DOM side of the context. Set the GL's alignment to 1 for image/canvas sources or the user's value for array sources, and pass the user's alignment in to validation so that it can figure out the correct size of image that the GL will ready. --- .../script/dom/webglrenderingcontext.rs | 79 ++++++++---- ...b-image-2d-with-array-buffer-view.html.ini | 122 ------------------ ...d-sub-image-2d-with-canvas-rgb565.html.ini | 5 - ...sub-image-2d-with-canvas-rgba4444.html.ini | 5 - ...sub-image-2d-with-canvas-rgba5551.html.ini | 5 - .../textures/texture-size-cube-maps.html.ini | 36 ------ 6 files changed, 57 insertions(+), 195 deletions(-) delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index c038c0abf8f..e467aba951c 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -135,6 +135,7 @@ pub struct WebGLRenderingContext { #[ignore_heap_size_of = "Defined in webrender_traits"] last_error: Cell>, texture_unpacking_settings: Cell, + texture_unpacking_alignment: Cell, bound_framebuffer: MutNullableJS, bound_renderbuffer: MutNullableJS, bound_texture_2d: MutNullableJS, @@ -170,6 +171,7 @@ impl WebGLRenderingContext { canvas: JS::from_ref(canvas), last_error: Cell::new(None), texture_unpacking_settings: Cell::new(CONVERT_COLORSPACE), + texture_unpacking_alignment: Cell::new(4), bound_framebuffer: MutNullableJS::new(None), bound_texture_2d: MutNullableJS::new(None), bound_texture_cube_map: MutNullableJS::new(None), @@ -496,6 +498,7 @@ impl WebGLRenderingContext { height: u32, format: TexFormat, data_type: TexDataType, + unpacking_alignment: u32, data: *mut JSObject) -> Result { let element_size = data_type.element_size(); @@ -527,8 +530,17 @@ impl WebGLRenderingContext { } // NOTE: width and height are positive or zero due to validate() - let expected_byte_length = width * height * element_size * components / components_per_element; - return Ok(expected_byte_length); + if height == 0 { + return Ok(0); + } else { + // We need to be careful here to not count unpack + // alignment at the end of the image, otherwise (for + // example) passing a single byte for uploading a 1x1 + // GL_ALPHA/GL_UNSIGNED_BYTE texture would throw an error. + let cpp = element_size * components / components_per_element; + let stride = (width * cpp + unpacking_alignment - 1) & !(unpacking_alignment - 1); + return Ok(stride * (height - 1) + width * cpp); + } } /// Flips the pixels in the Vec on the Y axis if @@ -538,7 +550,8 @@ impl WebGLRenderingContext { internal_format: TexFormat, data_type: TexDataType, width: usize, - height: usize) -> Vec { + height: usize, + unpacking_alignment: usize) -> Vec { if !self.texture_unpacking_settings.get().contains(FLIP_Y_AXIS) { return pixels; } @@ -546,16 +559,16 @@ impl WebGLRenderingContext { let cpp = (data_type.element_size() * internal_format.components() / data_type.components_per_element()) as usize; - let stride = width * cpp; - - // This should have already been validated. - assert!(stride * height <= pixels.len()); + let stride = (width * cpp + unpacking_alignment - 1) & !(unpacking_alignment - 1); let mut flipped = Vec::::with_capacity(pixels.len()); for y in 0..height { let flipped_y = height - 1 - y; - flipped.extend_from_slice(&pixels[(flipped_y * stride)..((flipped_y + 1) * stride)]); + let start = flipped_y * stride; + + flipped.extend_from_slice(&pixels[start..(start + width * cpp)]); + flipped.extend(vec![0u8; stride - width * cpp]); } flipped @@ -636,12 +649,13 @@ impl WebGLRenderingContext { width: u32, height: u32, _border: u32, + unpacking_alignment: u32, pixels: Vec) { // NB: pixels should NOT be premultipied // FINISHME: Consider doing premultiply and flip in a single mutable Vec. let pixels = self.premultiply_pixels(internal_format, data_type, pixels); let pixels = self.flip_teximage_y(pixels, internal_format, data_type, - width as usize, height as usize); + width as usize, height as usize, unpacking_alignment as usize); // TexImage2D depth is always equal to 1 handle_potential_webgl_error!(self, texture.initialize(target, @@ -651,6 +665,15 @@ impl WebGLRenderingContext { level, Some(data_type))); + // Set the unpack alignment. For textures coming from arrays, + // this will be the current value of the context's + // GL_UNPACK_ALIGNMENT, while for textures from images or + // canvas (produced by rgba8_image_to_tex_image_data()), it + // will be 1. + self.ipc_renderer + .send(CanvasMsg::WebGL(WebGLCommand::PixelStorei(constants::UNPACK_ALIGNMENT, unpacking_alignment as i32))) + .unwrap(); + // TODO(emilio): convert colorspace if requested let msg = WebGLCommand::TexImage2D(target.as_gl_constant(), level as i32, internal_format.as_gl_constant() as i32, @@ -677,6 +700,7 @@ impl WebGLRenderingContext { height: u32, format: TexFormat, data_type: TexDataType, + unpacking_alignment: u32, pixels: Vec) { // NB: pixels should NOT be premultipied // We have already validated level let image_info = texture.image_info_for_target(&target, level); @@ -700,7 +724,16 @@ impl WebGLRenderingContext { let pixels = self.premultiply_pixels(format, data_type, pixels); let pixels = self.flip_teximage_y(pixels, format, data_type, - width as usize, height as usize); + width as usize, height as usize, unpacking_alignment as usize); + + // Set the unpack alignment. For textures coming from arrays, + // this will be the current value of the context's + // GL_UNPACK_ALIGNMENT, while for textures from images or + // canvas (produced by rgba8_image_to_tex_image_data()), it + // will be 1. + self.ipc_renderer + .send(CanvasMsg::WebGL(WebGLCommand::PixelStorei(constants::UNPACK_ALIGNMENT, unpacking_alignment as i32))) + .unwrap(); // TODO(emilio): convert colorspace if requested let msg = WebGLCommand::TexSubImage2D(target.as_gl_constant(), @@ -2017,13 +2050,11 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { 1 | 2 | 4 | 8 => (), _ => return self.webgl_error(InvalidValue), } + self.texture_unpacking_alignment.set(param_value as u32); + return; }, _ => return self.webgl_error(InvalidEnum), } - - self.ipc_renderer - .send(CanvasMsg::WebGL(WebGLCommand::PixelStorei(param_name, param_value))) - .unwrap() } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3 @@ -2752,10 +2783,12 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Err(_) => return Ok(()), // NB: The validator sets the correct error for us. }; + let unpacking_alignment = self.texture_unpacking_alignment.get(); + let expected_byte_length = match { self.validate_tex_image_2d_data(width, height, - format, data_type, - data_ptr) } { + format, data_type, + unpacking_alignment, data_ptr) } { Ok(byte_length) => byte_length, Err(()) => return Ok(()), }; @@ -2778,7 +2811,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } self.tex_image_2d(texture, target, data_type, format, - level, width, height, border, buff); + level, width, height, border, unpacking_alignment, buff); Ok(()) } @@ -2819,7 +2852,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { let pixels = self.rgba8_image_to_tex_image_data(format, data_type, pixels); self.tex_image_2d(texture, target, data_type, format, - level, width, height, border, pixels); + level, width, height, border, 1, pixels); Ok(()) } @@ -2860,10 +2893,12 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { Err(_) => return Ok(()), // NB: The validator sets the correct error for us. }; + let unpacking_alignment = self.texture_unpacking_alignment.get(); + let expected_byte_length = match { self.validate_tex_image_2d_data(width, height, - format, data_type, - data_ptr) } { + format, data_type, + unpacking_alignment, data_ptr) } { Ok(byte_length) => byte_length, Err(()) => return Ok(()), }; @@ -2886,7 +2921,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } self.tex_sub_image_2d(texture, target, level, xoffset, yoffset, - width, height, format, data_type, buff); + width, height, format, data_type, unpacking_alignment, buff); Ok(()) } @@ -2925,7 +2960,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { let pixels = self.rgba8_image_to_tex_image_data(format, data_type, pixels); self.tex_sub_image_2d(texture, target, level, xoffset, yoffset, - width, height, format, data_type, pixels); + width, height, format, data_type, 1, pixels); Ok(()) } diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini deleted file mode 100644 index 1c76e0ed842..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html.ini +++ /dev/null @@ -1,122 +0,0 @@ -[tex-image-and-sub-image-2d-with-array-buffer-view.html] - type: testharness - [WebGL test #288: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #289: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #313: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #336: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #337: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #361: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #576: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #577: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #601: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #624: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #625: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #649: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #672: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #673: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #697: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #720: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #721: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #745: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #960: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #961: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #985: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1008: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1009: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1033: at (0, 9) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1056: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1057: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1081: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1104: at (6, 0) expected: 0,255,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1105: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #1129: at (13, 8) expected: 255,0,0,255 was 0,0,0,255] - expected: FAIL - - [WebGL test #312: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #360: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #600: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #648: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #696: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #744: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #984: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1032: at (0, 5) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1080: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #1128: at (0, 3) expected: 0,0,0,255 was 255,0,0,255] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini deleted file mode 100644 index d15e7824add..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgb565.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-canvas-rgb565.html] - type: testharness - [WebGL test #0: at (0, 16) expected: 255,0,0 was 123,227,0] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini deleted file mode 100644 index 26ae69061d1..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba4444.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-canvas-rgba4444.html] - type: testharness - [WebGL test #0: at (0, 16) expected: 255,0,0 was 119,255,0] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini deleted file mode 100644 index 33841bcd7fe..00000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-canvas-rgba5551.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[tex-image-and-sub-image-2d-with-canvas-rgba5551.html] - type: testharness - [WebGL test #0: at (0, 16) expected: 255,0,0 was 123,231,0] - expected: FAIL - diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini index a30cc53d41c..75fa9423abe 100644 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini +++ b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-cube-maps.html.ini @@ -36,39 +36,3 @@ [WebGL test #35: at (0, 1) expected: 255,255,0,255 was 0,255,0,255] expected: FAIL - [WebGL test #44: at (0, 1) expected: 255,0,0,255 was 255,0,255,255] - expected: FAIL - - [WebGL test #45: at (0, 0) expected: 255,0,0,255 was 0,255,255,255] - expected: FAIL - - [WebGL test #47: at (0, 0) expected: 0,255,0,255 was 255,0,255,255] - expected: FAIL - - [WebGL test #50: at (0, 1) expected: 0,255,0,255 was 0,255,255,255] - expected: FAIL - - [WebGL test #51: at (0, 0) expected: 255,0,255,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #54: at (0, 1) expected: 0,255,255,255 was 0,0,255,255] - expected: FAIL - - [WebGL test #62: at (0, 1) expected: 0,255,0,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #63: at (0, 0) expected: 0,255,0,255 was 255,0,255,255] - expected: FAIL - - [WebGL test #65: at (0, 0) expected: 0,0,255,255 was 255,0,0,255] - expected: FAIL - - [WebGL test #68: at (0, 1) expected: 0,0,255,255 was 255,0,255,255] - expected: FAIL - - [WebGL test #69: at (0, 0) expected: 255,0,0,255 was 255,255,0,255] - expected: FAIL - - [WebGL test #72: at (0, 1) expected: 255,0,255,255 was 255,255,0,255] - expected: FAIL -