Skip to content

Commit ff741e1

Browse files
Change queue creation parameters to require less raw pointer arrays
1 parent b15d543 commit ff741e1

File tree

8 files changed

+26
-25
lines changed

8 files changed

+26
-25
lines changed

include/nbl/system/CMountDirectoryArchive.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
#include "nbl/system/IFile.h"
77

8-
namespace nbl::system {
9-
8+
namespace nbl::system
9+
{
1010

1111

1212
class CMountDirectoryArchive : public IFileArchive

include/nbl/system/IApplicationFramework.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class IApplicationFramework : public core::IReferenceCounted
5757
static int main(int argc, char** argv)
5858
{
5959
path CWD = system::path(argv[0]).parent_path().generic_string() + "/";
60-
auto app = core::make_smart_refctd_ptr<CRTP>(CWD/"../../media/",CWD/"../../tmp/",CWD/"../",CWD);
60+
auto app = core::make_smart_refctd_ptr<CRTP>(CWD/"../",CWD,CWD/"../../media/",CWD/"../../tmp/");
6161
for (auto i=0; i<argc; i++)
6262
app->argv.emplace_back(argv[i]);
6363

include/nbl/video/IGPUQueue.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class IGPUSemaphore;
1313
class IGPUQueue : public core::Interface, public core::Unmovable
1414
{
1515
public:
16-
enum E_CREATE_FLAGS : uint32_t
16+
enum E_CREATE_FLAGS : uint16_t
1717
{
1818
ECF_NONE = 0x0,
1919
ECF_PROTECTED_BIT = 0x01

include/nbl/video/ILogicalDevice.h

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,22 @@ class NBL_API2 ILogicalDevice : public core::IReferenceCounted, public IDeviceMe
4242
public:
4343
struct SQueueCreationParams
4444
{
45-
IGPUQueue::E_CREATE_FLAGS flags;
46-
uint32_t familyIndex;
47-
uint32_t count;
48-
const float* priorities;
45+
constexpr static inline uint8_t MaxQueuesInFamily = 63;
46+
47+
IGPUQueue::E_CREATE_FLAGS flags = IGPUQueue::ECF_NONE;
48+
uint8_t familyIndex = ~0u;
49+
uint8_t count = 0;
50+
std::array<float,MaxQueuesInFamily> priorities = []()->auto{
51+
std::array<float,MaxQueuesInFamily> retval;retval.fill(IGPUQueue::DEFAULT_QUEUE_PRIORITY);return retval;
52+
}();
4953
};
5054
struct SCreationParams
5155
{
56+
constexpr static inline uint8_t MaxQueueFamilies = 16;
57+
5258
uint32_t queueParamsCount;
53-
const SQueueCreationParams* queueParams;
54-
SPhysicalDeviceFeatures featuresToEnable;
59+
std::array<SQueueCreationParams, MaxQueueFamilies> queueParams = {};
60+
SPhysicalDeviceFeatures featuresToEnable = {};
5561
core::smart_refctd_ptr<asset::CCompilerSet> compilerSet = nullptr;
5662
};
5763

@@ -483,18 +489,19 @@ class NBL_API2 ILogicalDevice : public core::IReferenceCounted, public IDeviceMe
483489
: m_api(api), m_physicalDevice(physicalDevice), m_enabledFeatures(params.featuresToEnable), m_compilerSet(params.compilerSet)
484490
{
485491
uint32_t qcnt = 0u;
486-
uint32_t greatestFamNum = 0u;
487-
for (uint32_t i = 0u; i < params.queueParamsCount; ++i)
492+
uint8_t greatestFamNum = 0u;
493+
for (uint32_t i=0u; i<params.queueParamsCount; ++i)
488494
{
489495
greatestFamNum = (std::max)(greatestFamNum, params.queueParams[i].familyIndex);
490496
qcnt += params.queueParams[i].count;
491497
}
492498

493499
m_queues = core::make_refctd_dynamic_array<queues_array_t>(qcnt);
494500
m_offsets = core::make_refctd_dynamic_array<q_offsets_array_t>(greatestFamNum + 1u, 0u);
495-
496-
for (const auto& qci : core::SRange<const SQueueCreationParams>(params.queueParams, params.queueParams + params.queueParamsCount))
501+
502+
for (uint32_t i=0u; i<params.queueParamsCount; ++i)
497503
{
504+
const auto& qci = params.queueParams[i];
498505
if (qci.familyIndex == greatestFamNum)
499506
continue;
500507

include/nbl/video/IPhysicalDevice.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -574,11 +574,7 @@ class NBL_API2 IPhysicalDevice : public core::Interface, public core::Unmovable
574574
};
575575
auto getQueueFamilyProperties() const
576576
{
577-
using citer_t = qfam_props_array_t::pointee::const_iterator;
578-
return core::SRange<const SQueueFamilyProperties, citer_t, citer_t>(
579-
m_qfamProperties->cbegin(),
580-
m_qfamProperties->cend()
581-
);
577+
return core::SRange<const SQueueFamilyProperties>(m_qfamProperties->data(),m_qfamProperties->data()+m_qfamProperties->size());
582578
}
583579

584580
struct SBufferFormatPromotionRequest {

src/nbl/video/CVulkanPhysicalDevice.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2519,7 +2519,7 @@ class CVulkanPhysicalDevice final : public IPhysicalDevice
25192519
qci.queueCount = qparams.count;
25202520
qci.queueFamilyIndex = qparams.familyIndex;
25212521
qci.flags = static_cast<VkDeviceQueueCreateFlags>(qparams.flags);
2522-
qci.pQueuePriorities = qparams.priorities;
2522+
qci.pQueuePriorities = qparams.priorities.data();
25232523
}
25242524
vk_createInfo.pQueueCreateInfos = queueCreateInfos.data();
25252525

src/nbl/video/IPhysicalDevice.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ IPhysicalDevice::IPhysicalDevice(core::smart_refctd_ptr<system::ISystem>&& s, IA
99

1010
bool IPhysicalDevice::validateLogicalDeviceCreation(const ILogicalDevice::SCreationParams& params) const
1111
{
12-
using range_t = core::SRange<const ILogicalDevice::SQueueCreationParams>;
13-
range_t qcis(params.queueParams, params.queueParams+params.queueParamsCount);
14-
15-
for (const auto& qci : qcis)
12+
for (auto i=0u; i<params.queueParamsCount; i++)
1613
{
14+
const auto& qci = params.queueParams[i];
1715
if (qci.familyIndex >= m_qfamProperties->size())
1816
return false;
1917

0 commit comments

Comments
 (0)