diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2023-09-21 10:16:03 +0200 |
---|---|---|
committer | Christian Strømme <christian.stromme@qt.io> | 2023-09-25 09:15:37 +0000 |
commit | 8a5a5f6c9773dc41b4c8685bc1c6bd34ce49a320 (patch) | |
tree | 1a3de242b2b964455811cfa4f74d95f45d9f4c59 /src/gui/vulkan/qbasicvulkanplatforminstance.cpp | |
parent | 6ca2008d6e1e02e85f39faab28d5c8a0c0dad082 (diff) |
vulkan: Do not set the portability bit with old SDKs
Because it's a validation error with old ones, but required
in some cases from 1.3.216 on (MoltenVK). Ridiculous.
Amends 7fbc741d107ab679f6abd680ec909ce9b2bf333a and
b018bc6e2d27b95024ee8f1b8c719199df47c264.
Fixes: QTBUG-117412
Pick-to: 6.6 6.5
Change-Id: I9b4cacbe611d4e557ee1c156527142eb919d6b77
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
Diffstat (limited to 'src/gui/vulkan/qbasicvulkanplatforminstance.cpp')
-rw-r--r-- | src/gui/vulkan/qbasicvulkanplatforminstance.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gui/vulkan/qbasicvulkanplatforminstance.cpp b/src/gui/vulkan/qbasicvulkanplatforminstance.cpp index 31e27cdac5..bbe9f9e1cb 100644 --- a/src/gui/vulkan/qbasicvulkanplatforminstance.cpp +++ b/src/gui/vulkan/qbasicvulkanplatforminstance.cpp @@ -259,8 +259,13 @@ void QBasicPlatformVulkanInstance::initInstance(QVulkanInstance *instance, const VkInstanceCreateInfo instInfo = {}; instInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; instInfo.pApplicationInfo = &appInfo; - if (!flags.testFlag(QVulkanInstance::NoPortabilityDrivers)) - instInfo.flags |= 0x00000001; // VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR + if (!flags.testFlag(QVulkanInstance::NoPortabilityDrivers)) { + // With old Vulkan SDKs setting a non-zero flags gives a validation error. + // Whereas from 1.3.216 on the portability bit is required for MoltenVK to function. + // Hence the version check. + if (m_supportedApiVersion >= QVersionNumber(1, 3, 216)) + instInfo.flags |= 0x00000001; // VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR + } QList<const char *> layerNameVec; for (const QByteArray &ba : std::as_const(m_enabledLayers)) |