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.
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>
18 <div id=
"description"></div>
19 <div id=
"console"></div>
20 <script id=
"fragmentShader" type=
"text/something-not-javascript">
21 precision mediump float;
27 $(var).field = $(initializer);
28 gl_FragColor = $(asVec4);
33 description("Verifies that mixed (array vs. not array) struct declarators work correctly.");
35 var wtu
= WebGLTestUtils
;
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)' },
50 ['s1[0]', 's1[1]', 's2'].forEach(function(varName
) {
51 typeInfos
.forEach(function (typeInfo
) {
54 initializer
: typeInfo
.initializer
,
56 asVec4
: wtu
.replaceParams(typeInfo
.asVec4
, {var: varName
})
59 fShaderSource
: wtu
.replaceParams(wtu
.getScript('fragmentShader'), replaceParams
),
60 passMsg
: typeInfo
.type
,
67 GLSLConformanceTester
.runTests(tests
);
68 var successfullyParsed
= true;