tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nested-functions-should-not-crash.html (2082B)


      1 <!--
      2 Copyright (c) 2019 The Khronos Group Inc.
      3 Use of this source code is governed by an MIT-style license that can be
      4 found in the LICENSE.txt file.
      5 -->
      6 
      7 <!DOCTYPE html>
      8 <html>
      9 <head>
     10 <meta charset="utf-8">
     11 <title>Driver Bug - nested functions should not crash</title>
     12 <link rel="stylesheet" href="../../../resources/js-test-style.css"/>
     13 <script src="../../../js/js-test-pre.js"></script>
     14 <script src="../../../js/webgl-test-utils.js"></script>
     15 <script src="../../../js/glsl-conformance-test.js"></script>
     16 </head>
     17 <body>
     18 <canvas id="example" width="40" height="40"> </canvas>
     19 <div id="description"></div>
     20 <div id="console"></div>
     21 <script id="vshader" type="x-shader/x-vertex">
     22 void main(){
     23  gl_Position = vec4(0, 0, 0, 1);
     24 }
     25 </script>
     26 <script id="fshaderUniformTest" type="x-shader/x-fragment">
     27 precision mediump float;
     28 uniform vec4 u_uniform;
     29 
     30 $(code)
     31 
     32 void main()
     33 {
     34  gl_FragColor = function0();
     35 }
     36 </script>
     37 <script>
     38 "use strict";
     39 var wtu = WebGLTestUtils;
     40 var gl = wtu.create3DContext();
     41 
     42 var fUniformTestSource = wtu.getScript("fshaderUniformTest");
     43 
     44 var tests = [
     45 ];
     46 var counts = [
     47  { count:10,
     48    mustPass: true,
     49  },
     50  { count:100,
     51    mustPass: false,
     52  },
     53  { count: 1000,
     54    mustPass: false,
     55  },
     56  { count: 10000,
     57    mustPass: false,
     58  },
     59 ];
     60 var operators = ["+", "-", "/", "*"];
     61 counts.forEach(function(info) {
     62  var generateCode = function(numVars) {
     63    var codes = [];
     64    codes.push("vec4 function" + numVars + "() { return u_uniform; }");
     65    for (var uu = 0; uu < numVars; ++uu) {
     66      var id = numVars - uu - 1;
     67      codes.push("vec4 function" + id + "() { return function" + (id + 1) + "(); }");
     68    }
     69    return {
     70      code: codes.join("\n\n"),
     71    };
     72  };
     73 
     74  var subs = generateCode(info.count);
     75  tests.push({
     76    vShaderId: "vshader",
     77    vShaderSuccess: true,
     78    fShaderSource: wtu.replaceParams(fUniformTestSource, subs),
     79    fShaderSuccess: true,
     80    linkSuccess: true,
     81    ignoreResults: !info.mustPass,
     82    passMsg: "shader with " + info.count + " nested functions",
     83  });
     84 });
     85 GLSLConformanceTester.runTests(tests);
     86 </script>
     87 </body>
     88 </html>