xref: /aosp_15_r20/external/skia/tests/sksl/shared/MatrixEquality.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  colorGreen: vec4<f32>,
8*c8dee2aaSAndroid Build Coastguard Worker  colorRed: vec4<f32>,
9*c8dee2aaSAndroid Build Coastguard Worker  testMatrix2x2: mat2x2<f32>,
10*c8dee2aaSAndroid Build Coastguard Worker  testMatrix3x3: mat3x3<f32>,
11*c8dee2aaSAndroid Build Coastguard Worker};
12*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
13*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> {
14*c8dee2aaSAndroid Build Coastguard Worker  {
15*c8dee2aaSAndroid Build Coastguard Worker    var _0_ok: bool = true;
16*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp0 = mat2x2<f32>(1.0, 2.0, 3.0, 4.0);
17*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_globalUniforms.testMatrix2x2[0] == _skTemp0[0]) && all(_globalUniforms.testMatrix2x2[1] == _skTemp0[1]));
18*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp1 = mat3x3<f32>(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0);
19*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_globalUniforms.testMatrix3x3[0] == _skTemp1[0]) && all(_globalUniforms.testMatrix3x3[1] == _skTemp1[1]) && all(_globalUniforms.testMatrix3x3[2] == _skTemp1[2]));
20*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp2 = mat2x2<f32>(100.0, 0.0, 0.0, 100.0);
21*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (any(_globalUniforms.testMatrix2x2[0] != _skTemp2[0]) || any(_globalUniforms.testMatrix2x2[1] != _skTemp2[1]));
22*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp3 = mat3x3<f32>(9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0);
23*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (any(_globalUniforms.testMatrix3x3[0] != _skTemp3[0]) || any(_globalUniforms.testMatrix3x3[1] != _skTemp3[1]) || any(_globalUniforms.testMatrix3x3[2] != _skTemp3[2]));
24*c8dee2aaSAndroid Build Coastguard Worker    let _1_zero: f32 = f32(_globalUniforms.colorGreen.x);
25*c8dee2aaSAndroid Build Coastguard Worker    let _2_one: f32 = f32(_globalUniforms.colorGreen.y);
26*c8dee2aaSAndroid Build Coastguard Worker    let _3_two: f32 = 2.0 * _2_one;
27*c8dee2aaSAndroid Build Coastguard Worker    let _4_nine: f32 = 9.0 * _2_one;
28*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp4 = mat2x2<f32>(_2_one, _1_zero, _1_zero, _2_one);
29*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp5 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
30*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp4[0] == _skTemp5[0]) && all(_skTemp4[1] == _skTemp5[1]));
31*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp6 = vec2<f32>(_2_one);
32*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp7 = mat2x2<f32>(_2_one, _1_zero, _skTemp6[0], _skTemp6[1]);
33*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp8 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
34*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (any(_skTemp7[0] != _skTemp8[0]) || any(_skTemp7[1] != _skTemp8[1]));
35*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp9 = mat2x2<f32>(_2_one, 0.0, 0.0, _2_one);
36*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp10 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
37*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp9[0] == _skTemp10[0]) && all(_skTemp9[1] == _skTemp10[1]));
38*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp11 = mat2x2<f32>(_2_one, 0.0, 0.0, _2_one);
39*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp12 = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
40*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (any(_skTemp11[0] != _skTemp12[0]) || any(_skTemp11[1] != _skTemp12[1]));
41*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp13 = -_2_one;
42*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp14 = mat2x2<f32>(_skTemp13, 0.0, 0.0, _skTemp13);
43*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp15 = mat2x2<f32>(-1.0, 0.0, 0.0, -1.0);
44*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp14[0] == _skTemp15[0]) && all(_skTemp14[1] == _skTemp15[1]));
45*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp16 = mat2x2<f32>(_1_zero, 0.0, 0.0, _1_zero);
46*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp17 = mat2x2<f32>(-0.0, 0.0, 0.0, -0.0);
47*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp16[0] == _skTemp17[0]) && all(_skTemp16[1] == _skTemp17[1]));
48*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp18 = -_2_one;
49*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp19 = (-1.0 * mat2x2<f32>(_skTemp18, 0.0, 0.0, _skTemp18));
50*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp20 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
51*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp19[0] == _skTemp20[0]) && all(_skTemp19[1] == _skTemp20[1]));
52*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp21 = (-1.0 * mat2x2<f32>(_1_zero, 0.0, 0.0, _1_zero));
53*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp22 = mat2x2<f32>(-0.0, 0.0, 0.0, -0.0);
54*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp21[0] == _skTemp22[0]) && all(_skTemp21[1] == _skTemp22[1]));
55*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp23 = mat2x2<f32>(_2_one, 0.0, 0.0, _2_one);
56*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp24 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
57*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp23[0] == _skTemp24[0]) && all(_skTemp23[1] == _skTemp24[1]));
58*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp25 = mat2x2<f32>(_3_two, 0.0, 0.0, _3_two);
59*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp26 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
60*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (any(_skTemp25[0] != _skTemp26[0]) || any(_skTemp25[1] != _skTemp26[1]));
61*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp27 = mat2x2<f32>(_2_one, 0.0, 0.0, _2_one);
62*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp28 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
63*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp27[0] == _skTemp28[0]) && all(_skTemp27[1] == _skTemp28[1]));
64*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp29 = mat2x2<f32>(_2_one, 0.0, 0.0, _2_one);
65*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp30 = mat2x2<f32>(0.0, 0.0, 0.0, 0.0);
66*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (any(_skTemp29[0] != _skTemp30[0]) || any(_skTemp29[1] != _skTemp30[1]));
67*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp31 = mat3x3<f32>(_2_one, _1_zero, _1_zero, _1_zero, _2_one, _1_zero, _1_zero, _1_zero, _2_one);
68*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp32 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
69*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp33 = mat3x3<f32>(_skTemp32[0][0], _skTemp32[0][1], 0.0, _skTemp32[1][0], _skTemp32[1][1], 0.0, 0.0, 0.0, 1.0);
70*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp31[0] == _skTemp33[0]) && all(_skTemp31[1] == _skTemp33[1]) && all(_skTemp31[2] == _skTemp33[2]));
71*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp34 = mat3x3<f32>(_4_nine, _1_zero, _1_zero, _1_zero, _4_nine, _1_zero, _1_zero, _1_zero, _2_one);
72*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp35 = mat2x2<f32>(9.0, 0.0, 0.0, 9.0);
73*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp36 = mat3x3<f32>(_skTemp35[0][0], _skTemp35[0][1], 0.0, _skTemp35[1][0], _skTemp35[1][1], 0.0, 0.0, 0.0, 1.0);
74*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp34[0] == _skTemp36[0]) && all(_skTemp34[1] == _skTemp36[1]) && all(_skTemp34[2] == _skTemp36[2]));
75*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp37 = mat3x3<f32>(_2_one, 0.0, 0.0, 0.0, _2_one, 0.0, 0.0, 0.0, _2_one);
76*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp38 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
77*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp39 = mat3x3<f32>(_skTemp38[0][0], _skTemp38[0][1], 0.0, _skTemp38[1][0], _skTemp38[1][1], 0.0, 0.0, 0.0, 1.0);
78*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp37[0] == _skTemp39[0]) && all(_skTemp37[1] == _skTemp39[1]) && all(_skTemp37[2] == _skTemp39[2]));
79*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp40 = mat3x3<f32>(_4_nine, 0.0, 0.0, 0.0, _4_nine, 0.0, 0.0, 0.0, _2_one);
80*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp41 = mat2x2<f32>(9.0, 0.0, 0.0, 9.0);
81*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp42 = mat3x3<f32>(_skTemp41[0][0], _skTemp41[0][1], 0.0, _skTemp41[1][0], _skTemp41[1][1], 0.0, 0.0, 0.0, 1.0);
82*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp40[0] == _skTemp42[0]) && all(_skTemp40[1] == _skTemp42[1]) && all(_skTemp40[2] == _skTemp42[2]));
83*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp43 = mat3x3<f32>(_2_one, 0.0, 0.0, 0.0, _2_one, 0.0, 0.0, 0.0, _2_one);
84*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp44 = mat2x2<f32>(_skTemp43[0][0], _skTemp43[0][1], _skTemp43[1][0], _skTemp43[1][1]);
85*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp45 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
86*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp44[0] == _skTemp45[0]) && all(_skTemp44[1] == _skTemp45[1]));
87*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp46 = mat3x3<f32>(_2_one, 0.0, 0.0, 0.0, _2_one, 0.0, 0.0, 0.0, _2_one);
88*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp47 = mat2x2<f32>(_skTemp46[0][0], _skTemp46[0][1], _skTemp46[1][0], _skTemp46[1][1]);
89*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp48 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
90*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp47[0] == _skTemp48[0]) && all(_skTemp47[1] == _skTemp48[1]));
91*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp49 = mat2x2<f32>(_2_one, _1_zero, _1_zero, _2_one);
92*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp50 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
93*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp49[0] == _skTemp50[0]) && all(_skTemp49[1] == _skTemp50[1]));
94*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp51 = mat2x2<f32>(_2_one, _1_zero, _1_zero, _2_one);
95*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp52 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
96*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp51[0] == _skTemp52[0]) && all(_skTemp51[1] == _skTemp52[1]));
97*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp53 = mat2x2<f32>(_2_one, _1_zero, _1_zero, _2_one);
98*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp54 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
99*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp53[0] == _skTemp54[0]) && all(_skTemp53[1] == _skTemp54[1]));
100*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && all((vec4<f32>(vec4<f32>(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1])) * vec4<f32>(_2_one)) == vec4<f32>(1.0, 2.0, 3.0, 4.0));
101*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && all((vec4<f32>(vec4<f32>(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1])) * vec4<f32>(_2_one)) == vec4<f32>(vec4<f32>(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1])));
102*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && all((vec4<f32>(vec4<f32>(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1])) * vec4<f32>(_1_zero)) == vec4<f32>(0.0));
103*c8dee2aaSAndroid Build Coastguard Worker    let _5_m: mat3x3<f32> = mat3x3<f32>(_2_one, _3_two, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, _4_nine);
104*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && all(_5_m[0] == vec3<f32>(1.0, 2.0, 3.0));
105*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && all(_5_m[1] == vec3<f32>(4.0, 5.0, 6.0));
106*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && all(_5_m[2] == vec3<f32>(7.0, 8.0, 9.0));
107*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[0].x == 1.0);
108*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[0].y == 2.0);
109*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[0].z == 3.0);
110*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[1].x == 4.0);
111*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[1].y == 5.0);
112*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[1].z == 6.0);
113*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[2].x == 7.0);
114*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[2].y == 8.0);
115*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (_5_m[2].z == 9.0);
116*c8dee2aaSAndroid Build Coastguard Worker    return select(_globalUniforms.colorRed, _globalUniforms.colorGreen, vec4<bool>(_0_ok));
117*c8dee2aaSAndroid Build Coastguard Worker  }
118*c8dee2aaSAndroid Build Coastguard Worker}
119*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main() -> FSOut {
120*c8dee2aaSAndroid Build Coastguard Worker  var _stageOut: FSOut;
121*c8dee2aaSAndroid Build Coastguard Worker  _stageOut.sk_FragColor = _skslMain(/*fragcoord*/ vec2<f32>());
122*c8dee2aaSAndroid Build Coastguard Worker  return _stageOut;
123*c8dee2aaSAndroid Build Coastguard Worker}
124