Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 1 | #include <metal_stdlib> |
Zhaoming Jiang | 9443ceb | 2022-08-05 15:15:17 +0000 | [diff] [blame] | 2 | |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 3 | using namespace metal; |
Zhaoming Jiang | 9443ceb | 2022-08-05 15:15:17 +0000 | [diff] [blame] | 4 | |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 5 | template<typename T, size_t N> |
| 6 | struct tint_array { |
| 7 | const constant T& operator[](size_t i) const constant { return elements[i]; } |
| 8 | device T& operator[](size_t i) device { return elements[i]; } |
| 9 | const device T& operator[](size_t i) const device { return elements[i]; } |
| 10 | thread T& operator[](size_t i) thread { return elements[i]; } |
| 11 | const thread T& operator[](size_t i) const thread { return elements[i]; } |
| 12 | threadgroup T& operator[](size_t i) threadgroup { return elements[i]; } |
| 13 | const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; } |
| 14 | T elements[N]; |
| 15 | }; |
| 16 | |
Ben Clayton | dd050a5 | 2024-02-29 16:00:20 +0000 | [diff] [blame] | 17 | struct TintArrayLengths { |
| 18 | /* 0x0000 */ tint_array<uint4, 1> array_lengths; |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 19 | }; |
| 20 | |
Zhaoming Jiang | 9443ceb | 2022-08-05 15:15:17 +0000 | [diff] [blame] | 21 | struct SB_RO { |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 22 | tint_array<half, 1> arg_0; |
| 23 | }; |
Zhaoming Jiang | 9443ceb | 2022-08-05 15:15:17 +0000 | [diff] [blame] | 24 | |
Natalie Chouinard | e902718 | 2024-06-13 18:50:19 +0000 | [diff] [blame] | 25 | uint arrayLength_8421b9(const constant TintArrayLengths* const tint_symbol_1) { |
Ben Clayton | dd050a5 | 2024-02-29 16:00:20 +0000 | [diff] [blame] | 26 | uint res = (((*(tint_symbol_1)).array_lengths[0u][0u] - 0u) / 2u); |
Natalie Chouinard | e902718 | 2024-06-13 18:50:19 +0000 | [diff] [blame] | 27 | return res; |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 28 | } |
| 29 | |
Natalie Chouinard | e902718 | 2024-06-13 18:50:19 +0000 | [diff] [blame] | 30 | fragment void fragment_main(device uint* tint_symbol_2 [[buffer(0)]], const constant TintArrayLengths* tint_symbol_3 [[buffer(30)]]) { |
| 31 | *(tint_symbol_2) = arrayLength_8421b9(tint_symbol_3); |
| 32 | return; |
| 33 | } |
| 34 | |
| 35 | kernel void compute_main(device uint* tint_symbol_4 [[buffer(0)]], const constant TintArrayLengths* tint_symbol_5 [[buffer(30)]]) { |
| 36 | *(tint_symbol_4) = arrayLength_8421b9(tint_symbol_5); |
| 37 | return; |
| 38 | } |
| 39 | |
| 40 | struct VertexOutput { |
| 41 | float4 pos; |
| 42 | uint prevent_dce; |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 43 | }; |
| 44 | |
Natalie Chouinard | e902718 | 2024-06-13 18:50:19 +0000 | [diff] [blame] | 45 | struct tint_symbol { |
| 46 | uint prevent_dce [[user(locn0)]] [[flat]]; |
| 47 | float4 pos [[position]]; |
| 48 | }; |
| 49 | |
| 50 | VertexOutput vertex_main_inner(const constant TintArrayLengths* const tint_symbol_6) { |
| 51 | VertexOutput out = {}; |
| 52 | out.pos = float4(0.0f); |
| 53 | out.prevent_dce = arrayLength_8421b9(tint_symbol_6); |
| 54 | return out; |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 55 | } |
| 56 | |
Natalie Chouinard | e902718 | 2024-06-13 18:50:19 +0000 | [diff] [blame] | 57 | vertex tint_symbol vertex_main(const constant TintArrayLengths* tint_symbol_7 [[buffer(30)]]) { |
| 58 | VertexOutput const inner_result = vertex_main_inner(tint_symbol_7); |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 59 | tint_symbol wrapper_result = {}; |
Natalie Chouinard | e902718 | 2024-06-13 18:50:19 +0000 | [diff] [blame] | 60 | wrapper_result.pos = inner_result.pos; |
| 61 | wrapper_result.prevent_dce = inner_result.prevent_dce; |
Zhaoming Jiang | ab9b5f3 | 2022-11-24 05:25:35 +0000 | [diff] [blame] | 62 | return wrapper_result; |
| 63 | } |
| 64 | |