yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
da951e06e
master
1//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-vk -compute -shaderobj 2//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-d3d12 -compute -shaderobj 3//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHECK):-wgpu -compute -shaderobj 4 5//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer 6RWStructuredBuffer<int> outputBuffer; 7 8//TEST_INPUT:ubuffer(data=[7 2 9 53], stride=4):name buffer0 9RWStructuredBuffer<int> buffer0; 10 11//TEST_INPUT:ubuffer(data=[23 2], stride=4):name buffer1 12RWStructuredBuffer<int> buffer1; 13 14//TEST_INPUT:ubuffer(data=[-10 17 9 4 2 0], stride=4):name buffer2 15RWStructuredBuffer<float> buffer2; 16 17//TEST_INPUT:ubuffer(data=[-10 17 9 4 2 0], stride=4):name buffer3 18RWStructuredBuffer<float> buffer3; 19 20[shader("compute")] 21[numthreads(4, 1, 1)] 22void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 23{ 24 int index = int(dispatchThreadID.x); 25 uint count = 0; 26 uint stride = 0; 27 28 if (index == 0) 29 { 30 // CHECK: 4 31 buffer0.GetDimensions(count, stride); 32 } 33 else if (index == 1) 34 { 35 // CHECK: 4 36 buffer1.GetDimensions(count, stride); 37 } 38 else if (index == 2) 39 { 40 // CHECK: 4 41 buffer2.GetDimensions(count, stride); 42 } 43 else if (index == 3) 44 { 45 // CHECK: 4 46 buffer3.GetDimensions(count, stride); 47 } 48 49 outputBuffer[index] = int(stride); 50}