]> git.tdb.fi Git - libs/gui.git/blob - source/graphics/vkxlib/vulkancontext_platform.h
aa82880d05c229555c64f54c05b6256e9cf8e36f
[libs/gui.git] / source / graphics / vkxlib / vulkancontext_platform.h
1 #ifndef MSP_GRAPHICS_VULKANCONTEXT_PLATFORM_H_
2 #define MSP_GRAPHICS_VULKANCONTEXT_PLATFORM_H_
3
4 #define VK_USE_PLATFORM_XLIB_KHR
5 #include <vulkan/vulkan.h>
6 #include "vulkancontext.h"
7
8 namespace Msp {
9 namespace Graphics {
10
11 struct VulkanFunctions
12 {
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;
25 };
26
27 struct VulkanContext::Private
28 {
29         VulkanFunctions functions;
30         VkInstance instance = 0;
31         VkPhysicalDevice physical_device = 0;
32         VkDevice device = 0;
33         unsigned graphics_queue_family = 0;
34         VkQueue graphics_queue = 0;
35         VkSurfaceKHR surface = 0;
36         VkDebugReportCallbackEXT debug_report_callback = 0;
37
38         static VkBool32 debug_report_func(VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, uint64_t, size_t, int32_t, const char *, const char *, void *);
39 };
40
41 } // namespace Graphics
42 } // namespace Msp
43
44 #endif