xref: /aosp_15_r20/external/skia/tests/sksl/wgsl/OutParams.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  uFloat: f32,
8*c8dee2aaSAndroid Build Coastguard Worker};
9*c8dee2aaSAndroid Build Coastguard Worker@binding(0) @group(0) var<uniform> _globalUniforms: _GlobalUniforms;
10*c8dee2aaSAndroid Build Coastguard Workerfn various_parameter_types_vhhh(_stageOut: ptr<function, FSOut>, a: f32, b: ptr<function, f32>, c: ptr<function, f32>) {
11*c8dee2aaSAndroid Build Coastguard Worker  {
12*c8dee2aaSAndroid Build Coastguard Worker    (*_stageOut).sk_FragColor = vec4<f32>(a, (*b), (*c), _globalUniforms.uFloat);
13*c8dee2aaSAndroid Build Coastguard Worker    (*b) = a;
14*c8dee2aaSAndroid Build Coastguard Worker    (*c) = _globalUniforms.uFloat;
15*c8dee2aaSAndroid Build Coastguard Worker  }
16*c8dee2aaSAndroid Build Coastguard Worker}
17*c8dee2aaSAndroid Build Coastguard Workerfn one_out_param_vh(h: ptr<function, f32>) {
18*c8dee2aaSAndroid Build Coastguard Worker  {
19*c8dee2aaSAndroid Build Coastguard Worker    (*h) = 2.0;
20*c8dee2aaSAndroid Build Coastguard Worker  }
21*c8dee2aaSAndroid Build Coastguard Worker}
22*c8dee2aaSAndroid Build Coastguard Workerfn one_out_param_indirect_vh(h: ptr<function, f32>) {
23*c8dee2aaSAndroid Build Coastguard Worker  {
24*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp0: f32;
25*c8dee2aaSAndroid Build Coastguard Worker    one_out_param_vh(&_skTemp0);
26*c8dee2aaSAndroid Build Coastguard Worker    (*h) = _skTemp0;
27*c8dee2aaSAndroid Build Coastguard Worker  }
28*c8dee2aaSAndroid Build Coastguard Worker}
29*c8dee2aaSAndroid Build Coastguard Workerstruct S {
30*c8dee2aaSAndroid Build Coastguard Worker  v: vec4<f32>,
31*c8dee2aaSAndroid Build Coastguard Worker};
32*c8dee2aaSAndroid Build Coastguard Workerfn _skslMain(_stageOut: ptr<function, FSOut>) {
33*c8dee2aaSAndroid Build Coastguard Worker  {
34*c8dee2aaSAndroid Build Coastguard Worker    var x: f32 = 1.0;
35*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp1: f32;
36*c8dee2aaSAndroid Build Coastguard Worker    one_out_param_vh(&_skTemp1);
37*c8dee2aaSAndroid Build Coastguard Worker    x = _skTemp1;
38*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp2: f32;
39*c8dee2aaSAndroid Build Coastguard Worker    one_out_param_indirect_vh(&_skTemp2);
40*c8dee2aaSAndroid Build Coastguard Worker    x = _skTemp2;
41*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp3: f32;
42*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp4: f32 = x;
43*c8dee2aaSAndroid Build Coastguard Worker    various_parameter_types_vhhh(_stageOut, x + 1.0, &_skTemp3, &_skTemp4);
44*c8dee2aaSAndroid Build Coastguard Worker    x = _skTemp3;
45*c8dee2aaSAndroid Build Coastguard Worker    x = _skTemp4;
46*c8dee2aaSAndroid Build Coastguard Worker    var v: vec4<f32>;
47*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp5: f32;
48*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp6: f32 = v.x;
49*c8dee2aaSAndroid Build Coastguard Worker    various_parameter_types_vhhh(_stageOut, x + 1.0, &_skTemp5, &_skTemp6);
50*c8dee2aaSAndroid Build Coastguard Worker    v.x = _skTemp5;
51*c8dee2aaSAndroid Build Coastguard Worker    v.x = _skTemp6;
52*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp7: f32;
53*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp8: f32 = v.y;
54*c8dee2aaSAndroid Build Coastguard Worker    various_parameter_types_vhhh(_stageOut, x + 1.0, &_skTemp7, &_skTemp8);
55*c8dee2aaSAndroid Build Coastguard Worker    v.y = _skTemp7;
56*c8dee2aaSAndroid Build Coastguard Worker    v.y = _skTemp8;
57*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp9: f32;
58*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp10: f32 = v.y;
59*c8dee2aaSAndroid Build Coastguard Worker    various_parameter_types_vhhh(_stageOut, x + 1.0, &_skTemp9, &_skTemp10);
60*c8dee2aaSAndroid Build Coastguard Worker    v.x = _skTemp9;
61*c8dee2aaSAndroid Build Coastguard Worker    v.y = _skTemp10;
62*c8dee2aaSAndroid Build Coastguard Worker    var s: S;
63*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp11: f32;
64*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp12: f32 = x;
65*c8dee2aaSAndroid Build Coastguard Worker    various_parameter_types_vhhh(_stageOut, x + 1.0, &_skTemp11, &_skTemp12);
66*c8dee2aaSAndroid Build Coastguard Worker    s.v.x = _skTemp11;
67*c8dee2aaSAndroid Build Coastguard Worker    x = _skTemp12;
68*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp13: f32;
69*c8dee2aaSAndroid Build Coastguard Worker    var _skTemp14: f32 = x;
70*c8dee2aaSAndroid Build Coastguard Worker    various_parameter_types_vhhh(_stageOut, x + 1.0, &_skTemp13, &_skTemp14);
71*c8dee2aaSAndroid Build Coastguard Worker    s.v.y = _skTemp13;
72*c8dee2aaSAndroid Build Coastguard Worker    x = _skTemp14;
73*c8dee2aaSAndroid Build Coastguard Worker  }
74*c8dee2aaSAndroid Build Coastguard Worker}
75*c8dee2aaSAndroid Build Coastguard Worker@fragment fn main() -> FSOut {
76*c8dee2aaSAndroid Build Coastguard Worker  var _stageOut: FSOut;
77*c8dee2aaSAndroid Build Coastguard Worker  _skslMain(&_stageOut);
78*c8dee2aaSAndroid Build Coastguard Worker  return _stageOut;
79*c8dee2aaSAndroid Build Coastguard Worker}
80