25 lines
874 B
Metal
25 lines
874 B
Metal
#include <metal_stdlib>
|
|
#include <simd/simd.h>
|
|
using namespace metal;
|
|
struct Inputs {
|
|
uint3 sk_GlobalInvocationID;
|
|
};
|
|
struct inputBlock {
|
|
uint offset;
|
|
int src[1];
|
|
};
|
|
struct outputBlock {
|
|
int dest[1];
|
|
};
|
|
struct Globals {
|
|
const device inputBlock* _anonInterface0;
|
|
device outputBlock* _anonInterface1;
|
|
};
|
|
kernel void computeMain(uint3 sk_GlobalInvocationID [[thread_position_in_grid]], const device inputBlock& _anonInterface0 [[buffer(0)]], device outputBlock& _anonInterface1 [[buffer(1)]]) {
|
|
Globals _globals{&_anonInterface0, &_anonInterface1};
|
|
(void)_globals;
|
|
Inputs _in = { sk_GlobalInvocationID };
|
|
_globals._anonInterface1->dest[_in.sk_GlobalInvocationID.x] = _globals._anonInterface0->src[_in.sk_GlobalInvocationID.x] + _globals._anonInterface0->src[_in.sk_GlobalInvocationID.x + _globals._anonInterface0->offset];
|
|
return;
|
|
}
|