Skip to content

Commit f25b884

Browse files
committed
asset: several fixes
- move `SICPUBufferCreationParams` into `ICPUBuffer::SCreationParams` - designated initializers for ICPUBuffer::create - revert changes to any code thats surrounded by `#if 0` - correct coding convention - `resource_owning_vector` -> `VectorViewNullMemoryResource` (and don't manage anything) - `(size_t)x` -> `static_cast<size_t>(x)` - pass alignment in `ICPUBuffer::clone` Signed-off-by: Ali Cheraghi <alichraghi@proton.me>
1 parent a06c270 commit f25b884

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+188
-186
lines changed

include/nbl/asset/ICPUBuffer.h

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,7 @@
1313
namespace nbl::asset
1414
{
1515

16-
struct SICPUBufferCreationParams
17-
{
18-
size_t size;
19-
void* data = nullptr;
20-
size_t alignment = _NBL_SIMD_ALIGNMENT;
21-
std::pmr::memory_resource* memoryResource = nullptr;
22-
};
23-
2416
//! One of CPU class-object representing an Asset
25-
//! TODO: remove, alloc can fail, should be a static create method instead!
2617
/**
2718
One of Assets used for storage of large arrays, so that storage can be decoupled
2819
from other objects such as meshbuffers, images, animations and shader source/bytecode.
@@ -32,11 +23,25 @@ struct SICPUBufferCreationParams
3223
class ICPUBuffer final : public asset::IBuffer, public IPreHashed
3324
{
3425
public:
26+
struct SCreationParams : asset::IBuffer::SCreationParams
27+
{
28+
size_t size;
29+
void* data = nullptr;
30+
size_t alignment = _NBL_SIMD_ALIGNMENT;
31+
std::pmr::memory_resource* memoryResource = nullptr;
32+
33+
SCreationParams& operator =(const asset::IBuffer::SCreationParams& rhs)
34+
{
35+
static_cast<asset::IBuffer::SCreationParams&>(*this) = rhs;
36+
return *this;
37+
}
38+
};
39+
3540
ICPUBuffer(size_t size, void* data, std::pmr::memory_resource* memoryResource, size_t alignment, bool adopt_memory) :
3641
asset::IBuffer({ size, EUF_TRANSFER_DST_BIT }), m_data(data), m_mem_resource(memoryResource), m_alignment(alignment), m_adopt_memory(adopt_memory) {}
3742

3843
//! allocates uninitialized memory, copies `data` into allocation if `!data` not nullptr
39-
core::smart_refctd_ptr<ICPUBuffer> static create(const SICPUBufferCreationParams& params) {
44+
core::smart_refctd_ptr<ICPUBuffer> static create(const SCreationParams& params) {
4045
std::pmr::memory_resource* memoryResource = params.memoryResource;
4146
if (!params.memoryResource)
4247
memoryResource = std::pmr::get_default_resource();
@@ -52,7 +57,7 @@ class ICPUBuffer final : public asset::IBuffer, public IPreHashed
5257
}
5358

5459
//! does not allocate memory, adopts the `data` pointer, no copies done
55-
core::smart_refctd_ptr<ICPUBuffer> static create(const SICPUBufferCreationParams& params, core::adopt_memory_t) {
60+
core::smart_refctd_ptr<ICPUBuffer> static create(const SCreationParams& params, core::adopt_memory_t) {
5661
std::pmr::memory_resource* memoryResource;
5762
if (!params.memoryResource)
5863
memoryResource = std::pmr::get_default_resource();
@@ -61,7 +66,7 @@ class ICPUBuffer final : public asset::IBuffer, public IPreHashed
6166

6267
core::smart_refctd_ptr<IAsset> clone(uint32_t = ~0u) const override final
6368
{
64-
auto cp = create({ m_creationParams.size, m_data });
69+
auto cp = create({ .size = m_creationParams.size, .data = m_data, .alignment = m_alignment });
6570
memcpy(cp->getPointer(), m_data, m_creationParams.size);
6671
cp->setContentHash(getContentHash());
6772
return cp;

include/nbl/asset/ICPUShader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class ICPUShader : public IAsset, public IShader
3333
: IShader(stage, std::move(filepathHint)), m_code(std::move(code)), m_contentType(contentType) {}
3434

3535
ICPUShader(const char* code, const E_SHADER_STAGE stage, const E_CONTENT_TYPE contentType, std::string&& filepathHint)
36-
: ICPUShader(ICPUBuffer::create({ strlen(code) + 1u }), stage, contentType, std::move(filepathHint))
36+
: ICPUShader(ICPUBuffer::create({ .size = strlen(code) + 1u }), stage, contentType, std::move(filepathHint))
3737
{
3838
assert(contentType != E_CONTENT_TYPE::ECT_SPIRV); // because using strlen needs `code` to be null-terminated
3939
memcpy(m_code->getPointer(), code, m_code->getSize());

include/nbl/asset/filters/CFlattenRegionsImageFilter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class CFlattenRegionsImageFilter : public CImageFilter<CFlattenRegionsImageFilte
8989
assert(memsize.getNumerator()%memsize.getDenominator()==0u);
9090
bufferSize += memsize.getIntegerApprox();
9191
}
92-
auto buffer = ICPUBuffer::create({ bufferSize });
92+
auto buffer = ICPUBuffer::create({ .size = bufferSize });
9393
state->outImage->setBufferAndRegions(std::move(buffer),std::move(regions));
9494
};
9595

include/nbl/asset/filters/dithering/CPrecomputedDither.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ namespace nbl
5858
const size_t newDecodeBufferSize = extent.x * extent.y * extent.z * creationParams.arrayLayers * decodeTexelByteSize;
5959

6060
const core::vector3du32_SIMD decodeBufferByteStrides = TexelBlockInfo(decodeFormat).convert3DTexelStridesTo1DByteStrides(core::vector3du32_SIMD(extent.x, extent.y, extent.z));
61-
auto decodeFlattenBuffer = ICPUBuffer::create({ newDecodeBufferSize });
61+
auto decodeFlattenBuffer = ICPUBuffer::create({ .size = newDecodeBufferSize });
6262
decodeFlattenBuffer->setContentHash(IPreHashed::INVALID_HASH);
6363

6464
auto* inData = reinterpret_cast<uint8_t*>(flattenDitheringImage->getBuffer()->getPointer());

include/nbl/asset/interchange/IImageAssetHandlerBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class IImageAssetHandlerBase : public virtual core::IReferenceCounted
110110
bufferSize += memsize.getIntegerApprox();
111111
}
112112

113-
auto texelBuffer = ICPUBuffer::create({ bufferSize });
113+
auto texelBuffer = ICPUBuffer::create({ .size = bufferSize });
114114
newImage->setBufferAndRegions(std::move(texelBuffer), newRegions);
115115
newImage->setContentHash(IPreHashed::INVALID_HASH);
116116
}

include/nbl/asset/utils/CCPUMeshPackerV1.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,11 @@ void CCPUMeshPackerV1<MDIStructType>::instantiateDataStorage()
296296
const size_t vtxBuffSupportedByteSize = base_t::alctrTraits::get_total_size(base_t::m_vtxBuffAlctr);
297297
const size_t perInsBuffSupportedByteSize = base_t::alctrTraits::get_total_size(base_t::m_vtxBuffAlctr);
298298

299-
m_output.MDIDataBuffer = ICPUBuffer::create({ MDIDataBuffSupportedByteSize });
300-
m_output.indexBuffer.buffer = ICPUBuffer::create({ idxBuffSupportedByteSize });
299+
m_output.MDIDataBuffer = core::make_smart_refctd_ptr<ICPUBuffer>(MDIDataBuffSupportedByteSize);
300+
m_output.indexBuffer.buffer = core::make_smart_refctd_ptr<ICPUBuffer>(idxBuffSupportedByteSize);
301301

302-
core::smart_refctd_ptr<ICPUBuffer> unifiedVtxBuff = ICPUBuffer::create({ vtxBuffSupportedByteSize });
303-
core::smart_refctd_ptr<ICPUBuffer> unifiedInsBuff = ICPUBuffer::create({ perInsBuffSupportedByteSize });
302+
core::smart_refctd_ptr<ICPUBuffer> unifiedVtxBuff = core::make_smart_refctd_ptr<ICPUBuffer>(vtxBuffSupportedByteSize);
303+
core::smart_refctd_ptr<ICPUBuffer> unifiedInsBuff = core::make_smart_refctd_ptr<ICPUBuffer>(perInsBuffSupportedByteSize);
304304

305305
//divide unified vtx buffers
306306
//proportions: sizeOfAttr1 : sizeOfAttr2 : ... : sizeOfAttrN

include/nbl/asset/utils/CCPUMeshPackerV2.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ void CCPUMeshPackerV2<MDIStructType>::instantiateDataStorage()
6161
const uint32_t idxBuffByteSize = base_t::m_idxBuffAlctr.get_total_size() * sizeof(uint16_t);
6262
const uint32_t vtxBuffByteSize = base_t::m_vtxBuffAlctr.get_total_size();
6363

64-
base_t::m_packerDataStore.MDIDataBuffer = ICPUBuffer::create({ MDIDataBuffByteSize });
65-
base_t::m_packerDataStore.indexBuffer = ICPUBuffer::create({ idxBuffByteSize });
66-
base_t::m_packerDataStore.vertexBuffer = ICPUBuffer::create({ vtxBuffByteSize });
64+
base_t::m_packerDataStore.MDIDataBuffer = core::make_smart_refctd_ptr<ICPUBuffer>(MDIDataBuffByteSize);
65+
base_t::m_packerDataStore.indexBuffer = core::make_smart_refctd_ptr<ICPUBuffer>(idxBuffByteSize);
66+
base_t::m_packerDataStore.vertexBuffer = core::make_smart_refctd_ptr<ICPUBuffer>(vtxBuffByteSize);
6767
}
6868

6969
/*

include/nbl/asset/utils/CDirQuantCacheBase.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ class CDirQuantCacheBase : public impl::CDirQuantCacheBase
297297
if (!file)
298298
return false;
299299

300-
auto buffer = asset::ICPUBuffer::create({ file->getSize() });
300+
auto buffer = asset::ICPUBuffer::create({ .size = file->getSize() });
301301

302302
system::IFile::success_t succ;
303303
file->read(succ, buffer->getPointer(), 0, file->getSize());
@@ -346,7 +346,7 @@ class CDirQuantCacheBase : public impl::CDirQuantCacheBase
346346
asset::SBufferRange<asset::ICPUBuffer> bufferRange;
347347
bufferRange.offset = 0;
348348
bufferRange.size = getSerializedCacheSizeInBytes<CacheFormat>();
349-
bufferRange.buffer = asset::ICPUBuffer::create({ bufferRange.size });
349+
bufferRange.buffer = asset::ICPUBuffer::create({ .size = bufferRange.size });
350350

351351
saveCacheToBuffer<CacheFormat>(bufferRange);
352352

include/nbl/asset/utils/IMeshManipulator.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ class NBL_API2 IMeshManipulator : public virtual core::IReferenceCounted
557557
core::smart_refctd_ptr<ICPUBuffer> iotaUint32Buffer;
558558
if (iotaLength)
559559
{
560-
iotaUint32Buffer = ICPUBuffer::create({ sizeof(uint32_t)*iotaLength });
560+
iotaUint32Buffer = ICPUBuffer::create({ .size = sizeof(uint32_t)*iotaLength });
561561
auto ptr = reinterpret_cast<uint32_t*>(iotaUint32Buffer->getPointer());
562562
std::iota(ptr,ptr+iotaLength,0u);
563563
}
@@ -599,13 +599,13 @@ class NBL_API2 IMeshManipulator : public virtual core::IReferenceCounted
599599
if (indexType==EIT_16BIT)
600600
{
601601
auto inPtr = reinterpret_cast<const uint16_t*>(correctlyOffsetIndexBufferPtr);
602-
newIndexBuffer = ICPUBuffer::create({ sizeof(uint32_t)*indexCount });
602+
newIndexBuffer = ICPUBuffer::create({ .size = sizeof(uint32_t)*indexCount });
603603
std::copy(inPtr,inPtr+indexCount,reinterpret_cast<uint32_t*>(newIndexBuffer->getPointer()));
604604
}
605605
else
606606
{
607607
auto inPtr = reinterpret_cast<const uint32_t*>(correctlyOffsetIndexBufferPtr);
608-
newIndexBuffer = ICPUBuffer::create({ sizeof(uint16_t)*indexCount });
608+
newIndexBuffer = ICPUBuffer::create({ .size = sizeof(uint16_t)*indexCount });
609609
std::copy(inPtr,inPtr+indexCount,reinterpret_cast<uint16_t*>(newIndexBuffer->getPointer()));
610610
}
611611
}

include/nbl/asset/utils/IMeshPacker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ class IMeshPacker : public IMeshPackerBase
551551
core::smart_refctd_ptr<ICPUBuffer> idxBufferToProcess;
552552
if (iota)
553553
{
554-
idxBufferToProcess = ICPUBuffer::create({ sizeof(uint32_t) * idxCount });
554+
idxBufferToProcess = core::make_smart_refctd_ptr<ICPUBuffer>(sizeof(uint32_t) * idxCount);
555555
auto ptr = reinterpret_cast<uint32_t*>(idxBufferToProcess->getPointer());
556556
std::iota(ptr, ptr + idxCount, 0u);
557557
idxType = EIT_32BIT;

0 commit comments

Comments
 (0)