tor-browser

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

struct-mixed-array-declarators.html (2969B)


      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 <!DOCTYPE html>
      7 <html>
      8 <head>
      9 <meta charset="utf-8">
     10 <link rel="stylesheet" href="../../../resources/js-test-style.css" />
     11 <link rel="stylesheet" href="../../../resources/glsl-feature-tests.css" />
     12 <script src="../../../js/js-test-pre.js"></script>
     13 <script src="../../../js/webgl-test-utils.js"></script>
     14 <script src="../../../js/glsl-conformance-test.js"></script>
     15 <title></title>
     16 </head>
     17 <body>
     18 <div id="description"></div>
     19 <div id="console"></div>
     20 <script id="fragmentShader" type="text/something-not-javascript">
     21 precision mediump float;
     22 void main() {
     23    struct S {
     24        $(type) field;
     25    };
     26    S s1[2], s2;
     27    $(var).field = $(initializer);
     28    gl_FragColor = $(asVec4);
     29 }
     30 </script>
     31 <script>
     32 "use strict";
     33 description("Verifies that mixed (array vs. not array) struct declarators work correctly.");
     34 var tests = [];
     35 var wtu = WebGLTestUtils;
     36 var typeInfos = [
     37    { type: 'float',    initializer: '1.0',                         asVec4: 'vec4(0.0,$(var).field,0.0,1.0)' },
     38    { type: 'vec2',     initializer: 'vec2(0.0, 1.0)',              asVec4: 'vec4($(var).field,0.0,1.0)' },
     39    { type: 'vec3',     initializer: 'vec3(0.0, 1.0, 0.0)',         asVec4: 'vec4($(var).field,1.0)' },
     40    { type: 'vec4',     initializer: 'vec4(0.0, 1.0, 0.0, 1.0)',    asVec4: '$(var).field' },
     41    { type: 'int',      initializer: '1',                           asVec4: 'vec4(0.0,$(var).field,0.0,1.0)' },
     42    { type: 'ivec2',    initializer: 'ivec2(0, 1)',                 asVec4: 'vec4($(var).field,0.0,1.0)' },
     43    { type: 'ivec3',    initializer: 'ivec3(0, 1, 0)',              asVec4: 'vec4($(var).field,1.0)' },
     44    { type: 'ivec4',    initializer: 'ivec4(0, 1, 0, 1)',           asVec4: 'vec4($(var).field)' },
     45    { type: 'bool',     initializer: 'true',                        asVec4: 'vec4(0.0,$(var).field,0.0,1.0)' },
     46    { type: 'bvec2',    initializer: 'bvec2(false, true)',          asVec4: 'vec4($(var).field,0.0,1.0)' },
     47    { type: 'bvec3',    initializer: 'bvec3(false, true, false)',   asVec4: 'vec4($(var).field,1.0)' },
     48    { type: 'bvec4',    initializer: 'bvec4(false,true,false,true)',asVec4: 'vec4($(var).field)' },
     49 ];
     50 ['s1[0]', 's1[1]', 's2'].forEach(function(varName) {
     51    typeInfos.forEach(function (typeInfo) {
     52        var replaceParams = {
     53            type: typeInfo.type,
     54            initializer: typeInfo.initializer,
     55            var: varName,
     56            asVec4: wtu.replaceParams(typeInfo.asVec4, {var: varName})
     57        };
     58        tests.push({
     59            fShaderSource: wtu.replaceParams(wtu.getScript('fragmentShader'), replaceParams),
     60            passMsg: typeInfo.type,
     61            fShaderSuccess: true,
     62            linkSuccess: true,
     63            render:true
     64        });
     65    });
     66 });
     67 GLSLConformanceTester.runTests(tests);
     68 var successfullyParsed = true;
     69 </script>
     70 </body>
     71 </html>