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