xref: /aosp_15_r20/external/skia/tests/sksl/shared/InoutParameters.metal (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1#include <metal_stdlib>
2#include <simd/simd.h>
3#ifdef __clang__
4#pragma clang diagnostic ignored "-Wall"
5#endif
6using namespace metal;
7struct Uniforms {
8    half4 colorGreen;
9};
10struct Inputs {
11};
12struct Outputs {
13    half4 sk_FragColor [[color(0)]];
14};
15void outParameterWrite_vh4(Uniforms _uniforms, thread half4& x) {
16    x = _uniforms.colorGreen;
17}
18void outParameterWriteIndirect_vh4(Uniforms _uniforms, thread half4& c) {
19    half4 _skTemp0;
20    ((outParameterWrite_vh4(_uniforms, _skTemp0)), (c = _skTemp0));
21}
22void inoutParameterWrite_vh4(thread half4& x) {
23    x *= x;
24}
25void inoutParameterWriteIndirect_vh4(thread half4& x) {
26    half4 _skTemp1;
27    ((inoutParameterWrite_vh4((_skTemp1 = x))), (x = _skTemp1));
28}
29fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
30    Outputs _out;
31    (void)_out;
32    half4 _skTemp2;
33    half4 _skTemp3;
34    half4 _skTemp4;
35    half4 _skTemp5;
36    half4 c;
37    ((outParameterWrite_vh4(_uniforms, _skTemp2)), (c = _skTemp2));
38    ((outParameterWriteIndirect_vh4(_uniforms, _skTemp3)), (c = _skTemp3));
39    ((inoutParameterWrite_vh4((_skTemp4 = c))), (c = _skTemp4));
40    ((inoutParameterWriteIndirect_vh4((_skTemp5 = c))), (c = _skTemp5));
41    _out.sk_FragColor = c;
42    return _out;
43}
44