diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/canvas/test/webgl-conf/checkout/conformance/context/context-hidden-alpha.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/conformance/context/context-hidden-alpha.html')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/conformance/context/context-hidden-alpha.html | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/context/context-hidden-alpha.html b/dom/canvas/test/webgl-conf/checkout/conformance/context/context-hidden-alpha.html new file mode 100644 index 0000000000..ed67fc0093 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/context/context-hidden-alpha.html @@ -0,0 +1,166 @@ +<!-- +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"> +<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> +<script id='vs' type='x-shader/x-vertex'> + attribute vec2 aPosCoord; + + void main(void) { + gl_Position = vec4(aPosCoord, 0.0, 1.0); + } +</script> + +<script id='fs' type='x-shader/x-fragment'> + precision mediump float; + + void main(void) { + gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); + } +</script> +<script> +"use strict"; + +var posCoords_arr = new Float32Array(2 * 4); +var posCoords_buff = null; +function DrawQuad(gl, prog, x0, y0, x1, y1) { + gl.useProgram(prog); + + if (!posCoords_buff) { + posCoords_buff = gl.createBuffer(); + } + gl.bindBuffer(gl.ARRAY_BUFFER, posCoords_buff); + posCoords_arr[0] = x0; + posCoords_arr[1] = y0; + + posCoords_arr[2] = x1; + posCoords_arr[3] = y0; + + posCoords_arr[4] = x0; + posCoords_arr[5] = y1; + + posCoords_arr[6] = x1; + posCoords_arr[7] = y1; + gl.bufferData(gl.ARRAY_BUFFER, posCoords_arr, gl.STREAM_DRAW); + + gl.enableVertexAttribArray(prog.aPosCoord); + gl.vertexAttribPointer(prog.aPosCoord, 2, gl.FLOAT, false, 0, 0); + + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); +} + +function DrawSquare(gl, prog, size) { + DrawQuad(gl, prog, -size, -size, size, size); +} + +function Reset(gl) { + gl.canvas.width += 1; + gl.canvas.width -= 1; +} + +var iColor; +var pixel; +var dataURL_pre; +var dataURL_post; + +function Test(gl, prog, shouldFinish) { + gl.enable(gl.BLEND); + gl.blendFunc(gl.ZERO, gl.DST_ALPHA); + + iColor = 64; + var fColor = iColor / 255.0; + + ////////////////// + + debug('clear(R,G,B,0)'); + + Reset(gl); + + gl.clearColor(fColor, fColor, fColor, 0.0); + gl.clear(gl.COLOR_BUFFER_BIT); + + dataURL_pre = gl.canvas.toDataURL(); + //console.log('Before blending: ' + dataURL_pre); + + DrawSquare(gl, prog, 0.7); + + WebGLTestUtils.checkCanvasRect(gl, gl.drawingBufferWidth/2, + gl.drawingBufferHeight/2, 1, 1, + [iColor, iColor, iColor, 255], + 'Should blend as if alpha is 1.0.'); + + dataURL_post = gl.canvas.toDataURL(); + //console.log('After blending: ' + dataURL_post); + shouldBe("dataURL_post", "dataURL_pre"); + + ////////////////// + + debug('mask(R,G,B,0), clear(R,G,B,1)'); + + Reset(gl); + + gl.colorMask(true, true, true, false); + gl.clearColor(fColor, fColor, fColor, 1.0); + gl.clear(gl.COLOR_BUFFER_BIT); + gl.colorMask(true, true, true, true); + + dataURL_pre = gl.canvas.toDataURL(); + //console.log('Before blending: ' + dataURL_pre); + + DrawSquare(gl, prog, 0.7); + + WebGLTestUtils.checkCanvasRect(gl, gl.drawingBufferWidth/2, + gl.drawingBufferHeight/2, 1, 1, + [iColor, iColor, iColor, 255], + 'Should blend as if alpha is 1.0.'); + + dataURL_post = gl.canvas.toDataURL(); + //console.log('After blending: ' + dataURL_post); + shouldBe("dataURL_post", "dataURL_pre"); + + //////////////// + + WebGLTestUtils.glErrorShouldBe(gl, gl.NO_ERROR, "should be no errors"); + + if (shouldFinish) + finishTest(); +} + +var gl; +function init() { + var canvas = document.getElementById('canvas'); + var attribs = { + alpha: false, + antialias: false, + premultipliedAlpha: false, + }; + gl = canvas.getContext('experimental-webgl', attribs); + shouldBeNonNull(gl); + shouldBe("gl.getParameter(gl.ALPHA_BITS)", "0"); + + var prog = WebGLTestUtils.setupProgram(gl, ['vs', 'fs']); + shouldBeNonNull(prog); + prog.aPosCoord = gl.getAttribLocation(prog, 'aPosCoord'); + + Test(gl, prog, false); + + requestAnimationFrame(function(){ Test(gl, prog, true); }); +} + +</script> +</head> +<body onload="init()"> +<canvas id='canvas'></canvas> +<br/> +<div id="description"></div> +<div id="console"></div> +</body> +</html> |