30 QBasicPlatformVulkanInstance();
31 ~QBasicPlatformVulkanInstance();
33 QVulkanInfoVector<QVulkanLayer> supportedLayers()
const override;
34 QVulkanInfoVector<QVulkanExtension> supportedExtensions()
const override;
35 QVersionNumber supportedApiVersion()
const override;
36 bool isValid()
const override;
37 VkResult errorCode()
const override;
38 VkInstance vkInstance()
const override;
39 QByteArrayList enabledLayers()
const override;
40 QByteArrayList enabledExtensions()
const override;
41 PFN_vkVoidFunction getInstanceProcAddr(
const char *name) override;
42 bool supportsPresent(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, QWindow *window) override;
43 void setDebugFilters(
const QList<QVulkanInstance::DebugFilter> &filters) override;
44 void setDebugUtilsFilters(
const QList<QVulkanInstance::DebugUtilsFilter> &filters) override;
46 void destroySurface(VkSurfaceKHR surface)
const;
47 const QList<QVulkanInstance::DebugFilter> *debugFilters()
const {
return &m_debugFilters; }
48 const QList<QVulkanInstance::DebugUtilsFilter> *debugUtilsFilters()
const {
return &m_debugUtilsFilters; }
51 void loadVulkanLibrary(
const QString &defaultLibraryName,
int defaultLibraryVersion = -1);
52 void init(QLibrary *lib);
53 void initInstance(QVulkanInstance *instance,
const QByteArrayList &extraExts);
55 VkInstance m_vkInst = VK_NULL_HANDLE;
56 PFN_vkGetInstanceProcAddr m_vkGetInstanceProcAddr =
nullptr;
57 PFN_vkGetPhysicalDeviceSurfaceSupportKHR m_getPhysDevSurfaceSupport;
58 PFN_vkDestroySurfaceKHR m_destroySurface;
61 void setupDebugOutput();
63 std::unique_ptr<QLibrary> m_vulkanLib;
65 bool m_ownsVkInst =
false;
66 VkResult m_errorCode = VK_SUCCESS;
67 QVulkanInfoVector<QVulkanLayer> m_supportedLayers;
68 QVulkanInfoVector<QVulkanExtension> m_supportedExtensions;
69 QVersionNumber m_supportedApiVersion;
70 QByteArrayList m_enabledLayers;
71 QByteArrayList m_enabledExtensions;
73 PFN_vkCreateInstance m_vkCreateInstance;
74 PFN_vkEnumerateInstanceLayerProperties m_vkEnumerateInstanceLayerProperties;
75 PFN_vkEnumerateInstanceExtensionProperties m_vkEnumerateInstanceExtensionProperties;
77 PFN_vkDestroyInstance m_vkDestroyInstance;
79#ifdef VK_EXT_debug_utils
80 VkDebugUtilsMessengerEXT m_debugMessenger = VK_NULL_HANDLE;
81 PFN_vkDestroyDebugUtilsMessengerEXT m_vkDestroyDebugUtilsMessengerEXT;
83 QList<QVulkanInstance::DebugFilter> m_debugFilters;
84 QList<QVulkanInstance::DebugUtilsFilter> m_debugUtilsFilters;