Skip to content

Commit 9dafb9a

Browse files
committed
Refactor CountingPushData into CountingParameters and userspace CountingPushData
1 parent 7b6d78f commit 9dafb9a

File tree

4 files changed

+37
-14
lines changed

4 files changed

+37
-14
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright (C) 2018-2024 - DevSH Graphics Programming Sp. z O.O.
2+
// This file is part of the "Nabla Engine".
3+
// For conditions of distribution and use, see copyright notice in nabla.h
4+
5+
#ifndef _COUNTING_SORT_COMMON_INCLUDED_
6+
#define _COUNTING_SORT_COMMON_INCLUDED_
7+
8+
struct CountingPushData
9+
{
10+
uint64_t inputKeyAddress;
11+
uint64_t inputValueAddress;
12+
uint64_t scratchAddress;
13+
uint64_t outputKeyAddress;
14+
uint64_t outputValueAddress;
15+
uint32_t dataElementCount;
16+
uint32_t elementsPerWT;
17+
uint32_t minimum;
18+
uint32_t maximum;
19+
};
20+
21+
#endif

CountingSort/app_resources/prefix_sum_shader.comp.hlsl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "nbl/builtin/hlsl/bda/__ptr.hlsl"
22
#include "nbl/builtin/hlsl/sort/counting.hlsl"
3-
#include "nbl/builtin/hlsl/sort/common.hlsl"
3+
#include "app_resources/common.hlsl"
44

5-
[[vk::push_constant]] nbl::hlsl::sort::CountingPushData pushData;
5+
[[vk::push_constant]] CountingPushData pushData;
66

77
struct PtrAccessor
88
{
@@ -42,12 +42,12 @@ uint32_t3 nbl::hlsl::glsl::gl_WorkGroupSize()
4242
[numthreads(WorkgroupSize,1,1)]
4343
void main(uint32_t3 ID : SV_GroupThreadID, uint32_t3 GroupID : SV_GroupID)
4444
{
45-
nbl::hlsl::sort::counting <PtrAccessor, PtrAccessor, PtrAccessor> counter;
45+
nbl::hlsl::sort::counting <uint32_t, PtrAccessor, PtrAccessor, PtrAccessor> counter;
4646
PtrAccessor input_accessor = PtrAccessor::create(pushData.inputKeyAddress);
4747
PtrAccessor scratch_accessor = PtrAccessor::create(pushData.scratchAddress);
48-
counter.histogram(
48+
/*counter.histogram(
4949
input_accessor,
5050
scratch_accessor,
5151
pushData
52-
);
52+
);*/
5353
}

CountingSort/app_resources/scatter_shader.comp.hlsl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "nbl/builtin/hlsl/bda/__ptr.hlsl"
22
#include "nbl/builtin/hlsl/sort/counting.hlsl"
3-
#include "nbl/builtin/hlsl/sort/common.hlsl"
3+
#include "app_resources/common.hlsl"
44

5-
[[vk::push_constant]] nbl::hlsl::sort::CountingPushData pushData;
5+
[[vk::push_constant]] CountingPushData pushData;
66

77
struct PtrAccessor
88
{
@@ -67,14 +67,14 @@ uint32_t3 nbl::hlsl::glsl::gl_WorkGroupSize()
6767
[numthreads(WorkgroupSize, 1, 1)]
6868
void main(uint32_t3 ID : SV_GroupThreadID, uint32_t3 GroupID : SV_GroupID)
6969
{
70-
nbl::hlsl::sort::counting <DoublePtrAccessor, DoublePtrAccessor, PtrAccessor> counter;
70+
nbl::hlsl::sort::counting <uint32_t, DoublePtrAccessor, DoublePtrAccessor, PtrAccessor> counter;
7171
DoublePtrAccessor key_accessor = DoublePtrAccessor::create(pushData.inputKeyAddress, pushData.outputKeyAddress);
7272
DoublePtrAccessor value_accessor = DoublePtrAccessor::create(pushData.inputValueAddress, pushData.outputValueAddress);
7373
PtrAccessor scratch_accessor = PtrAccessor::create(pushData.scratchAddress);
74-
counter.scatter(
74+
/*counter.scatter(
7575
key_accessor,
7676
value_accessor,
7777
scratch_accessor,
7878
pushData
79-
);
79+
);*/
8080
}

CountingSort/main.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ using namespace system;
77
using namespace asset;
88
using namespace video;
99

10-
#include "nbl/builtin/hlsl/sort/common.hlsl"
10+
#include "app_resources/common.hlsl"
1111
#include "nbl/builtin/hlsl/bit.hlsl"
1212

1313
class CountingSortApp final : public application_templates::MonoDeviceApplication, public application_templates::MonoAssetManagerAndBuiltinResourceApplication
@@ -89,7 +89,7 @@ class CountingSortApp final : public application_templates::MonoDeviceApplicatio
8989
}
9090

9191
// People love Reflection but I prefer Shader Sources instead!
92-
const nbl::asset::SPushConstantRange pcRange = { .stageFlags = IShader::ESS_COMPUTE,.offset = 0,.size = sizeof(nbl::hlsl::sort::CountingPushData) };
92+
const nbl::asset::SPushConstantRange pcRange = { .stageFlags = IShader::ESS_COMPUTE,.offset = 0,.size = sizeof(CountingPushData) };
9393

9494
// This time we'll have no Descriptor Sets or Layouts because our workload has a widely varying size
9595
// and using traditional SSBO bindings would force us to update the Descriptor Set every frame.
@@ -171,6 +171,7 @@ class CountingSortApp final : public application_templates::MonoDeviceApplicatio
171171

172172
// Generate random data
173173
constexpr uint32_t minimum = 0;
174+
constexpr uint32_t maximum = 10000;
174175
const uint32_t range = bucket_count;
175176
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
176177
std::mt19937 g(seed);
@@ -202,15 +203,16 @@ class CountingSortApp final : public application_templates::MonoDeviceApplicatio
202203
outBuffer.append("\n");
203204
m_logger->log("Your input array is: \n" + outBuffer, ILogger::ELL_PERFORMANCE);
204205

205-
auto pc = nbl::hlsl::sort::CountingPushData {
206+
auto pc = CountingPushData {
206207
.inputKeyAddress = buffer_device_address[0],
207208
.inputValueAddress = buffer_device_address[1],
208209
.scratchAddress = buffer_device_address[2],
209210
.outputKeyAddress = buffer_device_address[3],
210211
.outputValueAddress = buffer_device_address[4],
211212
.dataElementCount = element_count,
213+
.elementsPerWT = elements_per_thread,
212214
.minimum = minimum,
213-
.elementsPerWT = elements_per_thread
215+
.maximum = maximum,
214216
};
215217

216218
smart_refctd_ptr<nbl::video::IGPUCommandBuffer> cmdBuf;

0 commit comments

Comments
 (0)