7#include <QLoggingCategory>
11Q_LOGGING_CATEGORY(lcGuiVk,
"qt.vulkan")
13static QVulkanInstance *s_vulkanInstance;
14Q_CONSTINIT
static QVulkanDefaultInstance::Flags s_vulkanInstanceFlags;
16QVulkanDefaultInstance::Flags QVulkanDefaultInstance::flags()
18 return s_vulkanInstanceFlags;
21void QVulkanDefaultInstance::setFlag(Flag flag,
bool on)
24 qWarning(
"QVulkanDefaultInstance::setFlag called when Vulkan instance is already created; this has no effect");
26 s_vulkanInstanceFlags.setFlag(flag, on);
29bool QVulkanDefaultInstance::hasInstance()
31 return s_vulkanInstance !=
nullptr;
34QVulkanInstance *QVulkanDefaultInstance::instance()
37 return s_vulkanInstance;
39 s_vulkanInstance =
new QVulkanInstance;
57 const QVersionNumber supportedVersion = s_vulkanInstance->supportedApiVersion();
58 if (supportedVersion >= QVersionNumber(1, 4))
59 s_vulkanInstance->setApiVersion(QVersionNumber(1, 4));
60 else if (supportedVersion >= QVersionNumber(1, 3))
61 s_vulkanInstance->setApiVersion(QVersionNumber(1, 3));
62 else if (supportedVersion >= QVersionNumber(1, 2))
63 s_vulkanInstance->setApiVersion(QVersionNumber(1, 2));
64 else if (supportedVersion >= QVersionNumber(1, 1))
65 s_vulkanInstance->setApiVersion(QVersionNumber(1, 1));
66 qCDebug(lcGuiVk) <<
"QVulkanDefaultInstance: Creating Vulkan instance"
67 <<
"Requesting Vulkan API" << s_vulkanInstance->apiVersion()
68 <<
"Instance-level version was reported as" << supportedVersion;
70 if (s_vulkanInstanceFlags.testFlag(EnableValidation))
71 s_vulkanInstance->setLayers({
"VK_LAYER_KHRONOS_validation" });
73 s_vulkanInstance->setExtensions(QRhiVulkanInitParams::preferredInstanceExtensions());
75 if (!s_vulkanInstance->create()) {
76 qWarning(
"QVulkanDefaultInstance: Failed to create Vulkan instance");
77 delete s_vulkanInstance;
78 s_vulkanInstance =
nullptr;
81 return s_vulkanInstance;
84void QVulkanDefaultInstance::cleanup()
86 delete s_vulkanInstance;
87 s_vulkanInstance =
nullptr;
Combined button and popup list for selecting options.