Skip to content

Commit 2f3126f

Browse files
authored
Refactor shared memory access in bitonic sort shader
1 parent 446d487 commit 2f3126f

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

13_BitonicSort/app_resources/bitonic_sort_shader.comp.hlsl

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)