yum-mirror/slang

Making it easier to work with shaders

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

James Helferty (NVIDIA)render-test: Change D3D12 default to sm_6_5 (#8320)f02b08490

master
2.0 KiB68 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -dx12 -output-using-type
2//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -output-using-type
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cuda -output-using-type
4//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -metal -output-using-type
5//TEST:SIMPLE(filecheck=METALLIB): -target metallib -entry computeMain -stage compute
6
7// METALLIB: computeMain
8
9//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
10RWStructuredBuffer<int> outputBuffer;
11
12//TEST_INPUT:set bbuffer = ubuffer(data=[0 0 0 0])
13RWByteAddressBuffer bbuffer;
14
15[numthreads(1, 1, 1)]
16void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
17{
18    uint originalValue;
19    bbuffer.InterlockedAdd(0, 1);
20
21    bbuffer.InterlockedAdd(0, 1, originalValue);
22    outputBuffer[4] = originalValue;
23
24    bbuffer.InterlockedMax(0, 3);
25    bbuffer.InterlockedMax(0, 4, originalValue);
26    outputBuffer[5] = originalValue;
27
28    bbuffer.InterlockedMin(0, 2);
29    bbuffer.InterlockedMin(0, 2, originalValue);
30    outputBuffer[6] = originalValue;
31
32    bbuffer.InterlockedOr(0, 1);
33    bbuffer.InterlockedOr(0, 1, originalValue);
34    outputBuffer[7] = originalValue;
35
36    bbuffer.InterlockedXor(0, 4);
37    bbuffer.InterlockedXor(0, 4, originalValue);
38    outputBuffer[8] = originalValue;
39
40    bbuffer.InterlockedAnd(0, 7);
41    bbuffer.InterlockedAnd(0, 7, originalValue);
42    outputBuffer[9] = originalValue;
43
44    bbuffer.InterlockedCompareExchange(4, 0, 1, originalValue);
45    outputBuffer[10] = originalValue;
46
47    bbuffer.InterlockedExchange(8, 3, originalValue);
48    outputBuffer[11] = originalValue;
49
50    bbuffer.InterlockedCompareStore(12, 0, 3);
51
52    // CHECK: 3
53    // CHECK: 1
54    // CHECK: 3
55    // CHECK: 3
56    outputBuffer[0] = bbuffer.Load(0);
57    outputBuffer[1] = bbuffer.Load(4);
58    outputBuffer[2] = bbuffer.Load(8);
59    outputBuffer[3] = bbuffer.Load(12);
60    // CHECK: 1
61    // CHECK: 3
62    // CHECK: 2
63    // CHECK: 3
64    // CHECK: 7
65    // CHECK: 3
66    // CHECK: 0
67    // CHECK: 0
68}