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