blob: af7bad4f5af7741ecba5bd46e453fcf7ce962470 [file] [log] [blame]
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +00001#include <metal_stdlib>
Zhaoming Jiang9443ceb2022-08-05 15:15:17 +00002
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +00003using namespace metal;
Zhaoming Jiang9443ceb2022-08-05 15:15:17 +00004
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +00005template<typename T, size_t N>
6struct 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 Claytondd050a52024-02-29 16:00:20 +000017struct TintArrayLengths {
18 /* 0x0000 */ tint_array<uint4, 1> array_lengths;
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +000019};
20
Zhaoming Jiang9443ceb2022-08-05 15:15:17 +000021struct SB_RO {
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +000022 tint_array<half, 1> arg_0;
23};
Zhaoming Jiang9443ceb2022-08-05 15:15:17 +000024
Natalie Chouinarde9027182024-06-13 18:50:19 +000025uint arrayLength_8421b9(const constant TintArrayLengths* const tint_symbol_1) {
Ben Claytondd050a52024-02-29 16:00:20 +000026 uint res = (((*(tint_symbol_1)).array_lengths[0u][0u] - 0u) / 2u);
Natalie Chouinarde9027182024-06-13 18:50:19 +000027 return res;
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +000028}
29
Natalie Chouinarde9027182024-06-13 18:50:19 +000030fragment 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
35kernel 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
40struct VertexOutput {
41 float4 pos;
42 uint prevent_dce;
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +000043};
44
Natalie Chouinarde9027182024-06-13 18:50:19 +000045struct tint_symbol {
46 uint prevent_dce [[user(locn0)]] [[flat]];
47 float4 pos [[position]];
48};
49
50VertexOutput 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 Jiangab9b5f32022-11-24 05:25:35 +000055}
56
Natalie Chouinarde9027182024-06-13 18:50:19 +000057vertex tint_symbol vertex_main(const constant TintArrayLengths* tint_symbol_7 [[buffer(30)]]) {
58 VertexOutput const inner_result = vertex_main_inner(tint_symbol_7);
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +000059 tint_symbol wrapper_result = {};
Natalie Chouinarde9027182024-06-13 18:50:19 +000060 wrapper_result.pos = inner_result.pos;
61 wrapper_result.prevent_dce = inner_result.prevent_dce;
Zhaoming Jiangab9b5f32022-11-24 05:25:35 +000062 return wrapper_result;
63}
64