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