1 #ifndef MSP_GRAPHICS_VULKANCONTEXT_PLATFORM_H_
2 #define MSP_GRAPHICS_VULKANCONTEXT_PLATFORM_H_
4 #define VK_USE_PLATFORM_XLIB_KHR
5 #include <vulkan/vulkan.h>
6 #include "vulkancontext.h"
11 struct VulkanFunctions
13 PFN_vkCreateInstance vkCreateInstance = nullptr;
14 PFN_vkDestroyInstance vkDestroyInstance = nullptr;
15 PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = nullptr;
16 PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = nullptr;
17 PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupport = nullptr;
18 PFN_vkCreateDevice vkCreateDevice = nullptr;
19 PFN_vkDestroyDevice vkDestroyDevice = nullptr;
20 PFN_vkGetDeviceQueue vkGetDeviceQueue = nullptr;
21 PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurface = nullptr;
22 PFN_vkDestroySurfaceKHR vkDestroySurface = nullptr;
23 PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallback = nullptr;
24 PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback = nullptr;
27 struct VulkanContext::Private
29 VulkanFunctions functions;
30 VkInstance instance = nullptr;
31 VkPhysicalDevice physical_device = nullptr;
32 VkDevice device = nullptr;
33 unsigned graphics_queue_family = 0;
34 VkQueue graphics_queue = nullptr;
35 VkSurfaceKHR surface = nullptr;
36 VkDebugReportCallbackEXT debug_report_callback = nullptr;
38 static VkBool32 debug_report_func(VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *, const char *, void *);
41 } // namespace Graphics