]> git.tdb.fi Git - libs/gui.git/commitdiff
Move some lingering Xlib parts of VulkanContext to platform code
authorMikko Rasa <tdb@tdb.fi>
Sat, 4 May 2024 14:20:46 +0000 (17:20 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sat, 4 May 2024 15:18:04 +0000 (18:18 +0300)
source/graphics/vkxlib/vulkancontext.cpp
source/graphics/vulkancontext.cpp
source/graphics/vulkancontext.h

index 9b147d9715acb70712416886232cb273f5b56e24..345aae1d5237e60202bdccbfa78984c3e4640edb 100644 (file)
@@ -6,6 +6,18 @@
 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;
index 9bd00fa4a2b64156f6e5904a5ffac87a1aeb6d50..1b5b7fdbcdaed45dc4c5f36c58999ea312baf364 100644 (file)
@@ -1,6 +1,5 @@
 #include "vulkancontext.h"
 #include "vulkancontext_private.h"
-#include <vector>
 #include <msp/core/application.h>
 #include <msp/debug/debugapi.h>
 #include <msp/io/print.h>
@@ -105,10 +104,10 @@ void VulkanContext::init_instance(const VulkanOptions &opts)
 
        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;
@@ -135,11 +134,12 @@ void VulkanContext::init_instance(const VulkanOptions &opts)
        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 = { };
index 8bcb459a5543856c218944977553ea90bf2b05ca..506db89193c5933886bc23d7ae96935637921a3b 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <stdexcept>
 #include <string>
+#include <vector>
 #include "mspgui_api.h"
 
 namespace Msp {
@@ -40,7 +41,9 @@ private:
 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: