loader: Fix Wayland support
All that was needed was to fix some misplaced braces, fix a couple of
copy+paste problems from Mir, and add a lookup function. Getting Mir
support working should be pretty easy.
Conflicts:
layers/swapchain.cpp
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 120bf39..1434033 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,7 +20,7 @@
set(DisplayServer Android)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
# TODO: Basic support is present for Xlib but is untested.
- # Wayland/Mir support is stubbed in but unimplemented and untested.
+ # Mir support is stubbed in but unimplemented and untested.
option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON)
option(BUILD_WSI_XLIB_SUPPORT "Build Xlib WSI support" OFF)
option(BUILD_WSI_WAYLAND_SUPPORT "Build Wayland WSI support" OFF)
diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp
index af22511..d622dd6 100644
--- a/layers/swapchain.cpp
+++ b/layers/swapchain.cpp
@@ -206,38 +206,44 @@
#ifdef VK_USE_PLATFORM_ANDROID_KHR
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_ANDROID_SURFACE_EXTENSION_NAME) == 0) {
- my_data->instanceMap[instance].androidSurfaceExtensionEnabled = true;
+ my_data->instanceMap[instance].androidSurfaceExtensionEnabled =
+ true;
+ }
#endif // VK_USE_PLATFORM_ANDROID_KHR
#ifdef VK_USE_PLATFORM_MIR_KHR
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_MIR_SURFACE_EXTENSION_NAME) == 0) {
my_data->instanceMap[instance].mirSurfaceExtensionEnabled = true;
+ }
#endif // VK_USE_PLATFORM_MIR_KHR
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME) == 0) {
- my_data->instanceMap[instance].waylandSurfaceExtensionEnabled = true;
+ my_data->instanceMap[instance].waylandSurfaceExtensionEnabled =
+ true;
+ }
#endif // VK_USE_PLATFORM_WAYLAND_KHR
#ifdef VK_USE_PLATFORM_WIN32_KHR
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_WIN32_SURFACE_EXTENSION_NAME) == 0) {
my_data->instanceMap[instance].win32SurfaceExtensionEnabled = true;
+ }
#endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_XCB_KHR
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_XCB_SURFACE_EXTENSION_NAME) == 0) {
my_data->instanceMap[instance].xcbSurfaceExtensionEnabled = true;
+ }
#endif // VK_USE_PLATFORM_XCB_KHR
#ifdef VK_USE_PLATFORM_XLIB_KHR
if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_XLIB_SURFACE_EXTENSION_NAME) == 0) {
my_data->instanceMap[instance].xlibSurfaceExtensionEnabled = true;
-#endif // VK_USE_PLATFORM_XLIB_KHR
}
+#endif // VK_USE_PLATFORM_XLIB_KHR
}
}
-
#include "vk_dispatch_table_helper.h"
static void initSwapchain(layer_data *my_data, const VkAllocationCallbacks *pAllocator)
{
diff --git a/loader/loader.c b/loader/loader.c
index ccee9bd..5462355 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1386,6 +1386,9 @@
#ifdef VK_USE_PLATFORM_XCB_KHR
LOOKUP_GIPA(GetPhysicalDeviceXcbPresentationSupportKHR, false);
#endif
+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
+ LOOKUP_GIPA(GetPhysicalDeviceWaylandPresentationSupportKHR, false);
+#endif
#undef LOOKUP_GIPA
diff --git a/loader/wsi.c b/loader/wsi.c
index 05945fb..e5e0140 100644
--- a/loader/wsi.c
+++ b/loader/wsi.c
@@ -623,7 +623,7 @@
*/
LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL
vkCreateWaylandSurfaceKHR(VkInstance instance,
- const VkMirSurfaceCreateInfoKHR *pCreateInfo,
+ const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
VkSurfaceKHR *pSurface) {
const VkLayerInstanceDispatchTable *disp;
@@ -641,7 +641,7 @@
*/
VKAPI_ATTR VkResult VKAPI_CALL
loader_CreateWaylandSurfaceKHR(VkInstance instance,
- const VkMirSurfaceCreateInfoKHR *pCreateInfo,
+ const VkWaylandSurfaceCreateInfoKHR *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
VkSurfaceKHR *pSurface) {
struct loader_instance *ptr_instance = loader_get_instance(instance);
@@ -1021,6 +1021,7 @@
? (void *)vkGetPhysicalDeviceMirPresentationSupportKHR
: NULL;
return true;
+ }
#endif // VK_USE_PLATFORM_MIR_KHR
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
/*
@@ -1038,6 +1039,7 @@
? (void *)vkGetPhysicalDeviceWaylandPresentationSupportKHR
: NULL;
return true;
+ }
#endif // VK_USE_PLATFORM_WAYLAND_KHR
#ifdef VK_USE_PLATFORM_XCB_KHR
/*