Fix queue family validation error
This commit is contained in:
1 parent
940bc7e512
commit
7ca73f3c60
1 file changed
+8
-1
@@ -387,6 +387,7 @@ uint8_t pick_physical_device()
|
|||||||
*/
|
*/
|
||||||
uint8_t create_device()
|
uint8_t create_device()
|
||||||
{
|
{
|
||||||
|
size_t device_queues_count = 0;
|
||||||
uint32_t queue_families_property_count = 0U;
|
uint32_t queue_families_property_count = 0U;
|
||||||
ssize_t graphics_family_idx = -1;
|
ssize_t graphics_family_idx = -1;
|
||||||
ssize_t presentation_familiy_idx = -1;
|
ssize_t presentation_familiy_idx = -1;
|
||||||
@@ -413,6 +414,7 @@ uint8_t create_device()
|
|||||||
graphics_family_idx = familyIdx;
|
graphics_family_idx = familyIdx;
|
||||||
LOGI("Setting graphics family idx to %d", familyIdx);
|
LOGI("Setting graphics family idx to %d", familyIdx);
|
||||||
numberOfQueues = queue_family_properties[familyIdx].queueCount;
|
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);
|
vkGetPhysicalDeviceSurfaceSupportKHR(g_vulkan_state.physical_device, familyIdx, g_vulkan_state.surface, &presentSupport);
|
||||||
if (presentSupport) {
|
if (presentSupport) {
|
||||||
presentation_familiy_idx = familyIdx;
|
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);
|
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.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
||||||
device_create_info.pNext = NULL;
|
device_create_info.pNext = NULL;
|
||||||
device_create_info.flags = 0U;
|
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.pQueueCreateInfos = device_queue_createinfos;
|
||||||
device_create_info.enabledLayerCount = 0;
|
device_create_info.enabledLayerCount = 0;
|
||||||
device_create_info.ppEnabledLayerNames = NULL;
|
device_create_info.ppEnabledLayerNames = NULL;
|
||||||
|
|||||||
Reference in new issue
Block a user