diff options
Diffstat (limited to 'src/plugins/platforms/vkkhrdisplay/qvkkhrdisplayvulkaninstance.cpp')
-rw-r--r-- | src/plugins/platforms/vkkhrdisplay/qvkkhrdisplayvulkaninstance.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/plugins/platforms/vkkhrdisplay/qvkkhrdisplayvulkaninstance.cpp b/src/plugins/platforms/vkkhrdisplay/qvkkhrdisplayvulkaninstance.cpp index 96c7fbfbdd..2e8d60209e 100644 --- a/src/plugins/platforms/vkkhrdisplay/qvkkhrdisplayvulkaninstance.cpp +++ b/src/plugins/platforms/vkkhrdisplay/qvkkhrdisplayvulkaninstance.cpp @@ -46,6 +46,9 @@ void QVkKhrDisplayVulkanInstance::createOrAdoptInstance() m_enumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) m_vkGetInstanceProcAddr(m_vkInst, "vkEnumeratePhysicalDevices"); + m_getPhysicalDeviceSurfaceSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceSupportKHR>( + m_vkGetInstanceProcAddr(m_vkInst, "vkGetPhysicalDeviceSurfaceSupportKHR")); + // Use for first physical device, unless overridden by QT_VK_PHYSICAL_DEVICE_INDEX. // This behavior matches what the Vulkan backend of QRhi would do. @@ -81,10 +84,14 @@ bool QVkKhrDisplayVulkanInstance::supportsPresent(VkPhysicalDevice physicalDevic uint32_t queueFamilyIndex, QWindow *window) { - Q_UNUSED(physicalDevice); - Q_UNUSED(queueFamilyIndex); - Q_UNUSED(window); - return true; + if (!m_getPhysicalDeviceSurfaceSupportKHR) + return true; + + VkSurfaceKHR surface = QVulkanInstance::surfaceForWindow(window); + VkBool32 supported = false; + m_getPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, &supported); + + return supported; } bool QVkKhrDisplayVulkanInstance::chooseDisplay() @@ -136,7 +143,7 @@ bool QVkKhrDisplayVulkanInstance::chooseDisplay() j, (void *) mode.displayMode, mode.parameters.visibleRegion.width, mode.parameters.visibleRegion.height, mode.parameters.refreshRate); - if (j == wantedModeIndex) { + if (j == wantedModeIndex && i == wantedDisplayIndex) { m_displayMode = mode.displayMode; m_width = mode.parameters.visibleRegion.width; m_height = mode.parameters.visibleRegion.height; |