xref: /aosp_15_r20/external/skia/tests/sksl/folding/MatrixFoldingES2.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 _GlobalUniforms {
4*c8dee2aaSAndroid Build Coastguard Worker  testMatrix2x2: mat2x2<f32>,
5*c8dee2aaSAndroid Build Coastguard Worker  colorRed: vec4<f32>,
6*c8dee2aaSAndroid Build Coastguard Worker  colorGreen: vec4<f32>,
7*c8dee2aaSAndroid Build Coastguard Worker  unknownInput: f32,
8*c8dee2aaSAndroid Build Coastguard Worker};
9*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
10*c8dee2aaSAndroid Build Coastguard Workerfn test_matrix_op_scalar_float_b() -> bool {
11*c8dee2aaSAndroid Build Coastguard Worker  {
12*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
13*c8dee2aaSAndroid Build Coastguard Worker    return ok;
14*c8dee2aaSAndroid Build Coastguard Worker  }
15*c8dee2aaSAndroid Build Coastguard Worker}
16*c8dee2aaSAndroid Build Coastguard Workerfn test_matrix_op_scalar_half_b() -> bool {
17*c8dee2aaSAndroid Build Coastguard Worker  {
18*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
19*c8dee2aaSAndroid Build Coastguard Worker    return ok;
20*c8dee2aaSAndroid Build Coastguard Worker  }
21*c8dee2aaSAndroid Build Coastguard Worker}
22*c8dee2aaSAndroid Build Coastguard Workerfn test_matrix_op_matrix_float_b() -> bool {
23*c8dee2aaSAndroid Build Coastguard Worker  {
24*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
25*c8dee2aaSAndroid Build Coastguard Worker    return ok;
26*c8dee2aaSAndroid Build Coastguard Worker  }
27*c8dee2aaSAndroid Build Coastguard Worker}
28*c8dee2aaSAndroid Build Coastguard Workerfn test_matrix_op_matrix_half_b() -> bool {
29*c8dee2aaSAndroid Build Coastguard Worker  {
30*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
31*c8dee2aaSAndroid Build Coastguard Worker    return ok;
32*c8dee2aaSAndroid Build Coastguard Worker  }
33*c8dee2aaSAndroid Build Coastguard Worker}
34*c8dee2aaSAndroid Build Coastguard Workerfn test_vector_op_matrix_float_b() -> bool {
35*c8dee2aaSAndroid Build Coastguard Worker  {
36*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
37*c8dee2aaSAndroid Build Coastguard Worker    return ok;
38*c8dee2aaSAndroid Build Coastguard Worker  }
39*c8dee2aaSAndroid Build Coastguard Worker}
40*c8dee2aaSAndroid Build Coastguard Workerfn test_vector_op_matrix_half_b() -> bool {
41*c8dee2aaSAndroid Build Coastguard Worker  {
42*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
43*c8dee2aaSAndroid Build Coastguard Worker    return ok;
44*c8dee2aaSAndroid Build Coastguard Worker  }
45*c8dee2aaSAndroid Build Coastguard Worker}
46*c8dee2aaSAndroid Build Coastguard Workerfn test_matrix_op_vector_float_b() -> bool {
47*c8dee2aaSAndroid Build Coastguard Worker  {
48*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
49*c8dee2aaSAndroid Build Coastguard Worker    return ok;
50*c8dee2aaSAndroid Build Coastguard Worker  }
51*c8dee2aaSAndroid Build Coastguard Worker}
52*c8dee2aaSAndroid Build Coastguard Workerfn test_matrix_op_vector_half_b() -> bool {
53*c8dee2aaSAndroid Build Coastguard Worker  {
54*c8dee2aaSAndroid Build Coastguard Worker    const ok: bool = true;
55*c8dee2aaSAndroid Build Coastguard Worker    return ok;
56*c8dee2aaSAndroid Build Coastguard Worker  }
57*c8dee2aaSAndroid Build Coastguard Worker}
58*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(coords: vec2<f32>) -> vec4<f32> {
59*c8dee2aaSAndroid Build Coastguard Worker  {
60*c8dee2aaSAndroid Build Coastguard Worker    var _0_ok: bool = true;
61*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp0 = f32(_globalUniforms.unknownInput);
62*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp1 = mat3x3<f32>(_skTemp0, 0.0, 0.0, 0.0, _skTemp0, 0.0, 0.0, 0.0, _skTemp0);
63*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp2 = mat2x2<f32>(1.0, 0.0, 0.0, 1.0);
64*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp3 = mat3x3<f32>(_skTemp2[0][0], _skTemp2[0][1], 0.0, _skTemp2[1][0], _skTemp2[1][1], 0.0, 0.0, 0.0, 1.0);
65*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp1[0] == _skTemp3[0]) && all(_skTemp1[1] == _skTemp3[1]) && all(_skTemp1[2] == _skTemp3[2]));
66*c8dee2aaSAndroid Build Coastguard Worker    let _skTemp4 = mat3x3<f32>(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, f32(_globalUniforms.unknownInput));
67*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp5 = mat2x2<f32>(9.0, 0.0, 0.0, 9.0);
68*c8dee2aaSAndroid Build Coastguard Worker    const _skTemp6 = mat3x3<f32>(_skTemp5[0][0], _skTemp5[0][1], 0.0, _skTemp5[1][0], _skTemp5[1][1], 0.0, 0.0, 0.0, 1.0);
69*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && (all(_skTemp4[0] == _skTemp6[0]) && all(_skTemp4[1] == _skTemp6[1]) && all(_skTemp4[2] == _skTemp6[2]));
70*c8dee2aaSAndroid Build Coastguard Worker    _0_ok = _0_ok && all(vec4<f32>(_globalUniforms.testMatrix2x2[0], _globalUniforms.testMatrix2x2[1]) == vec4<f32>(1.0, 2.0, 3.0, 4.0));
71*c8dee2aaSAndroid Build Coastguard Worker    {
72*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp7 = mat2x2<f32>(_globalUniforms.testMatrix2x2);
73*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp8 = mat3x3<f32>(mat3x3<f32>(_skTemp7[0][0], _skTemp7[0][1], 0.0, _skTemp7[1][0], _skTemp7[1][1], 0.0, 0.0, 0.0, 1.0));
74*c8dee2aaSAndroid Build Coastguard Worker      _0_ok = _0_ok && all(mat4x4<f32>(_skTemp8[0][0], _skTemp8[0][1], _skTemp8[0][2], 0.0, _skTemp8[1][0], _skTemp8[1][1], _skTemp8[1][2], 0.0, _skTemp8[2][0], _skTemp8[2][1], _skTemp8[2][2], 0.0, 0.0, 0.0, 0.0, 1.0)[0] == vec4<f32>(1.0, 2.0, 0.0, 0.0));
75*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp9 = mat2x2<f32>(_globalUniforms.testMatrix2x2);
76*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp10 = mat3x3<f32>(mat3x3<f32>(_skTemp9[0][0], _skTemp9[0][1], 0.0, _skTemp9[1][0], _skTemp9[1][1], 0.0, 0.0, 0.0, 1.0));
77*c8dee2aaSAndroid Build Coastguard Worker      _0_ok = _0_ok && all(mat4x4<f32>(_skTemp10[0][0], _skTemp10[0][1], _skTemp10[0][2], 0.0, _skTemp10[1][0], _skTemp10[1][1], _skTemp10[1][2], 0.0, _skTemp10[2][0], _skTemp10[2][1], _skTemp10[2][2], 0.0, 0.0, 0.0, 0.0, 1.0)[1] == vec4<f32>(3.0, 4.0, 0.0, 0.0));
78*c8dee2aaSAndroid Build Coastguard Worker    }
79*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp11: vec4<f32>;
80*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp12: bool;
81*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp13: bool;
82*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp14: bool;
83*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp15: bool;
84*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp16: bool;
85*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp17: bool;
86*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp18: bool;
87*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp19: bool;
88*c8dee2aaSAndroid Build Coastguard Worker    if _0_ok {
89*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp20 = test_matrix_op_scalar_float_b();
90*c8dee2aaSAndroid Build Coastguard Worker      _skTemp19 = _skTemp20;
91*c8dee2aaSAndroid Build Coastguard Worker    } else {
92*c8dee2aaSAndroid Build Coastguard Worker      _skTemp19 = false;
93*c8dee2aaSAndroid Build Coastguard Worker    }
94*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp19 {
95*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp21 = test_matrix_op_scalar_half_b();
96*c8dee2aaSAndroid Build Coastguard Worker      _skTemp18 = _skTemp21;
97*c8dee2aaSAndroid Build Coastguard Worker    } else {
98*c8dee2aaSAndroid Build Coastguard Worker      _skTemp18 = false;
99*c8dee2aaSAndroid Build Coastguard Worker    }
100*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp18 {
101*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp22 = test_matrix_op_matrix_float_b();
102*c8dee2aaSAndroid Build Coastguard Worker      _skTemp17 = _skTemp22;
103*c8dee2aaSAndroid Build Coastguard Worker    } else {
104*c8dee2aaSAndroid Build Coastguard Worker      _skTemp17 = false;
105*c8dee2aaSAndroid Build Coastguard Worker    }
106*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp17 {
107*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp23 = test_matrix_op_matrix_half_b();
108*c8dee2aaSAndroid Build Coastguard Worker      _skTemp16 = _skTemp23;
109*c8dee2aaSAndroid Build Coastguard Worker    } else {
110*c8dee2aaSAndroid Build Coastguard Worker      _skTemp16 = false;
111*c8dee2aaSAndroid Build Coastguard Worker    }
112*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp16 {
113*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp24 = test_vector_op_matrix_float_b();
114*c8dee2aaSAndroid Build Coastguard Worker      _skTemp15 = _skTemp24;
115*c8dee2aaSAndroid Build Coastguard Worker    } else {
116*c8dee2aaSAndroid Build Coastguard Worker      _skTemp15 = false;
117*c8dee2aaSAndroid Build Coastguard Worker    }
118*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp15 {
119*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp25 = test_vector_op_matrix_half_b();
120*c8dee2aaSAndroid Build Coastguard Worker      _skTemp14 = _skTemp25;
121*c8dee2aaSAndroid Build Coastguard Worker    } else {
122*c8dee2aaSAndroid Build Coastguard Worker      _skTemp14 = false;
123*c8dee2aaSAndroid Build Coastguard Worker    }
124*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp14 {
125*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp26 = test_matrix_op_vector_float_b();
126*c8dee2aaSAndroid Build Coastguard Worker      _skTemp13 = _skTemp26;
127*c8dee2aaSAndroid Build Coastguard Worker    } else {
128*c8dee2aaSAndroid Build Coastguard Worker      _skTemp13 = false;
129*c8dee2aaSAndroid Build Coastguard Worker    }
130*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp13 {
131*c8dee2aaSAndroid Build Coastguard Worker      let _skTemp27 = test_matrix_op_vector_half_b();
132*c8dee2aaSAndroid Build Coastguard Worker      _skTemp12 = _skTemp27;
133*c8dee2aaSAndroid Build Coastguard Worker    } else {
134*c8dee2aaSAndroid Build Coastguard Worker      _skTemp12 = false;
135*c8dee2aaSAndroid Build Coastguard Worker    }
136*c8dee2aaSAndroid Build Coastguard Worker    if _skTemp12 {
137*c8dee2aaSAndroid Build Coastguard Worker      _skTemp11 = _globalUniforms.colorGreen;
138*c8dee2aaSAndroid Build Coastguard Worker    } else {
139*c8dee2aaSAndroid Build Coastguard Worker      _skTemp11 = _globalUniforms.colorRed;
140*c8dee2aaSAndroid Build Coastguard Worker    }
141*c8dee2aaSAndroid Build Coastguard Worker    return _skTemp11;
142*c8dee2aaSAndroid Build Coastguard Worker  }
143*c8dee2aaSAndroid Build Coastguard Worker}
144*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main(@location(0) _coords: vec2<f32>) -> @location(0) vec4<f32> {
145*c8dee2aaSAndroid Build Coastguard Worker  return _skslMain(_coords);
146*c8dee2aaSAndroid Build Coastguard Worker}
147