xref: /aosp_15_r20/external/skia/tests/sksl/metal/OutParams.metal (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker#include <metal_stdlib>
2*c8dee2aaSAndroid Build Coastguard Worker#include <simd/simd.h>
3*c8dee2aaSAndroid Build Coastguard Worker#ifdef __clang__
4*c8dee2aaSAndroid Build Coastguard Worker#pragma clang diagnostic ignored "-Wall"
5*c8dee2aaSAndroid Build Coastguard Worker#endif
6*c8dee2aaSAndroid Build Coastguard Workerusing namespace metal;
7*c8dee2aaSAndroid Build Coastguard Workerstruct Inputs {
8*c8dee2aaSAndroid Build Coastguard Worker};
9*c8dee2aaSAndroid Build Coastguard Workerstruct Outputs {
10*c8dee2aaSAndroid Build Coastguard Worker    half4 sk_FragColor [[color(0)]];
11*c8dee2aaSAndroid Build Coastguard Worker};
12*c8dee2aaSAndroid Build Coastguard Workervoid out_half_vh(thread half& v) {
13*c8dee2aaSAndroid Build Coastguard Worker    v = 1.0h;
14*c8dee2aaSAndroid Build Coastguard Worker}
15*c8dee2aaSAndroid Build Coastguard Workervoid out_half2_vh2(thread half2& v) {
16*c8dee2aaSAndroid Build Coastguard Worker    v = half2(2.0h);
17*c8dee2aaSAndroid Build Coastguard Worker}
18*c8dee2aaSAndroid Build Coastguard Workervoid out_half3_vh3(thread half3& v) {
19*c8dee2aaSAndroid Build Coastguard Worker    v = half3(3.0h);
20*c8dee2aaSAndroid Build Coastguard Worker}
21*c8dee2aaSAndroid Build Coastguard Workervoid out_half4_vh4(thread half4& v) {
22*c8dee2aaSAndroid Build Coastguard Worker    v = half4(4.0h);
23*c8dee2aaSAndroid Build Coastguard Worker}
24*c8dee2aaSAndroid Build Coastguard Workervoid out_half2x2_vh22(thread half2x2& v) {
25*c8dee2aaSAndroid Build Coastguard Worker    v = half2x2(2.0h);
26*c8dee2aaSAndroid Build Coastguard Worker}
27*c8dee2aaSAndroid Build Coastguard Workervoid out_half3x3_vh33(thread half3x3& v) {
28*c8dee2aaSAndroid Build Coastguard Worker    v = half3x3(3.0h);
29*c8dee2aaSAndroid Build Coastguard Worker}
30*c8dee2aaSAndroid Build Coastguard Workervoid out_half4x4_vh44(thread half4x4& v) {
31*c8dee2aaSAndroid Build Coastguard Worker    v = half4x4(4.0h);
32*c8dee2aaSAndroid Build Coastguard Worker}
33*c8dee2aaSAndroid Build Coastguard Workervoid out_int_vi(thread int& v) {
34*c8dee2aaSAndroid Build Coastguard Worker    v = 1;
35*c8dee2aaSAndroid Build Coastguard Worker}
36*c8dee2aaSAndroid Build Coastguard Workervoid out_int2_vi2(thread int2& v) {
37*c8dee2aaSAndroid Build Coastguard Worker    v = int2(2);
38*c8dee2aaSAndroid Build Coastguard Worker}
39*c8dee2aaSAndroid Build Coastguard Workervoid out_int3_vi3(thread int3& v) {
40*c8dee2aaSAndroid Build Coastguard Worker    v = int3(3);
41*c8dee2aaSAndroid Build Coastguard Worker}
42*c8dee2aaSAndroid Build Coastguard Workervoid out_int4_vi4(thread int4& v) {
43*c8dee2aaSAndroid Build Coastguard Worker    v = int4(4);
44*c8dee2aaSAndroid Build Coastguard Worker}
45*c8dee2aaSAndroid Build Coastguard Workervoid out_float_vf(thread float& v) {
46*c8dee2aaSAndroid Build Coastguard Worker    v = 1.0;
47*c8dee2aaSAndroid Build Coastguard Worker}
48*c8dee2aaSAndroid Build Coastguard Workervoid out_float2_vf2(thread float2& v) {
49*c8dee2aaSAndroid Build Coastguard Worker    v = float2(2.0);
50*c8dee2aaSAndroid Build Coastguard Worker}
51*c8dee2aaSAndroid Build Coastguard Workervoid out_float3_vf3(thread float3& v) {
52*c8dee2aaSAndroid Build Coastguard Worker    v = float3(3.0);
53*c8dee2aaSAndroid Build Coastguard Worker}
54*c8dee2aaSAndroid Build Coastguard Workervoid out_float4_vf4(thread float4& v) {
55*c8dee2aaSAndroid Build Coastguard Worker    v = float4(4.0);
56*c8dee2aaSAndroid Build Coastguard Worker}
57*c8dee2aaSAndroid Build Coastguard Workervoid out_float2x2_vf22(thread float2x2& v) {
58*c8dee2aaSAndroid Build Coastguard Worker    v = float2x2(2.0);
59*c8dee2aaSAndroid Build Coastguard Worker}
60*c8dee2aaSAndroid Build Coastguard Workervoid out_float3x3_vf33(thread float3x3& v) {
61*c8dee2aaSAndroid Build Coastguard Worker    v = float3x3(3.0);
62*c8dee2aaSAndroid Build Coastguard Worker}
63*c8dee2aaSAndroid Build Coastguard Workervoid out_float4x4_vf44(thread float4x4& v) {
64*c8dee2aaSAndroid Build Coastguard Worker    v = float4x4(4.0);
65*c8dee2aaSAndroid Build Coastguard Worker}
66*c8dee2aaSAndroid Build Coastguard Workervoid out_bool_vb(thread bool& v) {
67*c8dee2aaSAndroid Build Coastguard Worker    v = true;
68*c8dee2aaSAndroid Build Coastguard Worker}
69*c8dee2aaSAndroid Build Coastguard Workervoid out_bool2_vb2(thread bool2& v) {
70*c8dee2aaSAndroid Build Coastguard Worker    v = bool2(false);
71*c8dee2aaSAndroid Build Coastguard Worker}
72*c8dee2aaSAndroid Build Coastguard Workervoid out_bool3_vb3(thread bool3& v) {
73*c8dee2aaSAndroid Build Coastguard Worker    v = bool3(true);
74*c8dee2aaSAndroid Build Coastguard Worker}
75*c8dee2aaSAndroid Build Coastguard Workervoid out_bool4_vb4(thread bool4& v) {
76*c8dee2aaSAndroid Build Coastguard Worker    v = bool4(false);
77*c8dee2aaSAndroid Build Coastguard Worker}
78*c8dee2aaSAndroid Build Coastguard Workervoid out_pair_vhh(thread half& v1, thread half& v2) {
79*c8dee2aaSAndroid Build Coastguard Worker    v1 = 1.0h;
80*c8dee2aaSAndroid Build Coastguard Worker    v2 = 2.0h;
81*c8dee2aaSAndroid Build Coastguard Worker}
82*c8dee2aaSAndroid Build Coastguard Workerfragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
83*c8dee2aaSAndroid Build Coastguard Worker    Outputs _out;
84*c8dee2aaSAndroid Build Coastguard Worker    (void)_out;
85*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp0;
86*c8dee2aaSAndroid Build Coastguard Worker    half2 _skTemp1;
87*c8dee2aaSAndroid Build Coastguard Worker    half3 _skTemp2;
88*c8dee2aaSAndroid Build Coastguard Worker    half4 _skTemp3;
89*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp4;
90*c8dee2aaSAndroid Build Coastguard Worker    half2 _skTemp5;
91*c8dee2aaSAndroid Build Coastguard Worker    half4 _skTemp6;
92*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp7;
93*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp8;
94*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp9;
95*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp10;
96*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp11;
97*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp12;
98*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp13;
99*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp14;
100*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp15;
101*c8dee2aaSAndroid Build Coastguard Worker    half _skTemp16;
102*c8dee2aaSAndroid Build Coastguard Worker    half2x2 _skTemp17;
103*c8dee2aaSAndroid Build Coastguard Worker    half3x3 _skTemp18;
104*c8dee2aaSAndroid Build Coastguard Worker    half4x4 _skTemp19;
105*c8dee2aaSAndroid Build Coastguard Worker    half3 _skTemp20;
106*c8dee2aaSAndroid Build Coastguard Worker    half4 _skTemp21;
107*c8dee2aaSAndroid Build Coastguard Worker    half2 _skTemp22;
108*c8dee2aaSAndroid Build Coastguard Worker    int _skTemp23;
109*c8dee2aaSAndroid Build Coastguard Worker    int2 _skTemp24;
110*c8dee2aaSAndroid Build Coastguard Worker    int3 _skTemp25;
111*c8dee2aaSAndroid Build Coastguard Worker    int4 _skTemp26;
112*c8dee2aaSAndroid Build Coastguard Worker    int3 _skTemp27;
113*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp28;
114*c8dee2aaSAndroid Build Coastguard Worker    float2 _skTemp29;
115*c8dee2aaSAndroid Build Coastguard Worker    float3 _skTemp30;
116*c8dee2aaSAndroid Build Coastguard Worker    float4 _skTemp31;
117*c8dee2aaSAndroid Build Coastguard Worker    float2 _skTemp32;
118*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp33;
119*c8dee2aaSAndroid Build Coastguard Worker    float2x2 _skTemp34;
120*c8dee2aaSAndroid Build Coastguard Worker    float3x3 _skTemp35;
121*c8dee2aaSAndroid Build Coastguard Worker    float4x4 _skTemp36;
122*c8dee2aaSAndroid Build Coastguard Worker    float _skTemp37;
123*c8dee2aaSAndroid Build Coastguard Worker    float4 _skTemp38;
124*c8dee2aaSAndroid Build Coastguard Worker    bool _skTemp39;
125*c8dee2aaSAndroid Build Coastguard Worker    bool2 _skTemp40;
126*c8dee2aaSAndroid Build Coastguard Worker    bool3 _skTemp41;
127*c8dee2aaSAndroid Build Coastguard Worker    bool4 _skTemp42;
128*c8dee2aaSAndroid Build Coastguard Worker    bool2 _skTemp43;
129*c8dee2aaSAndroid Build Coastguard Worker    bool _skTemp44;
130*c8dee2aaSAndroid Build Coastguard Worker    half h;
131*c8dee2aaSAndroid Build Coastguard Worker    ((out_half_vh(_skTemp0)), (h = _skTemp0));
132*c8dee2aaSAndroid Build Coastguard Worker    half2 h2;
133*c8dee2aaSAndroid Build Coastguard Worker    ((out_half2_vh2(_skTemp1)), (h2 = _skTemp1));
134*c8dee2aaSAndroid Build Coastguard Worker    half3 h3;
135*c8dee2aaSAndroid Build Coastguard Worker    ((out_half3_vh3(_skTemp2)), (h3 = _skTemp2));
136*c8dee2aaSAndroid Build Coastguard Worker    half4 h4;
137*c8dee2aaSAndroid Build Coastguard Worker    ((out_half4_vh4(_skTemp3)), (h4 = _skTemp3));
138*c8dee2aaSAndroid Build Coastguard Worker    ((out_half_vh(_skTemp4)), (h3.y = _skTemp4));
139*c8dee2aaSAndroid Build Coastguard Worker    ((out_half2_vh2(_skTemp5)), (h3.xz = _skTemp5));
140*c8dee2aaSAndroid Build Coastguard Worker    ((out_half4_vh4(_skTemp6)), (h4.zwxy = _skTemp6));
141*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor = half4(h, h2.x, h3.x, h4.x);
142*c8dee2aaSAndroid Build Coastguard Worker    half h1;
143*c8dee2aaSAndroid Build Coastguard Worker    ((out_pair_vhh(_skTemp7, _skTemp8)), (h = _skTemp7), (h1 = _skTemp8));
144*c8dee2aaSAndroid Build Coastguard Worker    ((out_pair_vhh(_skTemp9, _skTemp10)), (h = _skTemp9), (h = _skTemp10));
145*c8dee2aaSAndroid Build Coastguard Worker    ((out_pair_vhh(_skTemp11, _skTemp12)), (h2.x = _skTemp11), (h2.y = _skTemp12));
146*c8dee2aaSAndroid Build Coastguard Worker    ((out_pair_vhh(_skTemp13, _skTemp14)), (h2.x = _skTemp13), (h2.x = _skTemp14));
147*c8dee2aaSAndroid Build Coastguard Worker    ((out_pair_vhh(_skTemp15, _skTemp16)), (h2.x = _skTemp15), (h3.x = _skTemp16));
148*c8dee2aaSAndroid Build Coastguard Worker    half2x2 h2x2;
149*c8dee2aaSAndroid Build Coastguard Worker    ((out_half2x2_vh22(_skTemp17)), (h2x2 = _skTemp17));
150*c8dee2aaSAndroid Build Coastguard Worker    half3x3 h3x3;
151*c8dee2aaSAndroid Build Coastguard Worker    ((out_half3x3_vh33(_skTemp18)), (h3x3 = _skTemp18));
152*c8dee2aaSAndroid Build Coastguard Worker    half4x4 h4x4;
153*c8dee2aaSAndroid Build Coastguard Worker    ((out_half4x4_vh44(_skTemp19)), (h4x4 = _skTemp19));
154*c8dee2aaSAndroid Build Coastguard Worker    ((out_half3_vh3(_skTemp20)), (h3x3[1] = _skTemp20));
155*c8dee2aaSAndroid Build Coastguard Worker    ((out_half4_vh4(_skTemp21)), (h4x4[3].zwxy = _skTemp21));
156*c8dee2aaSAndroid Build Coastguard Worker    ((out_half2_vh2(_skTemp22)), (h2x2[0] = _skTemp22));
157*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor = half4(h2x2[0].x, h3x3[0].x, h4x4[0].x, 1.0h);
158*c8dee2aaSAndroid Build Coastguard Worker    int i;
159*c8dee2aaSAndroid Build Coastguard Worker    ((out_int_vi(_skTemp23)), (i = _skTemp23));
160*c8dee2aaSAndroid Build Coastguard Worker    int2 i2;
161*c8dee2aaSAndroid Build Coastguard Worker    ((out_int2_vi2(_skTemp24)), (i2 = _skTemp24));
162*c8dee2aaSAndroid Build Coastguard Worker    int3 i3;
163*c8dee2aaSAndroid Build Coastguard Worker    ((out_int3_vi3(_skTemp25)), (i3 = _skTemp25));
164*c8dee2aaSAndroid Build Coastguard Worker    int4 i4;
165*c8dee2aaSAndroid Build Coastguard Worker    ((out_int4_vi4(_skTemp26)), (i4 = _skTemp26));
166*c8dee2aaSAndroid Build Coastguard Worker    ((out_int3_vi3(_skTemp27)), (i4.xyz = _skTemp27));
167*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor = half4(half(i), half(i2.x), half(i3.x), half(i4.x));
168*c8dee2aaSAndroid Build Coastguard Worker    float f;
169*c8dee2aaSAndroid Build Coastguard Worker    ((out_float_vf(_skTemp28)), (f = _skTemp28));
170*c8dee2aaSAndroid Build Coastguard Worker    float2 f2;
171*c8dee2aaSAndroid Build Coastguard Worker    ((out_float2_vf2(_skTemp29)), (f2 = _skTemp29));
172*c8dee2aaSAndroid Build Coastguard Worker    float3 f3;
173*c8dee2aaSAndroid Build Coastguard Worker    ((out_float3_vf3(_skTemp30)), (f3 = _skTemp30));
174*c8dee2aaSAndroid Build Coastguard Worker    float4 f4;
175*c8dee2aaSAndroid Build Coastguard Worker    ((out_float4_vf4(_skTemp31)), (f4 = _skTemp31));
176*c8dee2aaSAndroid Build Coastguard Worker    ((out_float2_vf2(_skTemp32)), (f3.xy = _skTemp32));
177*c8dee2aaSAndroid Build Coastguard Worker    ((out_float_vf(_skTemp33)), (f2.x = _skTemp33));
178*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor = half4(half(f), half(f2.x), half(f3.x), half(f4.x));
179*c8dee2aaSAndroid Build Coastguard Worker    float2x2 f2x2;
180*c8dee2aaSAndroid Build Coastguard Worker    ((out_float2x2_vf22(_skTemp34)), (f2x2 = _skTemp34));
181*c8dee2aaSAndroid Build Coastguard Worker    float3x3 f3x3;
182*c8dee2aaSAndroid Build Coastguard Worker    ((out_float3x3_vf33(_skTemp35)), (f3x3 = _skTemp35));
183*c8dee2aaSAndroid Build Coastguard Worker    float4x4 f4x4;
184*c8dee2aaSAndroid Build Coastguard Worker    ((out_float4x4_vf44(_skTemp36)), (f4x4 = _skTemp36));
185*c8dee2aaSAndroid Build Coastguard Worker    ((out_float_vf(_skTemp37)), (f2x2[0].x = _skTemp37));
186*c8dee2aaSAndroid Build Coastguard Worker    ((out_float4_vf4(_skTemp38)), (f4x4[1] = _skTemp38));
187*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor = half4(half(f2x2[0].x), half(f3x3[0].x), half(f4x4[0].x), 1.0h);
188*c8dee2aaSAndroid Build Coastguard Worker    bool b;
189*c8dee2aaSAndroid Build Coastguard Worker    ((out_bool_vb(_skTemp39)), (b = _skTemp39));
190*c8dee2aaSAndroid Build Coastguard Worker    bool2 b2;
191*c8dee2aaSAndroid Build Coastguard Worker    ((out_bool2_vb2(_skTemp40)), (b2 = _skTemp40));
192*c8dee2aaSAndroid Build Coastguard Worker    bool3 b3;
193*c8dee2aaSAndroid Build Coastguard Worker    ((out_bool3_vb3(_skTemp41)), (b3 = _skTemp41));
194*c8dee2aaSAndroid Build Coastguard Worker    bool4 b4;
195*c8dee2aaSAndroid Build Coastguard Worker    ((out_bool4_vb4(_skTemp42)), (b4 = _skTemp42));
196*c8dee2aaSAndroid Build Coastguard Worker    ((out_bool2_vb2(_skTemp43)), (b4.xw = _skTemp43));
197*c8dee2aaSAndroid Build Coastguard Worker    ((out_bool_vb(_skTemp44)), (b3.z = _skTemp44));
198*c8dee2aaSAndroid Build Coastguard Worker    _out.sk_FragColor = half4(half(b), half(b2.x), half(b3.x), half(b4.x));
199*c8dee2aaSAndroid Build Coastguard Worker    return _out;
200*c8dee2aaSAndroid Build Coastguard Worker}
201