xref: /aosp_15_r20/external/skia/tests/sksl/wgsl/Equality.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  f1: f32,
8  f2: f32,
9  f3: f32,
10  h1: f32,
11  h2: f32,
12  h3: f32,
13  v1: vec2<f32>,
14  v2: vec2<f32>,
15  v3: vec2<f32>,
16  hv1: vec2<f32>,
17  hv2: vec2<f32>,
18  hv3: vec2<f32>,
19  m1: mat2x2<f32>,
20  m2: mat2x2<f32>,
21  m3: mat2x2<f32>,
22  hm1: mat2x2<f32>,
23  hm2: mat2x2<f32>,
24  hm3: mat2x2<f32>,
25  colorGreen: vec4<f32>,
26  colorRed: vec4<f32>,
27};
28@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
29fn _skslMain() -> vec4<f32> {
30  {
31    var ok: bool = true;
32    ok = ok && (_globalUniforms.f1 == _globalUniforms.f2);
33    ok = ok && (_globalUniforms.h1 == _globalUniforms.h2);
34    ok = ok && (_globalUniforms.f1 == f32(_globalUniforms.h2));
35    ok = ok && (f32(_globalUniforms.h1) == _globalUniforms.f2);
36    ok = ok && (_globalUniforms.f1 != _globalUniforms.f3);
37    ok = ok && (_globalUniforms.h1 != _globalUniforms.h3);
38    ok = ok && (_globalUniforms.f1 != f32(_globalUniforms.h3));
39    ok = ok && (f32(_globalUniforms.h1) != _globalUniforms.f3);
40    ok = ok && all(_globalUniforms.v1 == _globalUniforms.v2);
41    ok = ok && all(_globalUniforms.hv1 == _globalUniforms.hv2);
42    ok = ok && all(_globalUniforms.v1 == vec2<f32>(_globalUniforms.hv2));
43    ok = ok && all(vec2<f32>(_globalUniforms.hv1) == _globalUniforms.v2);
44    ok = ok && any(_globalUniforms.v1 != _globalUniforms.v3);
45    ok = ok && any(_globalUniforms.hv1 != _globalUniforms.hv3);
46    ok = ok && any(_globalUniforms.v1 != vec2<f32>(_globalUniforms.hv3));
47    ok = ok && any(vec2<f32>(_globalUniforms.hv1) != _globalUniforms.v3);
48    ok = ok && (all(_globalUniforms.m1[0] == _globalUniforms.m2[0]) && all(_globalUniforms.m1[1] == _globalUniforms.m2[1]));
49    ok = ok && (all(_globalUniforms.hm1[0] == _globalUniforms.hm2[0]) && all(_globalUniforms.hm1[1] == _globalUniforms.hm2[1]));
50    let _skTemp0 = mat2x2<f32>(_globalUniforms.hm2);
51    ok = ok && (all(_globalUniforms.m1[0] == _skTemp0[0]) && all(_globalUniforms.m1[1] == _skTemp0[1]));
52    let _skTemp1 = mat2x2<f32>(_globalUniforms.hm1);
53    ok = ok && (all(_skTemp1[0] == _globalUniforms.m2[0]) && all(_skTemp1[1] == _globalUniforms.m2[1]));
54    ok = ok && (any(_globalUniforms.m1[0] != _globalUniforms.m3[0]) || any(_globalUniforms.m1[1] != _globalUniforms.m3[1]));
55    ok = ok && (any(_globalUniforms.hm1[0] != _globalUniforms.hm3[0]) || any(_globalUniforms.hm1[1] != _globalUniforms.hm3[1]));
56    let _skTemp2 = mat2x2<f32>(_globalUniforms.hm3);
57    ok = ok && (any(_globalUniforms.m1[0] != _skTemp2[0]) || any(_globalUniforms.m1[1] != _skTemp2[1]));
58    let _skTemp3 = mat2x2<f32>(_globalUniforms.hm1);
59    ok = ok && (any(_skTemp3[0] != _globalUniforms.m3[0]) || any(_skTemp3[1] != _globalUniforms.m3[1]));
60    return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4<bool>(ok));
61  }
62}
63@fragment fn main() -> FSOut {
64  var _stageOut: FSOut;
65  _stageOut.sk_FragColor = _skslMain();
66  return _stageOut;
67}
68