xref: /aosp_15_r20/external/skia/tests/sksl/shared/ArrayUnsizedParam.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 S {
8    float y;
9};
10struct Inputs {
11};
12struct Outputs {
13    half4 sk_FragColor [[color(0)]];
14};
15struct testStorageBuffer {
16    float testArr[1];
17};
18struct testStorageBufferStruct {
19    S testArrStruct[1];
20};
21struct Globals {
22    const device testStorageBuffer* _anonInterface0;
23    const device testStorageBufferStruct* _anonInterface1;
24};
25float unsizedInParameterA_ff(const device float* x) {
26    return x[0];
27}
28float unsizedInParameterB_fS(const device S* x) {
29    return x[0].y;
30}
31float unsizedInParameterC_ff(const device float* x) {
32    return x[0];
33}
34float unsizedInParameterD_fS(const device S* x) {
35    return x[0].y;
36}
37float unsizedInParameterE_ff(const device float* ) {
38    return 0.0;
39}
40float unsizedInParameterF_fS(const device S* ) {
41    return 0.0;
42}
43half4 getColor_h4f(const device float* arr) {
44    return half4(half(arr[0]), half(arr[1]), half(arr[2]), half(arr[3]));
45}
46half4 getColor_helper_h4f(const device float* arr) {
47    return getColor_h4f(arr);
48}
49fragment Outputs fragmentMain(Inputs _in [[stage_in]], const device testStorageBuffer& _anonInterface0 [[buffer(0)]], const device testStorageBufferStruct& _anonInterface1 [[buffer(1)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
50    Globals _globals{&_anonInterface0, &_anonInterface1};
51    (void)_globals;
52    Outputs _out;
53    (void)_out;
54    _out.sk_FragColor = getColor_helper_h4f(_globals._anonInterface0->testArr);
55    unsizedInParameterA_ff(_globals._anonInterface0->testArr);
56    unsizedInParameterB_fS(_globals._anonInterface1->testArrStruct);
57    unsizedInParameterC_ff(_globals._anonInterface0->testArr);
58    unsizedInParameterD_fS(_globals._anonInterface1->testArrStruct);
59    unsizedInParameterE_ff(_globals._anonInterface0->testArr);
60    unsizedInParameterF_fS(_globals._anonInterface1->testArrStruct);
61    return _out;
62}
63