# The settings in this file can be used to configure the behavior of layers in this repository.
# This file doesn't display the dependencies on the various settings
#
# This file is generated by generate_settings.py

# VK_LAYER_KHRONOS_validation
               
# 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.
khronos_validation.check_command_buffer = true

# 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.
khronos_validation.check_image_layout = true

# Object in Use
# =====================
# Check that Vulkan objects are not in use by a command buffer when they are destroyed.
khronos_validation.check_object_in_use = true

# Query
# =====================
# Checks for commands that use VkQueryPool objects.
khronos_validation.check_query = 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.
khronos_validation.check_shaders = 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.
khronos_validation.check_shaders_caching = true

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

# Deprecation
# =====================
# Give warnings when using deprecated parts of the API.
khronos_validation.deprecation = false

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

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

# 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.
khronos_validation.fine_grained_locking = true

# Out of bounds buffer device addresses
# =====================
# Check for invalid access using buffer device address
khronos_validation.gpuav_buffer_address_oob = true

# Buffer copies
# =====================
# Validate copies involving a VkBuffer. Right now only validates copy buffer to image.
khronos_validation.gpuav_buffer_copies = true

# Buffer content validation
# =====================
# Validate buffers containing parameters used in indirect Vulkan commands, or used in copy commands
khronos_validation.gpuav_buffers_validation = true

# Descriptors indexing
# =====================
# Enable descriptors and buffer out of bounds validation when using descriptor indexing
khronos_validation.gpuav_descriptor_checks = true

# GPU Assisted Validation
# =====================
# Enable validation that cannot be done the CPU and needs hooks into the GPU execution
khronos_validation.gpuav_enable = false

# 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.
khronos_validation.gpuav_force_on_robustness = false

# Index buffers
# =====================
# Validate that indexed draws do not fetch indices outside of the bounds of the index buffer.
khronos_validation.gpuav_index_buffers = true

# Indirect dispatches parameters
# =====================
# Validate buffers containing dispatch parameters used in indirect dispatch commands
khronos_validation.gpuav_indirect_dispatches_buffers = true

# Indirect draws parameters
# =====================
# Validate buffers containing draw parameters used in indirect draw commands. Includes vkCmdDrawMeshTasks* calls as well
khronos_validation.gpuav_indirect_draws_buffers = true

# Indirect trace rays parameters
# =====================
# Validate buffers containing ray tracing parameters used in indirect ray tracing commands
khronos_validation.gpuav_indirect_trace_rays_buffers = true

# Post process descriptor indexing
# =====================
# Track which descriptor indexes were used in shader to run normal validation afterwards
khronos_validation.gpuav_post_process_descriptor_indexing = true

# 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.
khronos_validation.gpuav_safe_mode = false

# 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.
khronos_validation.gpuav_select_instrumented_shaders = false

# Shader instrumentation
# =====================
# Instrument shaders to validate descriptors, descriptor indexing, buffer device addresses and ray queries. Warning: will considerably slow down shader executions.
khronos_validation.gpuav_shader_instrumentation = 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.
khronos_validation.gpuav_shaders_to_instrument = 

# RayQuery SPIR-V instructions
# =====================
# Enable shader instrumentation on OpRayQueryInitializeKHR
khronos_validation.gpuav_validate_ray_query = true

# Out of bounds vertex attribute fetching
# =====================
# Validate that no vertex attribute fetching is out of bonds
khronos_validation.gpuav_vertex_attribute_fetch_oob = true

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

# Display Application Name
# =====================
# Useful when running multiple instances to know which instance the message is from.
khronos_validation.message_format_display_application_name = false

# JSON
# =====================
# Display Validation as JSON (VkDebugUtilsMessengerCallbackDataEXT::pMessage will contain JSON)
khronos_validation.message_format_json = false

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

# Object Lifetime
# =====================
# Object tracking checks. This may not always be necessary late in a development cycle.
khronos_validation.object_lifetime = true

# Printf buffer size
# =====================
# Set the size in bytes of the buffer per draw/dispatch/traceRays to hold the messages
khronos_validation.printf_buffer_size = 1024

# Debug Printf
# =====================
# Enable DebugPrintf and will print anything use NonSemantic.DebugPrintf in their SPIR-V
khronos_validation.printf_enable = false

# Debug Printf only preset
# =====================
# A single, quick setting to turn on only DebugPrintf and turn off everything else
khronos_validation.printf_only_preset = false

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

# Printf verbose
# =====================
# Will print out handles, instruction location, position in command buffer, and more
khronos_validation.printf_verbose = false

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

# Stateless Parameter
# =====================
# Stateless parameter checks. This may not always be necessary late in a development cycle.
khronos_validation.stateless_param = true

# Extra properties
# =====================
# Append a section of key-value properties to the error message. Useful for filtering errors.
khronos_validation.syncval_message_extra_properties = false

# 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.
khronos_validation.syncval_shader_accesses_heuristic = false

# 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.
khronos_validation.syncval_submit_time_validation = true

# 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.
khronos_validation.thread_safety = true

# Handle Wrapping
# =====================
# Handle wrapping checks. Disable this feature if you are experiencing crashes when creating new extensions or developing new Vulkan objects/structures.
khronos_validation.unique_handles = true

# Best Practices
# =====================
# Outputs warnings related to common misuse of the API, but which are not explicitly prohibited by the specification.
khronos_validation.validate_best_practices = false

# AMD-specific best practices
# =====================
# Outputs warnings for spec-conforming but non-ideal code on AMD GPUs.
khronos_validation.validate_best_practices_amd = false

# ARM-specific best practices
# =====================
# Outputs warnings for spec-conforming but non-ideal code on ARM GPUs.
khronos_validation.validate_best_practices_arm = false

# IMG-specific best practices
# =====================
# Outputs warnings for spec-conforming but non-ideal code on Imagination GPUs.
khronos_validation.validate_best_practices_img = false

# NVIDIA-specific best practices
# =====================
# Outputs warnings for spec-conforming but non-ideal code on NVIDIA GPUs.
khronos_validation.validate_best_practices_nvidia = false

# 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.
khronos_validation.validate_core = true

# Synchronization
# =====================
# Check for resource access conflicts caused by missing or incorrectly used synchronization operations.
khronos_validation.validate_sync = false
