mirror of https://github.com/libsdl-org/SDL.git
Fixed device queue initialization when render and present queue families are different
This commit is contained in:
parent
945162c6d9
commit
fb3bf1dcbd
|
|
@ -426,7 +426,7 @@ static void findPhysicalDevice(void)
|
||||||
|
|
||||||
static void createDevice(void)
|
static void createDevice(void)
|
||||||
{
|
{
|
||||||
VkDeviceQueueCreateInfo deviceQueueCreateInfo[1] = { { 0 } };
|
VkDeviceQueueCreateInfo deviceQueueCreateInfo[2] = { { 0 }, { 0 } };
|
||||||
static const float queuePriority[] = { 1.0f };
|
static const float queuePriority[] = { 1.0f };
|
||||||
VkDeviceCreateInfo deviceCreateInfo = { 0 };
|
VkDeviceCreateInfo deviceCreateInfo = { 0 };
|
||||||
static const char *const deviceExtensionNames[] = {
|
static const char *const deviceExtensionNames[] = {
|
||||||
|
|
@ -434,17 +434,27 @@ static void createDevice(void)
|
||||||
};
|
};
|
||||||
VkResult result;
|
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.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
|
||||||
deviceCreateInfo.queueCreateInfoCount = 1;
|
deviceCreateInfo.queueCreateInfoCount = 0;
|
||||||
deviceCreateInfo.pQueueCreateInfos = deviceQueueCreateInfo;
|
deviceCreateInfo.pQueueCreateInfos = deviceQueueCreateInfo;
|
||||||
deviceCreateInfo.pEnabledFeatures = NULL;
|
deviceCreateInfo.pEnabledFeatures = NULL;
|
||||||
deviceCreateInfo.enabledExtensionCount = SDL_arraysize(deviceExtensionNames);
|
deviceCreateInfo.enabledExtensionCount = SDL_arraysize(deviceExtensionNames);
|
||||||
deviceCreateInfo.ppEnabledExtensionNames = 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);
|
result = vkCreateDevice(vulkanContext->physicalDevice, &deviceCreateInfo, NULL, &vulkanContext->device);
|
||||||
if (result != VK_SUCCESS) {
|
if (result != VK_SUCCESS) {
|
||||||
vulkanContext->device = VK_NULL_HANDLE;
|
vulkanContext->device = VK_NULL_HANDLE;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue