spv.memoryScopeSemantics_Error.comp 1.8 KB

1234567891011121314151617181920212223242526272829
  1. #version 450
  2. #extension GL_KHR_memory_scope_semantics : require
  3. shared uint value;
  4. shared int atomi;
  5. shared uint atomu;
  6. layout(binding = 0, r32ui) workgroupcoherent uniform uimage2D imageu;
  7. layout(binding = 1, r32i) coherent uniform iimage2D imagei;
  8. layout (binding = 2) buffer BufferU { workgroupcoherent uint x; } bufferu;
  9. layout (binding = 3) subgroupcoherent buffer BufferI { uint x; } bufferi;
  10. void main()
  11. {
  12. atomicStore(atomu, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire);
  13. int origi = imageAtomicLoad(imagei, ivec2(0,0), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease);
  14. atomicStore(atomu, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease);
  15. atomicStore(atomu, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_StorageSemanticsBuffer);
  16. origi = imageAtomicLoad(imagei, ivec2(0,0), gl_ScopeDevice, gl_SemanticsAcquire, gl_SemanticsAcquire);
  17. memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, 0);
  18. memoryBarrier(gl_ScopeWorkgroup, 0, gl_SemanticsRelease);
  19. memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsRelease | gl_SemanticsAcquire);
  20. atomicAdd(atomu, value, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsAcquire);
  21. uint origu = atomicCompSwap(atomu, 10u, value, gl_ScopeDevice, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquire, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease);
  22. memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeVisible);
  23. memoryBarrier(gl_ScopeWorkgroup, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeAvailable);
  24. }