diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2022-08-02 11:49:25 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2022-08-05 11:41:34 +0200 |
commit | 9123c6a6c4ab9cdc85aeec145d9aba962dab0270 (patch) | |
tree | 5a8b36d6f88c300d0bd2234cabe916b5f8dc5fd8 | |
parent | 614ab3a4bdcfe77cb48fa9be5a915c526cdc07a9 (diff) |
Sync Vulkan device features between QVulkanWindow and QRhi
Enable all 1.0 core features that are reported as supported.
This has been recently added for QVulkanWindow, but not for QRhi's
Vulkan backend. Synchronize the behavior between the two.
In addition, explicitly turn off robustBufferAccess in both places.
This is a feature that may affect performance by nature, and so we
cannot just blindly enable it.
Amends 7888d846ebd337d586971aa92bbd21cd227c2bc5
Task-number: QTBUG-105158
Change-Id: Icd7d1800a24a39a2bc427966022185885fa92d55
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
-rw-r--r-- | src/gui/rhi/qrhivulkan.cpp | 8 | ||||
-rw-r--r-- | src/gui/vulkan/qvulkanwindow.cpp | 4 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/gui/rhi/qrhivulkan.cpp b/src/gui/rhi/qrhivulkan.cpp index 26c153afff..57998119e0 100644 --- a/src/gui/rhi/qrhivulkan.cpp +++ b/src/gui/rhi/qrhivulkan.cpp @@ -540,6 +540,14 @@ bool QRhiVulkan::create(QRhi::Flags flags) devInfo.enabledExtensionCount = uint32_t(requestedDevExts.count()); devInfo.ppEnabledExtensionNames = requestedDevExts.constData(); + // Enable all supported 1.0 core features, except ones that likely + // involve a performance penalty. + VkPhysicalDeviceFeatures features; + memset(&features, 0, sizeof(features)); + f->vkGetPhysicalDeviceFeatures(physDev, &features); + features.robustBufferAccess = VK_FALSE; + devInfo.pEnabledFeatures = &features; + err = f->vkCreateDevice(physDev, &devInfo, nullptr, &dev); if (err != VK_SUCCESS) { qWarning("Failed to create device: %d", err); diff --git a/src/gui/vulkan/qvulkanwindow.cpp b/src/gui/vulkan/qvulkanwindow.cpp index 201f727707..2739e12a15 100644 --- a/src/gui/vulkan/qvulkanwindow.cpp +++ b/src/gui/vulkan/qvulkanwindow.cpp @@ -729,10 +729,12 @@ void QVulkanWindowPrivate::init() devInfo.enabledExtensionCount = devExts.count(); devInfo.ppEnabledExtensionNames = devExts.constData(); - // Enable all 1.0 features. + // Enable all supported 1.0 core features, except ones that likely + // involve a performance penalty. VkPhysicalDeviceFeatures features; memset(&features, 0, sizeof(features)); f->vkGetPhysicalDeviceFeatures(physDev, &features); + features.robustBufferAccess = VK_FALSE; devInfo.pEnabledFeatures = &features; // Device layers are not supported by QVulkanWindow since that's an already deprecated |