1#include <metal_stdlib> 2#include <simd/simd.h> 3 4using namespace metal; 5 6struct SSBO3 7{ 8 float4 v; 9}; 10 11struct SSBO0 12{ 13 float4 v; 14}; 15 16struct SSBO1 17{ 18 float4 v; 19}; 20 21struct SSBO2 22{ 23 float4 v; 24}; 25 26constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u); 27 28struct spvDescriptorSetBuffer0 29{ 30 const device SSBO0* ssbo0 [[id(0)]]; 31}; 32 33struct spvDescriptorSetBuffer1 34{ 35 const device SSBO1* ssbo1 [[id(0)]]; 36}; 37 38kernel void main0(constant spvDescriptorSetBuffer0& spvDescriptorSet0 [[buffer(0)]], constant spvDescriptorSetBuffer1& spvDescriptorSet1 [[buffer(1)]], device SSBO3& ssbo3 [[buffer(2)]], const device SSBO2& ssbo2 [[buffer(3)]]) 39{ 40 ssbo3.v = ((*spvDescriptorSet0.ssbo0).v + (*spvDescriptorSet1.ssbo1).v) + ssbo2.v; 41} 42 43