Skip to content

Commit 2d6bf0b

Browse files
committed
Refactor LocalPasses template for flexibility
Renamed the `KeyValue` template parameter to `sortable_t` to improve clarity and generality. Updated the `operator()` function to use `sortable_t` for the `data` parameter.
1 parent 6f2ee43 commit 2d6bf0b

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

include/nbl/builtin/hlsl/bitonic_sort/common.hlsl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,27 @@ template<typename Config, class device_capabilities = void>
2525
struct bitonic_sort;
2626

2727

28-
template<typename KeyValue, uint32_t Log2N, typename Comparator>
28+
template<typename sortable_t, uint32_t Log2N, typename Comparator>
2929
struct LocalPasses
3030
{
3131
static const uint32_t N = 1u << Log2N;
32-
void operator()(bool ascending, KeyValue data[N], NBL_CONST_REF_ARG(Comparator) comp);
32+
void operator()(bool ascending, sortable_t data[N], NBL_CONST_REF_ARG(Comparator) comp);
3333
};
3434

35-
template<typename KeyValue, typename Comparator>
36-
struct LocalPasses<KeyValue, 1, Comparator>
35+
// Specialization for 2 elements (Log2N=1)
36+
template<typename sortable_t, typename Comparator>
37+
struct LocalPasses<sortable_t, 1, Comparator>
3738
{
3839
static const uint32_t N = 2;
3940

40-
void operator()(bool ascending, KeyValue data[N], NBL_CONST_REF_ARG(Comparator) comp)
41+
void operator()(bool ascending, sortable_t data[N], NBL_CONST_REF_ARG(Comparator) comp)
4142
{
42-
const bool shouldSwap = comp(data[1], data[0]) == ascending;
43+
const bool shouldSwap = comp(data[1], data[0]);
44+
const bool doSwap = (shouldSwap == ascending);
4345

44-
KeyValue temp = data[0];
45-
data[0] = shouldSwap ? data[1] : data[0];
46-
data[1] = shouldSwap ? temp : data[1];
46+
sortable_t temp = data[0];
47+
data[0] = doSwap ? data[1] : data[0];
48+
data[1] = doSwap ? temp : data[1];
4749
}
4850
};
4951

0 commit comments

Comments
 (0)