1#pragma clang diagnostic ignored "-Wmissing-prototypes" 2 3#include <metal_stdlib> 4#include <simd/simd.h> 5 6using namespace metal; 7 8struct storage_block 9{ 10 uint4 baz; 11 int2 quux; 12}; 13 14struct constant_block 15{ 16 float4 foo; 17 int bar; 18}; 19 20#ifndef SPIRV_CROSS_CONSTANT_ID_0 21#define SPIRV_CROSS_CONSTANT_ID_0 3 22#endif 23constant int arraySize = SPIRV_CROSS_CONSTANT_ID_0; 24 25void doWork(device storage_block* (&storage)[2], constant constant_block* (&constants)[4], thread const array<texture2d<int>, 3> images) 26{ 27 storage[0]->baz = uint4(constants[3]->foo); 28 storage[1]->quux = images[2].read(uint2(int2(constants[1]->bar))).xy; 29} 30 31vertex void main0(device storage_block* storage_0 [[buffer(0)]], device storage_block* storage_1 [[buffer(1)]], constant constant_block* constants_0 [[buffer(2)]], constant constant_block* constants_1 [[buffer(3)]], constant constant_block* constants_2 [[buffer(4)]], constant constant_block* constants_3 [[buffer(5)]], array<texture2d<int>, 3> images [[texture(0)]]) 32{ 33 device storage_block* storage[] = 34 { 35 storage_0, 36 storage_1, 37 }; 38 39 constant constant_block* constants[] = 40 { 41 constants_0, 42 constants_1, 43 constants_2, 44 constants_3, 45 }; 46 47 doWork(storage, constants, images); 48} 49 50