
VK_LAYER_KHRONOS_validation
Vulkan is an Explicit API, enabling direct control over how GPUs actually work. By design, minimal error checking is done inside a Vulkan driver - applications have full control and responsibility for correct operation. Any errors in Vulkan usage can result in unexpected behavior or even a crash. The VK_LAYER_KHRONOS_validation
layer can be used to to assist developers in isolating incorrect usage, and in verifying that applications correctly use the API.
Configuring the Validation Layer
There are 4 ways to configure the settings: vkconfig
, application defined
, vk_layer_settings.txt
, environment variables
VkConfig
We suggest people to use VkConfig.
The GUI comes with the SDK, and takes the VkLayer_khronos_validation.json
file and does everything for you!
Application Defined
The application can now use the VK_EXT_layer_settings
extension to do everything at vkCreateInstance
time. (Don't worry, we implement the extension, so it will be supported 100% of the time!).
vk_layer_settings.txt
There is info elsewhere to describe this file, but the short answer is to set the VK_LAYER_SETTINGS_PATH
like the following:
and it will set things for you in that file. We have a default example file you can start with.
Environment Variables
This is done for us via the vkuCreateLayerSettingSet
call in the Vulkan-Utility-Libraries.
As an example, in our VkLayer_khronos_validation.json
file you will find something like "key": "message_id_filter",
.
From here you just need to adjust it the naming and prefix depending on your platform:
Layer Details
Layer Properties
- API Version: 1.4.313
- Implementation Version: 1
- Layer Manifest: VkLayer_khronos_validation.json
- File Format: 1.2.0
- Layer Binary: libVkLayer_khronos_validation.so
- Variables:
- vk_layer_settings.txt namespace: khronos_validation
- Environment Variable prefix: VK_KHRONOS_VALIDATION_
- Android system property prefix: adb setprop debug.vulkan.khronos_validation.
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
- Number of Layer Settings: 64
- Number of Layer Presets: 6
Layer Settings Overview
Validation Areas |
validation_control |
GROUP |
|
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Fine Grained Locking |
fine_grained_locking |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Core |
validate_core |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Image Layout |
check_image_layout |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Command Buffer State |
check_command_buffer |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Object in Use |
check_object_in_use |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Query |
check_query |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Shader |
check_shaders |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Caching |
check_shaders_caching |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Handle Wrapping |
unique_handles |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Object Lifetime |
object_lifetime |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Stateless Parameter |
stateless_param |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Thread Safety |
thread_safety |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Synchronization |
validate_sync |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Submit time validation |
syncval_submit_time_validation |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Shader accesses heuristic |
syncval_shader_accesses_heuristic |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Error messages |
syncval_reporting |
GROUP |
|
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Extra properties |
syncval_message_extra_properties |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Debug Printf |
printf_enable |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Redirect Printf messages to stdout |
printf_to_stdout |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Printf verbose |
printf_verbose |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Printf buffer size |
printf_buffer_size |
INT |
1024 |
WINDOWS_X86, WINDOWS_ARM, LINUX |
GPU Assisted Validation |
gpuav_enable |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Safe Mode |
gpuav_safe_mode |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Force on robustness features |
gpuav_force_on_robustness |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Shader instrumentation |
gpuav_shader_instrumentation |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Enable instrumenting shaders selectively |
gpuav_select_instrumented_shaders |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Shader/pipeline name regexes |
gpuav_shaders_to_instrument |
LIST |
|
WINDOWS_X86, WINDOWS_ARM, LINUX |
Descriptors indexing |
gpuav_descriptor_checks |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Post process descriptor indexing |
gpuav_post_process_descriptor_indexing |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Out of bounds buffer device addresses |
gpuav_buffer_address_oob |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Maximum number of buffer device addresses in use at one time |
gpuav_max_buffer_device_addresses |
INT |
10000 |
WINDOWS_X86, WINDOWS_ARM, LINUX |
RayQuery SPIR-V instructions |
gpuav_validate_ray_query |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Out of bounds vertex attribute fetching |
gpuav_vertex_attribute_fetch_oob |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Buffer content validation |
gpuav_buffers_validation |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Indirect draws parameters |
gpuav_indirect_draws_buffers |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Indirect dispatches parameters |
gpuav_indirect_dispatches_buffers |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Indirect trace rays parameters |
gpuav_indirect_trace_rays_buffers |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Buffer copies |
gpuav_buffer_copies |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Index buffers |
gpuav_index_buffers |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Image Layout |
gpuav_image_layout |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX |
Best Practices |
validate_best_practices |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
ARM-specific best practices |
validate_best_practices_arm |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
AMD-specific best practices |
validate_best_practices_amd |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS |
IMG-specific best practices |
validate_best_practices_img |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS |
NVIDIA-specific best practices |
validate_best_practices_nvidia |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID |
Debug Action |
debug_action |
FLAGS |
VK_DBG_LAYER_ACTION_LOG_MSG |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Log Filename |
log_filename |
SAVE_FILE |
stdout |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Message Severity |
report_flags |
FLAGS |
error |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Limit Duplicated Messages |
enable_message_limit |
BOOL |
true |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Max Duplicated Messages |
duplicate_message_limit |
INT |
10 |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Mute Message VUIDs |
message_id_filter |
LIST |
|
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Message Format |
message_format |
GROUP |
|
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
JSON |
message_format_json |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Display Application Name |
message_format_display_application_name |
BOOL |
false |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Layer Settings Details
Validation Areas
Control of the Validation layer validation
- Type: GROUP
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Fine Grained Locking
Enable fine grained locking for Core Validation, which should improve performance in multithreaded applications. This setting allows the optimization to be disabled for debugging.
VK_EXT_layer_settings variable: |
fine_grained_locking |
vk_layer_settings.txt variable: |
khronos_validation.fine_grained_locking |
Environment variables: |
VK_KHRONOS_VALIDATION_FINE_GRAINED_LOCKING |
|
VK_VALIDATION_FINE_GRAINED_LOCKING |
|
VK_FINE_GRAINED_LOCKING |
|
VK_LAYER_FINE_GRAINED_LOCKING |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.fine_grained_locking |
|
adb setprop debug.vulkan.validation.fine_grained_locking |
|
adb setprop debug.vulkan.fine_grained_locking |
|
adb setprop debug.vvl.fine_grained_locking |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Core
The main, heavy-duty validation checks. This may be valuable early in the development cycle to reduce validation output while correcting parameter/object usage errors.
VK_EXT_layer_settings variable: |
validate_core |
vk_layer_settings.txt variable: |
khronos_validation.validate_core |
Environment variables: |
VK_KHRONOS_VALIDATION_VALIDATE_CORE |
|
VK_VALIDATION_VALIDATE_CORE |
|
VK_VALIDATE_CORE |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.validate_core |
|
adb setprop debug.vulkan.validation.validate_core |
|
adb setprop debug.vulkan.validate_core |
|
adb setprop debug.vvl.validate_core |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Image Layout
Check that the layout of each image subresource is correct whenever it is used by a command buffer. These checks are very CPU intensive for some applications.
VK_EXT_layer_settings variable: |
check_image_layout |
vk_layer_settings.txt variable: |
khronos_validation.check_image_layout |
Environment variables: |
VK_KHRONOS_VALIDATION_CHECK_IMAGE_LAYOUT |
|
VK_VALIDATION_CHECK_IMAGE_LAYOUT |
|
VK_CHECK_IMAGE_LAYOUT |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.check_image_layout |
|
adb setprop debug.vulkan.validation.check_image_layout |
|
adb setprop debug.vulkan.check_image_layout |
|
adb setprop debug.vvl.check_image_layout |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Core |
validate_core |
BOOL |
true |
Command Buffer State
Check that all Vulkan objects used by a command buffer have not been destroyed. These checks can be CPU intensive for some applications.
VK_EXT_layer_settings variable: |
check_command_buffer |
vk_layer_settings.txt variable: |
khronos_validation.check_command_buffer |
Environment variables: |
VK_KHRONOS_VALIDATION_CHECK_COMMAND_BUFFER |
|
VK_VALIDATION_CHECK_COMMAND_BUFFER |
|
VK_CHECK_COMMAND_BUFFER |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.check_command_buffer |
|
adb setprop debug.vulkan.validation.check_command_buffer |
|
adb setprop debug.vulkan.check_command_buffer |
|
adb setprop debug.vvl.check_command_buffer |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Core |
validate_core |
BOOL |
true |
Object in Use
Check that Vulkan objects are not in use by a command buffer when they are destroyed.
VK_EXT_layer_settings variable: |
check_object_in_use |
vk_layer_settings.txt variable: |
khronos_validation.check_object_in_use |
Environment variables: |
VK_KHRONOS_VALIDATION_CHECK_OBJECT_IN_USE |
|
VK_VALIDATION_CHECK_OBJECT_IN_USE |
|
VK_CHECK_OBJECT_IN_USE |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.check_object_in_use |
|
adb setprop debug.vulkan.validation.check_object_in_use |
|
adb setprop debug.vulkan.check_object_in_use |
|
adb setprop debug.vvl.check_object_in_use |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Core |
validate_core |
BOOL |
true |
Query
Checks for commands that use VkQueryPool objects.
VK_EXT_layer_settings variable: |
check_query |
vk_layer_settings.txt variable: |
khronos_validation.check_query |
Environment variables: |
VK_KHRONOS_VALIDATION_CHECK_QUERY |
|
VK_VALIDATION_CHECK_QUERY |
|
VK_CHECK_QUERY |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.check_query |
|
adb setprop debug.vulkan.validation.check_query |
|
adb setprop debug.vulkan.check_query |
|
adb setprop debug.vvl.check_query |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Core |
validate_core |
BOOL |
true |
Shader
This will validate the contents of the SPIR-V which can be CPU intensive during application start up. This does internal checks as well as calling spirv-val.
VK_EXT_layer_settings variable: |
check_shaders |
vk_layer_settings.txt variable: |
khronos_validation.check_shaders |
Environment variables: |
VK_KHRONOS_VALIDATION_CHECK_SHADERS |
|
VK_VALIDATION_CHECK_SHADERS |
|
VK_CHECK_SHADERS |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.check_shaders |
|
adb setprop debug.vulkan.validation.check_shaders |
|
adb setprop debug.vulkan.check_shaders |
|
adb setprop debug.vvl.check_shaders |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Core |
validate_core |
BOOL |
true |
Caching
Creates an internal instance of VK_EXT_validation_cache and upon vkDestroyInstance, will cache the shader validation so sequential usage of the validation layers will be skipped.
VK_EXT_layer_settings variable: |
check_shaders_caching |
vk_layer_settings.txt variable: |
khronos_validation.check_shaders_caching |
Environment variables: |
VK_KHRONOS_VALIDATION_CHECK_SHADERS_CACHING |
|
VK_VALIDATION_CHECK_SHADERS_CACHING |
|
VK_CHECK_SHADERS_CACHING |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.check_shaders_caching |
|
adb setprop debug.vulkan.validation.check_shaders_caching |
|
adb setprop debug.vulkan.check_shaders_caching |
|
adb setprop debug.vvl.check_shaders_caching |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
All the following condition must be fulfilled for the setting to be applied.
Core |
validate_core |
BOOL |
true |
Shader |
check_shaders |
BOOL |
true |
Handle Wrapping
Handle wrapping checks. Disable this feature if you are experiencing crashes when creating new extensions or developing new Vulkan objects/structures.
VK_EXT_layer_settings variable: |
unique_handles |
vk_layer_settings.txt variable: |
khronos_validation.unique_handles |
Environment variables: |
VK_KHRONOS_VALIDATION_UNIQUE_HANDLES |
|
VK_VALIDATION_UNIQUE_HANDLES |
|
VK_UNIQUE_HANDLES |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.unique_handles |
|
adb setprop debug.vulkan.validation.unique_handles |
|
adb setprop debug.vulkan.unique_handles |
|
adb setprop debug.vvl.unique_handles |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Object Lifetime
Object tracking checks. This may not always be necessary late in a development cycle.
VK_EXT_layer_settings variable: |
object_lifetime |
vk_layer_settings.txt variable: |
khronos_validation.object_lifetime |
Environment variables: |
VK_KHRONOS_VALIDATION_OBJECT_LIFETIME |
|
VK_VALIDATION_OBJECT_LIFETIME |
|
VK_OBJECT_LIFETIME |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.object_lifetime |
|
adb setprop debug.vulkan.validation.object_lifetime |
|
adb setprop debug.vulkan.object_lifetime |
|
adb setprop debug.vvl.object_lifetime |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Stateless Parameter
Stateless parameter checks. This may not always be necessary late in a development cycle.
VK_EXT_layer_settings variable: |
stateless_param |
vk_layer_settings.txt variable: |
khronos_validation.stateless_param |
Environment variables: |
VK_KHRONOS_VALIDATION_STATELESS_PARAM |
|
VK_VALIDATION_STATELESS_PARAM |
|
VK_STATELESS_PARAM |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.stateless_param |
|
adb setprop debug.vulkan.validation.stateless_param |
|
adb setprop debug.vulkan.stateless_param |
|
adb setprop debug.vvl.stateless_param |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Thread Safety
Thread checks. In order to not degrade performance, it might be best to run your program with thread-checking disabled most of the time, enabling it occasionally for a quick sanity check or when debugging difficult application behaviors.
VK_EXT_layer_settings variable: |
thread_safety |
vk_layer_settings.txt variable: |
khronos_validation.thread_safety |
Environment variables: |
VK_KHRONOS_VALIDATION_THREAD_SAFETY |
|
VK_VALIDATION_THREAD_SAFETY |
|
VK_THREAD_SAFETY |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.thread_safety |
|
adb setprop debug.vulkan.validation.thread_safety |
|
adb setprop debug.vulkan.thread_safety |
|
adb setprop debug.vvl.thread_safety |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Synchronization
Check for resource access conflicts caused by missing or incorrectly used synchronization operations.
VK_EXT_layer_settings variable: |
validate_sync |
vk_layer_settings.txt variable: |
khronos_validation.validate_sync |
Environment variables: |
VK_KHRONOS_VALIDATION_VALIDATE_SYNC |
|
VK_VALIDATION_VALIDATE_SYNC |
|
VK_VALIDATE_SYNC |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.validate_sync |
|
adb setprop debug.vulkan.validation.validate_sync |
|
adb setprop debug.vulkan.validate_sync |
|
adb setprop debug.vvl.validate_sync |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Submit time validation
Enable synchronization validation on the boundary between submitted command buffers. This also validates accesses from presentation operations. This option can incur a significant performance cost.
VK_EXT_layer_settings variable: |
syncval_submit_time_validation |
vk_layer_settings.txt variable: |
khronos_validation.syncval_submit_time_validation |
Environment variables: |
VK_KHRONOS_VALIDATION_SYNCVAL_SUBMIT_TIME_VALIDATION |
|
VK_VALIDATION_SYNCVAL_SUBMIT_TIME_VALIDATION |
|
VK_SYNCVAL_SUBMIT_TIME_VALIDATION |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.syncval_submit_time_validation |
|
adb setprop debug.vulkan.validation.syncval_submit_time_validation |
|
adb setprop debug.vulkan.syncval_submit_time_validation |
|
adb setprop debug.vvl.syncval_submit_time_validation |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Shader accesses heuristic
Take into account memory accesses performed by the shader based on SPIR-V static analysis. Warning: can produce false-positives, can ignore certain types of accesses.
VK_EXT_layer_settings variable: |
syncval_shader_accesses_heuristic |
vk_layer_settings.txt variable: |
khronos_validation.syncval_shader_accesses_heuristic |
Environment variables: |
VK_KHRONOS_VALIDATION_SYNCVAL_SHADER_ACCESSES_HEURISTIC |
|
VK_VALIDATION_SYNCVAL_SHADER_ACCESSES_HEURISTIC |
|
VK_SYNCVAL_SHADER_ACCESSES_HEURISTIC |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.syncval_shader_accesses_heuristic |
|
adb setprop debug.vulkan.validation.syncval_shader_accesses_heuristic |
|
adb setprop debug.vulkan.syncval_shader_accesses_heuristic |
|
adb setprop debug.vvl.syncval_shader_accesses_heuristic |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Error messages
Options to configure synchronization validation error reporting
- Type: GROUP
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Append a section of key-value properties to the error message. Useful for filtering errors.
VK_EXT_layer_settings variable: |
syncval_message_extra_properties |
vk_layer_settings.txt variable: |
khronos_validation.syncval_message_extra_properties |
Environment variables: |
VK_KHRONOS_VALIDATION_SYNCVAL_MESSAGE_EXTRA_PROPERTIES |
|
VK_VALIDATION_SYNCVAL_MESSAGE_EXTRA_PROPERTIES |
|
VK_SYNCVAL_MESSAGE_EXTRA_PROPERTIES |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.syncval_message_extra_properties |
|
adb setprop debug.vulkan.validation.syncval_message_extra_properties |
|
adb setprop debug.vulkan.syncval_message_extra_properties |
|
adb setprop debug.vvl.syncval_message_extra_properties |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Debug Printf
Enable DebugPrintf and will print anything use NonSemantic.DebugPrintf in their SPIR-V
VK_EXT_layer_settings variable: |
printf_enable |
vk_layer_settings.txt variable: |
khronos_validation.printf_enable |
Environment variables: |
VK_KHRONOS_VALIDATION_PRINTF_ENABLE |
|
VK_VALIDATION_PRINTF_ENABLE |
|
VK_PRINTF_ENABLE |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Redirect Printf messages to stdout
Enable redirection of Debug Printf messages from the debug callback to stdout
VK_EXT_layer_settings variable: |
printf_to_stdout |
vk_layer_settings.txt variable: |
khronos_validation.printf_to_stdout |
Environment variables: |
VK_KHRONOS_VALIDATION_PRINTF_TO_STDOUT |
|
VK_VALIDATION_PRINTF_TO_STDOUT |
|
VK_PRINTF_TO_STDOUT |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Printf verbose
Will print out handles, instruction location, position in command buffer, and more
VK_EXT_layer_settings variable: |
printf_verbose |
vk_layer_settings.txt variable: |
khronos_validation.printf_verbose |
Environment variables: |
VK_KHRONOS_VALIDATION_PRINTF_VERBOSE |
|
VK_VALIDATION_PRINTF_VERBOSE |
|
VK_PRINTF_VERBOSE |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Printf buffer size
Set the size in bytes of the buffer per draw/dispatch/traceRays to hold the messages
VK_EXT_layer_settings variable: |
printf_buffer_size |
vk_layer_settings.txt variable: |
khronos_validation.printf_buffer_size |
Environment variables: |
VK_KHRONOS_VALIDATION_PRINTF_BUFFER_SIZE |
|
VK_VALIDATION_PRINTF_BUFFER_SIZE |
|
VK_PRINTF_BUFFER_SIZE |
- Type: INT
- Default Value: 1024
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
GPU Assisted Validation
Enable validation that cannot be done the CPU and needs hooks into the GPU execution
VK_EXT_layer_settings variable: |
gpuav_enable |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_enable |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_ENABLE |
|
VK_VALIDATION_GPUAV_ENABLE |
|
VK_GPUAV_ENABLE |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Safe Mode
Will have GPU-AV try and prevent crashes, but will be much slower to validate. If using Safe Mode, consider using selective shader instrumentation, to only instrument the shaders/pipelines causing issues.
VK_EXT_layer_settings variable: |
gpuav_safe_mode |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_safe_mode |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_SAFE_MODE |
|
VK_VALIDATION_GPUAV_SAFE_MODE |
|
VK_GPUAV_SAFE_MODE |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Force on robustness features
This will enable all possible robustness features for the app at device creation time. This can be used to quickly detect if with robustness, your issue disappears. GPU-AV will also skip validating things already covered by robustness, so turning on should reduce GPU-AV performance overhead.
VK_EXT_layer_settings variable: |
gpuav_force_on_robustness |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_force_on_robustness |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_FORCE_ON_ROBUSTNESS |
|
VK_VALIDATION_GPUAV_FORCE_ON_ROBUSTNESS |
|
VK_GPUAV_FORCE_ON_ROBUSTNESS |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Shader instrumentation
Instrument shaders to validate descriptors, descriptor indexing, buffer device addresses and ray queries. Warning: will considerably slow down shader executions.
VK_EXT_layer_settings variable: |
gpuav_shader_instrumentation |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_shader_instrumentation |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_SHADER_INSTRUMENTATION |
|
VK_VALIDATION_GPUAV_SHADER_INSTRUMENTATION |
|
VK_GPUAV_SHADER_INSTRUMENTATION |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Enable instrumenting shaders selectively
Select which shaders to instrument by passing a VkValidationFeaturesEXT struct with GPU-AV enabled in the VkShaderModuleCreateInfo pNext or using a regex matching a shader/pipeline debug name. Because this only validates the selected shaders, it will allow GPU-AV to run much faster.
VK_EXT_layer_settings variable: |
gpuav_select_instrumented_shaders |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_select_instrumented_shaders |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_SELECT_INSTRUMENTED_SHADERS |
|
VK_VALIDATION_GPUAV_SELECT_INSTRUMENTED_SHADERS |
|
VK_GPUAV_SELECT_INSTRUMENTED_SHADERS |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Shader/pipeline name regexes
Any shader or pipeline library debug name (set with vkSetDebugUtilsObjectNameEXT) fully matching any listed regular expression will be instrumented when creating pipelines with those shaders or libraries. Regex grammar: Modified ECMAScript. No support for shader objects yet. Warning: instrumentation being performed at final pipeline creation time, if shaders modules have already been destroyed at this step (possible when using pipeline libraries), they won't be found by this regex selection system. In this case, consider naming pipeline libraries instead.
VK_EXT_layer_settings variable: |
gpuav_shaders_to_instrument |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_shaders_to_instrument |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_SHADERS_TO_INSTRUMENT |
|
VK_VALIDATION_GPUAV_SHADERS_TO_INSTRUMENT |
|
VK_GPUAV_SHADERS_TO_INSTRUMENT |
- Type: LIST
- Default Value:
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Descriptors indexing
Enable descriptors and buffer out of bounds validation when using descriptor indexing
VK_EXT_layer_settings variable: |
gpuav_descriptor_checks |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_descriptor_checks |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_DESCRIPTOR_CHECKS |
|
VK_VALIDATION_GPUAV_DESCRIPTOR_CHECKS |
|
VK_GPUAV_DESCRIPTOR_CHECKS |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Post process descriptor indexing
Track which descriptor indexes were used in shader to run normal validation afterwards
VK_EXT_layer_settings variable: |
gpuav_post_process_descriptor_indexing |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_post_process_descriptor_indexing |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_POST_PROCESS_DESCRIPTOR_INDEXING |
|
VK_VALIDATION_GPUAV_POST_PROCESS_DESCRIPTOR_INDEXING |
|
VK_GPUAV_POST_PROCESS_DESCRIPTOR_INDEXING |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Out of bounds buffer device addresses
Check for invalid access using buffer device address
VK_EXT_layer_settings variable: |
gpuav_buffer_address_oob |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_buffer_address_oob |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_BUFFER_ADDRESS_OOB |
|
VK_VALIDATION_GPUAV_BUFFER_ADDRESS_OOB |
|
VK_GPUAV_BUFFER_ADDRESS_OOB |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Maximum number of buffer device addresses in use at one time
VK_EXT_layer_settings variable: |
gpuav_max_buffer_device_addresses |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_max_buffer_device_addresses |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_MAX_BUFFER_DEVICE_ADDRESSES |
|
VK_VALIDATION_GPUAV_MAX_BUFFER_DEVICE_ADDRESSES |
|
VK_GPUAV_MAX_BUFFER_DEVICE_ADDRESSES |
- Type: INT
- Default Value: 10000
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
RayQuery SPIR-V instructions
Enable shader instrumentation on OpRayQueryInitializeKHR
VK_EXT_layer_settings variable: |
gpuav_validate_ray_query |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_validate_ray_query |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_VALIDATE_RAY_QUERY |
|
VK_VALIDATION_GPUAV_VALIDATE_RAY_QUERY |
|
VK_GPUAV_VALIDATE_RAY_QUERY |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Out of bounds vertex attribute fetching
Validate that no vertex attribute fetching is out of bonds
VK_EXT_layer_settings variable: |
gpuav_vertex_attribute_fetch_oob |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_vertex_attribute_fetch_oob |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_VERTEX_ATTRIBUTE_FETCH_OOB |
|
VK_VALIDATION_GPUAV_VERTEX_ATTRIBUTE_FETCH_OOB |
|
VK_GPUAV_VERTEX_ATTRIBUTE_FETCH_OOB |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Buffer content validation
Validate buffers containing parameters used in indirect Vulkan commands, or used in copy commands
VK_EXT_layer_settings variable: |
gpuav_buffers_validation |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_buffers_validation |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_BUFFERS_VALIDATION |
|
VK_VALIDATION_GPUAV_BUFFERS_VALIDATION |
|
VK_GPUAV_BUFFERS_VALIDATION |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Indirect draws parameters
Validate buffers containing draw parameters used in indirect draw commands. Includes vkCmdDrawMeshTasks* calls as well
VK_EXT_layer_settings variable: |
gpuav_indirect_draws_buffers |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_indirect_draws_buffers |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_INDIRECT_DRAWS_BUFFERS |
|
VK_VALIDATION_GPUAV_INDIRECT_DRAWS_BUFFERS |
|
VK_GPUAV_INDIRECT_DRAWS_BUFFERS |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Indirect dispatches parameters
Validate buffers containing dispatch parameters used in indirect dispatch commands
VK_EXT_layer_settings variable: |
gpuav_indirect_dispatches_buffers |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_indirect_dispatches_buffers |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_INDIRECT_DISPATCHES_BUFFERS |
|
VK_VALIDATION_GPUAV_INDIRECT_DISPATCHES_BUFFERS |
|
VK_GPUAV_INDIRECT_DISPATCHES_BUFFERS |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Indirect trace rays parameters
Validate buffers containing ray tracing parameters used in indirect ray tracing commands
VK_EXT_layer_settings variable: |
gpuav_indirect_trace_rays_buffers |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_indirect_trace_rays_buffers |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_INDIRECT_TRACE_RAYS_BUFFERS |
|
VK_VALIDATION_GPUAV_INDIRECT_TRACE_RAYS_BUFFERS |
|
VK_GPUAV_INDIRECT_TRACE_RAYS_BUFFERS |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Buffer copies
Validate copies involving a VkBuffer. Right now only validates copy buffer to image.
VK_EXT_layer_settings variable: |
gpuav_buffer_copies |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_buffer_copies |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_BUFFER_COPIES |
|
VK_VALIDATION_GPUAV_BUFFER_COPIES |
|
VK_GPUAV_BUFFER_COPIES |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Index buffers
Validate that indexed draws do not fetch indices outside of the bounds of the index buffer.
VK_EXT_layer_settings variable: |
gpuav_index_buffers |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_index_buffers |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_INDEX_BUFFERS |
|
VK_VALIDATION_GPUAV_INDEX_BUFFERS |
|
VK_GPUAV_INDEX_BUFFERS |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
All the following condition must be fulfilled for the setting to be applied.
Image Layout
(Warning - still known to have false positives) Use GPU-AV to detect which descriptors where accessed. Then using post processing, check that the layout of each image subresource is correct whenever it is used by a command buffer.
VK_EXT_layer_settings variable: |
gpuav_image_layout |
vk_layer_settings.txt variable: |
khronos_validation.gpuav_image_layout |
Environment variables: |
VK_KHRONOS_VALIDATION_GPUAV_IMAGE_LAYOUT |
|
VK_VALIDATION_GPUAV_IMAGE_LAYOUT |
|
VK_GPUAV_IMAGE_LAYOUT |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX
Best Practices
Outputs warnings related to common misuse of the API, but which are not explicitly prohibited by the specification.
VK_EXT_layer_settings variable: |
validate_best_practices |
vk_layer_settings.txt variable: |
khronos_validation.validate_best_practices |
Environment variables: |
VK_KHRONOS_VALIDATION_VALIDATE_BEST_PRACTICES |
|
VK_VALIDATION_VALIDATE_BEST_PRACTICES |
|
VK_VALIDATE_BEST_PRACTICES |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.validate_best_practices |
|
adb setprop debug.vulkan.validation.validate_best_practices |
|
adb setprop debug.vulkan.validate_best_practices |
|
adb setprop debug.vvl.validate_best_practices |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
ARM-specific best practices
Outputs warnings for spec-conforming but non-ideal code on ARM GPUs.
VK_EXT_layer_settings variable: |
validate_best_practices_arm |
vk_layer_settings.txt variable: |
khronos_validation.validate_best_practices_arm |
Environment variables: |
VK_KHRONOS_VALIDATION_VALIDATE_BEST_PRACTICES_ARM |
|
VK_VALIDATION_VALIDATE_BEST_PRACTICES_ARM |
|
VK_VALIDATE_BEST_PRACTICES_ARM |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.validate_best_practices_arm |
|
adb setprop debug.vulkan.validation.validate_best_practices_arm |
|
adb setprop debug.vulkan.validate_best_practices_arm |
|
adb setprop debug.vvl.validate_best_practices_arm |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
AMD-specific best practices
Outputs warnings for spec-conforming but non-ideal code on AMD GPUs.
VK_EXT_layer_settings variable: |
validate_best_practices_amd |
vk_layer_settings.txt variable: |
khronos_validation.validate_best_practices_amd |
Environment variables: |
VK_KHRONOS_VALIDATION_VALIDATE_BEST_PRACTICES_AMD |
|
VK_VALIDATION_VALIDATE_BEST_PRACTICES_AMD |
|
VK_VALIDATE_BEST_PRACTICES_AMD |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
IMG-specific best practices
Outputs warnings for spec-conforming but non-ideal code on Imagination GPUs.
VK_EXT_layer_settings variable: |
validate_best_practices_img |
vk_layer_settings.txt variable: |
khronos_validation.validate_best_practices_img |
Environment variables: |
VK_KHRONOS_VALIDATION_VALIDATE_BEST_PRACTICES_IMG |
|
VK_VALIDATION_VALIDATE_BEST_PRACTICES_IMG |
|
VK_VALIDATE_BEST_PRACTICES_IMG |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS
NVIDIA-specific best practices
Outputs warnings for spec-conforming but non-ideal code on NVIDIA GPUs.
VK_EXT_layer_settings variable: |
validate_best_practices_nvidia |
vk_layer_settings.txt variable: |
khronos_validation.validate_best_practices_nvidia |
Environment variables: |
VK_KHRONOS_VALIDATION_VALIDATE_BEST_PRACTICES_NVIDIA |
|
VK_VALIDATION_VALIDATE_BEST_PRACTICES_NVIDIA |
|
VK_VALIDATE_BEST_PRACTICES_NVIDIA |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.validate_best_practices_nvidia |
|
adb setprop debug.vulkan.validation.validate_best_practices_nvidia |
|
adb setprop debug.vulkan.validate_best_practices_nvidia |
|
adb setprop debug.vvl.validate_best_practices_nvidia |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID
Debug Action
Specifies what action is to be taken when a layer reports information
VK_EXT_layer_settings variable: |
debug_action |
vk_layer_settings.txt variable: |
khronos_validation.debug_action |
Environment variables: |
VK_KHRONOS_VALIDATION_DEBUG_ACTION |
|
VK_VALIDATION_DEBUG_ACTION |
|
VK_DEBUG_ACTION |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.debug_action |
|
adb setprop debug.vulkan.validation.debug_action |
|
adb setprop debug.vulkan.debug_action |
|
adb setprop debug.vvl.debug_action |
- Type: FLAGS
- Default Value: VK_DBG_LAYER_ACTION_LOG_MSG
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
VK_DBG_LAYER_ACTION_LOG_MSG |
Log Message |
Log a txt message to stdout or to a log filename. |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
VK_DBG_LAYER_ACTION_DEBUG_OUTPUT |
Debug Output |
Log a txt message using the Windows OutputDebugString function. |
WINDOWS_X86, WINDOWS_ARM |
VK_DBG_LAYER_ACTION_BREAK |
Break |
Trigger a breakpoint if a debugger is in use. |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Log Filename
Specifies the output filename
VK_EXT_layer_settings variable: |
log_filename |
vk_layer_settings.txt variable: |
khronos_validation.log_filename |
Environment variables: |
VK_KHRONOS_VALIDATION_LOG_FILENAME |
|
VK_VALIDATION_LOG_FILENAME |
|
VK_LOG_FILENAME |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.log_filename |
|
adb setprop debug.vulkan.validation.log_filename |
|
adb setprop debug.vulkan.log_filename |
|
adb setprop debug.vvl.log_filename |
- Type: SAVE_FILE
- Default Value: stdout
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Message Severity
Comma-delineated list of options specifying the types of messages to be reported
VK_EXT_layer_settings variable: |
report_flags |
vk_layer_settings.txt variable: |
khronos_validation.report_flags |
Environment variables: |
VK_KHRONOS_VALIDATION_REPORT_FLAGS |
|
VK_VALIDATION_REPORT_FLAGS |
|
VK_REPORT_FLAGS |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.report_flags |
|
adb setprop debug.vulkan.validation.report_flags |
|
adb setprop debug.vulkan.report_flags |
|
adb setprop debug.vvl.report_flags |
- Type: FLAGS
- Default Value: error
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
info |
Info |
Report informational messages. |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
warn |
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, ANDROID |
perf |
Performance |
Report usage of the API that may cause suboptimal performance. |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
error |
Error |
Report errors in API usage. |
WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID |
Limit Duplicated Messages
Enable limiting of duplicate messages.
VK_EXT_layer_settings variable: |
enable_message_limit |
vk_layer_settings.txt variable: |
khronos_validation.enable_message_limit |
Environment variables: |
VK_KHRONOS_VALIDATION_ENABLE_MESSAGE_LIMIT |
|
VK_VALIDATION_ENABLE_MESSAGE_LIMIT |
|
VK_ENABLE_MESSAGE_LIMIT |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.enable_message_limit |
|
adb setprop debug.vulkan.validation.enable_message_limit |
|
adb setprop debug.vulkan.enable_message_limit |
|
adb setprop debug.vvl.enable_message_limit |
- Type: BOOL
- Default Value: true
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Max Duplicated Messages
Maximum number of times any single validation message should be reported.
VK_EXT_layer_settings variable: |
duplicate_message_limit |
vk_layer_settings.txt variable: |
khronos_validation.duplicate_message_limit |
Environment variables: |
VK_KHRONOS_VALIDATION_DUPLICATE_MESSAGE_LIMIT |
|
VK_VALIDATION_DUPLICATE_MESSAGE_LIMIT |
|
VK_DUPLICATE_MESSAGE_LIMIT |
|
VK_LAYER_DUPLICATE_MESSAGE_LIMIT |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.duplicate_message_limit |
|
adb setprop debug.vulkan.validation.duplicate_message_limit |
|
adb setprop debug.vulkan.duplicate_message_limit |
|
adb setprop debug.vvl.duplicate_message_limit |
- Type: INT
- Default Value: 10
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Mute Message VUIDs
List of VUIDs and VUID identifiers which are to be IGNORED by the validation layer
VK_EXT_layer_settings variable: |
message_id_filter |
vk_layer_settings.txt variable: |
khronos_validation.message_id_filter |
Environment variables: |
VK_KHRONOS_VALIDATION_MESSAGE_ID_FILTER |
|
VK_VALIDATION_MESSAGE_ID_FILTER |
|
VK_MESSAGE_ID_FILTER |
|
VK_LAYER_MESSAGE_ID_FILTER |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.message_id_filter |
|
adb setprop debug.vulkan.validation.message_id_filter |
|
adb setprop debug.vulkan.message_id_filter |
|
adb setprop debug.vvl.message_id_filter |
- Type: LIST
- Default Value:
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Specifies how error messages are reported
- Type: GROUP
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
JSON
Display Validation as JSON (VkDebugUtilsMessengerCallbackDataEXT::pMessage will contain JSON)
VK_EXT_layer_settings variable: |
message_format_json |
vk_layer_settings.txt variable: |
khronos_validation.message_format_json |
Environment variables: |
VK_KHRONOS_VALIDATION_MESSAGE_FORMAT_JSON |
|
VK_VALIDATION_MESSAGE_FORMAT_JSON |
|
VK_MESSAGE_FORMAT_JSON |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.message_format_json |
|
adb setprop debug.vulkan.validation.message_format_json |
|
adb setprop debug.vulkan.message_format_json |
|
adb setprop debug.vvl.message_format_json |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Display Application Name
Useful when running multiple instances to know which instance the message is from.
VK_EXT_layer_settings variable: |
message_format_display_application_name |
vk_layer_settings.txt variable: |
khronos_validation.message_format_display_application_name |
Environment variables: |
VK_KHRONOS_VALIDATION_MESSAGE_FORMAT_DISPLAY_APPLICATION_NAME |
|
VK_VALIDATION_MESSAGE_FORMAT_DISPLAY_APPLICATION_NAME |
|
VK_MESSAGE_FORMAT_DISPLAY_APPLICATION_NAME |
Android system properties : |
adb setprop debug.vulkan.khronos_validation.message_format_display_application_name |
|
adb setprop debug.vulkan.validation.message_format_display_application_name |
|
adb setprop debug.vulkan.message_format_display_application_name |
|
adb setprop debug.vvl.message_format_display_application_name |
- Type: BOOL
- Default Value: false
- Platforms: WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID
Layer Presets
Standard
Good default validation setup that balance validation coverage and performance.
Preset Setting Values:
- Core: true
- Image Layout: true
- Command Buffer State: true
- Object in Use: true
- Query: true
- Shader: true
- Caching: true
- Handle Wrapping: true
- Object Lifetime: true
- Stateless Parameter: true
- Thread Safety: false
- Synchronization: false
- Debug Printf: false
- GPU Assisted Validation: false
- Best Practices: false
- Message Severity: error, warn
- Debug Action: VK_DBG_LAYER_ACTION_LOG_MSG
- Limit Duplicated Messages: true
Reduced-Overhead
Disables some checks in the interest of better performance.
Preset Setting Values:
- Core: true
- Image Layout: false
- Command Buffer State: false
- Object in Use: false
- Query: false
- Shader: true
- Caching: true
- Handle Wrapping: false
- Object Lifetime: true
- Stateless Parameter: true
- Thread Safety: false
- Synchronization: false
- Debug Printf: false
- GPU Assisted Validation: false
- Best Practices: false
- Message Severity: error
- Debug Action: VK_DBG_LAYER_ACTION_LOG_MSG
- Limit Duplicated Messages: true
Best Practices
Provides warnings on valid API usage that is potential API misuse.
Preset Setting Values:
- Core: false
- Image Layout: false
- Command Buffer State: false
- Object in Use: false
- Query: false
- Shader: false
- Caching: false
- Handle Wrapping: false
- Object Lifetime: false
- Stateless Parameter: false
- Thread Safety: false
- Synchronization: false
- Debug Printf: false
- GPU Assisted Validation: false
- Best Practices: true
- Message Severity: error, warn, perf
- Debug Action: VK_DBG_LAYER_ACTION_LOG_MSG
- Limit Duplicated Messages: true
Synchronization
Identify resource access conflicts due to missing or incorrect synchronization operations between actions reading or writing the same regions of memory.
Preset Setting Values:
- Core: false
- Image Layout: false
- Command Buffer State: false
- Object in Use: false
- Query: false
- Shader: false
- Caching: false
- Handle Wrapping: true
- Object Lifetime: false
- Stateless Parameter: false
- Thread Safety: true
- Synchronization: true
- Debug Printf: false
- GPU Assisted Validation: false
- Best Practices: false
- Message Severity: error
- Debug Action: VK_DBG_LAYER_ACTION_LOG_MSG
- Limit Duplicated Messages: true
GPU-Assisted
Check for API usage errors at shader execution time.
Preset Setting Values:
- Core: false
- Image Layout: false
- Command Buffer State: false
- Object in Use: false
- Query: false
- Shader: false
- Caching: false
- Handle Wrapping: false
- Object Lifetime: false
- Stateless Parameter: false
- Thread Safety: false
- Synchronization: false
- Debug Printf: false
- GPU Assisted Validation: true
- Shader instrumentation: true
- Enable instrumenting shaders selectively: false
- Buffer content validation: true
- Reserve Descriptor Set Binding Slot: true
- Best Practices: false
- Message Severity: error
- Debug Action: VK_DBG_LAYER_ACTION_LOG_MSG
- Limit Duplicated Messages: true
Debug Printf
Debug shader code by "printing" any values of interest to the debug callback or stdout.
Preset Setting Values:
- Core: false
- Image Layout: false
- Command Buffer State: false
- Object in Use: false
- Query: false
- Shader: false
- Caching: false
- Handle Wrapping: false
- Object Lifetime: false
- Stateless Parameter: false
- Thread Safety: false
- Synchronization: false
- GPU Assisted Validation: false
- Debug Printf: true
- Best Practices: false
- Message Severity: error, info
- Debug Action:
- Limit Duplicated Messages: false