# 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_DEBUG_OUTPUT [Windows only] - Log a txt message using the Windows
#       OutputDebugString function -- messages will show up in 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.
#
#
#
# Example of actual settings for each layer:
# ==========================================
#

# 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

