content/canvas/test/webgl-conformance/conformance/textures/texture-transparent-pixels-initialized.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 <!--
michael@0 2 Copyright (c) 2011 The Chromium Authors. All rights reserved.
michael@0 3
michael@0 4 Redistribution and use in source and binary forms, with or without
michael@0 5 modification, are permitted provided that the following conditions are
michael@0 6 met:
michael@0 7
michael@0 8 * Redistributions of source code must retain the above copyright
michael@0 9 notice, this list of conditions and the following disclaimer.
michael@0 10 * Redistributions in binary form must reproduce the above
michael@0 11 copyright notice, this list of conditions and the following disclaimer
michael@0 12 in the documentation and/or other materials provided with the
michael@0 13 distribution.
michael@0 14 * Neither the name of Google Inc. nor the names of its
michael@0 15 contributors may be used to endorse or promote products derived from
michael@0 16 this software without specific prior written permission.
michael@0 17
michael@0 18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
michael@0 19 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
michael@0 20 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
michael@0 21 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
michael@0 22 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@0 23 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@0 24 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
michael@0 25 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
michael@0 26 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
michael@0 27 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
michael@0 28 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
michael@0 29 -->
michael@0 30 <!DOCTYPE html>
michael@0 31 <html>
michael@0 32 <head>
michael@0 33 <meta charset="utf-8">
michael@0 34 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
michael@0 35 <script src="../../resources/js-test-pre.js"></script>
michael@0 36 <script src="../resources/webgl-test.js"></script>
michael@0 37 <script src="../resources/webgl-test-utils.js"></script>
michael@0 38 <script>
michael@0 39 var wtu = WebGLTestUtils;
michael@0 40 var gl = null;
michael@0 41 var textureLoc = null;
michael@0 42 var successfullyParsed = false;
michael@0 43
michael@0 44 function init()
michael@0 45 {
michael@0 46 if (window.initNonKhronosFramework) {
michael@0 47 window.initNonKhronosFramework(true);
michael@0 48 }
michael@0 49
michael@0 50 description('Tests there is no garbage in transparent regions of images uploaded as textures');
michael@0 51
michael@0 52 wtu = WebGLTestUtils;
michael@0 53 gl = wtu.create3DContext("example");
michael@0 54 var program = wtu.setupTexturedQuad(gl);
michael@0 55 gl.clearColor(0.5,0.5,0.5,1);
michael@0 56 gl.clearDepth(1);
michael@0 57
michael@0 58 textureLoc = gl.getUniformLocation(program, "tex");
michael@0 59
michael@0 60 // The input texture has 8 characters; take the leftmost one
michael@0 61 var coeff = 1.0 / 8.0;
michael@0 62 var texCoords = new Float32Array([
michael@0 63 coeff, 1.0,
michael@0 64 0.0, 1.0,
michael@0 65 0.0, 0.0,
michael@0 66 coeff, 1.0,
michael@0 67 0.0, 0.0,
michael@0 68 coeff, 0.0]);
michael@0 69
michael@0 70 var vbo = gl.createBuffer();
michael@0 71 gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
michael@0 72 gl.bufferData(gl.ARRAY_BUFFER, texCoords, gl.STATIC_DRAW);
michael@0 73 gl.enableVertexAttribArray(1);
michael@0 74 gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 0, 0);
michael@0 75
michael@0 76 texture = wtu.loadTexture(gl, "../resources/bug-32888-texture.png", runTest);
michael@0 77 }
michael@0 78
michael@0 79 // These two declarations need to be global for "shouldBe" to see them
michael@0 80 var buf = null;
michael@0 81 var idx = 0;
michael@0 82
michael@0 83 function runTest()
michael@0 84 {
michael@0 85 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
michael@0 86 gl.enable(gl.BLEND);
michael@0 87 gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
michael@0 88 // Bind the texture to texture unit 0
michael@0 89 gl.bindTexture(gl.TEXTURE_2D, texture);
michael@0 90 // Point the uniform sampler to texture unit 0
michael@0 91 gl.uniform1i(textureLoc, 0);
michael@0 92 // Draw the triangles
michael@0 93 wtu.drawQuad(gl, [0, 0, 0, 255]);
michael@0 94
michael@0 95 // Spot check a couple of 2x2 regions in the upper and lower left
michael@0 96 // corners; they should be the rgb values in the texture.
michael@0 97 color = [0, 0, 0];
michael@0 98 debug("Checking lower left corner");
michael@0 99 wtu.checkCanvasRect(gl, 1, gl.canvas.height - 3, 2, 2, color,
michael@0 100 "shouldBe " + color);
michael@0 101 debug("Checking upper left corner");
michael@0 102 wtu.checkCanvasRect(gl, 1, 1, 2, 2, color,
michael@0 103 "shouldBe " + color);
michael@0 104
michael@0 105 finishTest();
michael@0 106 }
michael@0 107 </script>
michael@0 108 </head>
michael@0 109 <body onload="init()">
michael@0 110 <canvas id="example" width="32px" height="32px"></canvas>
michael@0 111 <div id="description"></div>
michael@0 112 <div id="console"></div>
michael@0 113 </body>
michael@0 114 </html>

mercurial