blob: a6b8eac7d5729186892f6bc07d5b7fab1e54ad53 [file]
//
// compute_main
//
#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
thread uint3* tint_print_invocation_id;
};
void compute_main_inner(uint3 wgid, uint3 tint_symbol, tint_module_vars_struct tint_module_vars) {
(*tint_module_vars.tint_print_invocation_id) = tint_symbol;
int const a = 10;
uint const b = 20u;
float const c = 30.5f;
uint3 const v = (*tint_module_vars.tint_print_invocation_id);
(os_log_default.log("[ comp compute_main:L8 global_invocation_id(%u, %u, %u) ] single: %i", v.x, v.y, v.z, a));
uint3 const v_1 = (*tint_module_vars.tint_print_invocation_id);
(os_log_default.log("[ comp compute_main:L9 global_invocation_id(%u, %u, %u) ] multiple: a=%i, b=%u, c=%f", v_1.x, v_1.y, v_1.z, a, b, c));
uint3 const v_2 = (*tint_module_vars.tint_print_invocation_id);
(os_log_default.log("[ comp compute_main:L10 global_invocation_id(%u, %u, %u) ] expr: %i", v_2.x, v_2.y, v_2.z, as_type<int>((as_type<uint>(a) + 5u))));
uint3 const v_3 = (*tint_module_vars.tint_print_invocation_id);
(os_log_default.log("[ comp compute_main:L11 global_invocation_id(%u, %u, %u) ] adjacent: %i%u", v_3.x, v_3.y, v_3.z, a, b));
uint3 const v_4 = (*tint_module_vars.tint_print_invocation_id);
(os_log_default.log("[ comp compute_main:L12 global_invocation_id(%u, %u, %u) ] percent: 100%% complete: %u", v_4.x, v_4.y, v_4.z, wgid.x));
}
[[max_total_threads_per_threadgroup(1)]]
kernel void compute_main(uint3 wgid [[threadgroup_position_in_grid]], uint3 tint_symbol [[thread_position_in_grid]]) {
thread uint3 tint_print_invocation_id = 0u;
tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tint_print_invocation_id=(&tint_print_invocation_id)};
(compute_main_inner(wgid, tint_symbol, tint_module_vars));
}
//
// fragment_main
//
#include <metal_stdlib>
using namespace metal;
struct tint_module_vars_struct {
thread float3* tint_print_invocation_id;
};
void fragment_main_inner(float4 tint_symbol, tint_module_vars_struct tint_module_vars) {
(*tint_module_vars.tint_print_invocation_id) = tint_symbol.xyz;
float3 const v = (*tint_module_vars.tint_print_invocation_id);
(os_log_default.log("[ frag fragment_main:L17 position(%f, %f, %f) ] frag: %v4hlu", v.x, v.y, v.z, uint4(1u, 2u, 3u, 4u)));
}
fragment void fragment_main(float4 tint_symbol [[position]]) {
thread float3 tint_print_invocation_id = 0.0f;
tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tint_print_invocation_id=(&tint_print_invocation_id)};
(fragment_main_inner(tint_symbol, tint_module_vars));
}
//
// vertex_main
//
#include <metal_stdlib>
using namespace metal;
struct VertexOutput {
float4 pos;
};
struct tint_module_vars_struct {
thread uint2* tint_print_invocation_id;
};
struct vertex_main_outputs {
float4 VertexOutput_pos [[position]];
};
VertexOutput vertex_main_inner(uint tint_symbol, uint tint_symbol_1, tint_module_vars_struct tint_module_vars) {
(*tint_module_vars.tint_print_invocation_id) = uint2(tint_symbol, tint_symbol_1);
VertexOutput out = {};
out.pos = float4(0.0f);
uint2 const v = (*tint_module_vars.tint_print_invocation_id);
(os_log_default.log("[ vert vertex_main:L28 instance=%u, vertex=%u ] vert: %i", v.x, v.y, 42));
return out;
}
vertex vertex_main_outputs vertex_main(uint tint_symbol [[instance_id]], uint tint_symbol_1 [[vertex_id]]) {
thread uint2 tint_print_invocation_id = 0u;
tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tint_print_invocation_id=(&tint_print_invocation_id)};
vertex_main_outputs tint_wrapper_result = {};
tint_wrapper_result.VertexOutput_pos = vertex_main_inner(tint_symbol, tint_symbol_1, tint_module_vars).pos;
return tint_wrapper_result;
}