diff options
author | Morten Johan Sørvig <morten.sorvig@qt.io> | 2018-04-25 23:27:35 +0200 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@qt.io> | 2018-05-14 09:32:48 +0000 |
commit | 432df3f8c8504b333ecc76df4ce19a7b2c04ae77 (patch) | |
tree | ab8e2e6269c2e1f5ac3a9ebd0069784aade19cc3 /src/platformsupport | |
parent | fec8a9323b853ca0cefdbb755fcc74ca6bdfab03 (diff) |
Vulkan: share library loading implementation
The macOS, Windows, and XCB implementations are identical
and can be moved to QBasicPlatformVulkanInstance.
Change-Id: Id84b27ffd87f86afe3798c4ad2743ba05e6190d3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/vkconvenience/qbasicvulkanplatforminstance.cpp | 15 | ||||
-rw-r--r-- | src/platformsupport/vkconvenience/qbasicvulkanplatforminstance_p.h | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance.cpp b/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance.cpp index d8b4e0a7e0..b9c5669b3f 100644 --- a/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance.cpp +++ b/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance.cpp @@ -82,6 +82,21 @@ QBasicPlatformVulkanInstance::~QBasicPlatformVulkanInstance() m_vkDestroyInstance(m_vkInst, nullptr); } +void QBasicPlatformVulkanInstance::loadVulkanLibrary(const QString &defaultLibraryName) +{ + if (qEnvironmentVariableIsSet("QT_VULKAN_LIB")) + m_vulkanLib.setFileName(QString::fromUtf8(qgetenv("QT_VULKAN_LIB"))); + else + m_vulkanLib.setFileName(defaultLibraryName); + + if (!m_vulkanLib.load()) { + qWarning("Failed to load %s: %s", qPrintable(m_vulkanLib.fileName()), qPrintable(m_vulkanLib.errorString())); + return; + } + + init(&m_vulkanLib); +} + void QBasicPlatformVulkanInstance::init(QLibrary *lib) { if (m_vkGetInstanceProcAddr) diff --git a/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance_p.h b/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance_p.h index 7395ee0323..566140b032 100644 --- a/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance_p.h +++ b/src/platformsupport/vkconvenience/qbasicvulkanplatforminstance_p.h @@ -51,6 +51,7 @@ // We mean it. // +#include <QtCore/QLibrary> #include <qpa/qplatformvulkaninstance.h> QT_BEGIN_NAMESPACE @@ -75,6 +76,7 @@ public: void destroySurface(VkSurfaceKHR surface) const; protected: + void loadVulkanLibrary(const QString &defaultLibraryName); void init(QLibrary *lib); void initInstance(QVulkanInstance *instance, const QByteArrayList &extraExts); @@ -86,6 +88,8 @@ protected: private: void setupDebugOutput(); + QLibrary m_vulkanLib; + bool m_ownsVkInst; VkResult m_errorCode; QVulkanInfoVector<QVulkanLayer> m_supportedLayers; |