Add gl_SemanticsVolatile to GL_KHR_memory_scope_semantics, and make volatile-qualified atomics generate MemorySemanticsVolatile when using the Vulkan memory model
This commit is contained in:
@@ -19,6 +19,7 @@ layout (binding = 7) nonprivate uniform BufferK { uint x; } bufferk;
|
||||
shared uint64_t atomu64;
|
||||
shared int64_t atomi64;
|
||||
layout (binding = 8) volatile buffer BufferL { uint x; } bufferl;
|
||||
layout (binding = 9) buffer BufferM { volatile uint x; } bufferm;
|
||||
|
||||
|
||||
void main()
|
||||
@@ -60,5 +61,10 @@ void main()
|
||||
atomicCompSwap(atomi64, int64_t(10), int64_t(atomu64), gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire);
|
||||
|
||||
y = bufferl.x;
|
||||
atomicAdd(bufferl.x, 1);
|
||||
atomicOr(bufferm.x, 2);
|
||||
imageAtomicAdd(imagei, ivec2(0,0), 3);
|
||||
atomicAdd(bufferu.x, 4u, gl_ScopeDevice, 0, 0);
|
||||
atomicAdd(bufferu.x, 5u, gl_ScopeDevice, 0, gl_SemanticsVolatile);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user