[packages/vulkan-sdk] Wayland support added to the loader

jajcus jajcus at pld-linux.org
Wed Mar 2 21:45:42 CET 2016


commit 3421dbd19cc7acb1338ea34a1b9929717089cb80
Author: Jacek Konieczny <jajcus at jajcus.net>
Date:   Wed Mar 2 21:43:41 2016 +0100

    Wayland support added to the loader
    
    note: validation layers won't work with Wayland surfaces
    
    rel. 6

 vulkan-sdk.spec |   9 ++--
 wayland.patch   | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 154 insertions(+), 3 deletions(-)
---
diff --git a/vulkan-sdk.spec b/vulkan-sdk.spec
index f6ae15d..3d2d90a 100644
--- a/vulkan-sdk.spec
+++ b/vulkan-sdk.spec
@@ -3,6 +3,7 @@
 %bcond_with	tests		# build with tests (require a working Vulkan
 				# driver (ICD))
 %bcond_with	icd		# build experimental Vulkan drivers
+%bcond_without	wayland		# disable Wayland support in loader
 
 %ifnarch %{x8664}
 %undefine       with_icd
@@ -18,7 +19,7 @@
 %define tools_commit	e5dccf86cf999ff9988be97337d0e3a3d508b085
 # master branch
 %define	lg_commit	0a73713f0d664aa97a7e359f567a16d7c3fce359
-%define	rel	5
+%define	rel	6
 Summary:	LunarG Vulkan SDK
 Name:		vulkan-sdk
 Version:	1.0.3.0
@@ -38,6 +39,7 @@ Patch1:		LunarGLASS-CMakeLists.patch
 Patch2:		demos_out_of_src.patch
 Patch3:		rpath.patch
 Patch4:		loader_repo_name.patch
+Patch5:		wayland.patch
 URL:		http://lunarg.com/vulkan-sdk/
 %{?with_icd:BuildRequires:	Mesa-libGL-devel}
 BuildRequires:	bison
@@ -148,6 +150,7 @@ mv VulkanTools-%{tools_commit} VulkanTools
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
 
 %if %{with icd}
 mv LunarGLASS-%{lg_commit} LunarGLASS
@@ -166,8 +169,8 @@ cd Vulkan-LoaderAndValidationLayers/build
 %cmake \
 	-DCMAKE_INSTALL_DATADIR=share \
 	-DCMAKE_INSTALL_SYSCONFDIR=etc \
-	%{?with_tests:-DBUILD_TESTS=ON} \
-	%{!?with_tests:-DBUILD_TESTS=OFF} \
+	-DBUILD_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
+	-DBUILD_WSI_WAYLAND_SUPPORT=%{?with_wayland:ON}%{!?with_wayland:OFF} \
 		../
 %{__make}
 
diff --git a/wayland.patch b/wayland.patch
new file mode 100644
index 0000000..5387161
--- /dev/null
+++ b/wayland.patch
@@ -0,0 +1,148 @@
+diff -dur vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/CMakeLists.txt vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/CMakeLists.txt
+--- vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/CMakeLists.txt	2016-03-02 19:22:28.256866043 +0100
++++ vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/CMakeLists.txt	2016-03-02 21:25:25.331130657 +0100
+@@ -19,21 +19,30 @@
+     add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
+     set(DisplayServer Android)
+ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+-    add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
+-    set(DisplayServer Xcb)
++    #   TODO: Basic support is present for Xlib but is 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)
++    option(BUILD_WSI_MIR_SUPPORT "Build Mir WSI support" OFF)
+ 
+-#   TODO: Basic support is present for Xlib but is untested.
+-#         Wayland/Mir support is stubbed in but unimplemented and untested.
++    set(DisplayServer Xcb)
+ 
+-#   add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
+-#   set(DisplayServer Xlib)
++    if (BUILD_WSI_XCB_SUPPORT)
++        add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
++    endif()
+ 
+-#   add_definitions(-DVK_USE_PLATFORM_MIR_KHR)
+-#   set(DisplayServer Mir)
++    if (BUILD_WSI_XLIB_SUPPORT)
++        add_definitions(-DVK_USE_PLATFORM_XLIB_KHR)
++    endif()
+ 
+-#   add_definitions(-DVK_USEPLATFORM_WAYLAND_KHR)
+-#   set(DisplayServer Wayland)
++    if (BUILD_WSI_WAYLAND_SUPPORT)
++        add_definitions(-DVK_USE_PLATFORM_WAYLAND_KHR)
++    endif()
+ 
++    if (BUILD_WSI_MIR_SUPPORT)
++        add_definitions(-DVK_USE_PLATFORM_MIR_KHR)
++    endif()
+ else()
+     message(FATAL_ERROR "Unsupported Platform!")
+ endif()
+diff -dur vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/layers/swapchain.cpp vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/layers/swapchain.cpp
+--- vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/layers/swapchain.cpp	2016-02-22 22:02:54.000000000 +0100
++++ vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/layers/swapchain.cpp	2016-03-02 21:25:25.334464012 +0100
+@@ -222,6 +222,7 @@
+ 
+             my_data->instanceMap[instance].androidSurfaceExtensionEnabled =
+                 true;
++        }
+ #endif // VK_USE_PLATFORM_ANDROID_KHR
+ #ifdef VK_USE_PLATFORM_MIR_KHR
+             if (strcmp(pCreateInfo->ppEnabledExtensionNames[i],
+@@ -229,6 +230,7 @@
+ 
+                 my_data->instanceMap[instance].mirSurfaceExtensionEnabled =
+                     true;
++            }
+ #endif // VK_USE_PLATFORM_MIR_KHR
+ #ifdef VK_USE_PLATFORM_WAYLAND_KHR
+                 if (strcmp(pCreateInfo->ppEnabledExtensionNames[i],
+@@ -236,6 +238,7 @@
+ 
+                     my_data->instanceMap[instance]
+                         .waylandSurfaceExtensionEnabled = true;
++                }
+ #endif // VK_USE_PLATFORM_WAYLAND_KHR
+ #ifdef VK_USE_PLATFORM_WIN32_KHR
+                     if (strcmp(pCreateInfo->ppEnabledExtensionNames[i],
+@@ -243,6 +246,7 @@
+ 
+                         my_data->instanceMap[instance]
+                             .win32SurfaceExtensionEnabled = true;
++                    }
+ #endif // VK_USE_PLATFORM_WIN32_KHR
+ #ifdef VK_USE_PLATFORM_XCB_KHR
+                         if (strcmp(pCreateInfo->ppEnabledExtensionNames[i],
+@@ -250,6 +254,7 @@
+ 
+                             my_data->instanceMap[instance]
+                                 .xcbSurfaceExtensionEnabled = true;
++                        }
+ #endif // VK_USE_PLATFORM_XCB_KHR
+ #ifdef VK_USE_PLATFORM_XLIB_KHR
+                             if (strcmp(pCreateInfo->ppEnabledExtensionNames[i],
+@@ -258,8 +263,8 @@
+ 
+                                 my_data->instanceMap[instance]
+                                     .xlibSurfaceExtensionEnabled = true;
+-#endif // VK_USE_PLATFORM_XLIB_KHR
+                             }
++#endif // VK_USE_PLATFORM_XLIB_KHR
+                         }
+                     }
+ 
+diff -dur vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/loader/loader.c vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/loader/loader.c
+--- vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/loader/loader.c	2016-02-22 22:02:54.000000000 +0100
++++ vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/loader/loader.c	2016-03-02 21:25:25.334464012 +0100
+@@ -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 -dur vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/loader/wsi.c vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/loader/wsi.c
+--- vulkan-sdk-1.0.3.0.orig/Vulkan-LoaderAndValidationLayers/loader/wsi.c	2016-02-22 22:02:54.000000000 +0100
++++ vulkan-sdk-1.0.3.0/Vulkan-LoaderAndValidationLayers/loader/wsi.c	2016-03-02 21:25:25.334464012 +0100
+@@ -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
+             /*
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/vulkan-sdk.git/commitdiff/3421dbd19cc7acb1338ea34a1b9929717089cb80



More information about the pld-cvs-commit mailing list