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