Do not constantly create new surfaces with MoltenVK on macOS
Querying the VkSurfaceKHR for a window is expected to create the surface once and then return the same value afterwards. Task-number: QTBUG-82600 Change-Id: Ib3e99dfca4d940de1a14348eb1909d372a7dde04 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>bb10
parent
23fd7bdf01
commit
7b8616859a
|
|
@ -107,7 +107,7 @@ void *QCocoaNativeInterface::nativeResourceForWindow(const QByteArray &resourceS
|
|||
#if QT_CONFIG(vulkan)
|
||||
} else if (resourceString == "vkSurface") {
|
||||
if (QVulkanInstance *instance = window->vulkanInstance())
|
||||
return static_cast<QCocoaVulkanInstance *>(instance->handle())->createSurface(window);
|
||||
return static_cast<QCocoaVulkanInstance *>(instance->handle())->surface(window);
|
||||
#endif
|
||||
}
|
||||
return nullptr;
|
||||
|
|
|
|||
|
|
@ -61,9 +61,11 @@ public:
|
|||
|
||||
void createOrAdoptInstance() override;
|
||||
|
||||
VkSurfaceKHR *createSurface(QWindow *window);
|
||||
VkSurfaceKHR createSurface(NSView *view);
|
||||
VkSurfaceKHR *surface(QWindow *window);
|
||||
|
||||
private:
|
||||
VkSurfaceKHR createSurface(NSView *view);
|
||||
|
||||
QVulkanInstance *m_instance = nullptr;
|
||||
QLibrary m_lib;
|
||||
VkSurfaceKHR m_nullSurface = nullptr;
|
||||
|
|
|
|||
|
|
@ -57,12 +57,11 @@ void QCocoaVulkanInstance::createOrAdoptInstance()
|
|||
initInstance(m_instance, QByteArrayList() << QByteArrayLiteral("VK_MVK_macos_surface"));
|
||||
}
|
||||
|
||||
VkSurfaceKHR *QCocoaVulkanInstance::createSurface(QWindow *window)
|
||||
VkSurfaceKHR *QCocoaVulkanInstance::surface(QWindow *window)
|
||||
{
|
||||
QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow *>(window->handle());
|
||||
if (cocoaWindow->m_vulkanSurface)
|
||||
destroySurface(cocoaWindow->m_vulkanSurface);
|
||||
cocoaWindow->m_vulkanSurface = createSurface(cocoaWindow->m_view);
|
||||
if (!cocoaWindow->m_vulkanSurface)
|
||||
cocoaWindow->m_vulkanSurface = createSurface(cocoaWindow->m_view);
|
||||
return &cocoaWindow->m_vulkanSurface;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue