yum-mirror/slang

Making it easier to work with shaders

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

Tim FoleyConvert more tests to use shader objects (#1659)2a5d5b323

master
1.3 KiB71 linesraw
1//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
2// Test emitting logic of pointer types.
3
4
5struct Something
6{
7	int4 field0;
8	int field1;
9};
10
11struct ArrayType
12{
13	Something data[2];
14};
15
16ArrayType getArray()
17{
18	ArrayType rs;
19	rs.data[0].field0 = int4(1,2,3,4);
20	rs.data[0].field1 = 1;
21	rs.data[1].field0 = int4(2,3,4,5);
22	rs.data[1].field1 = 2;
23	return rs;
24}
25
26int inoutFunc(in out int param, 
27			  int[2] arrayParam,
28			  out int[2] arrayOut,
29			  Something s0,
30			  out Something s1)
31{
32    int v = 1;
33    param = v + 1;
34
35	arrayOut[0] = arrayParam[0];
36	arrayOut[1] = arrayParam[1];
37
38	s1.field1 = s0.field1 + 1;
39
40    return param;
41}
42
43static int globalVar = 1;
44
45int test(int inVal)
46{
47    int p = inVal;
48	int t1[2] = {1, 2};
49	int t2[2] = {0, 0};
50	Something s, s_out;
51	s.field1 = -1;
52	s.field1 = s.field1 - 1;
53	s.field0[0] = 1;
54	int4 localVector = int4(1,2,3,4);
55	localVector.x = 2;
56	var array = getArray();
57	return inoutFunc(p, t1, t2, s, s_out) + t2[0] + s_out.field1 +
58		s.field0[0] + localVector.x + array.data[1].field1 + globalVar;
59}
60
61//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):out,name=outputBuffer
62RWStructuredBuffer<int> outputBuffer : register(u0);
63
64[numthreads(4, 1, 1)]
65void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
66{
67	uint tid = dispatchThreadID.x;
68	int inVal = outputBuffer[tid];
69	int outVal = test(inVal);
70	outputBuffer[tid] = outVal;
71}