namespace Msp {
namespace Graphics {
+void VulkanContext::add_platform_extensions(std::vector<const char *> &extensions) const
+{
+ extensions.push_back("VK_KHR_xlib_surface");
+}
+
+void VulkanContext::init_platform_functions()
+{
+ VulkanFunctions &f = priv->functions;
+
+ f.vkCreateXlibSurface = get_function<PFN_vkCreateXlibSurfaceKHR>("vkCreateXlibSurfaceKHR");
+}
+
void VulkanContext::init_surface()
{
const VulkanFunctions &f = priv->functions;
#include "vulkancontext.h"
#include "vulkancontext_private.h"
-#include <vector>
#include <msp/core/application.h>
#include <msp/debug/debugapi.h>
#include <msp/io/print.h>
vector<const char *> extensions;
extensions.push_back("VK_KHR_surface");
- extensions.push_back("VK_KHR_xlib_surface");
extensions.push_back("VK_EXT_debug_utils");
if(opts.enable_debug_report)
extensions.push_back("VK_EXT_debug_report");
+ add_platform_extensions(extensions);
VkApplicationInfo app_info = { };
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
f.vkCreateDevice = get_function<PFN_vkCreateDevice>("vkCreateDevice");
f.vkDestroyDevice = get_function<PFN_vkDestroyDevice>("vkDestroyDevice");
f.vkGetDeviceQueue = get_function<PFN_vkGetDeviceQueue>("vkGetDeviceQueue");
- f.vkCreateXlibSurface = get_function<PFN_vkCreateXlibSurfaceKHR>("vkCreateXlibSurfaceKHR");
f.vkDestroySurface = get_function<PFN_vkDestroySurfaceKHR>("vkDestroySurfaceKHR");
f.vkCreateDebugReportCallback = get_function<PFN_vkCreateDebugReportCallbackEXT>("vkCreateDebugReportCallbackEXT");
f.vkDestroyDebugReportCallback = get_function<PFN_vkDestroyDebugReportCallbackEXT>("vkDestroyDebugReportCallbackEXT");
+ init_platform_functions();
+
if(opts.enable_debug_report)
{
VkDebugReportCallbackCreateInfoEXT debug_report_create_info = { };
#include <stdexcept>
#include <string>
+#include <vector>
#include "mspgui_api.h"
namespace Msp {
public:
VulkanContext(Window &, const VulkanOptions & = VulkanOptions());
private:
+ void add_platform_extensions(std::vector<const char *> &) const;
void init_instance(const VulkanOptions &);
+ void init_platform_functions();
void init_surface();
void init_device(const VulkanOptions &);
public: