Fix queue family validation error

This commit is contained in:
Piotr Krygier committed 2023-09-26 14:15:21 +02:00
1 parent 940bc7e512
commit 7ca73f3c60
1 file changed
+8 -1
+8 -1
View File
@@ -387,6 +387,7 @@ uint8_t pick_physical_device()
*/
uint8_t create_device()
{
size_t device_queues_count = 0;
uint32_t queue_families_property_count = 0U;
ssize_t graphics_family_idx = -1;
ssize_t presentation_familiy_idx = -1;
@@ -413,6 +414,7 @@ uint8_t create_device()
graphics_family_idx = familyIdx;
LOGI("Setting graphics family idx to %d", familyIdx);
numberOfQueues = queue_family_properties[familyIdx].queueCount;
device_queues_count++;
}
}
@@ -421,6 +423,11 @@ uint8_t create_device()
vkGetPhysicalDeviceSurfaceSupportKHR(g_vulkan_state.physical_device, familyIdx, g_vulkan_state.surface, &presentSupport);
if (presentSupport) {
presentation_familiy_idx = familyIdx;
/* If this is the same queue family as in graphics family, don't increase queue count */
//TODO: This is still ugly, but fixes an error. Change later.
if (presentation_familiy_idx != graphics_family_idx) {
device_queues_count++;
}
LOGI("Setting present family idx to %d", familyIdx);
}
@@ -466,7 +473,7 @@ uint8_t create_device()
device_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
device_create_info.pNext = NULL;
device_create_info.flags = 0U;
device_create_info.queueCreateInfoCount = 2u; /* For now one is enough. TODO: Change when needed. */
device_create_info.queueCreateInfoCount = device_queues_count;
device_create_info.pQueueCreateInfos = device_queue_createinfos;
device_create_info.enabledLayerCount = 0;
device_create_info.ppEnabledLayerNames = NULL;