@@ -21,27 +21,6 @@ using namespace nbl::video;
21
21
#include " nbl/core/math/intutil.h"
22
22
#include " nbl/core/math/glslFunctions.h"
23
23
24
- VkExtent3D padDimensionToNextPOT (VkExtent3D const & dimension, VkExtent3D const & minimum_dimension = VkExtent3D{ 0 , 0 , 0 }) {
25
- VkExtent3D ret = {};
26
- VkExtent3D extendedDim = dimension;
27
-
28
- if (dimension.width < minimum_dimension.width ) {
29
- extendedDim.width = minimum_dimension.width ;
30
- }
31
- if (dimension.height < minimum_dimension.height ) {
32
- extendedDim.height = minimum_dimension.height ;
33
- }
34
- if (dimension.depth < minimum_dimension.depth ) {
35
- extendedDim.depth = minimum_dimension.depth ;
36
- }
37
-
38
- ret.width = roundUpToPoT (extendedDim.width );
39
- ret.height = roundUpToPoT (extendedDim.height );
40
- ret.depth = roundUpToPoT (extendedDim.depth );
41
-
42
- return ret;
43
- }
44
-
45
24
struct DispatchInfo_t
46
25
{
47
26
uint32_t workGroupDims[3 ];
@@ -86,8 +65,7 @@ static inline core::smart_refctd_ptr<video::IGPUPipelineLayout> getPipelineLayou
86
65
static inline core::smart_refctd_ptr<video::IGPUSpecializedShader> createShader_Convolution (
87
66
video::IVideoDriver* driver,
88
67
IAssetManager* am,
89
- uint32_t maxDimensionSize,
90
- uint32_t maxNumChannels)
68
+ uint32_t maxDimensionSize)
91
69
{
92
70
uint32_t const maxPaddedDimensionSize = core::roundUpToPoT (maxDimensionSize);
93
71
@@ -97,7 +75,6 @@ R"===(#version 430 core
97
75
#define _NBL_GLSL_EXT_FFT_WORKGROUP_SIZE_ %u
98
76
#define _NBL_GLSL_EXT_FFT_MAX_DIM_SIZE_ %u
99
77
#define _NBL_GLSL_EXT_FFT_MAX_ITEMS_PER_THREAD %u
100
- #define _NBL_GLSL_EXT_FFT_MAX_CHANNELS %u
101
78
102
79
#include "../fft_convolve_ifft.comp"
103
80
@@ -112,8 +89,7 @@ R"===(#version 430 core
112
89
reinterpret_cast <char *>(shader->getPointer ()),shader->getSize (), sourceFmt,
113
90
DEFAULT_WORK_GROUP_SIZE,
114
91
maxPaddedDimensionSize,
115
- maxItemsPerThread,
116
- maxNumChannels
92
+ maxItemsPerThread
117
93
);
118
94
119
95
auto cpuSpecializedShader = core::make_smart_refctd_ptr<ICPUSpecializedShader>(
@@ -211,8 +187,7 @@ static inline core::smart_refctd_ptr<video::IGPUPipelineLayout> getPipelineLayou
211
187
static inline core::smart_refctd_ptr<video::IGPUSpecializedShader> createShader_LastFFT (
212
188
video::IVideoDriver* driver,
213
189
IAssetManager* am,
214
- uint32_t maxDimensionSize,
215
- uint32_t maxNumChannels) {
190
+ uint32_t maxDimensionSize) {
216
191
217
192
uint32_t const maxPaddedDimensionSize = core::roundUpToPoT (maxDimensionSize);
218
193
@@ -222,8 +197,7 @@ R"===(#version 430 core
222
197
#define _NBL_GLSL_EXT_FFT_WORKGROUP_SIZE_ %u
223
198
#define _NBL_GLSL_EXT_FFT_MAX_DIM_SIZE_ %u
224
199
#define _NBL_GLSL_EXT_FFT_MAX_ITEMS_PER_THREAD %u
225
- #define _NBL_GLSL_EXT_FFT_MAX_CHANNELS %u
226
-
200
+
227
201
#include "../last_fft.comp"
228
202
229
203
)===" ;
@@ -237,8 +211,7 @@ R"===(#version 430 core
237
211
reinterpret_cast <char *>(shader->getPointer ()),shader->getSize (), sourceFmt,
238
212
DEFAULT_WORK_GROUP_SIZE,
239
213
maxPaddedDimensionSize,
240
- maxItemsPerThread,
241
- maxNumChannels
214
+ maxItemsPerThread
242
215
);
243
216
244
217
auto cpuSpecializedShader = core::make_smart_refctd_ptr<ICPUSpecializedShader>(
@@ -374,7 +347,7 @@ int main()
374
347
uint32_t kerNumChannels = getFormatChannelCount (kerFormat);
375
348
assert (srcNumChannels == kerNumChannels); // Just to make sure, because the other case is not handled in this example
376
349
377
- VkExtent3D paddedDim = padDimensionToNextPOT (srcDim, kerDim);
350
+ VkExtent3D paddedDim = FFTClass:: padDimensionToNextPOT (srcDim, kerDim);
378
351
uint32_t maxPaddedDimensionSize = core::max (core::max (paddedDim.width , paddedDim.height ), paddedDim.depth );
379
352
380
353
VkExtent3D outImageDim = srcDim;
@@ -389,8 +362,8 @@ int main()
389
362
outImgView = driver->createGPUImageView (IGPUImageView::SCreationParams (srcImgViewInfo));
390
363
}
391
364
392
- auto fftGPUSpecializedShader_SSBOInput = FFTClass::createShader (driver, FFTClass::DataType::SSBO, maxPaddedDimensionSize, srcNumChannels );
393
- auto fftGPUSpecializedShader_ImageInput = FFTClass::createShader (driver, FFTClass::DataType::TEXTURE2D, maxPaddedDimensionSize, srcNumChannels );
365
+ auto fftGPUSpecializedShader_SSBOInput = FFTClass::createShader (driver, FFTClass::DataType::SSBO, maxPaddedDimensionSize);
366
+ auto fftGPUSpecializedShader_ImageInput = FFTClass::createShader (driver, FFTClass::DataType::TEXTURE2D, maxPaddedDimensionSize);
394
367
auto fftGPUSpecializedShader_KernelNormalization = FFTClass::createKernelNormalizationShader (driver, am);
395
368
396
369
auto fftPipelineLayout_SSBOInput = FFTClass::getDefaultPipelineLayout (driver, FFTClass::DataType::SSBO);
@@ -404,11 +377,11 @@ int main()
404
377
auto fftDispatchInfo_Horizontal = FFTClass::buildParameters (paddedDim, FFTClass::Direction::X);
405
378
auto fftDispatchInfo_Vertical = FFTClass::buildParameters (paddedDim, FFTClass::Direction::Y);
406
379
407
- auto convolveShader = createShader_Convolution (driver, am, maxPaddedDimensionSize, srcNumChannels );
380
+ auto convolveShader = createShader_Convolution (driver, am, maxPaddedDimensionSize);
408
381
auto convolvePipelineLayout = getPipelineLayout_Convolution (driver);
409
382
auto convolvePipeline = driver->createGPUComputePipeline (nullptr , core::smart_refctd_ptr (convolvePipelineLayout), std::move (convolveShader));
410
383
411
- auto lastFFTShader = createShader_LastFFT (driver, am, maxPaddedDimensionSize, srcNumChannels );
384
+ auto lastFFTShader = createShader_LastFFT (driver, am, maxPaddedDimensionSize);
412
385
auto lastFFTPipelineLayout = getPipelineLayout_LastFFT (driver);
413
386
auto lastFFTPipeline = driver->createGPUComputePipeline (nullptr , core::smart_refctd_ptr (lastFFTPipelineLayout), std::move (lastFFTShader));
414
387
0 commit comments