@@ -19,15 +19,13 @@ struct SharedMemoryAccessor
1919 template <typename AccessType, typename IndexType>
2020 void set (IndexType idx, AccessType value)
2121 {
22- sharedmem[idx * 2 ] = value.first;
23- sharedmem[idx * 2 + 1 ] = value.second;
22+ sharedmem[idx] = value;
2423 }
2524
2625 template <typename AccessType, typename IndexType>
2726 void get (IndexType idx, NBL_REF_ARG (AccessType) value)
2827 {
29- value.first = sharedmem[idx * 2 ];
30- value.second = sharedmem[idx * 2 + 1 ];
28+ value = sharedmem[idx];
3129 }
3230
3331 void workgroupExecutionAndMemoryBarrier ()
@@ -48,17 +46,13 @@ struct Accessor
4846 template <typename AccessType, typename IndexType>
4947 void get (const IndexType index, NBL_REF_ARG (AccessType) value)
5048 {
51- const uint64_t offset = address + index * sizeof (AccessType);
52- value.first = vk::RawBufferLoad<uint32_t>(offset);
53- value.second = vk::RawBufferLoad<uint32_t>(offset + sizeof (uint32_t));
49+ value = vk::RawBufferLoad<AccessType>(address + index * sizeof (AccessType));
5450 }
5551
5652 template <typename AccessType, typename IndexType>
5753 void set (const IndexType index, const AccessType value)
5854 {
59- const uint64_t offset = address + index * sizeof (AccessType);
60- vk::RawBufferStore<uint32_t>(offset, value.first);
61- vk::RawBufferStore<uint32_t>(offset + sizeof (uint32_t), value.second);
55+ vk::RawBufferStore<AccessType>(address + index * sizeof (AccessType), value);
6256 }
6357
6458 uint64_t address;
0 commit comments