atomic_uint.frag 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #version 420 core
  2. layout(binding = 0) uniform atomic_uint counter;
  3. uint func(atomic_uint c)
  4. {
  5. return atomicCounterIncrement(c);
  6. }
  7. uint func2(out atomic_uint c) // ERROR
  8. {
  9. return counter; // ERROR, type mismatch
  10. return atomicCounter(counter);
  11. }
  12. void main()
  13. {
  14. atomic_uint non_uniform_counter; // ERROR
  15. uint val = atomicCounter(counter);
  16. atomicCounterDecrement(counter);
  17. }
  18. layout(binding = 1, offset = 3) uniform atomic_uint countArr[4];
  19. uniform int i;
  20. void opac()
  21. {
  22. counter + counter; // ERROR
  23. -counter; // ERROR
  24. int a[3];
  25. a[counter]; // ERROR
  26. countArr[2];
  27. countArr[i];
  28. counter = 4; // ERROR
  29. }
  30. in atomic_uint acin; // ERROR
  31. atomic_uint acg; // ERROR
  32. uniform atomic_uint;
  33. uniform atomic_uint aNoBind; // ERROR, no binding
  34. layout(binding=0, offset=32) uniform atomic_uint aOffset;
  35. layout(binding=0, offset=4) uniform atomic_uint;
  36. layout(binding=0) uniform atomic_uint bar3; // offset is 4
  37. layout(binding=0) uniform atomic_uint ac[3]; // offset = 8
  38. layout(binding=0) uniform atomic_uint ad; // offset = 20
  39. layout(offset=8) uniform atomic_uint bar4; // ERROR, no binding
  40. layout(binding = 0, offset = 12) uniform atomic_uint overlap; // ERROR, overlapping offsets
  41. layout(binding = 20) uniform atomic_uint bigBind; // ERROR, binding too big