diff options
Diffstat (limited to 'src/gui/vulkan/qvulkandefaultinstance.cpp')
-rw-r--r-- | src/gui/vulkan/qvulkandefaultinstance.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/gui/vulkan/qvulkandefaultinstance.cpp b/src/gui/vulkan/qvulkandefaultinstance.cpp index c106857691..b4f343cf17 100644 --- a/src/gui/vulkan/qvulkandefaultinstance.cpp +++ b/src/gui/vulkan/qvulkandefaultinstance.cpp @@ -2,7 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qvulkandefaultinstance_p.h" -#include <private/qrhivulkan_p.h> +#include <rhi/qrhi.h> #include <QLoggingCategory> QT_BEGIN_NAMESPACE @@ -10,7 +10,7 @@ QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(lcGuiVk, "qt.vulkan") static QVulkanInstance *s_vulkanInstance; -static QVulkanDefaultInstance::Flags s_vulkanInstanceFlags; +Q_CONSTINIT static QVulkanDefaultInstance::Flags s_vulkanInstanceFlags; QVulkanDefaultInstance::Flags QVulkanDefaultInstance::flags() { @@ -36,26 +36,28 @@ QVulkanInstance *QVulkanDefaultInstance::instance() s_vulkanInstance = new QVulkanInstance; // With a Vulkan implementation >= 1.1 we can check what - // vkEnumerateInstanceVersion() says and request 1.2 or 1.1 based on the - // result. To prevent future surprises, be conservative and ignore any > 1.2 + // vkEnumerateInstanceVersion() says and request 1.3/1.2/1.1 based on the + // result. To prevent future surprises, be conservative and ignore any > 1.3 // versions for now. For 1.0 implementations nothing will be requested, the // default 0 in VkApplicationInfo means 1.0. // // Vulkan 1.0 is actually sufficient for 99% of Qt Quick (3D)'s - // functionality. In addition, Vulkan implementations tend to enable 1.1 and 1.2 + // functionality. In addition, Vulkan implementations tend to enable 1.1+ // functionality regardless of the VkInstance API request. However, the // validation layer seems to take this fairly seriously, so we should be - // prepared for using 1.1 and 1.2 features in a fully correct manner. This also - // helps custom Vulkan code in applications, which is not under out control; it - // is ideal if Vulkan 1.1 and 1.2 are usable without requiring such applications - // to create their own QVulkanInstance just to be able to make an appropriate - // setApiVersion() call on it. + // prepared for using 1.1+ features in a fully correct manner. This also + // helps custom Vulkan code in applications, which is not under out + // control; it is ideal if Vulkan 1.1+ versions are usable without + // requiring such applications to create their own QVulkanInstance just to + // be able to make an appropriate setApiVersion() call on it. const QVersionNumber supportedVersion = s_vulkanInstance->supportedApiVersion(); - if (supportedVersion >= QVersionNumber(1, 2)) + if (supportedVersion >= QVersionNumber(1, 3)) + s_vulkanInstance->setApiVersion(QVersionNumber(1, 3)); + else if (supportedVersion >= QVersionNumber(1, 2)) s_vulkanInstance->setApiVersion(QVersionNumber(1, 2)); else if (supportedVersion >= QVersionNumber(1, 1)) - s_vulkanInstance->setApiVersion(QVersionNumber(1, 2)); + s_vulkanInstance->setApiVersion(QVersionNumber(1, 1)); qCDebug(lcGuiVk) << "QVulkanDefaultInstance: Creating Vulkan instance" << "Requesting Vulkan API" << s_vulkanInstance->apiVersion() << "Instance-level version was reported as" << supportedVersion; |