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