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 = 0;
14 PFN_vkDestroyInstance vkDestroyInstance = 0;
15 PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0;
16 PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0;
17 PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupport = 0;
18 PFN_vkCreateDevice vkCreateDevice = 0;
19 PFN_vkDestroyDevice vkDestroyDevice = 0;
20 PFN_vkGetDeviceQueue vkGetDeviceQueue = 0;
21 PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurface = 0;
22 PFN_vkDestroySurfaceKHR vkDestroySurface = 0;
23 PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallback = 0;
24 PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallback = 0;
27 struct VulkanContext::Private
29 VulkanFunctions functions;
30 VkInstance instance = 0;
31 VkPhysicalDevice physical_device = 0;
33 unsigned graphics_queue_family = 0;
34 VkQueue graphics_queue = 0;
35 VkSurfaceKHR surface = 0;
36 VkDebugReportCallbackEXT debug_report_callback = 0;
38 static VkBool32 debug_report_func(VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *, const char *, void *);
41 } // namespace Graphics