# This is an example vk_layer_settings.txt file.
#  This file allows for per-layer settings which can dynamically affect layer
#  behavior. 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_LUNARG_core_validation, the layer
#  identifier is 'lunarg_core_validation', and for VK_LAYER_GOOGLE_threading the layer
#  identifier is 'google_threading'.
#
#  There are some common settings that are used by each layer.
#  Below is a general description of three common settings, followed by
#  actual template settings for each layer in the SDK.
#
# Common settings descriptions:
# =============================
#
#   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 file
#       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_LUNARG_debug_report extension. Since
#       app must register callback, this is a NOOP for the settings file.
#    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 of using the API in an unrecommended manner which may
#       also lead to undefined 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.
#
#
#
# Example of actual settings for each layer:
# ==========================================
#
# VK_LAYER_LUNARG_device_limits Settings
lunarg_device_limits.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
lunarg_device_limits.report_flags = error,warn,perf
lunarg_device_limits.log_filename = stdout

# VK_LAYER_LUNARG_core_validation Settings
lunarg_core_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
lunarg_core_validation.report_flags = error,warn,perf
lunarg_core_validation.log_filename = stdout

# VK_LAYER_LUNARG_image Settings
lunarg_image.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
lunarg_image.report_flags = error,warn,perf
lunarg_image.log_filename = stdout

# VK_LAYER_LUNARG_object_tracker Settings
lunarg_object_tracker.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
lunarg_object_tracker.report_flags = error,warn,perf
lunarg_object_tracker.log_filename = stdout

# VK_LAYER_LUNARG_parameter_validation Settings
lunarg_parameter_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
lunarg_parameter_validation.report_flags = error,warn,perf
lunarg_parameter_validation.log_filename = stdout

# VK_LAYER_LUNARG_swapchain Settings
lunarg_swapchain.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
lunarg_swapchain.report_flags = error,warn,perf
lunarg_swapchain.log_filename = stdout

# VK_LAYER_GOOGLE_threading Settings
google_threading.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG
google_threading.report_flags = error,warn,perf
google_threading.log_filename = stdout

