From 7b27a46d14acf050e6e836c41ca2f286680e6edc Mon Sep 17 00:00:00 2001 From: Prabhu Sundararaj Date: Tue, 11 May 2021 17:28:06 -0500 Subject: [PATCH 1/3] Add support for wayland. Use VKB_BUILD_WAYLAND=1 and GLFW_USE_WAYLAND=1 to enable wayland Signed-off-by: Hugo Osornio Signed-off-by: Prabhu Sundararaj --- bldsys/cmake/template/entrypoint_main.cpp.in | 2 ++ framework/platform/unix/unix_platform.cpp | 7 +++++++ third_party/CMakeLists.txt | 19 ++++++++++++------- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/bldsys/cmake/template/entrypoint_main.cpp.in b/bldsys/cmake/template/entrypoint_main.cpp.in index 92ec703..eaf158e 100644 --- a/bldsys/cmake/template/entrypoint_main.cpp.in +++ b/bldsys/cmake/template/entrypoint_main.cpp.in @@ -47,6 +47,8 @@ int main(int argc, char *argv[]) vkb::UnixPlatform platform{vkb::UnixType::Mac, argc, argv}; # elif defined(VK_USE_PLATFORM_XCB_KHR) vkb::UnixPlatform platform{vkb::UnixType::Linux, argc, argv}; +# elif defined(VK_USE_PLATFORM_WAYLAND_KHR) + vkb::UnixPlatform platform{vkb::UnixType::Linux, argc, argv}; # endif #endif diff --git a/framework/platform/unix/unix_platform.cpp b/framework/platform/unix/unix_platform.cpp index 53a0502..84e8f79 100644 --- a/framework/platform/unix/unix_platform.cpp +++ b/framework/platform/unix/unix_platform.cpp @@ -35,6 +35,10 @@ VKBP_ENABLE_WARNINGS() # define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" #endif +#ifndef VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME +# define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" +#endif + namespace vkb { namespace @@ -95,6 +99,9 @@ const char *UnixPlatform::get_surface_extension() } else { +#ifdef VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME + return VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME; +#endif return VK_KHR_XCB_SURFACE_EXTENSION_NAME; } } diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index 499fe9a..de13c11 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -57,14 +57,19 @@ elseif(WIN32) elseif(APPLE) target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_MACOS_MVK) elseif(UNIX) - # See whether X11 is available. If not, fall back to direct-to-display mode. - find_package(X11 QUIET) - if (X11_FOUND) - target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_XCB_KHR) + if (VKB_BUILD_WAYLAND) + message(STATUS "Using Vulkan platform wayland") + target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_WAYLAND_KHR) else() - set(DIRECT_TO_DISPLAY TRUE) - set(DIRECT_TO_DISPLAY TRUE PARENT_SCOPE) - target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_DISPLAY_KHR) + # See whether X11 is available. If not, fall back to direct-to-display mode. + find_package(X11 QUIET) + if (X11_FOUND) + target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_XCB_KHR) + else() + set(DIRECT_TO_DISPLAY TRUE) + set(DIRECT_TO_DISPLAY TRUE PARENT_SCOPE) + target_compile_definitions(vulkan INTERFACE VK_USE_PLATFORM_DISPLAY_KHR) + endif() endif() endif() -- 2.25.1