Skip to content
Snippets Groups Projects
Commit f7c7bcc0 authored by Lava Block's avatar Lava Block
Browse files

fix build + codefactor + rename

parent 1c408aff
No related branches found
No related tags found
No related merge requests found
...@@ -20,50 +20,53 @@ namespace lava { ...@@ -20,50 +20,53 @@ namespace lava {
return lava::add_dedicated_queues(queue_family_infos, physical_device->get_queue_family_properties(), priority); return lava::add_dedicated_queues(queue_family_infos, physical_device->get_queue_family_properties(), priority);
} }
queue_verify_result device::create_param::verify_queues() const { verify_queues_result device::create_param::verify_queues() const {
return lava::verify_queues(queue_family_infos, physical_device->get_queue_family_properties()); return lava::verify_queues(queue_family_infos, physical_device->get_queue_family_properties());
} }
bool device::create(create_param::ref param) { void log_verify_queues_failed(verify_queues_result result) {
physical_device = param.physical_device; switch (result) {
if (!physical_device) case verify_queues_result::empty_list: {
return false;
auto verify_result = param.verify_queues();
if (verify_result != queue_verify_result::ok) {
switch (verify_result) {
case queue_verify_result::empty_list: {
log()->error("create device - verify queues - param with empty list"); log()->error("create device - verify queues - param with empty list");
break; break;
} }
case queue_verify_result::no_properties: { case verify_queues_result::no_properties: {
log()->error("create device - verify queues - no device family properties"); log()->error("create device - verify queues - no device family properties");
break; break;
} }
case queue_verify_result::duplicate_family_index: { case verify_queues_result::duplicate_family_index: {
log()->error("create device - verify queues - duplicate family index"); log()->error("create device - verify queues - duplicate family index");
break; break;
} }
case queue_verify_result::no_family_index: { case verify_queues_result::no_family_index: {
log()->error("create device - verify queues - family index is not available"); log()->error("create device - verify queues - family index is not available");
break; break;
} }
case queue_verify_result::no_queues: { case verify_queues_result::no_queues: {
log()->error("create device - verify queues - undefined queues in family"); log()->error("create device - verify queues - undefined queues in family");
break; break;
} }
case queue_verify_result::too_many_queues: { case verify_queues_result::too_many_queues: {
log()->error("create device - verify queues - number of queues is incorrect"); log()->error("create device - verify queues - number of queues is incorrect");
break; break;
} }
case queue_verify_result::no_compatible_flags: { case verify_queues_result::no_compatible_flags: {
log()->error("create device - verify queues - no compatible flags in queue"); log()->error("create device - verify queues - no compatible flags in queue");
break; break;
} }
default: default:
log()->error("create device - verify queues"); log()->error("create device - verify queues");
} }
}
bool device::create(create_param::ref param) {
physical_device = param.physical_device;
if (!physical_device)
return false;
auto verify_result = param.verify_queues();
if (verify_result != verify_queues_result::ok) {
log_verify_queues_failed(verify_result);
return false; return false;
} }
......
...@@ -46,7 +46,7 @@ namespace lava { ...@@ -46,7 +46,7 @@ namespace lava {
bool add_dedicated_queues(r32 priority = 1.f); bool add_dedicated_queues(r32 priority = 1.f);
queue_verify_result verify_queues() const; verify_queues_result verify_queues() const;
}; };
~device() { ~device() {
......
...@@ -17,11 +17,14 @@ namespace lava { ...@@ -17,11 +17,14 @@ namespace lava {
list.clear(); list.clear();
for (auto& queue_family : properties) { for (auto& queue_family : properties) {
queue_family_info info; queue_family_info family_info;
info.family_index = list.size(); family_info.family_index = list.size();
for (auto queue_count = 0; queue_count < queue_family.queueCount; ++queue_count) for (auto queue_count = 0; queue_count < queue_family.queueCount; ++queue_count) {
info.queues.emplace_back(queue_family.queueFlags, 1.f); queue_info info{ queue_family.queueFlags, 1.f };
list.push_back(info); family_info.queues.push_back(info);
}
list.push_back(family_info);
} }
} }
...@@ -36,7 +39,7 @@ namespace lava { ...@@ -36,7 +39,7 @@ namespace lava {
queue_family_info family_info; queue_family_info family_info;
family_info.family_index = family_index; family_info.family_index = family_index;
family_info.add(flags, count, priority); family_info.add(flags, count, priority);
list.emplace_back(family_info); list.push_back(family_info);
} }
bool add_queues(queue_family_info::list& list, VkQueueFamilyPropertiesList const& properties, VkQueueFlags flags, ui32 count, r32 priority) { bool add_queues(queue_family_info::list& list, VkQueueFamilyPropertiesList const& properties, VkQueueFlags flags, ui32 count, r32 priority) {
...@@ -84,46 +87,49 @@ namespace lava { ...@@ -84,46 +87,49 @@ namespace lava {
return false; return false;
for (auto family_index = 1u; family_index < properties.size(); ++family_index) { for (auto family_index = 1u; family_index < properties.size(); ++family_index) {
queue_family_info info; queue_family_info family_info;
info.family_index = family_index; family_info.family_index = family_index;
for (auto queue_count = 0; queue_count < properties.at(family_index).queueCount; ++queue_count) for (auto queue_count = 0; queue_count < properties.at(family_index).queueCount; ++queue_count) {
info.queues.emplace_back(properties.at(family_index).queueFlags, priority); queue_info info{ properties.at(family_index).queueFlags, priority };
list.push_back(info); family_info.queues.push_back(info);
}
list.push_back(family_info);
} }
return true; return true;
} }
queue_verify_result verify_queues(queue_family_info::list const& list, VkQueueFamilyPropertiesList const& properties) { verify_queues_result verify_queues(queue_family_info::list const& list, VkQueueFamilyPropertiesList const& properties) {
if (list.empty()) if (list.empty())
return queue_verify_result::empty_list; return verify_queues_result::empty_list;
if (properties.empty()) if (properties.empty())
return queue_verify_result::no_properties; return verify_queues_result::no_properties;
index_list families; index_list families;
for (auto& info : list) { for (auto& info : list) {
if (contains(families, info.family_index)) if (contains(families, info.family_index))
return queue_verify_result::duplicate_family_index; return verify_queues_result::duplicate_family_index;
families.push_back(info.family_index); families.push_back(info.family_index);
if (info.family_index > properties.size() - 1) if (info.family_index > properties.size() - 1)
return queue_verify_result::no_family_index; return verify_queues_result::no_family_index;
if (info.queues.empty()) if (info.queues.empty())
return queue_verify_result::no_queues; return verify_queues_result::no_queues;
if (info.count() > properties[info.family_index].queueCount) if (info.count() > properties[info.family_index].queueCount)
return queue_verify_result::too_many_queues; return verify_queues_result::too_many_queues;
for (auto& queue : info.queues) { for (auto& queue : info.queues) {
if ((properties[info.family_index].queueFlags & queue.flags) != queue.flags) if ((properties[info.family_index].queueFlags & queue.flags) != queue.flags)
return queue_verify_result::no_compatible_flags; return verify_queues_result::no_compatible_flags;
} }
} }
return queue_verify_result::ok; return verify_queues_result::ok;
} }
} // namespace lava } // namespace lava
...@@ -39,8 +39,10 @@ namespace lava { ...@@ -39,8 +39,10 @@ namespace lava {
queue_info::list queues; queue_info::list queues;
void add(VkQueueFlags flags, ui32 count = 1, r32 priority = 1.f) { void add(VkQueueFlags flags, ui32 count = 1, r32 priority = 1.f) {
for (auto i = 0u; i < count; ++i) for (auto i = 0u; i < count; ++i) {
queues.emplace_back(flags, priority); queue_info info{ flags, priority };
queues.push_back(info);
}
} }
ui32 count() const { ui32 count() const {
...@@ -63,7 +65,7 @@ namespace lava { ...@@ -63,7 +65,7 @@ namespace lava {
VkQueueFamilyPropertiesList const& properties, VkQueueFamilyPropertiesList const& properties,
r32 priority = 1.f); r32 priority = 1.f);
enum class queue_verify_result : type { enum class verify_queues_result : type {
ok = 0, ok = 0,
empty_list, empty_list,
no_properties, no_properties,
...@@ -73,6 +75,6 @@ namespace lava { ...@@ -73,6 +75,6 @@ namespace lava {
too_many_queues, too_many_queues,
no_compatible_flags no_compatible_flags
}; };
queue_verify_result verify_queues(queue_family_info::list const& list, VkQueueFamilyPropertiesList const& properties); verify_queues_result verify_queues(queue_family_info::list const& list, VkQueueFamilyPropertiesList const& properties);
} // namespace lava } // namespace lava
...@@ -48,7 +48,7 @@ TEST_CASE("queue setup - GeForce GTX 1060", "[queue]") { ...@@ -48,7 +48,7 @@ TEST_CASE("queue setup - GeForce GTX 1060", "[queue]") {
REQUIRE(add_queues(list, properties, VK_QUEUE_TRANSFER_BIT, 1)); REQUIRE(add_queues(list, properties, VK_QUEUE_TRANSFER_BIT, 1));
} }
REQUIRE(verify_queues(list, properties) == queue_verify_result::ok); REQUIRE(verify_queues(list, properties) == verify_queues_result::ok);
} }
TEST_CASE("queue setup - Radeon RX 580 Series", "[queue]") { TEST_CASE("queue setup - Radeon RX 580 Series", "[queue]") {
...@@ -87,7 +87,7 @@ TEST_CASE("queue setup - Radeon RX 580 Series", "[queue]") { ...@@ -87,7 +87,7 @@ TEST_CASE("queue setup - Radeon RX 580 Series", "[queue]") {
REQUIRE_FALSE(add_queues(list, properties, VK_QUEUE_COMPUTE_BIT, 1)); REQUIRE_FALSE(add_queues(list, properties, VK_QUEUE_COMPUTE_BIT, 1));
} }
REQUIRE(verify_queues(list, properties) == queue_verify_result::ok); REQUIRE(verify_queues(list, properties) == verify_queues_result::ok);
} }
TEST_CASE("queue setup - Intel(R) HD Graphics 620", "[queue]") { TEST_CASE("queue setup - Intel(R) HD Graphics 620", "[queue]") {
...@@ -102,13 +102,13 @@ TEST_CASE("queue setup - Intel(R) HD Graphics 620", "[queue]") { ...@@ -102,13 +102,13 @@ TEST_CASE("queue setup - Intel(R) HD Graphics 620", "[queue]") {
SECTION("no dedicated queues available") { SECTION("no dedicated queues available") {
REQUIRE_FALSE(add_dedicated_queues(list, properties)); REQUIRE_FALSE(add_dedicated_queues(list, properties));
REQUIRE(verify_queues(list, properties) == queue_verify_result::empty_list); REQUIRE(verify_queues(list, properties) == verify_queues_result::empty_list);
} }
SECTION("no more queues available") { SECTION("no more queues available") {
REQUIRE(add_queues(list, properties, VK_QUEUE_GRAPHICS_BIT, 1)); REQUIRE(add_queues(list, properties, VK_QUEUE_GRAPHICS_BIT, 1));
REQUIRE_FALSE(add_queues(list, properties, VK_QUEUE_COMPUTE_BIT, 1)); REQUIRE_FALSE(add_queues(list, properties, VK_QUEUE_COMPUTE_BIT, 1));
REQUIRE(verify_queues(list, properties) == queue_verify_result::ok); REQUIRE(verify_queues(list, properties) == verify_queues_result::ok);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment