Khronos Vulkan

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!).

// Example how to turn on verbose mode for DebugPrintf
const VkBool32 verbose_value = true;
const VkLayerSettingEXT layer_setting = {"VK_LAYER_KHRONOS_validation", "printf_verbose", VK_LAYER_SETTING_TYPE_BOOL32_EXT, 1, &verbose_value};
VkLayerSettingsCreateInfoEXT layer_settings_create_info = {VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, nullptr, 1, &layer_setting};

VkInstanceCreateInfo instance_ci = GetYourCreateInfo();
instance_ci.pNext = &layer_settings_create_info;

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:

# windows
set VK_LAYER_SETTINGS_PATH=C:\path\to\vk_layer_settings.txt

# linux
export VK_LAYER_SETTINGS_PATH=/path/to/vk_layer_settings.txt

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:

# Windows
set VK_LAYER_MESSAGE_ID_FILTER=VUID-VkInstanceCreateInfo-pNext-pNext

# Linux
export VK_LAYER_MESSAGE_ID_FILTER=VUID-VkInstanceCreateInfo-pNext-pNext

# Android
adb setprop debug.vulkan.khronos_validation.message_id_filter=VUID-VkInstanceCreateInfo-pNext-pNext

Layer Details

Layer Properties

Layer Settings Overview

Label Variables Key Type Default Value Platforms
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

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.

Setting Methods Setting Variables
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

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.

Setting Methods Setting Variables
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

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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Core validate_core BOOL true

Object in Use

Check that Vulkan objects are not in use by a command buffer when they are destroyed.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Core validate_core BOOL true

Query

Checks for commands that use VkQueryPool objects.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
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.

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
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.

Setting Methods Setting Variables
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

Object Lifetime

Object tracking checks. This may not always be necessary late in a development cycle.

Setting Methods Setting Variables
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

Stateless Parameter

Stateless parameter checks. This may not always be necessary late in a development cycle.

Setting Methods Setting Variables
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

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.

Setting Methods Setting Variables
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

Synchronization

Check for resource access conflicts caused by missing or incorrectly used synchronization operations.

Setting Methods Setting Variables
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

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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Synchronization validate_sync BOOL true

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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Synchronization validate_sync BOOL true

Error messages

Options to configure synchronization validation error reporting

Extra properties

Append a section of key-value properties to the error message. Useful for filtering errors.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Synchronization validate_sync BOOL true

Debug Printf

Enable DebugPrintf and will print anything use NonSemantic.DebugPrintf in their SPIR-V

Setting Methods Setting Variables
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

Redirect Printf messages to stdout

Enable redirection of Debug Printf messages from the debug callback to stdout

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Debug Printf printf_enable BOOL true

Printf verbose

Will print out handles, instruction location, position in command buffer, and more

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Debug Printf printf_enable BOOL true

Printf buffer size

Set the size in bytes of the buffer per draw/dispatch/traceRays to hold the messages

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Debug Printf printf_enable BOOL true

GPU Assisted Validation

Enable validation that cannot be done the CPU and needs hooks into the GPU execution

Setting Methods Setting Variables
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

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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true

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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true

Shader instrumentation

Instrument shaders to validate descriptors, descriptor indexing, buffer device addresses and ray queries. Warning: will considerably slow down shader executions.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true

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.

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true

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.

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true
Enable instrumenting shaders selectively gpuav_select_instrumented_shaders BOOL true

Descriptors indexing

Enable descriptors and buffer out of bounds validation when using descriptor indexing

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true

Post process descriptor indexing

Track which descriptor indexes were used in shader to run normal validation afterwards

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true

Out of bounds buffer device addresses

Check for invalid access using buffer device address

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true

Maximum number of buffer device addresses in use at one time

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true
Out of bounds buffer device addresses gpuav_buffer_address_oob BOOL true

RayQuery SPIR-V instructions

Enable shader instrumentation on OpRayQueryInitializeKHR

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true

Out of bounds vertex attribute fetching

Validate that no vertex attribute fetching is out of bonds

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Shader instrumentation gpuav_shader_instrumentation BOOL true

Buffer content validation

Validate buffers containing parameters used in indirect Vulkan commands, or used in copy commands

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true

Indirect draws parameters

Validate buffers containing draw parameters used in indirect draw commands. Includes vkCmdDrawMeshTasks* calls as well

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Buffer content validation gpuav_buffers_validation BOOL true

Indirect dispatches parameters

Validate buffers containing dispatch parameters used in indirect dispatch commands

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Buffer content validation gpuav_buffers_validation BOOL true

Indirect trace rays parameters

Validate buffers containing ray tracing parameters used in indirect ray tracing commands

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Buffer content validation gpuav_buffers_validation BOOL true

Buffer copies

Validate copies involving a VkBuffer. Right now only validates copy buffer to image.

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Buffer content validation gpuav_buffers_validation BOOL true

Index buffers

Validate that indexed draws do not fetch indices outside of the bounds of the index buffer.

Setting Methods Setting Variables
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

All the following condition must be fulfilled for the setting to be applied.

Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true
Buffer content validation gpuav_buffers_validation BOOL true

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.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
GPU Assisted Validation gpuav_enable BOOL true

Best Practices

Outputs warnings related to common misuse of the API, but which are not explicitly prohibited by the specification.

Setting Methods Setting Variables
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

ARM-specific best practices

Outputs warnings for spec-conforming but non-ideal code on ARM GPUs.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Best Practices validate_best_practices BOOL true

AMD-specific best practices

Outputs warnings for spec-conforming but non-ideal code on AMD GPUs.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Best Practices validate_best_practices BOOL true

IMG-specific best practices

Outputs warnings for spec-conforming but non-ideal code on Imagination GPUs.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Best Practices validate_best_practices BOOL true

NVIDIA-specific best practices

Outputs warnings for spec-conforming but non-ideal code on NVIDIA GPUs.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Best Practices validate_best_practices BOOL true

Debug Action

Specifies what action is to be taken when a layer reports information

Setting Methods Setting Variables
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
Flags Label Description Platforms
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

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Debug Action debug_action FLAGS VK_DBG_LAYER_ACTION_LOG_MSG

Message Severity

Comma-delineated list of options specifying the types of messages to be reported

Setting Methods Setting Variables
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
Flags Label Description Platforms
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.

Setting Methods Setting Variables
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

Max Duplicated Messages

Maximum number of times any single validation message should be reported.

Setting Methods Setting Variables
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
Dependences Variables Key Type Value
Limit Duplicated Messages enable_message_limit BOOL true

Mute Message VUIDs

List of VUIDs and VUID identifiers which are to be IGNORED by the validation layer

Setting Methods Setting Variables
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

Message Format

Specifies how error messages are reported

JSON

Display Validation as JSON (VkDebugUtilsMessengerCallbackDataEXT::pMessage will contain JSON)

Setting Methods Setting Variables
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

Display Application Name

Useful when running multiple instances to know which instance the message is from.

Setting Methods Setting Variables
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

Layer Presets

Standard

Good default validation setup that balance validation coverage and performance.

Preset Setting Values:

Reduced-Overhead

Disables some checks in the interest of better performance.

Preset Setting Values:

Best Practices

Provides warnings on valid API usage that is potential API misuse.

Preset Setting Values:

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:

GPU-Assisted

Check for API usage errors at shader execution time.

Preset Setting Values:

Debug Printf

Debug shader code by "printing" any values of interest to the debug callback or stdout.

Preset Setting Values: