From 5b852b1cdd26676968fa6834962f7eecf793a5e0 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Sun, 23 Oct 2016 15:19:56 -0700 Subject: [PATCH] webgl: Fix up maximum size validation. We were checking to see if it was too big to be level 0, but we really want to see if it's too big to be the given level. This was the last remaining failure in texture-size-limit.html. --- .../dom/webgl_validations/tex_image_2d.rs | 10 +- .../textures/texture-size-limit.html.ini | 183 ------------------ 2 files changed, 5 insertions(+), 188 deletions(-) delete mode 100644 tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini diff --git a/components/script/dom/webgl_validations/tex_image_2d.rs b/components/script/dom/webgl_validations/tex_image_2d.rs index 9c4b8fa39fc9..f77d80c27158 100644 --- a/components/script/dom/webgl_validations/tex_image_2d.rs +++ b/components/script/dom/webgl_validations/tex_image_2d.rs @@ -163,18 +163,18 @@ impl<'a> WebGLValidator for CommonTexImage2DValidator<'a> { return Err(TexImageValidationError::NegativeDimension); } + let width = self.width as u32; + let height = self.height as u32; + let level = self.level as u32; + // GL_INVALID_VALUE is generated if width or height is greater than // GL_MAX_TEXTURE_SIZE when target is GL_TEXTURE_2D or // GL_MAX_CUBE_MAP_TEXTURE_SIZE when target is not GL_TEXTURE_2D. - if self.width as u32 > max_size || self.height as u32 > max_size { + if width > max_size >> level || height > max_size >> level { self.context.webgl_error(InvalidValue); return Err(TexImageValidationError::TextureTooBig); } - let width = self.width as u32; - let height = self.height as u32; - let level = self.level as u32; - // GL_INVALID_VALUE is generated if level is greater than zero and the // texture is not power of two. if level > 0 && (!width.is_power_of_two() || !height.is_power_of_two()) { diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini deleted file mode 100644 index aa2e124ff9a4..000000000000 --- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/textures/texture-size-limit.html.ini +++ /dev/null @@ -1,183 +0,0 @@ -[texture-size-limit.html] - type: testharness - expected: CRASH - [WebGL test #0: Unable to fetch WebGL rendering context for Canvas] - expected: FAIL - - [WebGL test #2: getError expected: INVALID_VALUE. Was NO_ERROR : width or height out of bounds for specified level: should generate INVALID_VALUE: level is 14, size is 4x4.] - expected: FAIL - - [WebGL test #3: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 14 1x1] - expected: FAIL - - [WebGL test #4: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 14 1x1] - expected: FAIL - - [WebGL test #5: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 14 2x1] - expected: FAIL - - [WebGL test #6: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 14 1x2] - expected: FAIL - - [WebGL test #7: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 13 2x1] - expected: FAIL - - [WebGL test #8: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 13 1x2] - expected: FAIL - - [WebGL test #9: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 13 4x1] - expected: FAIL - - [WebGL test #10: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 13 1x4] - expected: FAIL - - [WebGL test #11: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 12 4x1] - expected: FAIL - - [WebGL test #12: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 12 1x4] - expected: FAIL - - [WebGL test #13: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 12 8x1] - expected: FAIL - - [WebGL test #14: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 12 1x8] - expected: FAIL - - [WebGL test #15: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 11 8x1] - expected: FAIL - - [WebGL test #16: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 11 1x8] - expected: FAIL - - [WebGL test #17: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 11 16x1] - expected: FAIL - - [WebGL test #18: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 11 1x16] - expected: FAIL - - [WebGL test #19: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 10 16x1] - expected: FAIL - - [WebGL test #20: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 10 1x16] - expected: FAIL - - [WebGL test #21: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 10 32x1] - expected: FAIL - - [WebGL test #22: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 10 1x32] - expected: FAIL - - [WebGL test #23: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 9 32x1] - expected: FAIL - - [WebGL test #24: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 9 1x32] - expected: FAIL - - [WebGL test #25: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 9 64x1] - expected: FAIL - - [WebGL test #26: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 9 1x64] - expected: FAIL - - [WebGL test #27: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 8 64x1] - expected: FAIL - - [WebGL test #28: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 8 1x64] - expected: FAIL - - [WebGL test #29: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 8 128x1] - expected: FAIL - - [WebGL test #30: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 8 1x128] - expected: FAIL - - [WebGL test #31: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 7 128x1] - expected: FAIL - - [WebGL test #32: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 7 1x128] - expected: FAIL - - [WebGL test #33: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 7 256x1] - expected: FAIL - - [WebGL test #34: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 7 1x256] - expected: FAIL - - [WebGL test #35: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 6 256x1] - expected: FAIL - - [WebGL test #36: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 6 1x256] - expected: FAIL - - [WebGL test #37: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 6 512x1] - expected: FAIL - - [WebGL test #38: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 6 1x512] - expected: FAIL - - [WebGL test #39: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 5 512x1] - expected: FAIL - - [WebGL test #40: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 5 1x512] - expected: FAIL - - [WebGL test #41: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 5 1024x1] - expected: FAIL - - [WebGL test #42: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 5 1x1024] - expected: FAIL - - [WebGL test #43: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 4 1024x1] - expected: FAIL - - [WebGL test #44: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 4 1x1024] - expected: FAIL - - [WebGL test #45: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 4 2048x1] - expected: FAIL - - [WebGL test #46: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 4 1x2048] - expected: FAIL - - [WebGL test #47: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 3 2048x1] - expected: FAIL - - [WebGL test #48: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 3 1x2048] - expected: FAIL - - [WebGL test #49: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 3 4096x1] - expected: FAIL - - [WebGL test #50: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 3 1x4096] - expected: FAIL - - [WebGL test #51: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 2 4096x1] - expected: FAIL - - [WebGL test #52: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 2 1x4096] - expected: FAIL - - [WebGL test #53: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 2 8192x1] - expected: FAIL - - [WebGL test #54: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 2 1x8192] - expected: FAIL - - [WebGL test #55: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 1 8192x1] - expected: FAIL - - [WebGL test #56: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 1 1x8192] - expected: FAIL - - [WebGL test #57: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 1 16384x1] - expected: FAIL - - [WebGL test #58: getError expected: INVALID_VALUE. Was NO_ERROR : should generate INVALID_VALUE for level: 1 1x16384] - expected: FAIL - - [WebGL test #59: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 0 16384x1] - expected: FAIL - - [WebGL test #60: getError expected: NO_ERROR. Was INVALID_OPERATION : there should be no error for level: 0 1x16384] - expected: FAIL -