# The settings in this file can be used to configure the behavior of
# layers in this repository.
#
# Note that this file is not regulary updated, so not all possible layer
# settings may be listed, and some layer settings may even be obsolete.

# VK_LAYER_KHRONOS_validation

# Debug Action
# =====================
# <LayerIdentifier>.debug_action
# Specifies what action is to be taken when a layer reports information
khronos_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG

# Log Filename
# =====================
# <LayerIdentifier>.log_filename
# Specifies the output filename
khronos_validation.log_filename = stdout

# Message Severity
# =====================
# <LayerIdentifier>.report_flags
# Comma-delineated list of options specifying the types of messages to be
# reported
khronos_validation.report_flags = error

# Limit Duplicated Messages
# =====================
# <LayerIdentifier>.enable_message_limit
# Enable limiting of duplicate messages.
khronos_validation.enable_message_limit = true

# Max Duplicated Messages
# =====================
# <LayerIdentifier>.duplicate_message_limit
# Maximum number of times any single validation message should be reported.
khronos_validation.duplicate_message_limit = 10

# Mute Message VUIDs
# =====================
# <LayerIdentifier>.message_id_filter
# List of VUIDs and VUID identifers which are to be IGNORED by the validation
# layer
khronos_validation.message_id_filter =

# Disables
# =====================
# <LayerIdentifier>.disables
# Specify areas of validation to be disabled
khronos_validation.disables = VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT

# Enables
# =====================
# <LayerIdentifier>.enables
# Setting an option here will enable specialized areas of validation
khronos_validation.enables =

# Redirect Printf messages to stdout
# =====================
# <LayerIdentifier>.printf_to_stdout
# Enable redirection of Debug Printf messages from the debug callback to stdout
#khronos_validation.printf_to_stdout = true

# Printf verbose
# =====================
# <LayerIdentifier>.printf_verbose
# Set the verbosity of debug printf messages
#khronos_validation.printf_verbose = false

# Printf buffer size
# =====================
# <LayerIdentifier>.printf_buffer_size
# Set the size in bytes of the buffer used by debug printf
#khronos_validation.printf_buffer_size = 1024

# Check descriptor indexing accesses
# =====================
# <LayerIdentifier>.gpuav_descriptor_checks
# Enable descriptor indexing and buffer out of bounds checking
#khronos_validation.gpuav_descriptor_checks = true

# Check Draw Indirect Count Buffers and firstInstance values
# =====================
# <LayerIdentifier>.validate_draw_indirect
# Enable draw indirect checking
#khronos_validation.validate_draw_indirect = true

# Check Dispatch Indirect group count values
# =====================
# <LayerIdentifier>.validate_dispatch_indirect
# Enable dispatch indirect checking
#khronos_validation.validate_dispatch_indirect = true

# Cache instrumented shaders rather than instrumenting them on every run
# =====================
# <LayerIdentifier>.use_instrumented_shader_cache
# Enable instrumented shader caching
#khronos_validation.use_instrumented_shader_cache = true

# Select which shaders to instrument by passing a VkValidationFeaturesEXT struct with GPU-AV enabled in the VkShaderModuleCreateInfo pNext
# =====================
# <LayerIdentifier>.
# Enable selection of shaders to instrument
#khronos_validation.select_instrumented_shaders = false

# Use linear vma allocator for GPU-AV output buffers
# =====================
# <LayerIdentifier>.gpuav_vma_linear_output
# Use VMA linear memory allocations for GPU-AV output buffers
#khronos_validation.vma_linear_output = true

# Specify the maximum number of buffer device addresses in simultaneous use
# =====================
# <LayerIdentifier>.gpuav_max_buffer_device_addresses
# Specify the maximum number of buffer device addresses to allow GPU-AV allocate resources
#khronos_validation.gpuav_max_buffer_device_addresses = 10000

# Fine Grained Locking
# =====================
# <LayerIdentifier>.fine_grained_locking
# Enable fine grained locking for Core Validation, which should improve
# performance in multithreaded applications.
khronos_validation.fine_grained_locking = true

# Best Practices
# =====================
# Enable best practices layer
khronos_validation.enables=VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT

# Best Practices with ARM best practices
# =====================
# Enable best practices layer
khronos_validation.enables=VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_ARM

# Best Practices with AMD best practices
# =====================
# Enable best practices layer
khronos_validation.enables=VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD

# Best Practices with Imagination Tech best practices
# =====================
# Enable best practices layer
khronos_validation.enables=VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_IMG

# Best Practices with Nvidia Specific Check
# =====================
# Enable best practices layer
khronos_validation.enables=VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA

# Best Practices with ALL Vendor Specific Checks
# =====================
# Enable best practices layer
khronos_validation.enables=VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT,VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_ALL
