Layers
Layers are optional components that augment the Vulkan system. They can intercept, evaluate, and modify existing Vulkan functions on their way from the application down to the hardware. Layer properties can be queried from an application with vkEnumerateInstanceLayerProperties.
Using Layers
Layers are packaged as shared libraries that get dynamically loaded in by the loader and inserted between it and the application. The two things needed to use layers are the location of the binary files and which layers to enable. The layers to use can be either explicitly enabled by the application or implicitly enabled by telling the loader to use them. More details about implicit and explicit layers can be found in the Loader and Layer Interface.
The Vulkan SDK contains a layer configuration document that is very specific to how to discover and configure layers on each of the platforms.
Vulkan Configurator Tool
Developers on Windows, Linux, and macOS can use the Vulkan Configurator, vkconfig, to enable explicit layers and disable implicit layers as well as change layer settings from a graphical user interface. Please see the Vulkan Configurator documentation in the Vulkan SDK for more information on using the Vulkan Configurator.
Device Layers Deprecation
There used to be both instance layers and device layers, but device layers were deprecated early in Vulkan’s life and should be avoided.
Creating a Layer
Anyone can create a layer as long as it follows the loader to layer interface which is how the loader and layers agree to communicate with each other.
Platform Variations
The way to load a layer in implicitly varies between loader and platform.
Android
As of Android P (Android 9 / API level 28), if a device is in a debuggable state such that getprop ro.debuggable
/data/local/debug/vulkan.
Starting in Android P (Android 9 / API level 28) implicit layers can be pushed using ADB if the application was built in debug mode.
There is no way other than the options above to use implicit layers.
Linux
The Vulkan SDK explains how to use implicit layers on Linux.
MacOS
The Vulkan SDK explains how to use implicit layers on MacOS.
Windows
The Vulkan SDK explains how to use implicit layers on Windows.