From dbc48940db4e566d2effa3e513d035614ac0bb05 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sat, 4 May 2024 17:20:46 +0300 Subject: [PATCH] Move some lingering Xlib parts of VulkanContext to platform code --- source/graphics/vkxlib/vulkancontext.cpp | 12 ++++++++++++ source/graphics/vulkancontext.cpp | 6 +++--- source/graphics/vulkancontext.h | 3 +++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/source/graphics/vkxlib/vulkancontext.cpp b/source/graphics/vkxlib/vulkancontext.cpp index 9b147d9..345aae1 100644 --- a/source/graphics/vkxlib/vulkancontext.cpp +++ b/source/graphics/vkxlib/vulkancontext.cpp @@ -6,6 +6,18 @@ namespace Msp { namespace Graphics { +void VulkanContext::add_platform_extensions(std::vector &extensions) const +{ + extensions.push_back("VK_KHR_xlib_surface"); +} + +void VulkanContext::init_platform_functions() +{ + VulkanFunctions &f = priv->functions; + + f.vkCreateXlibSurface = get_function("vkCreateXlibSurfaceKHR"); +} + void VulkanContext::init_surface() { const VulkanFunctions &f = priv->functions; diff --git a/source/graphics/vulkancontext.cpp b/source/graphics/vulkancontext.cpp index 9bd00fa..1b5b7fd 100644 --- a/source/graphics/vulkancontext.cpp +++ b/source/graphics/vulkancontext.cpp @@ -1,6 +1,5 @@ #include "vulkancontext.h" #include "vulkancontext_private.h" -#include #include #include #include @@ -105,10 +104,10 @@ void VulkanContext::init_instance(const VulkanOptions &opts) vector 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("vkCreateDevice"); f.vkDestroyDevice = get_function("vkDestroyDevice"); f.vkGetDeviceQueue = get_function("vkGetDeviceQueue"); - f.vkCreateXlibSurface = get_function("vkCreateXlibSurfaceKHR"); f.vkDestroySurface = get_function("vkDestroySurfaceKHR"); f.vkCreateDebugReportCallback = get_function("vkCreateDebugReportCallbackEXT"); f.vkDestroyDebugReportCallback = get_function("vkDestroyDebugReportCallbackEXT"); + init_platform_functions(); + if(opts.enable_debug_report) { VkDebugReportCallbackCreateInfoEXT debug_report_create_info = { }; diff --git a/source/graphics/vulkancontext.h b/source/graphics/vulkancontext.h index 8bcb459..506db89 100644 --- a/source/graphics/vulkancontext.h +++ b/source/graphics/vulkancontext.h @@ -3,6 +3,7 @@ #include #include +#include #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; void init_instance(const VulkanOptions &); + void init_platform_functions(); void init_surface(); void init_device(const VulkanOptions &); public: -- 2.45.2