################################################################################
#
#  This file contains per-layer settings that configure layer behavior at
#  execution time. Comments in this file are denoted with the "#" char.
#  Settings lines are of the form:
#      "<LayerIdentifier>.<SettingName> = <SettingValue>"
#
#  <LayerIdentifier> is typically the official layer name, minus the VK_LAYER
#  prefix and all lower-camel-case -- i.e., for VK_LAYER_KHRONOS_validation,
#  the layer identifier is 'khronos_validation'.
#
################################################################################
################################################################################
# Validation Layer Common Settings:
# =================================
#
#   DEBUG_ACTION:
#   =============
#   <LayerIdentifier>.debug_action : This is an enum value indicating what
#    action is to be taken when a layer wants to report information.
#    Possible settings values are defined in the vk_layer.h header file.
#    These settings are:
#    VK_DBG_LAYER_ACTION_IGNORE - Take no action.
#    VK_DBG_LAYER_ACTION_LOG_MSG - Log a txt message to stdout or to a log filename
#       specified via the <LayerIdentifier>.log_filename setting (see below).
#    VK_DBG_LAYER_ACTION_CALLBACK - Call user defined callback function(s) that
#       have been registered via the VK_EXT_debug_report extension. Since
#       app must register callback, this is a NOOP for the settings file.
#    VK_DBG_LAYER_ACTION_DEBUG_OUTPUT [Windows only] - Log a txt message using the
#       Windows OutputDebugString function -- messages will show up in the
#       Visual Studio output window, for instance.
#    VK_DBG_LAYER_ACTION_BREAK - Trigger a breakpoint.
#
#   REPORT_FLAGS:
#   =============
#   <LayerIdentifier>.report_flags : This is a comma-delineated list of options
#    telling the layer what types of messages it should report back.
#    Options are:
#    info - Report informational messages.
#    warn - 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.
#    perf - Report using the API in a way that may cause suboptimal performance.
#    error - Report errors in API usage.
#    debug - For layer development. Report messages for debugging layer
#            behavior.
#
#   LOG_FILENAME:
#   =============
#   <LayerIdentifier>.log_filename : output filename. Can be relative to
#      location of vk_layer_settings.txt file, or an absolute path. If no
#      filename is specified or if filename has invalid path, then stdout
#      is used by default.
#
#   DISABLES:
#   =============
#   <LayerIdentifier>.disables : comma separated list of feature/flag/disable enums
#      These can include VkValidationFeatureDisableEXT flags defined in the Vulkan
#      specification, or ValidationCheckDisables enums defined in chassis.h.
#      Effects of setting these flags are described in the specification (or the
#      source code in the case of the ValidationCheckDisables). The most useful
#      flags are briefly described here:
#      VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT - disables handle wrapping.
#          Disable this feature if you are running into crashes when authoring new extensions
#          or developing new Vulkan objects/structures
#      VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT - disables thread checks. It may
#          help with performance to run with thread-checking disabled most of the time,
#          enabling it occasionally for a quick sanity check, or when debugging difficult
#          application behaviors.
#      VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT - disables the main, heavy-duty
#          validation checks. This may be valuable early in the development cycle to
#          reduce validation output while correcting paramter/object usage errors.
#      VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT - disables stateless parameter
#          checks. This may not always be necessary late in a development cycle.
#      VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT - disables object tracking.
#          This may not always be necessary late in a development cycle.
#
#   ENABLES:
#   =============
#   <LayerIdentifier>.enables : comma separated list of feature enable enums
#      These can include VkValidationFeatureEnableEXT flags defined in the Vulkan
#      specification, where their effects are described.  The most useful
#      flags are briefly described here:
#      VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT - enables intrusive GPU-assisted
#      shader validation in khronos validation layers
#      VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT - enables best practices warning
#      validation
#

# VK_LAYER_KHRONOS_validation Settings

khronos_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
khronos_validation.report_flags = error,warn,perf
khronos_validation.log_filename = stdout

# Example entry showing how to disable threading checks and validation at DestroyPipeline time
#khronos_validation.disables = VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT,VALIDATION_CHECK_DISABLE_DESTROY_PIPELINE

# Example entry showing how to Enable GPU-Assisted Validation
#khronos_validation.enables = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT

# Example entry showing how to Enable Best Practices Validation
#khronos_validation.enables = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT

################################################################################
