Skip to content

Commit 05650dc

Browse files
committed
Make E_DESCRIPTOR_TYPE IDescriptor::E_TYPE and make it an enum class.
1 parent 1877575 commit 05650dc

Some content is hidden

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

43 files changed

+308
-312
lines changed

include/nbl/asset/ICPUBuffer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class NBL_API ICPUBuffer : public asset::IBuffer, public asset::IAsset
7070
}
7171

7272
_NBL_STATIC_INLINE_CONSTEXPR auto AssetType = ET_BUFFER;
73-
inline E_TYPE getAssetType() const override { return AssetType; }
73+
inline IAsset::E_TYPE getAssetType() const override { return AssetType; }
7474

7575
virtual size_t conservativeSizeEstimate() const override { return getSize(); }
7676

include/nbl/asset/ICPUBufferView.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class NBL_API ICPUBufferView : public IBufferView<ICPUBuffer>, public IAsset
4444
}
4545

4646
_NBL_STATIC_INLINE_CONSTEXPR auto AssetType = ET_BUFFER_VIEW;
47-
inline E_TYPE getAssetType() const override { return AssetType; }
47+
inline IAsset::E_TYPE getAssetType() const override { return AssetType; }
4848

4949
ICPUBuffer* getUnderlyingBuffer()
5050
{

include/nbl/asset/ICPUDescriptorSet.h

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
3636
//! @see getDescriptors()
3737
ICPUDescriptorSet(core::smart_refctd_ptr<ICPUDescriptorSetLayout>&& _layout) : base_t(std::move(_layout)), IAsset(), impl_t(m_layout.get())
3838
{
39-
for (uint32_t t = 0u; t < EDT_COUNT; ++t)
39+
for (uint32_t t = 0u; t < static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT); ++t)
4040
{
4141
if (m_descriptors[t])
4242
m_descriptorInfos[t] = core::make_refctd_dynamic_array<core::smart_refctd_dynamic_array<ICPUDescriptorSet::SDescriptorInfo::SBufferImageInfo>>(m_descriptors[t]->size());
@@ -85,11 +85,11 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
8585
return nullptr;
8686
};
8787

88-
for (uint32_t t = 0u; t < EDT_COUNT; ++t)
88+
for (uint32_t t = 0u; t < static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT); ++t)
8989
{
90-
const auto type = static_cast<E_DESCRIPTOR_TYPE>(t);
90+
const auto type = static_cast<IDescriptor::E_TYPE>(t);
9191

92-
for (uint32_t i = 0u; i < m_descriptors[type]->size(); ++i)
92+
for (uint32_t i = 0u; i < m_descriptors[t]->size(); ++i)
9393
{
9494
const auto& srcDescriptor = getDescriptorStorage(type)[i];
9595
const auto& srcDescriptorInfo = getDescriptorInfoStorage(type)[i];
@@ -123,14 +123,14 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
123123
--referenceLevelsBelowToConvert;
124124
m_layout->convertToDummyObject(referenceLevelsBelowToConvert);
125125

126-
for (uint32_t t = 0u; t < EDT_COUNT; ++t)
126+
for (uint32_t t = 0u; t < static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT); ++t)
127127
{
128-
const auto type = static_cast<E_DESCRIPTOR_TYPE>(t);
128+
const auto type = static_cast<IDescriptor::E_TYPE>(t);
129129
const auto descriptorCount = m_layout->getTotalDescriptorCount(type);
130130
if (descriptorCount == 0ull)
131131
continue;
132132

133-
auto descriptors = m_descriptors[type]->begin();
133+
auto descriptors = m_descriptors[t]->begin();
134134
assert(descriptors);
135135

136136
for (uint32_t i = 0u; i < descriptorCount; ++i)
@@ -171,13 +171,13 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
171171
}
172172
inline const ICPUDescriptorSetLayout* getLayout() const { return m_layout.get(); }
173173

174-
std::pair<core::SRange<core::smart_refctd_ptr<IDescriptor>>, core::SRange<SDescriptorInfo::SBufferImageInfo>> getDescriptors(const uint32_t binding, E_DESCRIPTOR_TYPE type = EDT_COUNT)
174+
std::pair<core::SRange<core::smart_refctd_ptr<IDescriptor>>, core::SRange<SDescriptorInfo::SBufferImageInfo>> getDescriptors(const uint32_t binding, IDescriptor::E_TYPE type = IDescriptor::E_TYPE::ET_COUNT)
175175
{
176-
if (type == EDT_COUNT)
176+
if (type == IDescriptor::E_TYPE::ET_COUNT)
177177
{
178-
for (uint32_t t = 0; t < EDT_COUNT; ++t)
178+
for (uint32_t t = 0; t < static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT); ++t)
179179
{
180-
const auto possibleType = static_cast<E_DESCRIPTOR_TYPE>(t);
180+
const auto possibleType = static_cast<IDescriptor::E_TYPE>(t);
181181
const auto& redirect = getLayout()->getDescriptorRedirect(possibleType);
182182
if (redirect.searchForBinding(binding) != redirect.Invalid)
183183
{
@@ -186,7 +186,7 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
186186
}
187187
}
188188

189-
if (type == EDT_COUNT)
189+
if (type == IDescriptor::E_TYPE::ET_COUNT)
190190
return { {nullptr, nullptr}, {nullptr, nullptr} };
191191
}
192192

@@ -198,8 +198,8 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
198198
const auto descriptorOffset = redirect.getStorageOffset(bindingNumberIndex).data;
199199
const auto descriptorCount = redirect.getCount(bindingNumberIndex);
200200

201-
auto descriptorsBegin = m_descriptors[type]->begin() + descriptorOffset;
202-
auto descriptorInfosBegin = m_descriptorInfos[type]->begin() + descriptorOffset;
201+
auto descriptorsBegin = m_descriptors[static_cast<uint32_t>(type)]->begin() + descriptorOffset;
202+
auto descriptorInfosBegin = m_descriptorInfos[static_cast<uint32_t>(type)]->begin() + descriptorOffset;
203203

204204
return { {descriptorsBegin, descriptorsBegin+descriptorCount}, {descriptorInfosBegin, descriptorInfosBegin+descriptorCount} };
205205
}
@@ -221,8 +221,8 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
221221
return { samplersBegin, samplersBegin + count };
222222
}
223223

224-
inline core::smart_refctd_ptr<IDescriptor>* getDescriptorStorage(const E_DESCRIPTOR_TYPE type) const { return m_descriptors[type]->begin(); }
225-
inline SDescriptorInfo::SBufferImageInfo* getDescriptorInfoStorage(const E_DESCRIPTOR_TYPE type) const { return m_descriptorInfos[type]->begin(); }
224+
inline core::smart_refctd_ptr<IDescriptor>* getDescriptorStorage(const IDescriptor::E_TYPE type) const { return m_descriptors[static_cast<uint32_t>(type)]->begin(); }
225+
inline SDescriptorInfo::SBufferImageInfo* getDescriptorInfoStorage(const IDescriptor::E_TYPE type) const { return m_descriptorInfos[static_cast<uint32_t>(type)]->begin(); }
226226
inline core::smart_refctd_ptr<ICPUSampler>* getMutableSamplerStorage() const { return m_mutableSamplers->begin(); }
227227

228228
bool canBeRestoredFrom(const IAsset* _other) const override
@@ -241,17 +241,17 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
241241
--_levelsBelow;
242242
restoreFromDummy_impl_call(m_layout.get(), other->getLayout(), _levelsBelow);
243243

244-
for (uint32_t t = 0u; t < EDT_COUNT; ++t)
244+
for (uint32_t t = 0u; t < static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT); ++t)
245245
{
246-
const auto type = static_cast<E_DESCRIPTOR_TYPE>(t);
246+
const auto type = static_cast<IDescriptor::E_TYPE>(t);
247247
const auto descriptorCount = m_layout->getTotalDescriptorCount(type);
248248
if (descriptorCount == 0ull)
249249
continue;
250250

251-
auto descriptors = m_descriptors[type]->begin();
251+
auto descriptors = m_descriptors[t]->begin();
252252
assert(descriptors);
253253

254-
auto otherDescriptors = other->m_descriptors[type]->begin();
254+
auto otherDescriptors = other->m_descriptors[t]->begin();
255255

256256
for (uint32_t i = 0u; i < descriptorCount; ++i)
257257
{
@@ -286,14 +286,14 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
286286
if (m_layout->isAnyDependencyDummy(_levelsBelow))
287287
return true;
288288

289-
for (uint32_t t = 0u; t < EDT_COUNT; ++t)
289+
for (uint32_t t = 0u; t < static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT); ++t)
290290
{
291-
const auto type = static_cast<E_DESCRIPTOR_TYPE>(t);
291+
const auto type = static_cast<IDescriptor::E_TYPE>(t);
292292
const auto descriptorCount = m_layout->getTotalDescriptorCount(type);
293293
if (descriptorCount == 0ull)
294294
continue;
295295

296-
auto descriptors = m_descriptors[type]->begin();
296+
auto descriptors = m_descriptors[t]->begin();
297297
assert(descriptors);
298298

299299
for (uint32_t i = 0u; i < descriptorCount; ++i)
@@ -336,7 +336,7 @@ class NBL_API ICPUDescriptorSet final : public IDescriptorSet<ICPUDescriptorSetL
336336
void allocateDescriptors() override { assert(!"Invalid code path."); }
337337

338338
// Mutable samplers are NOT stored in this array (in SDescriptorInfo::SImageInfo::sampler member), but in IEmulatedDescriptorSet::m_mutableSamplers.
339-
core::smart_refctd_dynamic_array<ICPUDescriptorSet::SDescriptorInfo::SBufferImageInfo> m_descriptorInfos[EDT_COUNT];
339+
core::smart_refctd_dynamic_array<ICPUDescriptorSet::SDescriptorInfo::SBufferImageInfo> m_descriptorInfos[static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT)];
340340
};
341341

342342
}

include/nbl/asset/ICPUDescriptorSetLayout.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class NBL_API ICPUDescriptorSetLayout : public IDescriptorSetLayout<ICPUSampler>
3434
auto cp = core::make_smart_refctd_ptr<ICPUDescriptorSetLayout>(nullptr, nullptr);
3535
clone_common(cp.get());
3636

37-
for (uint32_t t = 0; t < asset::EDT_COUNT; ++t)
37+
for (uint32_t t = 0; t < static_cast<uint32_t>(asset::IDescriptor::E_TYPE::ET_COUNT); ++t)
3838
cp->m_descriptorRedirects[t] = m_descriptorRedirects[t].clone();
3939
cp->m_immutableSamplerRedirect = m_immutableSamplerRedirect.clone();
4040
cp->m_mutableSamplerRedirect = m_mutableSamplerRedirect.clone();
@@ -60,7 +60,7 @@ class NBL_API ICPUDescriptorSetLayout : public IDescriptorSetLayout<ICPUSampler>
6060
size_t conservativeSizeEstimate() const override
6161
{
6262
size_t result = 0ull;
63-
for (uint32_t t = 0; t < asset::EDT_COUNT; ++t)
63+
for (uint32_t t = 0; t < static_cast<uint32_t>(asset::IDescriptor::E_TYPE::ET_COUNT); ++t)
6464
result += m_descriptorRedirects[t].conservativeSizeEstimate();
6565
result += m_immutableSamplerRedirect.conservativeSizeEstimate();
6666
result += m_mutableSamplerRedirect.conservativeSizeEstimate();

include/nbl/asset/ICPUPipelineCache.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class NBL_API ICPUPipelineCache final : public IAsset
4848
struct SBinding
4949
{
5050
uint32_t binding;
51-
E_DESCRIPTOR_TYPE type;
51+
IDescriptor::E_TYPE type;
5252
uint32_t count;
5353
asset::IShader::E_SHADER_STAGE stageFlags;
5454
//TODO currently IDescriptorSetLayout::isIdentificallyDefined() compares just pointers of immutable samplers

include/nbl/asset/IDescriptor.h

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
77

88
#include "nbl/core/IReferenceCounted.h"
99

10-
namespace nbl
11-
{
12-
namespace asset
10+
namespace nbl::asset
1311
{
1412

1513
class NBL_API IDescriptor : public virtual core::IReferenceCounted
@@ -24,13 +22,37 @@ class NBL_API IDescriptor : public virtual core::IReferenceCounted
2422
EC_COUNT
2523
};
2624

25+
enum class E_TYPE : uint8_t
26+
{
27+
ET_COMBINED_IMAGE_SAMPLER = 0,
28+
ET_STORAGE_IMAGE,
29+
ET_UNIFORM_TEXEL_BUFFER,
30+
ET_STORAGE_TEXEL_BUFFER,
31+
ET_UNIFORM_BUFFER,
32+
ET_STORAGE_BUFFER,
33+
ET_UNIFORM_BUFFER_DYNAMIC,
34+
ET_STORAGE_BUFFER_DYNAMIC,
35+
ET_INPUT_ATTACHMENT,
36+
// Provided by VK_KHR_acceleration_structure
37+
ET_ACCELERATION_STRUCTURE,
38+
39+
// Support for the following is not available:
40+
// Provided by VK_EXT_inline_uniform_block
41+
// ET_INLINE_UNIFORM_BLOCK_EXT,
42+
// Provided by VK_NV_ray_tracing
43+
// ET_ACCELERATION_STRUCTURE_NV = 1000165000,
44+
// Provided by VK_VALVE_mutable_descriptor_type
45+
// ET_MUTABLE_VALVE = 1000351000,
46+
47+
ET_COUNT
48+
};
49+
2750
virtual E_CATEGORY getTypeCategory() const = 0;
2851

2952
protected:
3053
virtual ~IDescriptor() = default;
3154
};
3255

33-
}
3456
}
3557

3658
#endif

include/nbl/asset/IDescriptorSet.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
#include "nbl/asset/format/EFormat.h"
1515
#include "nbl/asset/IDescriptor.h"
16-
#include "nbl/asset/IDescriptorSetLayout.h" //for E_DESCRIPTOR_TYPE
16+
#include "nbl/asset/IDescriptorSetLayout.h" //for IDescriptor::E_TYPE
1717
#include "nbl/core/SRange.h"
1818

1919
namespace nbl::asset
@@ -145,7 +145,7 @@ class NBL_API IDescriptorSet : public virtual core::IReferenceCounted
145145
uint32_t binding;
146146
uint32_t arrayElement;
147147
uint32_t count;
148-
E_DESCRIPTOR_TYPE descriptorType;
148+
IDescriptor::E_TYPE descriptorType;
149149
SDescriptorInfo* info;
150150
};
151151

@@ -188,14 +188,14 @@ class NBL_API IEmulatedDescriptorSet
188188
if (!_layout)
189189
return;
190190

191-
for (uint32_t t = 0u; t < EDT_COUNT; ++t)
191+
for (uint32_t t = 0u; t < static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT); ++t)
192192
{
193-
const auto type = static_cast<E_DESCRIPTOR_TYPE>(t);
193+
const auto type = static_cast<IDescriptor::E_TYPE>(t);
194194
const uint32_t count = _layout->getTotalDescriptorCount(type);
195195
if (count == 0u)
196196
continue;
197197

198-
m_descriptors[type] = core::make_refctd_dynamic_array<core::smart_refctd_dynamic_array<core::smart_refctd_ptr<IDescriptor>>>(count);
198+
m_descriptors[t] = core::make_refctd_dynamic_array<core::smart_refctd_dynamic_array<core::smart_refctd_ptr<IDescriptor>>>(count);
199199
}
200200

201201
const uint32_t mutableSamplerCount = _layout->getTotalMutableSamplerCount();
@@ -207,7 +207,7 @@ class NBL_API IEmulatedDescriptorSet
207207
virtual ~IEmulatedDescriptorSet() = default;
208208

209209
protected:
210-
core::smart_refctd_dynamic_array<core::smart_refctd_ptr<IDescriptor>> m_descriptors[EDT_COUNT];
210+
core::smart_refctd_dynamic_array<core::smart_refctd_ptr<IDescriptor>> m_descriptors[static_cast<uint32_t>(IDescriptor::E_TYPE::ET_COUNT)];
211211
core::smart_refctd_dynamic_array<core::smart_refctd_ptr<ICPUSampler>> m_mutableSamplers = nullptr;
212212
};
213213

0 commit comments

Comments
 (0)