summaryrefslogtreecommitdiffstats
path: root/tests/spirv/coherent-2.slang
blob: d68b38ad0faf4949015da005240f567226bbd2e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Test that globallycoherent works on arrays of uavs.

//TEST:SIMPLE(filecheck=CHECK): -target spirv -stage compute -entry main -emit-spirv-directly
//TEST:SIMPLE(filecheck=VK_MEM_MODEL): -target spirv -stage compute -entry main -emit-spirv-directly -capability vk_mem_model

globallycoherent RWByteAddressBuffer buffer[];

RWStructuredBuffer<float> output;
[numthreads(4,1,1)]
void main(int tid : SV_DispatchThreadID)
{
    buffer[NonUniformResourceIndex(0)].InterlockedAdd(0, 1);
    AllMemoryBarrier();
    output[tid] = buffer[0].Load(0);
    // CHECK-DAG: OpDecorate %buffer Coherent
    // CHECK-DAG: OpDecorate %[[VAR1:[a-zA-Z0-9_]+]] NonUniform
    // CHECK: %[[VAR1]] = OpAccessChain %{{.*}} %buffer

    //VK_MEM_MODEL: OpLoad {{.*}} MakePointerVisible|NonPrivatePointer
}