StoreSharedSmallInt.glsl 734 B

1234567891011121314151617181920212223
  1. void Helper_StoreShared16(int offset, uint value)
  2. {
  3. int wordOffset = offset >> 2;
  4. int bitOffset = (offset & 3) * 8;
  5. uint oldValue, newValue;
  6. do
  7. {
  8. oldValue = $SHARED_MEM$[wordOffset];
  9. newValue = bitfieldInsert(oldValue, value, bitOffset, 16);
  10. } while (atomicCompSwap($SHARED_MEM$[wordOffset], oldValue, newValue) != oldValue);
  11. }
  12. void Helper_StoreShared8(int offset, uint value)
  13. {
  14. int wordOffset = offset >> 2;
  15. int bitOffset = (offset & 3) * 8;
  16. uint oldValue, newValue;
  17. do
  18. {
  19. oldValue = $SHARED_MEM$[wordOffset];
  20. newValue = bitfieldInsert(oldValue, value, bitOffset, 8);
  21. } while (atomicCompSwap($SHARED_MEM$[wordOffset], oldValue, newValue) != oldValue);
  22. }