Получите Очереди Семей в Vulkan Qt - PullRequest
0 голосов
/ 13 февраля 2020

Я использую пример QVulkanWindow , пытаясь загрузить изображение и отобразить его в окне Qt.

Это устанавливает экземпляр Vulkan:

if (!inst.create())
    qFatal("Failed to create Vulkan instance: %d", inst.errorCode());

VulkanWindow w;
w.setVulkanInstance(&inst);

Теперь в initResources() класса VulkanRenderer я хочу получить GraphicsQueue с устройства:

m_devFuncs->vkGetDeviceQueue(device, VK_QUEUE_GRAPHICS_BIT, 0, &graphicsQueue);

Я получаю ошибку:

vkDebug: Validation: 0:  [ VUID-vkGetDeviceQueue-queueFamilyIndex-00384 ] Object: 0x564e779a5f90 (Type = 3) | 
vkGetDeviceQueue: queueFamilyIndex (= 1) is not one of the queue families given via VkDeviceQueueCreateInfo structures when the device was created. 
The Vulkan spec states: queueFamilyIndex must be one of the queue family indices specified when device was created, via the VkDeviceQueueCreateInfo structure 

Не установил ли Qt Графическая очередь? Или я делаю это неправильно? Или я должен создать свой собственный VkInstance и передать его в Qt?

1 Ответ

1 голос
/ 13 февраля 2020

VK_QUEUE_GRAPHICS_BIT является перечислителем, а не индексом семейства очередей. Так что этот код в корне неверен.

Метод graphicsQueue() для QVulkanWindow возвращает VkQueue, который вы можете использовать.

...