Skip to content

Commit 9484a4e

Browse files
committed
Take BufferCreateParams instead of size in createFilledDeviceLocalGPUBufferOnDedMem
1 parent a537535 commit 9484a4e

File tree

5 files changed

+25
-10
lines changed

5 files changed

+25
-10
lines changed

examples_tests/48.ArithmeticUnitTest/main.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,10 @@ class ArythmeticUnitTestApp : public NonGraphicalApplicationBase
328328
inputData[i] = randGenerator();
329329
}
330330

331-
auto gpuinputDataBuffer = utilities->createFilledDeviceLocalGPUBufferOnDedMem(queues[decltype(initOutput)::EQT_TRANSFER_UP], kBufferSize, inputData);
331+
IGPUBuffer::SCreationParams inputDataBufferCreationParams = {};
332+
inputDataBufferCreationParams.size = kBufferSize;
333+
// inputDataBufferCreationParams.usage = ; TODO: Usage should not be EUF_NONE
334+
auto gpuinputDataBuffer = utilities->createFilledDeviceLocalGPUBufferOnDedMem(queues[decltype(initOutput)::EQT_TRANSFER_UP], std::move(inputDataBufferCreationParams), inputData);
332335

333336
//create 8 buffers.
334337
constexpr const auto totalBufferCount = outputBufferCount + 1u;

include/nbl/scene/ICullingLoDSelectionSystem.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,9 @@ class ICullingLoDSelectionSystem : public virtual core::IReferenceCounted
4848
setWorkgroups(contents.drawCompact);
4949

5050
video::IGPUBuffer::SCreationParams params;
51+
params.size = sizeof(contents);
5152
params.usage = core::bitflag(asset::IBuffer::EUF_STORAGE_BUFFER_BIT)|asset::IBuffer::EUF_INDIRECT_BUFFER_BIT;
52-
return utils->createFilledDeviceLocalGPUBufferOnDedMem(queue,sizeof(contents),&contents);
53+
return utils->createFilledDeviceLocalGPUBufferOnDedMem(queue,std::move(params),&contents);
5354
}
5455

5556
// These buffer ranges can be safely discarded or reused after `processInstancesAndFillIndirectDraws` completes

include/nbl/scene/ISkinInstanceCacheManager.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,12 @@ class ISkinInstanceCacheManager : public virtual core::IReferenceCounted
4545
const auto& limits = device->getPhysicalDevice()->getLimits();
4646
core::vector<uint8_t> tmp(limits.SSBOAlignment);
4747
*reinterpret_cast<ISkinInstanceCache::recomputed_stamp_t*>(tmp.data()) = ISkinInstanceCache::initial_recomputed_timestamp;
48-
auto initTimestampValue = utils->createFilledDeviceLocalGPUBufferOnDedMem(uploadQueue,tmp.size(),tmp.data());
48+
49+
IGPUBuffer::SCreationParams initTimestampValueBufferCreationParams = {};
50+
initTimestampValueBufferCreationParams.size = tmp.size();
51+
// initTimestampValueBufferCreationParams.usage = ; TODO: Usage should not be EUF_NONE
52+
53+
auto initTimestampValue = utils->createFilledDeviceLocalGPUBufferOnDedMem(uploadQueue,std::move(initTimestampValueBufferCreationParams),tmp.data());
4954
if (!initTimestampValue)
5055
return nullptr;
5156
initTimestampValue->setObjectDebugName("ISkinInstanceCacheManager::m_initTimestampValue");

include/nbl/scene/ITransformTreeManager.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,12 @@ class ITransformTreeManager : public virtual core::IReferenceCounted
134134
*reinterpret_cast<ITransformTree::relative_transform_t*>(fillData+getDefaultValueBufferOffset(limits,ITransformTree::relative_transform_prop_ix)) = core::matrix3x4SIMD();
135135
*reinterpret_cast<ITransformTree::modified_stamp_t*>(fillData+getDefaultValueBufferOffset(limits,ITransformTree::modified_stamp_prop_ix)) = ITransformTree::initial_modified_timestamp;
136136
*reinterpret_cast<ITransformTree::recomputed_stamp_t*>(fillData+getDefaultValueBufferOffset(limits,ITransformTree::recomputed_stamp_prop_ix)) = ITransformTree::initial_recomputed_timestamp;
137-
}
138-
auto defaultFillValues = utils->createFilledDeviceLocalGPUBufferOnDedMem(uploadQueue,tmp.size(),fillData);
137+
}
138+
139+
video::IGPUBuffer::SCreationParams defaultFillValuesBufferCreationParams = {};
140+
defaultFillValuesBufferCreationParams.size = tmp.size();
141+
// defaultFillValuesBufferCreationParams.usage = ; TODO: Usage should not be EUF_NONE
142+
auto defaultFillValues = utils->createFilledDeviceLocalGPUBufferOnDedMem(uploadQueue,std::move(defaultFillValuesBufferCreationParams),fillData);
139143
defaultFillValues->setObjectDebugName("ITransformTreeManager::m_defaultFillValues");
140144
tmp.resize(sizeof(uint16_t)*DebugIndexCount);
141145
uint16_t* debugIndices = reinterpret_cast<uint16_t*>(tmp.data());
@@ -168,7 +172,11 @@ class ITransformTreeManager : public virtual core::IReferenceCounted
168172
debugIndices[24] = 8u;
169173
debugIndices[25] = 9u;
170174
}
171-
auto debugIndexBuffer = utils->createFilledDeviceLocalGPUBufferOnDedMem(uploadQueue,tmp.size(),fillData);
175+
176+
video::IGPUBuffer::SCreationParams debugIndexBufferCreationParams = {};
177+
debugIndexBufferCreationParams.size = tmp.size();
178+
// debugIndexBufferCreationParams.usage = ; TODO: Usage should not be EUF_NONE
179+
auto debugIndexBuffer = utils->createFilledDeviceLocalGPUBufferOnDedMem(uploadQueue,std::move(debugIndexBufferCreationParams),fillData);
172180

173181
auto updateLocalDsLayout = createUpdateLocalTransformsDescriptorSetLayout(device);
174182
auto recomputeGlobalDsLayout = createRecomputeGlobalTransformsDescriptorSetLayout(device);

include/nbl/video/utilities/IUtilities.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,13 @@ class IUtilities : public core::IReferenceCounted
116116
}
117117

118118
//! WARNING: This function blocks the CPU and stalls the GPU!
119-
inline core::smart_refctd_ptr<IGPUBuffer> createFilledDeviceLocalGPUBufferOnDedMem(IGPUQueue* queue, size_t size, const void* data)
119+
inline core::smart_refctd_ptr<IGPUBuffer> createFilledDeviceLocalGPUBufferOnDedMem(IGPUQueue* queue, IGPUBuffer::SCreationParams&& params, const void* data)
120120
{
121-
IGPUBuffer::SCreationParams params = {};
122-
params.size = size;
123121
auto buffer = m_device->createBuffer(params);
124122
auto mreqs = buffer->getMemoryReqs();
125123
mreqs.memoryTypeBits &= m_device->getPhysicalDevice()->getDeviceLocalMemoryTypeBits();
126124
auto mem = m_device->allocate(mreqs, buffer.get());
127-
updateBufferRangeViaStagingBuffer(queue, asset::SBufferRange<IGPUBuffer>{0u, size, buffer}, data);
125+
updateBufferRangeViaStagingBuffer(queue, asset::SBufferRange<IGPUBuffer>{0u, params.size, buffer}, data);
128126
return buffer;
129127
}
130128

0 commit comments

Comments
 (0)