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/more/glsl | |
parent | Initial commit. (diff) | |
download | firefox-esr-upstream.tar.xz firefox-esr-upstream.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/arrayOutOfBounds.html | 258 | ||||
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/uniformOutOfBounds.html | 196 |
2 files changed, 454 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/arrayOutOfBounds.html b/dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/arrayOutOfBounds.html new file mode 100644 index 0000000000..195b224a9e --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/arrayOutOfBounds.html @@ -0,0 +1,258 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<!-- +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. +--> +<link rel="stylesheet" type="text/css" href="../unit.css" /> +<script type="application/javascript" src="../unit.js"></script> +<script type="application/javascript" src="../util.js"></script> +<script type="application/javascript"> + +Tests.startUnit = function () { + var canvas = document.getElementById('gl'); + var gl = getGLContext(canvas); + return [gl]; +} + +Tests.testOk = function(gl) { + var sh = new Filter(gl, 'okvert', 'frag'); + assertOk(function(){sh.apply();}); + sh.destroy(); + + var sh = new Filter(gl, 'vert', 'okfrag'); + assertOk(function(){sh.apply();}); + sh.destroy(); + + var sh = new Filter(gl, 'vert', 'frag'); + assertOk(function(){sh.apply();}); + sh.destroy(); +} + +var arr = ['cr', 'cw', 'vr', 'vw']; +arr.forEach(function(e){ + if (e == 'cr' || e == 'cw') { + Tests['test'+e+'vert'] = function(gl) { + var sh = new Filter(gl, e+'vert', 'frag'); + assertFail(function(){sh.apply();}); + sh.destroy(); + } + } + Tests['test'+e+'frag'] = function(gl) { + var sh = new Filter(gl, 'vert', e+'frag'); + assertFail(function(){sh.apply();}); + sh.destroy(); + } +}); + + +</script> +<script id="okvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; + attribute vec2 Tex; + varying vec2 TexCoord; + void main() + { + TexCoord = Tex; + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + gl_Position = vec4(Vertex, x[2]); + } +</script> +<script id="crvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; + attribute vec2 Tex; + varying vec2 TexCoord; + void main() + { + TexCoord = Tex; + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + gl_Position = vec4(Vertex, x[4]); + } +</script> +<script id="cwvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; + attribute vec2 Tex; + varying vec2 TexCoord; + void main() + { + TexCoord = Tex; + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + x[4] = Vertex.z; + gl_Position = vec4(Vertex, x[4]); + } +</script> +<!-- This one can't be required to fail compilation, because vertex shaders must support arbitrary array indexing --> +<script id="vrvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; + attribute vec2 Tex; + varying vec2 TexCoord; + void main() + { + TexCoord = Tex; + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + int idx = 4 * int(max(1.0, Vertex.x*20.0)); + gl_Position = vec4(Vertex, x[idx]); + } +</script> +<!-- This one can't be required to fail compilation, because vertex shaders must support arbitrary array indexing --> +<script id="vwvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; + attribute vec2 Tex; + varying vec2 TexCoord; + void main() + { + TexCoord = Tex; + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + int idx = 4 * int(max(1.0, Vertex.x*20.0)); + x[idx] = Vertex.z; + gl_Position = vec4(Vertex, x[idx]); + } +</script> +<script id="vert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; + attribute vec2 Tex; + varying vec2 TexCoord; + void main() + { + TexCoord = Tex; + gl_Position = vec4(Vertex, 0.0); + } +</script> + +<script id="okfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + varying vec2 TexCoord; + + void main() + { + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[2]); + } +</script> +<script id="crfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + varying vec2 TexCoord; + + void main() + { + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[4]); + } +</script> +<script id="cwfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + varying vec2 TexCoord; + + void main() + { + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + + x[4] = 6.0; + gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[4]); + } +</script> +<!-- This one actually fails because of WebGL's restrictions on indexing expressions in fragment shaders --> +<script id="vrfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + varying vec2 TexCoord; + + void main() + { + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + + int idx = 4 * int(max(1.0, TexCoord.x*20.0)); + gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[idx]); + } +</script> +<!-- This one actually fails because of WebGL's restrictions on indexing expressions in fragment shaders --> +<script id="vwfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + varying vec2 TexCoord; + + void main() + { + float x[3]; + x[0] = 1.0; + x[1] = 2.0; + x[2] = 3.0; + + int idx = 4 * int(max(1.0, TexCoord.x*20.0)); + x[idx] = 6.0; + gl_FragColor = vec4(1.0, 0.0, TexCoord.s, x[idx]); + } +</script> +<script id="frag" type="x-shader/x-fragment"> + + + precision mediump float; + + varying vec2 TexCoord; + + void main() + { + gl_FragColor = vec4(1.0, 0.0, TexCoord.s, 1.0); + } +</script> + + +<style>canvas{ position:absolute; }</style> +</head><body> + <canvas id="gl" width="16" height="16"></canvas> +</body></html> diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/uniformOutOfBounds.html b/dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/uniformOutOfBounds.html new file mode 100644 index 0000000000..c53347e604 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance/more/glsl/uniformOutOfBounds.html @@ -0,0 +1,196 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<!-- +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. +--> +<link rel="stylesheet" type="text/css" href="../unit.css" /> +<script type="application/javascript" src="../unit.js"></script> +<script type="application/javascript" src="../util.js"></script> +<script type="application/javascript"> + +Tests.startUnit = function () { + var canvas = document.getElementById('gl'); + var gl = getGLContext(canvas); + return [gl]; +} + +var arr = ['cr', 'cw', 'vr', 'vw', 'tvw']; +arr.forEach(function(e){ + Tests['test'+e+'vert'] = function(gl) { + var sh = new Filter(gl, e+'vert', 'frag'); + assertFail(function(){sh.apply(function(f){ + f.uniform3fv('x', [0.0, 1.0, 2.0]); + throwError(e+"vert"); + });}); + sh.destroy(); + } + Tests['test'+e+'frag'] = function(gl) { + var sh = new Filter(gl, 'vert', e+'frag'); + assertFail(function(){sh.apply(function(f){ + f.uniform3fv('x', [0.0, 1.0, 2.0]); + throwError(e+"frag"); + });}); + sh.destroy(); + } +}); + +</script> +<script id="crvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; attribute vec2 Tex; + uniform float x[3]; + void main() + { + gl_Position = vec4(Vertex.st, Tex.s, x[4]); + } +</script> +<script id="cwvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; attribute vec2 Tex; + uniform float x[3]; + void main() + { + x[4] = Vertex.z; + gl_Position = vec4(Vertex.st, Tex.s, x[4]); + } +</script> +<script id="vrvert" type="x-shader/x-vertex"> + + + uniform float x[3]; + attribute vec3 Vertex; attribute vec2 Tex; + void main() + { + float idx = 40.0 * max(1.0, Vertex.x*20.0); + gl_Position = vec4(Vertex, x[2] + Tex.s + x[int(idx)]); + } +</script> +<script id="vwvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; attribute vec2 Tex; + uniform float x[3]; + void main() + { + int idx = 4 * int(max(1.0, Vertex.x*20.0)); + x[idx] = Vertex.z; + gl_Position = vec4(Vertex.st, Tex.s, x[idx]); + } +</script> +<script id="tvwvert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; attribute vec2 Tex; + uniform float x[3]; + void main() + { + int idx = 4 * int(max(1.0, Vertex.x*20.0)); + x[2] = Vertex[idx]; + gl_Position = vec4(Vertex.st, Tex.s, x[2]); + } +</script> +<script id="vert" type="x-shader/x-vertex"> + + + attribute vec3 Vertex; attribute vec2 Tex; + varying vec2 TexCoord; + void main() + { + TexCoord = Vertex.st; + gl_Position = vec4(Vertex, Tex.s); + } +</script> + +<script id="crfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + uniform float x[3]; + + varying vec2 TexCoord; + void main() + { + gl_FragColor = vec4(1.0, 0.0, 0.0, x[4]); + } +</script> +<script id="cwfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + uniform float x[3]; + + varying vec2 TexCoord; + void main() + { + x[4] = 6.0; + gl_FragColor = vec4(1.0, 0.0, 0.0, x[4]); + } +</script> +<script id="vrfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + uniform float x[3]; + + varying vec2 TexCoord; + void main() + { + int idx = 4 * int(max(1.0, TexCoord.s*20.0)); + gl_FragColor = vec4(1.0, 0.0, 0.0, x[idx]); + } +</script> +<script id="vwfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + uniform float x[3]; + + varying vec2 TexCoord; + void main() + { + int idx = 4 * int(max(1.0, TexCoord.s*20.0)); + x[idx] = 6.0; + gl_FragColor = vec4(1.0, 0.0, 0.0, x[idx]); + } +</script> +<script id="tvwfrag" type="x-shader/x-fragment"> + + + precision mediump float; + + uniform float x[3]; + + varying vec2 TexCoord; + void main() + { + int idx = 4 * int(max(1.0, TexCoord.s*20.0)); + x[2] = TexCoord[idx]; + gl_FragColor = vec4(1.0, 0.0, 0.0, x[2]); + } +</script> +<script id="frag" type="x-shader/x-fragment"> + + + precision mediump float; + + void main() + { + gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); + } +</script> + + +<style>canvas{ position:absolute; }</style> +</head><body> + <canvas id="gl" width="1" height="1"></canvas> +</body></html> |