In vkCreateInstance: - ppEnabledExtensionNames is checked to determine which window-system platforms the layer should enable support for. - support in the layer is always enabled if possible, even if this may be provided by the ICDs. Platforms not supported by the layer should still be correctly supported by the ICDs (untested.) - pApplicationInfo is changed to bump the Vulkan API version in order to enable instance extensions that are necessary for some of the platforms implemented in the layer. In vkCreateDevice: - ppEnabledExtensionNames is extended with device extensions required by the layer. - if the extensions are not supported by the physical device, the layer fails to initialize the device. Change-Id: Ibdd69fca38e7909d5b8f0ac7698805ea5f425ac6 Signed-off-by: Joe Jenner-Bailey <joe.jenner-bailey@arm.com> Signed-off-by: Matteo Franchin <matteo.franchin@arm.com> |
||
|---|---|---|
| layer | ||
| util | ||
| wsi | ||
| .clang-format | ||
| .gitlab-ci.yml | ||
| CMakeLists.txt | ||
| DCO.txt | ||
| LICENSE | ||
| README.md | ||
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. We hope to extend support for further platforms such as Wayland
and direct-to-display rendering in the future.
Building
Dependencies
- CMake version 2.8.11 or above.
- C++11 compiler.
- Vulkan® loader and associated headers with support for the
VK_EXT_headless_surfaceextension.
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
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 theSigned-off-by:andAuthor:lines must match. If anyone else contributes to the commit, they must also add their ownSigned-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.