LunarG

Copyright © 2015-2022 LunarG, Inc.

Creative Commons

VK_LAYER_KHRONOS_profiles

Overview

Vulkan capabilities test coverage with the Khronos Profiles Layer

The Khronos Profiles Layer helps test across a wide range of hardware capabilities without requiring a physical copy of every device. It can be applied without modifying any application binaries, and in a fully automated fashion. The Profiles layer is a Vulkan layer that can override the values returned by your application's queries of the GPU. Profiles layer uses a JSON text configuration file to make your application see a different driver/GPU than is actually in your system. This capability is useful to verify that your application both a) properly queries the limits from Vulkan, and b) obeys those limits.

The Profiles layer is available pre-built in the Vulkan Configurator included with the Vulkan SDK.

The role of the Profiles layer is to "simulate" a Vulkan implementation by modifying the features and resources of a more-capable implementation. The Profiles layer does not add capabilities to your existing Vulkan implementation by "emulating" additional capabilities with software; e.g. the Profiles layer cannot add geometry shader capability to an actual device that doesn't already provide it. Also, the Profiles layer does not "enforce" the features being simulated. You can use the Validation Layer in conjunction with the Profiles Layer to identify where your application is not adhering to the features being simulated by the Profiles Layer.

Configuring the Profiles Layer

For an overview of how to configure layers, refer to the Layers Overview and Configuration document.

The Profiles Layer settings are documented in detail in the VK_LAYER_KHRONOS_profiless document.

The Profiles Layer can also be enabled and configured using Vulkan Configurator. See the Vulkan Configurator documentation for more information.

Using the Profiles layer with Vulkan Configurator

The Profiles Layer can be controlled using environment variables or more intuitively using the Vulkan Configurator GUI application.

Vulkan Configurator The built-in Portability layers configurations in Vulkan Configurator using the Validation and the Profiles layers

The Portability layers configuration in Vulkan Configurator checks that a Vulkan application follows the requirements of a Vulkan Profile. This layers configuration relies on the Vulkan Profiles layer to override the Vulkan device capabilities and the Vulkan Validation Layer to check that the Vulkan application doesn't rely on capabilities not supported by the selected profile.

The input to the Profiles layer is a profiles file that is using the flexible JSON syntax. The profiles file format is defined by a formal JSON schema, so any profiles file may be verified to be correct using freely available JSON validators. Examination of the schema file reveals the extent of parameters that are available for configuration.

To use the Profiles Layer Vulkan version 1.1 is required.

Example of a Profiles layer JSON profiles file: VP_LUNARG_test_structure_simple.json

Android

To enable, use a system property with the path of the profiles file to load:

adb shell setprop debug.vulkan.khronos_profiles.profile_file <path/to/profiles/JSON/file>

Optional: use system properties to enable debugging output and exit-on-error:

adb shell setprop debug.vulkan.khronos_profiles.debug_reports DEBUG_REPORT_DEBUG_BIT
adb shell setprop debug.vulkan.khronos_profiles.debug_fail_on_error true

Settings File

Layer options may also be specified through a layer settings file on Android using the debug.vulkan.khronos_profiles.settings_path system property.

adb shell setprop debug.vulkan.khronos_profiles.settings_path </path/to/vk_layer_settings.txt>

Technical Details

The Profiles Layer is a Vulkan layer that can modify the results of Vulkan PhysicalDevice queries based on a profiles file (JSON format), thus simulating some of the capabilities of a device by overriding the capabilities of the actual device under test.

Please note that this device simulation layer "simulates", rather than "emulates". By that we mean that the layer cannot add emulated capabilities that do not already exist in the system's underlying actual device. The Profiles layer will not enable a less-capable device to emulate a more-capable device.

Application code can be tested to verify it responds correctly to the capabilities reported by the simulated device. That could include:

The fail_on_error option can be used to make sure the device supports the requested capabilities. In this case if an application erroneously attempts to overcommit a resource, or use a disabled feature, the Profiles layer will return VK_ERROR_INITIALIZATION_FAILED from vkEnumeratePhysicalDevices().

The Profiles layer will work together with other Vulkan layers, such as the Validation layer. When configuring the order of the layers, the Profiles layer should be "last"; i.e.: closest to the driver, furthest from the application. That allows the Validation layer to see the results of the Profiles layer, and enable Validation to flag incorrect API usage beyond the simulated capabilities.

If you find issues, please report to Khronos' Vulkan-Profiles GitHub repository.

Profiles Layer operation and profiles file

At application startup, during vkEnumeratePhysicalDevices(), the Profiles layer initializes its internal tables from the actual physical device in the system, then loads the profiles file, which specifies override values to apply to those internal tables.

JSON file formats consumed by the Profiles layer are specified by the following JSON schemas.

The schema permits additional top-level sections to be optionally included in profiles files; any additional top-level sections will be ignored by the Profiles layer.

The schemas define basic range checking for common Vulkan data types, but they cannot detect whether a particular profile is illogical. If a profile defines capabilities beyond what the actual device is natively capable of providing and the fail_on_error option is not used, the results are undefined. The Profiles layer has some simple checking of profile values and writes debug messages (if enabled) for values that are incompatible with the capabilities of the actual device.

This version of the Profiles layer currently supports Vulkan v1.3 and below including all Vulkan extensions. If the application requests an unsupported version of the Vulkan API, the Profiles layer will emit an error message.

When a Vulkan extension gets promoted so can the structures it defines. It is invalid for a profile to specify a structure and its promoted version at the same time. In this case the Profiles layer will use the promoted version of the structure and emit a warning.

VK_KHR_portability_subset Emulation

The Profiles layer provides the ability to emulate the VK_KHR_portability_subset extension on devices that do not implement this extension. This feature allows users to test their application with limitations found on non-conformant Vulkan implementations. To turn on this feature, enable it as described below.

Layer Details

Layer Properties

Layer Settings Overview

Label Variables Key Type Default Value Platforms
Force Device force_device ENUM FORCE_DEVICE_OFF WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Device UUID force_device_uuid STRING XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Device Name force_device_name ENUM ${VP_PHYSICAL_DEVICES} WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
Emulate a Vulkan Profile profile_emulation BOOL true WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Loading Directory profile_dirs LOAD_FOLDER WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Name profile_name ENUM ${VP_DEFAULT} WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Schema Validation profile_validation BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
Simulate Profile Capabilities simulate_capabilities FLAGS SIMULATE_API_VERSION_BIT, SIMULATE_FEATURES_BIT, SIMULATE_PROPERTIES_BIT WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Unspecified Features default_feature_values ENUM DEFAULT_FEATURE_VALUES_DEVICE WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
Emulate VK_KHR_portability_subset emulate_portability BOOL true WINDOWS_X86, WINDOWS_ARM, LINUX
    constantAlphaColorBlendFactors constantAlphaColorBlendFactors BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    events events BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    imageViewFormatReinterpretation imageViewFormatReinterpretation BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    imageViewFormatSwizzle imageViewFormatSwizzle BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    imageView2DOn3DImage imageView2DOn3DImage BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    multisampleArrayImage multisampleArrayImage BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    mutableComparisonSamplers mutableComparisonSamplers BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    pointPolygons pointPolygons BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    samplerMipLodBias samplerMipLodBias BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    separateStencilMaskRef separateStencilMaskRef BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    shaderSampleRateInterpolationFunctions shaderSampleRateInterpolationFunctions BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    tessellationIsolines tessellationIsolines BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    triangleFans triangleFans BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
    vertexAttributeAccessBeyondStride vertexAttributeAccessBeyondStride BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX
        minVertexInputBindingStrideAlignment minVertexInputBindingStrideAlignment INT 4 WINDOWS_X86, WINDOWS_ARM, LINUX
Exclude Device Extensions exclude_device_extensions LIST WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
Exclude Formats exclude_formats LIST WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
Debug Actions debug_actions FLAGS DEBUG_ACTION_STDOUT_BIT WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Log Filename debug_filename SAVE_FILE profiles_layer_log.txt WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
    Clear Log at Launch debug_file_clear BOOL true WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
Fail on Error debug_fail_on_error BOOL false WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
Message Types debug_reports FLAGS DEBUG_REPORT_NOTIFICATION_BIT, DEBUG_REPORT_WARNING_BIT, DEBUG_REPORT_ERROR_BIT WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS

Layer Settings Details

Force Device

On system with multiple physical devices, force the use of one specific physical device.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: force_device
vk_layer_settings.txt variable: khronos_profiles.force_device
Environment variables: VK_KHRONOS_PROFILES_FORCE_DEVICE
VK_PROFILES_FORCE_DEVICE
VK_FORCE_DEVICE
Enum Value Label Description Platforms
FORCE_DEVICE_OFF Off Let the Vulkan Loader list all the Physical Device. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
FORCE_DEVICE_WITH_UUID Using Device UUID Force the Physical Device identified by the device UUID. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
FORCE_DEVICE_WITH_NAME Using Device Name Force the Physical Device identified by the device UUID. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS

Device UUID

Device UUID of the forced physical devices

Setting Methods Setting Variables
VK_EXT_layer_settings variable: force_device_uuid
vk_layer_settings.txt variable: khronos_profiles.force_device_uuid
Environment variables: VK_KHRONOS_PROFILES_FORCE_DEVICE_UUID
VK_PROFILES_FORCE_DEVICE_UUID
VK_FORCE_DEVICE_UUID
Dependences Variables Key Type Value
Force Device force_device ENUM FORCE_DEVICE_WITH_UUID

Device Name

Device Name of the forced physical devices

Setting Methods Setting Variables
VK_EXT_layer_settings variable: force_device_name
vk_layer_settings.txt variable: khronos_profiles.force_device_name
Environment variables: VK_KHRONOS_PROFILES_FORCE_DEVICE_NAME
VK_PROFILES_FORCE_DEVICE_NAME
VK_FORCE_DEVICE_NAME
Dependences Variables Key Type Value
Force Device force_device ENUM FORCE_DEVICE_WITH_NAME

Emulate a Vulkan Profile

Emulate a Vulkan Profile on the Developer System

Setting Methods Setting Variables
VK_EXT_layer_settings variable: profile_emulation
vk_layer_settings.txt variable: khronos_profiles.profile_emulation
Environment variables: VK_KHRONOS_PROFILES_PROFILE_EMULATION
VK_PROFILES_PROFILE_EMULATION
VK_PROFILE_EMULATION

Loading Directory

Select the location all the profiles.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: profile_dirs
vk_layer_settings.txt variable: khronos_profiles.profile_dirs
Environment variables: VK_KHRONOS_PROFILES_PROFILE_DIRS
VK_PROFILES_PROFILE_DIRS
VK_PROFILE_DIRS
Dependences Variables Key Type Value
Emulate a Vulkan Profile profile_emulation BOOL true

Name

Name of the profile specified by the profile file to use.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: profile_name
vk_layer_settings.txt variable: khronos_profiles.profile_name
Environment variables: VK_KHRONOS_PROFILES_PROFILE_NAME
VK_PROFILES_PROFILE_NAME
VK_PROFILE_NAME
Dependences Variables Key Type Value
Emulate a Vulkan Profile profile_emulation BOOL true

Schema Validation

Validate the profile files against the Vulkan SDK profile schema if the file is found.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: profile_validation
vk_layer_settings.txt variable: khronos_profiles.profile_validation
Environment variables: VK_KHRONOS_PROFILES_PROFILE_VALIDATION
VK_PROFILES_PROFILE_VALIDATION
VK_PROFILE_VALIDATION
Dependences Variables Key Type Value
Emulate a Vulkan Profile profile_emulation BOOL true

Simulate Profile Capabilities

Control of the simulated capabilities of the Vulkan physical device from the selected Vulkan Profile.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: simulate_capabilities
vk_layer_settings.txt variable: khronos_profiles.simulate_capabilities
Environment variables: VK_KHRONOS_PROFILES_SIMULATE_CAPABILITIES
VK_PROFILES_SIMULATE_CAPABILITIES
VK_SIMULATE_CAPABILITIES
Flags Label Description Platforms
SIMULATE_API_VERSION_BIT Version The Vulkan device will report the API version from the selected Profile. It also overrides the api-version set in VkPhysicalDeviceProperties. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
SIMULATE_FEATURES_BIT Features The Vulkan device will report the features from the selected Profile. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
SIMULATE_PROPERTIES_BIT Properties The Vulkan device will report the properties from the selected Profile. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
SIMULATE_EXTENSIONS_BIT Device Extensions The Vulkan device will report the extensions from the selected Profile. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
SIMULATE_FORMATS_BIT Formats The Vulkan device will report the formats from the selected Profile. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
SIMULATE_VIDEO_CAPABILITIES_BIT Video Capabilities The Vulkan device will report video capabilities from the selected Profile. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
SIMULATE_VIDEO_FORMATS_BIT Video Formats The Vulkan device will report video formats from the selected Profile. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS

Unspecified Features

Feature values when not specified in the select Vulkan profiles.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: default_feature_values
vk_layer_settings.txt variable: khronos_profiles.default_feature_values
Environment variables: VK_KHRONOS_PROFILES_DEFAULT_FEATURE_VALUES
VK_PROFILES_DEFAULT_FEATURE_VALUES
VK_DEFAULT_FEATURE_VALUES
Enum Value Label Description Platforms
DEFAULT_FEATURE_VALUES_DEVICE Use Device Values When a feature is not mentionned in the select Vulkan profiles, set is to the physical device value. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
DEFAULT_FEATURE_VALUES_FALSE Use False When a feature is not mentionned in the select Vulkan profiles, set it to false. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS

Emulate VK_KHR_portability_subset

Emulate the VK_KHR_portability_subset extension on the device.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: emulate_portability
vk_layer_settings.txt variable: khronos_profiles.emulate_portability
Environment variables: VK_KHRONOS_PROFILES_EMULATE_PORTABILITY
VK_PROFILES_EMULATE_PORTABILITY
VK_EMULATE_PORTABILITY

constantAlphaColorBlendFactors

Indicates whether this implementation supports constant alpha Blend Factors used as source or destination color Blending.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: constantAlphaColorBlendFactors
vk_layer_settings.txt variable: khronos_profiles.constantAlphaColorBlendFactors
Environment variables: VK_KHRONOS_PROFILES_CONSTANTALPHACOLORBLENDFACTORS
VK_PROFILES_CONSTANTALPHACOLORBLENDFACTORS
VK_CONSTANTALPHACOLORBLENDFACTORS
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

events

Indicates whether this implementation supports synchronization using Events

Setting Methods Setting Variables
VK_EXT_layer_settings variable: events
vk_layer_settings.txt variable: khronos_profiles.events
Environment variables: VK_KHRONOS_PROFILES_EVENTS
VK_PROFILES_EVENTS
VK_EVENTS
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

imageViewFormatReinterpretation

Indicates whether this implementation supports a VkImageView being created with a texel format containing a different number of components, or a different number of bits in each component, than the texel format of the underlying VkImage.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: imageViewFormatReinterpretation
vk_layer_settings.txt variable: khronos_profiles.imageViewFormatReinterpretation
Environment variables: VK_KHRONOS_PROFILES_IMAGEVIEWFORMATREINTERPRETATION
VK_PROFILES_IMAGEVIEWFORMATREINTERPRETATION
VK_IMAGEVIEWFORMATREINTERPRETATION
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

imageViewFormatSwizzle

Indicates whether this implementation supports remapping format components using VkImageViewCreateInfo::components.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: imageViewFormatSwizzle
vk_layer_settings.txt variable: khronos_profiles.imageViewFormatSwizzle
Environment variables: VK_KHRONOS_PROFILES_IMAGEVIEWFORMATSWIZZLE
VK_PROFILES_IMAGEVIEWFORMATSWIZZLE
VK_IMAGEVIEWFORMATSWIZZLE
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

imageView2DOn3DImage

Indicates whether this implementation supports a VkImage being created with the VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag set, permitting a 2D or 2D array image view to be created on a 3D VkImage.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: imageView2DOn3DImage
vk_layer_settings.txt variable: khronos_profiles.imageView2DOn3DImage
Environment variables: VK_KHRONOS_PROFILES_IMAGEVIEW2DON3DIMAGE
VK_PROFILES_IMAGEVIEW2DON3DIMAGE
VK_IMAGEVIEW2DON3DIMAGE
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

multisampleArrayImage

Indicates whether this implementation supports a VkImage being created as a 2D array with multiple samples per texel.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: multisampleArrayImage
vk_layer_settings.txt variable: khronos_profiles.multisampleArrayImage
Environment variables: VK_KHRONOS_PROFILES_MULTISAMPLEARRAYIMAGE
VK_PROFILES_MULTISAMPLEARRAYIMAGE
VK_MULTISAMPLEARRAYIMAGE
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

mutableComparisonSamplers

Indicates whether this implementation allows descriptors with comparison samplers to be updated.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: mutableComparisonSamplers
vk_layer_settings.txt variable: khronos_profiles.mutableComparisonSamplers
Environment variables: VK_KHRONOS_PROFILES_MUTABLECOMPARISONSAMPLERS
VK_PROFILES_MUTABLECOMPARISONSAMPLERS
VK_MUTABLECOMPARISONSAMPLERS
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

pointPolygons

Indicates whether this implementation supports Rasterization using a point Polygon Mode.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: pointPolygons
vk_layer_settings.txt variable: khronos_profiles.pointPolygons
Environment variables: VK_KHRONOS_PROFILES_POINTPOLYGONS
VK_PROFILES_POINTPOLYGONS
VK_POINTPOLYGONS
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

samplerMipLodBias

Indicates whether this implementation supports setting a mipmap LOD bias value when creating a sampler.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: samplerMipLodBias
vk_layer_settings.txt variable: khronos_profiles.samplerMipLodBias
Environment variables: VK_KHRONOS_PROFILES_SAMPLERMIPLODBIAS
VK_PROFILES_SAMPLERMIPLODBIAS
VK_SAMPLERMIPLODBIAS
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

separateStencilMaskRef

Indicates whether this implementation supports separate front and back Stencil Test reference values.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: separateStencilMaskRef
vk_layer_settings.txt variable: khronos_profiles.separateStencilMaskRef
Environment variables: VK_KHRONOS_PROFILES_SEPARATESTENCILMASKREF
VK_PROFILES_SEPARATESTENCILMASKREF
VK_SEPARATESTENCILMASKREF
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

shaderSampleRateInterpolationFunctions

Indicates whether this implementation supports fragment shaders which use the InterpolationFunction capability.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: shaderSampleRateInterpolationFunctions
vk_layer_settings.txt variable: khronos_profiles.shaderSampleRateInterpolationFunctions
Environment variables: VK_KHRONOS_PROFILES_SHADERSAMPLERATEINTERPOLATIONFUNCTIONS
VK_PROFILES_SHADERSAMPLERATEINTERPOLATIONFUNCTIONS
VK_SHADERSAMPLERATEINTERPOLATIONFUNCTIONS
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

tessellationIsolines

Indicates whether this implementation supports isoline output from the Tessellation stage of a graphics pipeline. This member is only meaningful if tessellationShader are supported.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: tessellationIsolines
vk_layer_settings.txt variable: khronos_profiles.tessellationIsolines
Environment variables: VK_KHRONOS_PROFILES_TESSELLATIONISOLINES
VK_PROFILES_TESSELLATIONISOLINES
VK_TESSELLATIONISOLINES
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

triangleFans

Indicates whether this implementation supports Triangle Fans primitive topology.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: triangleFans
vk_layer_settings.txt variable: khronos_profiles.triangleFans
Environment variables: VK_KHRONOS_PROFILES_TRIANGLEFANS
VK_PROFILES_TRIANGLEFANS
VK_TRIANGLEFANS
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

vertexAttributeAccessBeyondStride

Indicates whether this implementation supports accessing a vertex input attribute beyond the stride of the corresponding vertex input binding.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: vertexAttributeAccessBeyondStride
vk_layer_settings.txt variable: khronos_profiles.vertexAttributeAccessBeyondStride
Environment variables: VK_KHRONOS_PROFILES_VERTEXATTRIBUTEACCESSBEYONDSTRIDE
VK_PROFILES_VERTEXATTRIBUTEACCESSBEYONDSTRIDE
VK_VERTEXATTRIBUTEACCESSBEYONDSTRIDE
Dependences Variables Key Type Value
Emulate VK_KHR_portability_subset emulate_portability BOOL true

minVertexInputBindingStrideAlignment

Indicates whether this implementation supports accessing a vertex input attribute beyond the stride of the corresponding vertex input binding.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: minVertexInputBindingStrideAlignment
vk_layer_settings.txt variable: khronos_profiles.minVertexInputBindingStrideAlignment
Environment variables: VK_KHRONOS_PROFILES_MINVERTEXINPUTBINDINGSTRIDEALIGNMENT
VK_PROFILES_MINVERTEXINPUTBINDINGSTRIDEALIGNMENT
VK_MINVERTEXINPUTBINDINGSTRIDEALIGNMENT
Dependences Variables Key Type Value
vertexAttributeAccessBeyondStride vertexAttributeAccessBeyondStride BOOL false

Exclude Device Extensions

Removes the listed device extensions from being reported by the Vulkan physical device.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: exclude_device_extensions
vk_layer_settings.txt variable: khronos_profiles.exclude_device_extensions
Environment variables: VK_KHRONOS_PROFILES_EXCLUDE_DEVICE_EXTENSIONS
VK_PROFILES_EXCLUDE_DEVICE_EXTENSIONS
VK_EXCLUDE_DEVICE_EXTENSIONS

Exclude Formats

Removes the format feature flags from being reported by the Vulkan physical device.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: exclude_formats
vk_layer_settings.txt variable: khronos_profiles.exclude_formats
Environment variables: VK_KHRONOS_PROFILES_EXCLUDE_FORMATS
VK_PROFILES_EXCLUDE_FORMATS
VK_EXCLUDE_FORMATS

Debug Actions

This indicates what action is to be taken when a layer wants to report information

Setting Methods Setting Variables
VK_EXT_layer_settings variable: debug_actions
vk_layer_settings.txt variable: khronos_profiles.debug_actions
Environment variables: VK_KHRONOS_PROFILES_DEBUG_ACTIONS
VK_PROFILES_DEBUG_ACTIONS
VK_DEBUG_ACTIONS
Flags Label Description Platforms
DEBUG_ACTION_STDOUT_BIT Log to stdout Log messages using the stdout. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
DEBUG_ACTION_OUTPUT_BIT Log to OutputDebugString Log messages using the Windows OutputDebugString for Vulkan Studio output display. WINDOWS_X86, WINDOWS_ARM
DEBUG_ACTION_FILE_BIT Log to File Log messages to a file. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
DEBUG_ACTION_BREAKPOINT_BIT Break Trigger a breakpoint if a debugger is in use. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS

Log Filename

Specifies the output filename

Setting Methods Setting Variables
VK_EXT_layer_settings variable: debug_filename
vk_layer_settings.txt variable: khronos_profiles.debug_filename
Environment variables: VK_KHRONOS_PROFILES_DEBUG_FILENAME
VK_PROFILES_DEBUG_FILENAME
VK_DEBUG_FILENAME

Any of the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_OUTPUT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_BREAKPOINT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT, DEBUG_ACTION_OUTPUT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT, DEBUG_ACTION_BREAKPOINT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_OUTPUT_BIT, DEBUG_ACTION_BREAKPOINT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT, DEBUG_ACTION_OUTPUT_BIT, DEBUG_ACTION_BREAKPOINT_BIT

Clear Log at Launch

Discard the content of the log file between each layer run

Setting Methods Setting Variables
VK_EXT_layer_settings variable: debug_file_clear
vk_layer_settings.txt variable: khronos_profiles.debug_file_clear
Environment variables: VK_KHRONOS_PROFILES_DEBUG_FILE_CLEAR
VK_PROFILES_DEBUG_FILE_CLEAR
VK_DEBUG_FILE_CLEAR

Any of the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_OUTPUT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_BREAKPOINT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT, DEBUG_ACTION_OUTPUT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT, DEBUG_ACTION_BREAKPOINT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_OUTPUT_BIT, DEBUG_ACTION_BREAKPOINT_BIT
Debug Actions debug_actions FLAGS DEBUG_ACTION_FILE_BIT, DEBUG_ACTION_STDOUT_BIT, DEBUG_ACTION_OUTPUT_BIT, DEBUG_ACTION_BREAKPOINT_BIT

Fail on Error

If the device doesn't support the capabilities of the selected Profile, the layer fail to load. When enabled, vkEnumeratePhysicalDevices will fail when the selected Profile is not supported.

Setting Methods Setting Variables
VK_EXT_layer_settings variable: debug_fail_on_error
vk_layer_settings.txt variable: khronos_profiles.debug_fail_on_error
Environment variables: VK_KHRONOS_PROFILES_DEBUG_FAIL_ON_ERROR
VK_PROFILES_DEBUG_FAIL_ON_ERROR
VK_DEBUG_FAIL_ON_ERROR

Message Types

This is a comma-delineated list of options telling the layer what types of messages it should report back

Setting Methods Setting Variables
VK_EXT_layer_settings variable: debug_reports
vk_layer_settings.txt variable: khronos_profiles.debug_reports
Environment variables: VK_KHRONOS_PROFILES_DEBUG_REPORTS
VK_PROFILES_DEBUG_REPORTS
VK_DEBUG_REPORTS
Flags Label Description Platforms
DEBUG_REPORT_NOTIFICATION_BIT Notification Report notifications. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
DEBUG_REPORT_WARNING_BIT Warning Report warnings from using the API in a manner which may lead to undefined behavior or to warn the user of common trouble spots. A warning does NOT necessarily signify illegal application behavior. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
DEBUG_REPORT_ERROR_BIT Error Report errors in API usage. WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS

Layer Presets

Force Physical Device Only

Use the Profiles layer to force a specific physical device

Preset Setting Values:

Emulate a Vulkan Conformant Profile

Emulate a Conformant Vulkan Profile

Preset Setting Values:

Emulate a Vulkan Portability Profile

Emulate a Vulkan Profile with Vulkan Portability

Preset Setting Values: