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
1.5 KiB39 linesraw
1//TEST_CATEGORY(wave, compute)
2//DISABLE_TEST:COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
3//DISABLE_TEST:COMPARE_COMPUTE_EX:-slang -compute -shaderobj
4//TEST:COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -shaderobj
5//TEST(vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
6//TEST:COMPARE_COMPUTE_EX:-cuda -compute -capability cuda_sm_7_0 -shaderobj
7//TEST:COMPARE_COMPUTE_EX:-wgpu -compute -shaderobj
8//TEST:COMPARE_COMPUTE_EX:-metal -compute -shaderobj
9
10//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
11RWStructuredBuffer<int> outputBuffer;
12
13[numthreads(4, 1, 1)]
14void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
15{
16    int idx = int(dispatchThreadID.x);
17    
18    int value = 0;
19    
20    value |= WaveActiveAllTrue(idx < 4 ) ? 1 : 0;
21    value |= WaveActiveAnyTrue(idx == 2) ? 2 : 0;
22    value |= WaveActiveAnyTrue(idx == -1) ? 4 : 0;
23    value |= WaveActiveAllTrue(idx == 3) ? 8 : 0;
24        
25    int sum = WaveActiveSum(idx);
26    value |= (sum << 4);
27    
28    // TODO(JS): 
29    // This result is unexpected. I expect 1 * 2 * 1 * 2 = 4. But we get 0 on DX (so disable for now). On CUDA I get 4.
30    // int product = WaveActiveProduct((idx & 1) + 1);
31    /// value |= (product << 8);    
32        
33    // TODO(JS): NOTE! This only works with uint, *NOT* int on HLSL/DXC. 
34    // We need to update the core module to reflect this.
35    uint xor = WaveActiveBitXor(uint(idx + 1));
36    value |= int(xor << 12);
37    
38    outputBuffer[idx] = value;
39}