|
@@ -426,7 +426,7 @@ static void findPhysicalDevice(void)
|
|
|
|
|
|
static void createDevice(void)
|
|
|
{
|
|
|
- VkDeviceQueueCreateInfo deviceQueueCreateInfo[1] = { { 0 } };
|
|
|
+ VkDeviceQueueCreateInfo deviceQueueCreateInfo[2] = { { 0 }, { 0 } };
|
|
|
static const float queuePriority[] = { 1.0f };
|
|
|
VkDeviceCreateInfo deviceCreateInfo = { 0 };
|
|
|
static const char *const deviceExtensionNames[] = {
|
|
@@ -434,17 +434,27 @@ static void createDevice(void)
|
|
|
};
|
|
|
VkResult result;
|
|
|
|
|
|
- deviceQueueCreateInfo->sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
|
|
- deviceQueueCreateInfo->queueFamilyIndex = vulkanContext->graphicsQueueFamilyIndex;
|
|
|
- deviceQueueCreateInfo->queueCount = 1;
|
|
|
- deviceQueueCreateInfo->pQueuePriorities = &queuePriority[0];
|
|
|
-
|
|
|
deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
|
|
- deviceCreateInfo.queueCreateInfoCount = 1;
|
|
|
+ deviceCreateInfo.queueCreateInfoCount = 0;
|
|
|
deviceCreateInfo.pQueueCreateInfos = deviceQueueCreateInfo;
|
|
|
deviceCreateInfo.pEnabledFeatures = NULL;
|
|
|
deviceCreateInfo.enabledExtensionCount = SDL_arraysize(deviceExtensionNames);
|
|
|
deviceCreateInfo.ppEnabledExtensionNames = deviceExtensionNames;
|
|
|
+
|
|
|
+ deviceQueueCreateInfo[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
|
|
+ deviceQueueCreateInfo[0].queueFamilyIndex = vulkanContext->graphicsQueueFamilyIndex;
|
|
|
+ deviceQueueCreateInfo[0].queueCount = 1;
|
|
|
+ deviceQueueCreateInfo[0].pQueuePriorities = queuePriority;
|
|
|
+ ++deviceCreateInfo.queueCreateInfoCount;
|
|
|
+
|
|
|
+ if (vulkanContext->presentQueueFamilyIndex != vulkanContext->graphicsQueueFamilyIndex) {
|
|
|
+ deviceQueueCreateInfo[1].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
|
|
+ deviceQueueCreateInfo[1].queueFamilyIndex = vulkanContext->presentQueueFamilyIndex;
|
|
|
+ deviceQueueCreateInfo[1].queueCount = 1;
|
|
|
+ deviceQueueCreateInfo[1].pQueuePriorities = queuePriority;
|
|
|
+ ++deviceCreateInfo.queueCreateInfoCount;
|
|
|
+ }
|
|
|
+
|
|
|
result = vkCreateDevice(vulkanContext->physicalDevice, &deviceCreateInfo, NULL, &vulkanContext->device);
|
|
|
if (result != VK_SUCCESS) {
|
|
|
vulkanContext->device = VK_NULL_HANDLE;
|