xref: /aosp_15_r20/external/skia/tests/sksl/shared/SwizzleIndexStore.wgsl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1diagnostic(off, derivative_uniformity);
2diagnostic(off, chromium.unreachable_code);
3struct FSOut {
4  @location(0) sk_FragColor: vec4<f32>,
5};
6struct _GlobalUniforms {
7  colorGreen: vec4<f32>,
8  colorRed: vec4<f32>,
9  testMatrix3x3: mat3x3<f32>,
10  testMatrix4x4: mat4x4<f32>,
11};
12@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
13fn test3x3_b() -> bool {
14  {
15    var expected: vec3<f32> = vec3<f32>(3.0, 2.0, 1.0);
16    var vec: vec3<f32>;
17    {
18      var c: i32 = 0;
19      loop {
20        {
21          {
22            var r: i32 = 0;
23            loop {
24              {
25                let _skTemp0 = vec3<i32>(2, 1, 0)[r];
26                vec[_skTemp0] = _globalUniforms.testMatrix3x3[c][r];
27              }
28              continuing {
29                r = r + i32(1);
30                break if r >= 3;
31              }
32            }
33          }
34          if any(vec != expected) {
35            {
36              return false;
37            }
38          }
39          expected = expected + 3.0;
40        }
41        continuing {
42          c = c + i32(1);
43          break if c >= 3;
44        }
45      }
46    }
47    return true;
48  }
49}
50fn test4x4_b() -> bool {
51  {
52    var expected: vec4<f32> = vec4<f32>(4.0, 3.0, 2.0, 1.0);
53    var vec: vec4<f32>;
54    {
55      var c: i32 = 0;
56      loop {
57        {
58          {
59            var r: i32 = 0;
60            loop {
61              {
62                let _skTemp1 = vec4<i32>(3, 2, 1, 0)[r];
63                vec[_skTemp1] = _globalUniforms.testMatrix4x4[c][r];
64              }
65              continuing {
66                r = r + i32(1);
67                break if r >= 4;
68              }
69            }
70          }
71          if any(vec != expected) {
72            {
73              return false;
74            }
75          }
76          expected = expected + 4.0;
77        }
78        continuing {
79          c = c + i32(1);
80          break if c >= 4;
81        }
82      }
83    }
84    return true;
85  }
86}
87fn _skslMain(coords: vec2<f32>) -> vec4<f32> {
88  {
89    var _skTemp2: vec4<f32>;
90    var _skTemp3: bool;
91    let _skTemp4 = test3x3_b();
92    if _skTemp4 {
93      let _skTemp5 = test4x4_b();
94      _skTemp3 = _skTemp5;
95    } else {
96      _skTemp3 = false;
97    }
98    if _skTemp3 {
99      _skTemp2 = _globalUniforms.colorGreen;
100    } else {
101      _skTemp2 = _globalUniforms.colorRed;
102    }
103    return _skTemp2;
104  }
105}
106@fragment fn main() -> FSOut {
107  var _stageOut: FSOut;
108  _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
109  return _stageOut;
110}
111