From 5ed4f8809168e145ab3f81cbbecdb3bc2e965597 Mon Sep 17 00:00:00 2001 From: Sandy Carter Date: Wed, 16 Jan 2019 07:46:35 -0500 Subject: [PATCH] [vulkan linux] Add extension requirement for XCB --- src/xenia/ui/vulkan/vulkan_instance.cc | 15 +++++++++++++++ src/xenia/ui/vulkan/vulkan_provider.cc | 9 ++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/xenia/ui/vulkan/vulkan_instance.cc b/src/xenia/ui/vulkan/vulkan_instance.cc index b324f86f2..ea6f59ca0 100644 --- a/src/xenia/ui/vulkan/vulkan_instance.cc +++ b/src/xenia/ui/vulkan/vulkan_instance.cc @@ -64,6 +64,21 @@ VulkanInstance::VulkanInstance() { DeclareRequiredExtension(VK_EXT_DEBUG_MARKER_EXTENSION_NAME, Version::Make(0, 0, 0), true); + DeclareRequiredExtension(VK_KHR_SURFACE_EXTENSION_NAME, + Version::Make(0, 0, 0), true); +#if XE_PLATFORM_WIN32 + DeclareRequiredExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME, + Version::Make(0, 0, 0), true); +#elif XE_PLATFORM_LINUX +#ifdef GDK_WINDOWING_X11 + DeclareRequiredExtension(VK_KHR_XCB_SURFACE_EXTENSION_NAME, + Version::Make(0, 0, 0), true); +#else +#error No Vulkan surface extension for the GDK backend defined yet. +#endif +#else +#error No Vulkan surface extension for the platform defined yet. +#endif } VulkanInstance::~VulkanInstance() { DestroyInstance(); } diff --git a/src/xenia/ui/vulkan/vulkan_provider.cc b/src/xenia/ui/vulkan/vulkan_provider.cc index 119f03992..ab566565f 100644 --- a/src/xenia/ui/vulkan/vulkan_provider.cc +++ b/src/xenia/ui/vulkan/vulkan_provider.cc @@ -52,10 +52,13 @@ bool VulkanProvider::Initialize() { instance_ = std::make_unique(); // Always enable the swapchain. + instance_->DeclareRequiredExtension(VK_KHR_SURFACE_EXTENSION_NAME, + Version::Make(0, 0, 0), false); #if XE_PLATFORM_WIN32 - instance_->DeclareRequiredExtension("VK_KHR_surface", Version::Make(0, 0, 0), - false); - instance_->DeclareRequiredExtension("VK_KHR_win32_surface", + instance_->DeclareRequiredExtension(VK_KHR_WIN32_SURFACE_EXTENSION_NAME, + Version::Make(0, 0, 0), false); +#elif XE_PLATFORM_LINUX + instance_->DeclareRequiredExtension(VK_KHR_XCB_SURFACE_EXTENSION_NAME, Version::Make(0, 0, 0), false); #endif