Find a file
Fufu Fang b64498c021 Refactoring of extension_list
Unused methods removed. Specialised methods moved out
of the extension_list utility and closer to the point
of usage.

Signed-off-by: Fufu Fang <fufu.fang@arm.com>
Change-Id: I8e6d2786881b5306de21797cfdda46d0e678da8d
2021-07-06 10:37:40 +01:00
layer Refactoring of extension_list 2021-07-06 10:37:40 +01:00
util Refactoring of extension_list 2021-07-06 10:37:40 +01:00
wsi Refactoring of extension_list 2021-07-06 10:37:40 +01:00
.clang-format Initial sources for the vulkan-wsi-layer project 2019-05-31 15:48:05 +01:00
.gitlab-ci.yml Add a simple build test to the Vulkan WSI Layer's CI 2019-09-30 16:06:46 +01:00
CMakeLists.txt Creating logging mechanism for debugging 2021-04-29 16:11:48 +01:00
DCO.txt Initial sources for the vulkan-wsi-layer project 2019-05-31 15:48:05 +01:00
LICENSE Initial sources for the vulkan-wsi-layer project 2019-05-31 15:48:05 +01:00
README.md Adds initial support for VK_KHR_wayland_surface. 2021-02-09 18:22:09 +00:00

Vulkan® Window System Integration Layer

Introduction

This project is a Vulkan® layer which implements some of the Vulkan® window system integration extensions such as VK_KHR_swapchain. The layer is designed to be GPU vendor agnostic when used as part of the Vulkan® ICD/loader architecture.

Our vision for the project is to become the de facto implementation for Vulkan® window system integration extensions so that they need not be implemented in the ICD; instead, the implementation of these extensions are shared across vendors for mutual benefit.

The project currently implements support for VK_EXT_headless_surface and its dependencies. Experimental support for VK_KHR_wayland_surface can be enabled via a build option as explained below.

Building

Dependencies

  • CMake version 3.4.3 or above.
  • C++11 compiler.
  • Vulkan® loader and associated headers with support for the VK_EXT_headless_surface extension.

Building the Vulkan® loader

This step is not necessary if your system already has a loader and associated headers with support for the VK_EXT_headless_surface extension. We include these instructions for completeness.

git clone https://github.com/KhronosGroup/Vulkan-Loader.git
mkdir Vulkan-Loader/build
cd Vulkan-Loader/build
../scripts/update_deps.py
cmake -C helper.cmake ..
make
make install

Building the layer

The layer requires a version of the loader and headers that includes support for the VK_EXT_headless_surface extension. By default, the build system will use the system Vulkan® headers as reported by pkg-config. This may be overriden by specifying VULKAN_CXX_INCLUDE in the CMake configuration, for example:

cmake . -DVULKAN_CXX_INCLUDE="path/to/vulkan-headers"

If the loader and associated headers already meet the requirements of the layer then the build steps are straightforward:

cmake . -Bbuild
make -C build

Building with Wayland support

In order to build with Wayland support the BUILD_WSI_WAYLAND build option must be used, the SELECT_EXTERNAL_ALLOCATOR option has to be set to an allocator (currently only ion is supported) and the KERNEL_DIR option must be defined as the root of the Linux kernel source.

cmake . -DVULKAN_CXX_INCLUDE="path/to/vulkan-header" \
        -DBUILD_WSI_WAYLAND=1 \
        -DSELECT_EXTERNAL_ALLOCATOR=ion \
        -DKERNEL_DIR="path/to/linux-kernel-source"

Wayland support is still EXPERIMENTAL. What this means in practice is that the support is incomplete and not ready for prime time.

Installation

Copy the shared library libVkLayer_window_system_integration.so and JSON configuration VkLayer_window_system_integration.json into a Vulkan® implicit layer directory.

Contributing

We are open for contributions.

  • The software is provided under the MIT license. Contributions to this project are accepted under the same license.
  • Please also ensure that each commit in the series has at least one Signed-off-by: line, using your real name and email address. The names in the Signed-off-by: and Author: lines must match. If anyone else contributes to the commit, they must also add their own Signed-off-by: line. By adding this line the contributor certifies the contribution is made under the terms of the Developer Certificate of Origin (DCO).
  • Questions, bug reports, et cetera are raised and discussed on the issues page.
  • Please make merge requests into the master branch.
  • Code should be formatted with clang-format using the project's .clang-format configuration.

Contributors are expected to abide by the freedesktop.org code of conduct.

Khronos® Conformance

This software is based on a published Khronos® Specification and is expected to pass the relevant parts of the Khronos® Conformance Testing Process when used as part of a conformant Vulkan® implementation.