diff options
Diffstat (limited to '')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html b/dom/canvas/test/webgl-conf/checkout/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html new file mode 100644 index 0000000000..6f080f0eea --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/textures/misc/texture-with-flip-y-and-premultiply-alpha.html @@ -0,0 +1,72 @@ +<!-- +Copyright (c) 2019 The Khronos Group Inc. +Use of this source code is governed by an MIT-style license that can be +found in the LICENSE.txt file. +--> + +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>WebGL texture upload with FlipY and PremultiplyAlpha.</title> +<link rel="stylesheet" href="../../../resources/js-test-style.css"/> +<script src="../../../js/js-test-pre.js"></script> +<script src="../../../js/webgl-test-utils.js"></script> +</head> +<body> +<canvas id="example" width="32" height="32" style="width: 40px; height: 40px;"></canvas> +<div id="description"></div> +<div id="console"></div> +<script> +// Regression test for crbug.com/765469 +"use strict"; +description("Checks uploading textures with FlipY and PremultiplyAlpha generates INVALID_OPERATION with invalid format/type"); + +var canvas; +var wtu = WebGLTestUtils; +var gl = wtu.create3DContext("example"); + +var tex = gl.createTexture(); +gl.bindTexture(gl.TEXTURE_2D, tex); + +function testUpload() { + // Because WEBGL_depth_texture is enabled, UNSIGNED_SHORT becomes a valid type, but RGBA/UNSIGNED_SHORT is invalid. + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 2, 2, 0, gl.RGBA, gl.UNSIGNED_SHORT, new Uint16Array(2*2*4)); + wtu.glErrorShouldBe(gl, gl.INVALID_OPERATION, "texImage2D() with invalid format/type combination"); +} + +var ext = gl.getExtension('WEBGL_depth_texture'); +if (ext) { + debug(""); + debug("Testing with FlipY = false, PremultiplyAlpha = false"); + testUpload(); + + debug(""); + debug("Testing with FlipY = true, PremultiplyAlpha = false"); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0); + testUpload(); + + debug(""); + debug("Testing with FlipY = false, PremultiplyAlpha = true"); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1); + testUpload(); + + debug(""); + debug("Testing with FlipY = true, PremultiplyAlpha = true"); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1); + testUpload(); +} else { + testPassed("WEBGL_depth_texture not supported, skipping tests."); +} + +gl.deleteTexture(tex); + +debug(""); +var successfullyParsed = true; +</script> +<script src="../../../js/js-test-post.js"></script> +</body> +</html> |