From 03ab65ab1e60ac727bbff6cc9b789b4a27d890f1 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sun, 4 Dec 2022 22:36:32 +0100 Subject: [PATCH] Fix linux compile errors from the zvulkan switch --- .../ZVulkan/include/zvulkan/vulkanbuilders.h | 13 ++++------- .../ZVulkan/include/zvulkan/vulkaninstance.h | 2 -- .../ZVulkan/include/zvulkan/vulkansurface.h | 10 --------- libraries/ZVulkan/src/vulkanbuilders.cpp | 22 ++++--------------- libraries/ZVulkan/src/vulkansurface.cpp | 20 ----------------- libraries/ZVulkan/src/vulkanswapchain.cpp | 12 +++++++--- src/common/platform/posix/sdl/sdlglvideo.cpp | 4 ++-- 7 files changed, 19 insertions(+), 64 deletions(-) diff --git a/libraries/ZVulkan/include/zvulkan/vulkanbuilders.h b/libraries/ZVulkan/include/zvulkan/vulkanbuilders.h index 780711ec9..add83ff37 100644 --- a/libraries/ZVulkan/include/zvulkan/vulkanbuilders.h +++ b/libraries/ZVulkan/include/zvulkan/vulkanbuilders.h @@ -26,28 +26,23 @@ private: bool debugLayer = false; }; +#ifdef VK_USE_PLATFORM_WIN32_KHR + class VulkanSurfaceBuilder { public: VulkanSurfaceBuilder(); -#ifdef VK_USE_PLATFORM_WIN32_KHR VulkanSurfaceBuilder& Win32Window(HWND handle); -#elif defined(VK_USE_PLATFORM_XLIB_KHR) - VulkanSurfaceBuilder& X11Window(Display* disp, Window wind); -#endif std::shared_ptr Create(std::shared_ptr instance); private: -#ifdef VK_USE_PLATFORM_WIN32_KHR HWND hwnd = {}; -#elif defined(VK_USE_PLATFORM_XLIB_KHR) - Display* disp = nullptr; - Window wind = {}; -#endif }; +#endif + class VulkanDeviceBuilder { public: diff --git a/libraries/ZVulkan/include/zvulkan/vulkaninstance.h b/libraries/ZVulkan/include/zvulkan/vulkaninstance.h index d9fc2618b..d30d6aa19 100644 --- a/libraries/ZVulkan/include/zvulkan/vulkaninstance.h +++ b/libraries/ZVulkan/include/zvulkan/vulkaninstance.h @@ -5,8 +5,6 @@ #elif defined(__APPLE__) #define VK_USE_PLATFORM_MACOS_MVK #define VK_USE_PLATFORM_METAL_EXT -#else -#define VK_USE_PLATFORM_XLIB_KHR #endif #include "volk/volk.h" diff --git a/libraries/ZVulkan/include/zvulkan/vulkansurface.h b/libraries/ZVulkan/include/zvulkan/vulkansurface.h index 64f48b617..398bfd39a 100644 --- a/libraries/ZVulkan/include/zvulkan/vulkansurface.h +++ b/libraries/ZVulkan/include/zvulkan/vulkansurface.h @@ -2,10 +2,6 @@ #include "vulkaninstance.h" -#if defined(VK_USE_PLATFORM_XLIB_KHR) -#include -#endif - class VulkanSurface { public: @@ -20,11 +16,5 @@ public: VulkanSurface(std::shared_ptr instance, HWND window); HWND Window = 0; -#elif defined(VK_USE_PLATFORM_XLIB_KHR) - - VulkanSurface(std::shared_ptr instance, Display* disp, Window wind); - Display* disp = nullptr; - Window wind; - #endif }; diff --git a/libraries/ZVulkan/src/vulkanbuilders.cpp b/libraries/ZVulkan/src/vulkanbuilders.cpp index 4299937a3..652cd6355 100644 --- a/libraries/ZVulkan/src/vulkanbuilders.cpp +++ b/libraries/ZVulkan/src/vulkanbuilders.cpp @@ -1543,39 +1543,25 @@ std::shared_ptr VulkanInstanceBuilder::Create() ///////////////////////////////////////////////////////////////////////////// +#ifdef VK_USE_PLATFORM_WIN32_KHR + VulkanSurfaceBuilder::VulkanSurfaceBuilder() { } -#ifdef VK_USE_PLATFORM_WIN32_KHR - VulkanSurfaceBuilder& VulkanSurfaceBuilder::Win32Window(HWND hwnd) { this->hwnd = hwnd; return *this; } -#elif defined(VK_USE_PLATFORM_XLIB_KHR) - -VulkanSurfaceBuilder& VulkanSurfaceBuilder::X11Window(Display* disp, Window wind) -{ - this->disp = disp; - this->wind = wind; -} - -#endif - std::shared_ptr VulkanSurfaceBuilder::Create(std::shared_ptr instance) { -#ifdef VK_USE_PLATFORM_WIN32_KHR return std::make_shared(std::move(instance), hwnd); -#elif defined(VK_USE_PLATFORM_XLIB_KHR) - return std::make_shared(std::move(instance), disp, wind); -#else - return std::make_shared(std::move(instance)); -#endif } +#endif + ///////////////////////////////////////////////////////////////////////////// VulkanDeviceBuilder::VulkanDeviceBuilder() diff --git a/libraries/ZVulkan/src/vulkansurface.cpp b/libraries/ZVulkan/src/vulkansurface.cpp index 69b61fabd..ae6ede107 100644 --- a/libraries/ZVulkan/src/vulkansurface.cpp +++ b/libraries/ZVulkan/src/vulkansurface.cpp @@ -24,24 +24,4 @@ VulkanSurface::VulkanSurface(std::shared_ptr instance, HWND wind VulkanError("Could not create vulkan surface"); } -#elif defined(VK_USE_PLATFORM_XLIB_KHR) - -VulkanSurface::VulkanSurface(std::shared_ptr instance, Display* disp, Window wind) : Instance(std::move(instance)), disp(disp), wind(wind) -{ - VkXlibSurfaceCreateInfoKHR createInfo = { VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR }; - createInfo.dpy = disp; - createInfo.window = wind; - - VkResult result = vkCreateXlibSurfaceKHR(Instance->Instance, &createInfo, nullptr, &Surface); - if (result != VK_SUCCESS) - VulkanError("Could not create vulkan surface"); -} - -#else - -VulkanSurface::VulkanSurface(std::shared_ptr instance) : Instance(std::move(instance)) -{ - VulkanError("VulkanSurface not implemented on this platform"); -} - #endif diff --git a/libraries/ZVulkan/src/vulkanswapchain.cpp b/libraries/ZVulkan/src/vulkanswapchain.cpp index 7d6a6a9c5..9162109c4 100644 --- a/libraries/ZVulkan/src/vulkanswapchain.cpp +++ b/libraries/ZVulkan/src/vulkanswapchain.cpp @@ -135,6 +135,7 @@ bool VulkanSwapChain::CreateSwapchain(int width, int height, int imageCount, boo { lost = false; + VkResult result; VkSurfaceCapabilitiesKHR surfaceCapabilities; #ifdef WIN32 if (exclusivefullscreen && device->SupportsDeviceExtension(VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME)) @@ -152,7 +153,7 @@ bool VulkanSwapChain::CreateSwapchain(int width, int height, int imageCount, boo VkSurfaceCapabilitiesFullScreenExclusiveEXT exclusiveCapabilities = { VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT }; capabilites.pNext = &exclusiveCapabilities; - VkResult result = vkGetPhysicalDeviceSurfaceCapabilities2KHR(device->PhysicalDevice.Device, &info, &capabilites); + result = vkGetPhysicalDeviceSurfaceCapabilities2KHR(device->PhysicalDevice.Device, &info, &capabilites); if (result != VK_SUCCESS) throw std::runtime_error("vkGetPhysicalDeviceSurfaceCapabilities2EXT failed"); @@ -161,11 +162,16 @@ bool VulkanSwapChain::CreateSwapchain(int width, int height, int imageCount, boo } else { - VkResult result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device->PhysicalDevice.Device, device->Surface->Surface, &surfaceCapabilities); + result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device->PhysicalDevice.Device, device->Surface->Surface, &surfaceCapabilities); if (result != VK_SUCCESS) throw std::runtime_error("vkGetPhysicalDeviceSurfaceCapabilitiesKHR failed"); exclusivefullscreen = false; } +#else + result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(device->PhysicalDevice.Device, device->Surface->Surface, &surfaceCapabilities); + if (result != VK_SUCCESS) + throw std::runtime_error("vkGetPhysicalDeviceSurfaceCapabilitiesKHR failed"); + exclusivefullscreen = false; #endif actualExtent = { static_cast(width), static_cast(height) }; @@ -221,7 +227,7 @@ bool VulkanSwapChain::CreateSwapchain(int width, int height, int imageCount, boo } #endif - VkResult result = vkCreateSwapchainKHR(device->device, &swapChainCreateInfo, nullptr, &swapchain); + result = vkCreateSwapchainKHR(device->device, &swapChainCreateInfo, nullptr, &swapchain); if (result != VK_SUCCESS) { swapchain = VK_NULL_HANDLE; diff --git a/src/common/platform/posix/sdl/sdlglvideo.cpp b/src/common/platform/posix/sdl/sdlglvideo.cpp index 7f533ca77..326a5c9d9 100644 --- a/src/common/platform/posix/sdl/sdlglvideo.cpp +++ b/src/common/platform/posix/sdl/sdlglvideo.cpp @@ -59,6 +59,7 @@ #include #include #include +#include #endif // MACROS ------------------------------------------------------------------ @@ -81,6 +82,7 @@ EXTERN_CVAR (Int, vid_displaybits) EXTERN_CVAR (Int, vid_defwidth) EXTERN_CVAR (Int, vid_defheight) EXTERN_CVAR (Bool, cl_capfps) +EXTERN_CVAR(Bool, vk_debug) // PUBLIC DATA DEFINITIONS ------------------------------------------------- @@ -278,8 +280,6 @@ DFrameBuffer *SDLVideo::CreateFrameBuffer () { try { - assert(device == nullptr); - unsigned int count = 64; const char* names[64]; if (!I_GetVulkanPlatformExtensions(&count, names))