yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Yong HeLower varying parameters as pointers instead of SSA values. (#5919)c43f6fa55

master
934 B42 linesraw
1// array-uniform-param.slang
2
3//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry computeMain -stage compute -emit-spirv-directly -force-glsl-scalar-layout
4//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=BUFFER):-vk -compute -output-using-type
5
6// CHECK: OpEntryPoint
7
8// Test direct SPIR-V emit on arrays in uniforms.
9
10//TEST_INPUT:set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4)
11RWStructuredBuffer<uint> resultBuffer;
12
13struct Data
14{
15    uint arr[4];
16}
17
18struct Data2
19{
20    uint arr[4u];
21}
22
23//TEST_INPUT: set Uniforms.d = new Data{{1,2,3,4}};
24//TEST_INPUT: set Uniforms.d2 = new Data2{{1,2,3,4}};
25
26cbuffer Uniforms
27{
28    Data d;
29    Data2 d2;
30}
31
32// BUFFER: 3
33
34[numthreads(4,1,1)]
35void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
36{
37    uint threadId = dispatchThreadID.x;
38    uint result = d.arr[1];
39    var u2 = reinterpret<Data>(d2);
40    result += u2.arr[0];
41    resultBuffer[threadId] = result;
42}