# Copyright (c) 2020-2026 Valve Corporation # Copyright (c) 2020-2026 LunarG, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # This code was generated by Vulkan Configurator 3.5.0 # LunarG API dump layer # ========================================== # VK_LAYER_LUNARG_api_dump - 1.4.350 (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # For more information about the layer: https://vulkan.lunarg.com/doc/sdk/latest/windows/api_dump_layer.html # Output Range # ------------------------------------------ # output_range (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Comma separated list of frames to output or a range of frames with a start, # count, and optional interval separated by a dash. A count of 0 will output # every frame after the start of the range. Example: "5-8-2" will output frame # 5, continue until frame 13, dumping every other frame. Example: "3,8-2" will # output frames 3, 8, and 9. lunarg_api_dump.output_range = 0-0 # Output Format # ------------------------------------------ # output_format (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies the format used for output; can be HTML, JSON, or Text (default -- # outputs plain text) # This setting has sub-settings: # - lunarg_api_dump.pre_dump = false lunarg_api_dump.output_format = text # Pre-dump the parameters. # ------------------------------------------ # pre_dump (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Setting this to true causes parameters to calls be logged before the function # as well as after the function. # This setting requires ALL of the following values: # - lunarg_api_dump.output_format = text lunarg_api_dump.pre_dump = false # Output to File # ------------------------------------------ # file (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Setting this to true indicates that output should be written to file instead # of stdout # This setting has sub-settings: # - lunarg_api_dump.log_filename = stdout lunarg_api_dump.file = false # Log Filename # ------------------------------------------ # log_filename (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies the file to dump to when output files are enabled # This setting requires ALL of the following values: # - lunarg_api_dump.file = true # lunarg_api_dump.log_filename = stdout (Commented out as the set of dependences is not satisfied) # Log Flush After Write # ------------------------------------------ # flush (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Setting this to true causes IO to be flushed after each API call that is # written lunarg_api_dump.flush = true # Name Size # ------------------------------------------ # name_size (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # The number of characters the name of a variable should consume, assuming more # are not required lunarg_api_dump.name_size = 32 # Show Types # ------------------------------------------ # show_types (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Dump types in addition to values # This setting has sub-settings: # - lunarg_api_dump.type_size = 0 lunarg_api_dump.show_types = true # Type Size # ------------------------------------------ # type_size (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # The number of characters the name of a type should consume, assuming more are # not required # This setting requires ALL of the following values: # - lunarg_api_dump.show_types = true lunarg_api_dump.type_size = 0 # Show Timestamp # ------------------------------------------ # timestamp (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Show the timestamp of function calls since start in microseconds lunarg_api_dump.timestamp = false # Show Shader # ------------------------------------------ # show_shader (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Dump the shader binary code in pCode as an hex array which can be viewed in # https://www.khronos.org/spir/visualizer/ lunarg_api_dump.show_shader = false # Show Parameter Details # ------------------------------------------ # detailed (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Dump parameter details in addition to API calls lunarg_api_dump.detailed = true # Hide Addresses # ------------------------------------------ # no_addr (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Dump "address" in place of hex addresses lunarg_api_dump.no_addr = false # Use Spaces # ------------------------------------------ # use_spaces (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Setting this to true causes all tab characters to be replaced with spaces # This setting has sub-settings: # - lunarg_api_dump.indent_size = 4 lunarg_api_dump.use_spaces = true # Indent Size # ------------------------------------------ # indent_size (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies the number of spaces that a tab is equal to # This setting requires ALL of the following values: # - lunarg_api_dump.use_spaces = true lunarg_api_dump.indent_size = 4 # Show Thread and Frame # ------------------------------------------ # show_thread_and_frame (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Show the thread and frame of each function called lunarg_api_dump.show_thread_and_frame = true # Crash Diagnostic Layer is a crash/hang debugging tool that helps determines GPU progress in a Vulkan application. # ========================================== # VK_LAYER_LUNARG_crash_diagnostic - 1.4.350 (BETA) (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # For more information about the layer: https://vulkan.lunarg.com/doc/sdk/latest/windows/crash_diagnostic_layer.html # Synchronize commands # ------------------------------------------ # sync_after_commands (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Add pipeline barriers after instrumented commands to help identify whether a # Vulkan crash is due to a synchronization issue. # VK_KHR_dynamic_rendering usage is required for this feature otherwise Validation layer errors will be generated. lunarg_crash_diagnostic.sync_after_commands = false # Add markers on each Vulkan command # ------------------------------------------ # instrument_all_commands (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Include completion markers around every vulkan command # This may allow more accuratute fault locations at the expense of larger command buffers and reduced performance lunarg_crash_diagnostic.instrument_all_commands = false # Output Path # ------------------------------------------ # output_path (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # The directory where dump files and shader binaries are written. lunarg_crash_diagnostic.output_path = # Watchdog Timer # ------------------------------------------ # trigger_watchdog_timeout (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # If the application fails to submit new commands within a set time, a crash # dump will be created as if the a lost device error was encountered. # This setting has sub-settings: # - lunarg_crash_diagnostic.watchdog_timeout_ms = 30000 lunarg_crash_diagnostic.trigger_watchdog_timeout = true # Watchdog Timeout (ms) # ------------------------------------------ # watchdog_timeout_ms (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Time in milliseconds the application has to submit a new command before # creating a crash dump. # This setting requires ALL of the following values: # - lunarg_crash_diagnostic.trigger_watchdog_timeout = true lunarg_crash_diagnostic.watchdog_timeout_ms = 30000 # Dump semaphores # ------------------------------------------ # track_semaphores (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Include semaphore state reporting in runtime logging and crash dump files lunarg_crash_diagnostic.track_semaphores = false # Dump queue submissions # ------------------------------------------ # dump_queue_submits (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Control which queue submissions are included in the dump. lunarg_crash_diagnostic.dump_queue_submits = running # Dump command buffers # ------------------------------------------ # dump_command_buffers (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Control which command buffers are included in the dump. lunarg_crash_diagnostic.dump_command_buffers = running # Dump commands # ------------------------------------------ # dump_commands (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Control which commands are included in the dump. lunarg_crash_diagnostic.dump_commands = running # Dump shaders # ------------------------------------------ # dump_shaders (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Control of shader dumping. lunarg_crash_diagnostic.dump_shaders = off # Log Filename # ------------------------------------------ # log_file (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # none = no logging, stderr or stdout = to the console, otherwise an absolute or # relative path. lunarg_crash_diagnostic.log_file = stderr # Log main submission and synchronization Vulkan commands # ------------------------------------------ # trace_on (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Add Vulkan API calls intercepted by the layer will be logged to the console. # This includes: vkDeviceWaitIdle, vkQueueWaitIdle, vkQueuePresentKHR, vkWaitForFences, vkGetFenceStatus, vkAcquireNextImageKHR, vkCreateCommandPool, vkDestroyCommandPool, vkResetCommandPool, vkAllocateCommandBuffers, vkFreeCommandBuffers, vkQueueSubmit, vkQueueSubmit2, vkQueueSubmit2KHR and vkQueueBindSparse lunarg_crash_diagnostic.trace_on = false # Log Vulkan commands that use semaphores # ------------------------------------------ # trace_all_semaphores (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Add logging messages about every vulkan command that uses semaphores # This setting requires ALL of the following values: # - lunarg_crash_diagnostic.track_semaphores = true # lunarg_crash_diagnostic.trace_all_semaphores = false (Commented out as the set of dependences is not satisfied) # Message Severity # ------------------------------------------ # message_severity (WINDOWS_X86, WINDOWS_ARM, LINUX, ANDROID) # Comma-delineated list of options specifying the types of log messages to be # reported. # This setting can list multiple values using the "," (comma) separator. lunarg_crash_diagnostic.message_severity = error # GFXReconstruct Capture Layer Version 1.0.5 # ========================================== # VK_LAYER_LUNARG_gfxreconstruct - 1.4.350 (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # For more information about the layer: https://vulkan.lunarg.com/doc/sdk/latest/windows/capture_tools.html # Hotkey Capture Trigger # ------------------------------------------ # capture_trigger (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specify a hotkey (any one of F1-F12, TAB, CONTROL) that will be used to # start/stop capture. Example: F3 will set the capture trigger to F3 hotkey. One # capture file will be generated for each pair of start/stop hotkey presses. # Default is: Empty string (hotkey capture trigger is disabled). lunarg_gfxreconstruct.capture_trigger = # Hotkey Capture Frame Limit # ------------------------------------------ # capture_trigger_frames (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specify a limit on the number of frames to be captured via hotkey. Example: 1 # will capture exactly one frame when the trigger key is pressed. Default is: # Empty string (no limit) lunarg_gfxreconstruct.capture_trigger_frames = # Capture Specific Frames # ------------------------------------------ # capture_frames (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specify one or more comma-separated frame ranges to capture. Each range will # be written to its own file. A frame range can be specified as a single value, # to specify a single frame to capture, or as two hyphenated values, to specify # the first and last frame to capture. Frame ranges should be specified in # ascending order and cannot overlap. Note that frame numbering is 1-based (i.e. # the first frame is frame 1). Example: 200,301-305 will create two capture # files, one containing a single frame and one containing five frames. Default # is: Empty string (all frames are captured). lunarg_gfxreconstruct.capture_frames = # Capture Specific process # ------------------------------------------ # capture_process_name (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specify one process name to capture. lunarg_gfxreconstruct.capture_process_name = # Capture File Name # ------------------------------------------ # capture_file (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Path to use when creating the capture file. Default is: gfxrecon_capture.gfxr # This setting has sub-settings: # - lunarg_gfxreconstruct.capture_file_timestamp = true # - lunarg_gfxreconstruct.capture_file_flush = false lunarg_gfxreconstruct.capture_file = gfxrecon_capture.gfxr # Capture File Name with Timestamp # ------------------------------------------ # capture_file_timestamp (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Add a timestamp (yyyymmddThhmmss) postfix to the capture file name. lunarg_gfxreconstruct.capture_file_timestamp = true # Capture File Flush After Write # ------------------------------------------ # capture_file_flush (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Flush output stream after each packet is written to the capture file. Default # is: false. lunarg_gfxreconstruct.capture_file_flush = false # Compression Format # ------------------------------------------ # capture_compression_type (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Compression format to use with the capture file. Valid values are: LZ4, ZLIB, # ZSTD, and NONE. Default is: LZ4 lunarg_gfxreconstruct.capture_compression_type = LZ4 # Capture Environment # ------------------------------------------ # capture_environment (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # List of environment variables to capture. # This setting can list multiple values using the "," (comma) separator. lunarg_gfxreconstruct.capture_environment = # Memory Tracking Mode # ------------------------------------------ # memory_tracking_mode (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies the memory tracking mode to use for detecting modifications to # mapped Vulkan memory objects. Available options are: page_guard, assisted, and # unassisted. # This setting has sub-settings: # - lunarg_gfxreconstruct.page_guard_copy_on_map = true # - lunarg_gfxreconstruct.page_guard_separate_read = true # - lunarg_gfxreconstruct.page_guard_external_memory = false # - lunarg_gfxreconstruct.page_guard_persistent_memory = false # - lunarg_gfxreconstruct.page_guard_align_buffer_sizes = true # - lunarg_gfxreconstruct.page_guard_unblock_sigsegv = false lunarg_gfxreconstruct.memory_tracking_mode = page_guard # Page Guard Copy on Map # ------------------------------------------ # page_guard_copy_on_map (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # When the page_guard memory tracking mode is enabled, copies the content of the # mapped memory to the shadow memory immediately after the memory is mapped. # This setting requires ALL of the following values: # - lunarg_gfxreconstruct.memory_tracking_mode = page_guard lunarg_gfxreconstruct.page_guard_copy_on_map = true # Page Guard Separate Read Tracking # ------------------------------------------ # page_guard_separate_read (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # When the page_guard memory tracking mode is enabled, copies the content of # pages accessed for read from mapped memory to shadow memory on each read. Can # overwrite unprocessed shadow memory content when an application is reading # from and writing to the same page. # This setting requires ALL of the following values: # - lunarg_gfxreconstruct.memory_tracking_mode = page_guard lunarg_gfxreconstruct.page_guard_separate_read = true # Page Guard External Memory # ------------------------------------------ # page_guard_external_memory (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # When the page_guard memory tracking mode is enabled, use the # VK_EXT_external_memory_host extension to eliminate the need for shadow memory # allocations. For each memory allocation from a host visible memory type, the # capture layer will create an allocation from system memory, which it can # monitor for write access, and provide that allocation to vkAllocateMemory as # external memory. Only available on Windows. # This setting requires ALL of the following values: # - lunarg_gfxreconstruct.memory_tracking_mode = page_guard lunarg_gfxreconstruct.page_guard_external_memory = false # Page Guard Persistent Memory # ------------------------------------------ # page_guard_persistent_memory (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # When the page_guard memory tracking mode is enabled, this option changes the # way that the shadow memory used to detect modifications to mapped memory is # allocated. The default behavior is to allocate and copy the mapped memory # range on map and free the allocation on unmap. When this option is enabled, an # allocation with a size equal to that of the object being mapped is made once # on the first map and is not freed until the object is destroyed. This option # is intended to be used with applications that frequently map and unmap large # memory ranges, to avoid frequent allocation and copy operations that can have # a negative impact on performance. This option is ignored when # GFXRECON_PAGE_GUARD_EXTERNAL_MEMORY is enabled. # This setting requires ALL of the following values: # - lunarg_gfxreconstruct.memory_tracking_mode = page_guard # - lunarg_gfxreconstruct.page_guard_external_memory = false lunarg_gfxreconstruct.page_guard_persistent_memory = false # Page Guard Align Buffer Sizes # ------------------------------------------ # page_guard_align_buffer_sizes (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # When the page_guard memory tracking mode is enabled, this option overrides the # Vulkan API calls that report buffer memory properties to report that buffer # sizes and alignments must be a multiple of the system page size. This option # is intended to be used with applications that perform CPU writes and GPU # writes/copies to different buffers that are bound to the same page of mapped # memory, which may result in data being lost when copying pages from the # page_guard shadow allocation to the real allocation. This data loss can result # in visible corruption during capture. Forcing buffer sizes and alignments to a # multiple of the system page size prevents multiple buffers from being bound to # the same page, avoiding data loss from simultaneous CPU writes to the shadow # allocation and GPU writes to the real allocation for different buffers bound # to the same page. This option is only available for the Vulkan API. # This setting requires ALL of the following values: # - lunarg_gfxreconstruct.memory_tracking_mode = page_guard # - lunarg_gfxreconstruct.page_guard_external_memory = false lunarg_gfxreconstruct.page_guard_align_buffer_sizes = true # Page Guard unblock SIGSEGV from thread's signal mask # ------------------------------------------ # page_guard_unblock_sigsegv (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # When the page_guard memory tracking mode is enabled, this option overrides # enables SIGSEGV in thread's signal mask in the case that it has been disabled. # This setting requires ALL of the following values: # - lunarg_gfxreconstruct.memory_tracking_mode = page_guard # - lunarg_gfxreconstruct.page_guard_external_memory = false lunarg_gfxreconstruct.page_guard_unblock_sigsegv = false # Level # ------------------------------------------ # log_level (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specify the minimum severity level of messages to log. Options are: debug, # info, warning, error, and fatal. The specified level and all higher levels # will be enabled for logging. For example, choosing the warning level will also # enable the error and fatal levels. lunarg_gfxreconstruct.log_level = info # Log Name and Line Number # ------------------------------------------ # log_detailed (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Include name and line number from the file responsible. lunarg_gfxreconstruct.log_detailed = false # Apply additional indentation # ------------------------------------------ # log_allow_indents (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Apply additional indentation formatting to log messages. lunarg_gfxreconstruct.log_allow_indents = false # Log Output to Console / stdout # ------------------------------------------ # log_output_to_console (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Log messages will be written to stdout. lunarg_gfxreconstruct.log_output_to_console = true # Trigger Debug Break on Error # ------------------------------------------ # log_break_on_error (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Trigger a debug break when logging an error. lunarg_gfxreconstruct.log_break_on_error = false # Log Output to Debug Console # ------------------------------------------ # log_output_to_os_debug_string (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Windows only option. Log messages will be written to the Debug Console with # OutputDebugStringA lunarg_gfxreconstruct.log_output_to_os_debug_string = false # Log File # ------------------------------------------ # log_file (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # When set, log messages will be written to a file at the specified path. # Default is: Empty string (file logging disabled). # This setting has sub-settings: # - lunarg_gfxreconstruct.log_file_flush_after_write = false # - lunarg_gfxreconstruct.log_file_keep_open = true # - lunarg_gfxreconstruct.log_file_create_new = true lunarg_gfxreconstruct.log_file = # Log File Flush After Write # ------------------------------------------ # log_file_flush_after_write (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Flush the log file to disk after each write when true. lunarg_gfxreconstruct.log_file_flush_after_write = false # Log File Keep Open # ------------------------------------------ # log_file_keep_open (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Keep the log file open between log messages when true, or close and reopen the # log file for each message when false. lunarg_gfxreconstruct.log_file_keep_open = true # Log File Overwrite # ------------------------------------------ # log_file_create_new (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies that log file initialization should overwrite an existing file when # true, or append to an existing file when false. lunarg_gfxreconstruct.log_file_create_new = true # LunarG image capture layer # ========================================== # VK_LAYER_LUNARG_screenshot - 1.4.350 (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # For more information about the layer: https://vulkan.lunarg.com/doc/sdk/latest/windows/screenshot_layer.html # Frames # ------------------------------------------ # frames (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies list of frames to output as screenshots. It is specified as a # comma-separated list of frames or a range of frames with a start, count, and # optional interval separated by a dash. Setting the variable to "all" will # output every frame. Example: "5-8-2" will output frame 5, continue until frame # 13, dumping every other frame. Example: "3,8-2" will output frames 3, 8, and # 9. If it is not set or it set to an empty string, no screenshots are created. lunarg_screenshot.frames = # Directory # ------------------------------------------ # dir (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies the directory in which to create the screenshot files. If it is not # set or is set to an empty string, the files will be created in the current # working directory. lunarg_screenshot.dir = # Format # ------------------------------------------ # format (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specify a color space for the output. If it is not set, set to null, or set to # USE_SWAPCHAIN_COLORSPACE the format will be set to use the same color space as # the swapchain object. lunarg_screenshot.format = USE_SWAPCHAIN_COLORSPACE # Khronos Validation Layer # ========================================== # VK_LAYER_KHRONOS_validation - 1.4.350 (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # The main, comprehensive Khronos validation layer. # Vulkan is an Explicit API, enabling direct control over how GPUs actually # work. By design, minimal error checking is done inside a Vulkan driver. # Applications have full control and responsibility for correct operation. Any # errors in how Vulkan is used can result in a crash. # For more information about the layer: https://vulkan.lunarg.com/doc/sdk/latest/windows/khronos_validation_layer.html # Fine Grained Locking # ------------------------------------------ # fine_grained_locking (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable fine grained locking for Core Validation, which should improve # performance in multithreaded applications. This setting allows the # optimization to be disabled for debugging. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/fine_grained_locking_usage.md khronos_validation.fine_grained_locking = true # Core # ------------------------------------------ # validate_core (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/core_checks.md # This setting has sub-settings: # - khronos_validation.check_image_layout = true # - khronos_validation.check_command_buffer = true # - khronos_validation.check_object_in_use = true # - khronos_validation.check_query = true # - khronos_validation.check_shaders = true khronos_validation.validate_core = true # Image Layout # ------------------------------------------ # check_image_layout (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # This setting requires ALL of the following values: # - khronos_validation.validate_core = true khronos_validation.check_image_layout = true # Command Buffer State # ------------------------------------------ # check_command_buffer (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Check that all Vulkan objects used by a command buffer have not been # destroyed. These checks can be CPU intensive for some applications. # This setting requires ALL of the following values: # - khronos_validation.validate_core = true khronos_validation.check_command_buffer = true # Object in Use # ------------------------------------------ # check_object_in_use (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Check that Vulkan objects are not in use by a command buffer when they are # destroyed. # This setting requires ALL of the following values: # - khronos_validation.validate_core = true khronos_validation.check_object_in_use = true # Query # ------------------------------------------ # check_query (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Checks for commands that use VkQueryPool objects. # This setting requires ALL of the following values: # - khronos_validation.validate_core = true khronos_validation.check_query = true # Shader # ------------------------------------------ # check_shaders (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. (Same effect using VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT) # This setting has sub-settings: # - khronos_validation.check_shaders_caching = true # - khronos_validation.debug_disable_spirv_val = false # This setting requires ALL of the following values: # - khronos_validation.validate_core = true khronos_validation.check_shaders = true # Caching # ------------------------------------------ # check_shaders_caching (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # This setting requires ALL of the following values: # - khronos_validation.validate_core = true # - khronos_validation.check_shaders = true khronos_validation.check_shaders_caching = true # Disable spirv-val # ------------------------------------------ # debug_disable_spirv_val (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Allows normal shader validation to run, but removes just spirv-val for # performance reasons khronos_validation.debug_disable_spirv_val = false # Handle Wrapping # ------------------------------------------ # unique_handles (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Handle wrapping checks. Disable this feature if you are experiencing crashes # when creating new extensions or developing new Vulkan objects/structures. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/handle_wrapping.md khronos_validation.unique_handles = true # Object Lifetime # ------------------------------------------ # object_lifetime (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Object tracking checks. This may not always be necessary late in a development # cycle. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/object_lifetimes.md khronos_validation.object_lifetime = true # Stateless Parameter # ------------------------------------------ # stateless_param (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Stateless parameter checks. This may not always be necessary late in a # development cycle. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/stateless_validation.md khronos_validation.stateless_param = true # Legacy Detection # ------------------------------------------ # legacy_detection (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Give warnings when using legacy parts of the API. khronos_validation.legacy_detection = false # Thread Safety # ------------------------------------------ # thread_safety (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/thread_safety.md khronos_validation.thread_safety = true # Synchronization # ------------------------------------------ # validate_sync (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Check for resource access conflicts caused by missing or incorrectly used # synchronization operations. # For more information about the feature: https://vulkan.lunarg.com/doc/sdk/1.4.350.0/windows/synchronization_usage.html # This setting has sub-settings: # - khronos_validation.syncval_submit_time_validation = true # - khronos_validation.syncval_shader_accesses_heuristic = false # - khronos_validation.syncval_reporting (Setting Group) khronos_validation.validate_sync = false # Submit time validation # ------------------------------------------ # syncval_submit_time_validation (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # This setting requires ALL of the following values: # - khronos_validation.validate_sync = true # khronos_validation.syncval_submit_time_validation = true (Commented out as the set of dependences is not satisfied) # Shader accesses heuristic # ------------------------------------------ # syncval_shader_accesses_heuristic (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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, does not support VK_EXT_descriptor_buffer. # This setting requires ALL of the following values: # - khronos_validation.validate_sync = true # khronos_validation.syncval_shader_accesses_heuristic = false (Commented out as the set of dependences is not satisfied) # Extra properties # ------------------------------------------ # syncval_message_extra_properties (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Append a section of key-value properties to the error message. Useful for # filtering errors. # This setting requires ALL of the following values: # - khronos_validation.validate_sync = true # khronos_validation.syncval_message_extra_properties = false (Commented out as the set of dependences is not satisfied) # Debug Printf only preset # ------------------------------------------ # printf_only_preset (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # A single, quick setting to turn on only DebugPrintf and turn off everything # else khronos_validation.printf_only_preset = false # Debug Printf # ------------------------------------------ # printf_enable (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable DebugPrintf and will print anything use NonSemantic.DebugPrintf in # their SPIR-V # For more information about the feature: https://vulkan.lunarg.com/doc/sdk/1.4.350.0/windows/debug_printf.html # This setting has sub-settings: # - khronos_validation.printf_to_stdout = true # - khronos_validation.printf_verbose = false # - khronos_validation.printf_buffer_size = 1024 khronos_validation.printf_enable = false # Redirect Printf messages to stdout # ------------------------------------------ # printf_to_stdout (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable redirection of Debug Printf messages from the debug callback to stdout # This setting requires ALL of the following values: # - khronos_validation.printf_enable = true # khronos_validation.printf_to_stdout = true (Commented out as the set of dependences is not satisfied) # Printf verbose # ------------------------------------------ # printf_verbose (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Will print out handles, instruction location, position in command buffer, and # more # This setting requires ALL of the following values: # - khronos_validation.printf_enable = true # khronos_validation.printf_verbose = false (Commented out as the set of dependences is not satisfied) # Printf buffer size # ------------------------------------------ # printf_buffer_size (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Set the size in bytes of the buffer per VkCommandBuffer to hold the messages # (Each message is about 50 bytes) # This setting requires ALL of the following values: # - khronos_validation.printf_enable = true # khronos_validation.printf_buffer_size = 1024 (Commented out as the set of dependences is not satisfied) # Debug Descriptor # ------------------------------------------ # debug_descriptor (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # [Used for VK_EXT_descriptor_buffer and VK_EXT_descriptor_heap] Enable # DebugDescriptor and will print anything that uses NonSemantic.DebugDescriptor # in their SPIR-V # This setting has sub-settings: # - khronos_validation.debug_descriptor_to_stdout = true khronos_validation.debug_descriptor = false # Redirect DebugDescriptor messages to stdout # ------------------------------------------ # debug_descriptor_to_stdout (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable redirection of Debug Descriptor messages from the debug callback to # stdout # This setting requires ALL of the following values: # - khronos_validation.debug_descriptor = true # khronos_validation.debug_descriptor_to_stdout = true (Commented out as the set of dependences is not satisfied) # GPU Assisted Validation # ------------------------------------------ # gpuav_enable (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable validation that cannot be done the CPU and needs hooks into the GPU # execution # For more information about the feature: https://vulkan.lunarg.com/doc/sdk/1.4.350.0/windows/gpu_validation.html # This setting has sub-settings: # - khronos_validation.gpuav_safe_mode = false # - khronos_validation.gpuav_force_on_robustness = false # - khronos_validation.gpuav_shader_instrumentation = true # - khronos_validation.gpuav_buffers_validation = true # - khronos_validation.gpuav_ray_tracing_buffers_consistency = false # - khronos_validation.gpuav_debug_settings (Setting Group) khronos_validation.gpuav_enable = false # Safe Mode # ------------------------------------------ # gpuav_safe_mode (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_safe_mode = false (Commented out as the set of dependences is not satisfied) # Force on robustness features # ------------------------------------------ # gpuav_force_on_robustness (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_force_on_robustness = false (Commented out as the set of dependences is not satisfied) # Shader instrumentation # ------------------------------------------ # gpuav_shader_instrumentation (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Instrument shaders to validate descriptors, descriptor indexing, buffer device # addresses and ray queries. Warning: will considerably slow down shader # executions. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_shader_instrumentation.md # This setting has sub-settings: # - khronos_validation.gpuav_select_instrumented_shaders = false # - khronos_validation.gpuav_descriptor_checks = true # - khronos_validation.gpuav_post_process_descriptor_indexing = true # - khronos_validation.gpuav_buffer_address_oob = true # - khronos_validation.gpuav_mesh_shading = true # - khronos_validation.gpuav_validate_ray_query = true # - khronos_validation.gpuav_validate_trace_ray = true # - khronos_validation.gpuav_vertex_attribute_fetch_oob = true # - khronos_validation.gpuav_shader_sanitizer = true # - khronos_validation.gpuav_shared_memory_data_race = true # - khronos_validation.gpuav_max_indices_count = 8192 # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_shader_instrumentation = true (Commented out as the set of dependences is not satisfied) # Enable instrumenting shaders selectively # ------------------------------------------ # gpuav_select_instrumented_shaders (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_selective_shader.md # This setting has sub-settings: # - khronos_validation.gpuav_shaders_to_instrument = # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_select_instrumented_shaders = false (Commented out as the set of dependences is not satisfied) # Shader/pipeline name regexes # ------------------------------------------ # gpuav_shaders_to_instrument (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # 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. # This setting can list multiple values using the "," (comma) separator. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # - khronos_validation.gpuav_select_instrumented_shaders = true # khronos_validation.gpuav_shaders_to_instrument = (Commented out as the set of dependences is not satisfied) # Descriptors indexing # ------------------------------------------ # gpuav_descriptor_checks (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable descriptors and buffer out of bounds validation when using descriptor # indexing # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_descriptor_indexing.md # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_descriptor_checks = true (Commented out as the set of dependences is not satisfied) # Post process descriptor indexing # ------------------------------------------ # gpuav_post_process_descriptor_indexing (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Track which descriptor indexes were used in shader to run normal validation # afterwards # For more information about the feature: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_post_process.md # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_post_process_descriptor_indexing = true (Commented out as the set of dependences is not satisfied) # Out of bounds buffer device addresses # ------------------------------------------ # gpuav_buffer_address_oob (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Check for invalid access using buffer device address # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_buffer_address_oob = true (Commented out as the set of dependences is not satisfied) # Mesh Shading SPIR-V instructions # ------------------------------------------ # gpuav_mesh_shading (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable shader instrumentation on VK_EXT_mesh_shader # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_mesh_shading = true (Commented out as the set of dependences is not satisfied) # RayQuery SPIR-V instructions # ------------------------------------------ # gpuav_validate_ray_query (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable shader instrumentation on OpRayQueryInitializeKHR # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_validate_ray_query = true (Commented out as the set of dependences is not satisfied) # TraceRay SPIR-V instructions # ------------------------------------------ # gpuav_validate_trace_ray (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable shader instrumentation on OpTraceRayKHR, OpHitObject* # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_validate_trace_ray = true (Commented out as the set of dependences is not satisfied) # Out of bounds vertex attribute fetching # ------------------------------------------ # gpuav_vertex_attribute_fetch_oob (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate that no vertex attribute fetching is out of bonds # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_vertex_attribute_fetch_oob = true (Commented out as the set of dependences is not satisfied) # Shader Sanitizer # ------------------------------------------ # gpuav_shader_sanitizer (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Things invalid to do in SPIR-V but don't have a dedicated check (example: # dividing an int by zero, reaching OpUnreachable, invalid casting, # overflow/undeflow). When in safe mode, will modify the invalid usage. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_shader_sanitizer = true (Commented out as the set of dependences is not satisfied) # Shared Memory Data Race Detection # ------------------------------------------ # gpuav_shared_memory_data_race (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Detects data races on shared memory (Compute shaders only). Limitations: This # does not handle mixing atomics and non-atomics on the same locations without a # barrier in between, this could lead to false positives. This assumes barrier() # is used for all shared memory synchronization. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_shader_instrumentation = true # khronos_validation.gpuav_shared_memory_data_race = true (Commented out as the set of dependences is not satisfied) # Maximum Indices # ------------------------------------------ # gpuav_max_indices_count (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Number of indices held in the buffer used to index commands and validation # resources (Max number of draws/dispatches in a command buffer that can be # tracked). Can be lowered to save memory. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_max_indices_count = 8192 (Commented out as the set of dependences is not satisfied) # Buffer content validation # ------------------------------------------ # gpuav_buffers_validation (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate buffers containing parameters used in indirect Vulkan commands, or # used in copy commands # This setting has sub-settings: # - khronos_validation.gpuav_indirect_draws_buffers = true # - khronos_validation.gpuav_indirect_dispatches_buffers = true # - khronos_validation.gpuav_indirect_trace_rays_buffers = true # - khronos_validation.gpuav_buffer_copies = true # - khronos_validation.gpuav_copy_memory_indirect = true # - khronos_validation.gpuav_index_buffers = true # - khronos_validation.gpuav_acceleration_structures_builds = true # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_buffers_validation = true (Commented out as the set of dependences is not satisfied) # Indirect draws parameters # ------------------------------------------ # gpuav_indirect_draws_buffers (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate buffers containing draw parameters used in indirect draw commands. # Includes vkCmdDrawMeshTasks* calls as well # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_indirect_draws_buffers = true (Commented out as the set of dependences is not satisfied) # Indirect dispatches parameters # ------------------------------------------ # gpuav_indirect_dispatches_buffers (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate buffers containing dispatch parameters used in indirect dispatch # commands # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_indirect_dispatches_buffers = true (Commented out as the set of dependences is not satisfied) # Indirect trace rays parameters # ------------------------------------------ # gpuav_indirect_trace_rays_buffers (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate buffers containing ray tracing parameters used in indirect ray # tracing commands # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_indirect_trace_rays_buffers = true (Commented out as the set of dependences is not satisfied) # Buffer copies # ------------------------------------------ # gpuav_buffer_copies (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate copies involving a VkBuffer. Right now only validates copy buffer to # image. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_buffer_copies = true (Commented out as the set of dependences is not satisfied) # VK_KHR_copy_memory_indirect # ------------------------------------------ # gpuav_copy_memory_indirect (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate VK_KHR_copy_memory_indirect. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_copy_memory_indirect = true (Commented out as the set of dependences is not satisfied) # Index buffers # ------------------------------------------ # gpuav_index_buffers (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate that indexed draws do not fetch indices outside of the bounds of the # index buffer. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_index_buffers = true (Commented out as the set of dependences is not satisfied) # Acceleration structures builds # ------------------------------------------ # gpuav_acceleration_structures_builds (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate acceleration structures references in TLAS build commands. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_acceleration_structures_builds = true (Commented out as the set of dependences is not satisfied) # Ray tracing buffers consistency # ------------------------------------------ # gpuav_ray_tracing_buffers_consistency (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Validate that between a BLAS build and its update, triangle geometries using # index buffer keep its content identical (VUID 03768), and that active/inactive # primitives do not change this status (VUIDs 03663 and 03664). Warning: a # record of vertex/index buffers will be maintained in device local memory, so # validation can be GPU memory heavy. # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # - khronos_validation.gpuav_buffers_validation = true # khronos_validation.gpuav_ray_tracing_buffers_consistency = false (Commented out as the set of dependences is not satisfied) # Disable all of GPU-AV # ------------------------------------------ # gpuav_debug_disable_all (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Acts as a VkValidationFeatureDisableEXT to override the # VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT passed by the user # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_debug_disable_all = false (Commented out as the set of dependences is not satisfied) # Validate instrumented shaders # ------------------------------------------ # gpuav_debug_validate_instrumented_shaders (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Run spirv-val after doing shader instrumentation # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_debug_validate_instrumented_shaders = false (Commented out as the set of dependences is not satisfied) # Dump instrumented shaders # ------------------------------------------ # gpuav_debug_dump_instrumented_shaders (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Will dump the instrumented shaders (before and after) to working directory # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_debug_dump_instrumented_shaders = false (Commented out as the set of dependences is not satisfied) # Limit how many time a pass can instrument the SPIR-V # ------------------------------------------ # gpuav_debug_max_instrumentations_count (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Zero is same as unlimited # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_debug_max_instrumentations_count = 0 (Commented out as the set of dependences is not satisfied) # Print SPIR-V instrumentation info # ------------------------------------------ # gpuav_debug_print_instrumentation_info (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Prints verbose information about the instrumentation of the SPIR-V # This setting requires ALL of the following values: # - khronos_validation.gpuav_enable = true # khronos_validation.gpuav_debug_print_instrumentation_info = false (Commented out as the set of dependences is not satisfied) # Best Practices # ------------------------------------------ # validate_best_practices (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Outputs warnings related to common misuse of the API, but which are not # explicitly prohibited by the specification. # For more information about the feature: https://vulkan.lunarg.com/doc/sdk/1.4.350.0/windows/best_practices.html # This setting has sub-settings: # - khronos_validation.validate_best_practices_arm = false # - khronos_validation.validate_best_practices_amd = false # - khronos_validation.validate_best_practices_img = false # - khronos_validation.validate_best_practices_nvidia = false khronos_validation.validate_best_practices = false # ARM-specific best practices # ------------------------------------------ # validate_best_practices_arm (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Outputs warnings for spec-conforming but non-ideal code on ARM GPUs. # This setting requires ALL of the following values: # - khronos_validation.validate_best_practices = true # khronos_validation.validate_best_practices_arm = false (Commented out as the set of dependences is not satisfied) # AMD-specific best practices # ------------------------------------------ # validate_best_practices_amd (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Outputs warnings for spec-conforming but non-ideal code on AMD GPUs. # This setting requires ALL of the following values: # - khronos_validation.validate_best_practices = true # khronos_validation.validate_best_practices_amd = false (Commented out as the set of dependences is not satisfied) # IMG-specific best practices # ------------------------------------------ # validate_best_practices_img (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Outputs warnings for spec-conforming but non-ideal code on Imagination GPUs. # This setting requires ALL of the following values: # - khronos_validation.validate_best_practices = true # khronos_validation.validate_best_practices_img = false (Commented out as the set of dependences is not satisfied) # NVIDIA-specific best practices # ------------------------------------------ # validate_best_practices_nvidia (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Outputs warnings for spec-conforming but non-ideal code on NVIDIA GPUs. # This setting requires ALL of the following values: # - khronos_validation.validate_best_practices = true # khronos_validation.validate_best_practices_nvidia = false (Commented out as the set of dependences is not satisfied) # Dump Descriptors (VK_EXT_descriptor_buffer and VK_EXT_descriptor_heap) # ------------------------------------------ # gpu_dump_descriptors (ALPHA) (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Dump all the information at every draw/dispatch when recording khronos_validation.gpu_dump_descriptors = false # Dump VK_KHR_copy_memory_indirect # ------------------------------------------ # gpu_dump_copy_memory_indirect (ALPHA) (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Dump information at each copy command when recording khronos_validation.gpu_dump_copy_memory_indirect = false # Dump VK_EXT_device_generated_commands # ------------------------------------------ # gpu_dump_device_generated_commands (ALPHA) (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Dump information at each vkCmdExecuteGeneratedCommands when recording khronos_validation.gpu_dump_device_generated_commands = false # Redirect all GPU Dump to stdout # ------------------------------------------ # gpu_dump_to_stdout (ALPHA) (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Instead of using the debug callback with information severity, redirect to # stdout instead. khronos_validation.gpu_dump_to_stdout = false # Force Device Copy # ------------------------------------------ # gpu_dump_device_copy (ALPHA) (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # [Very experimental] For non-host visible memory, try and do a device copy # during command recording to view the data inside a buffer. khronos_validation.gpu_dump_device_copy = false # Debug Action # ------------------------------------------ # debug_action (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies what action is to be taken when a layer reports information # This setting can list multiple values using the "," (comma) separator. khronos_validation.debug_action = VK_DBG_LAYER_ACTION_LOG_MSG,VK_DBG_LAYER_ACTION_DEBUG_OUTPUT # Log Filename # ------------------------------------------ # log_filename (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Specifies the output filename khronos_validation.log_filename = stdout # Message Severity # ------------------------------------------ # report_flags (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Comma-delineated list of options specifying the types of messages to be # reported # This setting can list multiple values using the "," (comma) separator. khronos_validation.report_flags = error # Limit Duplicated Messages # ------------------------------------------ # enable_message_limit (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Enable limiting of duplicate messages. # This setting has sub-settings: # - khronos_validation.duplicate_message_limit = 10 khronos_validation.enable_message_limit = true # Max Duplicated Messages # ------------------------------------------ # duplicate_message_limit (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Maximum number of times any single validation message should be reported. # This setting requires ALL of the following values: # - khronos_validation.enable_message_limit = true khronos_validation.duplicate_message_limit = 10 # Mute Message VUIDs # ------------------------------------------ # message_id_filter (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # List of VUIDs and VUID identifiers which are to be IGNORED by the validation # layer # This setting can list multiple values using the "," (comma) separator. khronos_validation.message_id_filter = # JSON # ------------------------------------------ # message_format_json (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Display Validation as JSON (VkDebugUtilsMessengerCallbackDataEXT::pMessage # will contain JSON) khronos_validation.message_format_json = false # Display Application Name # ------------------------------------------ # message_format_display_application_name (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Useful when running multiple instances to know which instance the message is # from. khronos_validation.message_format_display_application_name = false # Khronos Profiles layer # ========================================== # VK_LAYER_KHRONOS_profiles - 1.4.350 (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # For more information about the layer: https://vulkan.lunarg.com/doc/sdk/latest/windows/profiles_layer.html # Emulate a Vulkan Profile # ------------------------------------------ # profile_emulation (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Emulate a Vulkan Profile on the Developer System # This setting has sub-settings: # - khronos_profiles.profile_dirs = # - khronos_profiles.profile_name = ${VP_DEFAULT} # - khronos_profiles.profile_validation = false khronos_profiles.profile_emulation = true # Loading Directory # ------------------------------------------ # profile_dirs (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Select the location all the profiles. # This setting requires ALL of the following values: # - khronos_profiles.profile_emulation = true khronos_profiles.profile_dirs = # Name # ------------------------------------------ # profile_name (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Name of the profile specified by the profile file to use. # This setting requires ALL of the following values: # - khronos_profiles.profile_emulation = true khronos_profiles.profile_name = ${VP_DEFAULT} # Schema Validation # ------------------------------------------ # profile_validation (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Validate the profile files against the Vulkan SDK profile schema if the file # is found. # This setting requires ALL of the following values: # - khronos_profiles.profile_emulation = true khronos_profiles.profile_validation = false # Simulate Profile Capabilities # ------------------------------------------ # simulate_capabilities (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Control of the simulated capabilities of the Vulkan physical device from the # selected Vulkan Profile. # This setting can list multiple values using the "," (comma) separator. khronos_profiles.simulate_capabilities = SIMULATE_API_VERSION_BIT,SIMULATE_FEATURES_BIT,SIMULATE_PROPERTIES_BIT # Unspecified Features # ------------------------------------------ # default_feature_values (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Feature values when not specified in the select Vulkan profiles. khronos_profiles.default_feature_values = DEFAULT_FEATURE_VALUES_DEVICE # Unknown Features # ------------------------------------------ # unknown_feature_values (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Feature values when unrecongnized by Vulkan profiles. khronos_profiles.unknown_feature_values = UNKNOWN_FEATURE_VALUES_UNCHANGED # Emulate VK_KHR_portability_subset # ------------------------------------------ # emulate_portability (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Emulate the VK_KHR_portability_subset extension on the device. # This setting has sub-settings: # - khronos_profiles.constantAlphaColorBlendFactors = false # - khronos_profiles.events = false # - khronos_profiles.imageViewFormatReinterpretation = false # - khronos_profiles.imageViewFormatSwizzle = false # - khronos_profiles.imageView2DOn3DImage = false # - khronos_profiles.multisampleArrayImage = false # - khronos_profiles.mutableComparisonSamplers = false # - khronos_profiles.pointPolygons = false # - khronos_profiles.samplerMipLodBias = false # - khronos_profiles.separateStencilMaskRef = false # - khronos_profiles.shaderSampleRateInterpolationFunctions = false # - khronos_profiles.tessellationIsolines = false # - khronos_profiles.triangleFans = false # - khronos_profiles.vertexAttributeAccessBeyondStride = false khronos_profiles.emulate_portability = true # constantAlphaColorBlendFactors # ------------------------------------------ # constantAlphaColorBlendFactors (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports constant alpha Blend Factors # used as source or destination color Blending. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.constantAlphaColorBlendFactors = false # events # ------------------------------------------ # events (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports synchronization using Events # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.events = false # imageViewFormatReinterpretation # ------------------------------------------ # imageViewFormatReinterpretation (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports a VkImageView being created # with a texel format containing a different number of components, or a # different number of bits in each component, than the texel format of the # underlying VkImage. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.imageViewFormatReinterpretation = false # imageViewFormatSwizzle # ------------------------------------------ # imageViewFormatSwizzle (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports remapping format components # using VkImageViewCreateInfo::components. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.imageViewFormatSwizzle = false # imageView2DOn3DImage # ------------------------------------------ # imageView2DOn3DImage (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports a VkImage being created with # the VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag set, permitting a 2D or 2D # array image view to be created on a 3D VkImage. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.imageView2DOn3DImage = false # multisampleArrayImage # ------------------------------------------ # multisampleArrayImage (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports a VkImage being created as a 2D # array with multiple samples per texel. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.multisampleArrayImage = false # mutableComparisonSamplers # ------------------------------------------ # mutableComparisonSamplers (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation allows descriptors with comparison # samplers to be updated. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.mutableComparisonSamplers = false # pointPolygons # ------------------------------------------ # pointPolygons (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports Rasterization using a point # Polygon Mode. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.pointPolygons = false # samplerMipLodBias # ------------------------------------------ # samplerMipLodBias (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports setting a mipmap LOD bias value # when creating a sampler. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.samplerMipLodBias = false # separateStencilMaskRef # ------------------------------------------ # separateStencilMaskRef (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports separate front and back Stencil # Test reference values. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.separateStencilMaskRef = false # shaderSampleRateInterpolationFunctions # ------------------------------------------ # shaderSampleRateInterpolationFunctions (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports fragment shaders which use the # InterpolationFunction capability. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.shaderSampleRateInterpolationFunctions = false # tessellationIsolines # ------------------------------------------ # tessellationIsolines (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports isoline output from the # Tessellation stage of a graphics pipeline. This member is only meaningful if # tessellationShader are supported. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.tessellationIsolines = false # triangleFans # ------------------------------------------ # triangleFans (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports Triangle Fans primitive # topology. # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.triangleFans = false # vertexAttributeAccessBeyondStride # ------------------------------------------ # vertexAttributeAccessBeyondStride (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports accessing a vertex input # attribute beyond the stride of the corresponding vertex input binding. # This setting has sub-settings: # - khronos_profiles.minVertexInputBindingStrideAlignment = 4 # This setting requires ALL of the following values: # - khronos_profiles.emulate_portability = true khronos_profiles.vertexAttributeAccessBeyondStride = false # minVertexInputBindingStrideAlignment # ------------------------------------------ # minVertexInputBindingStrideAlignment (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Indicates whether this implementation supports accessing a vertex input # attribute beyond the stride of the corresponding vertex input binding. # This setting requires ALL of the following values: # - khronos_profiles.vertexAttributeAccessBeyondStride = false khronos_profiles.minVertexInputBindingStrideAlignment = 4 # Exclude Device Extensions # ------------------------------------------ # exclude_device_extensions (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Removes the listed device extensions from being reported by the Vulkan # physical device. # This setting can list multiple values using the "," (comma) separator. khronos_profiles.exclude_device_extensions = # Exclude Formats # ------------------------------------------ # exclude_formats (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Removes the format feature flags from being reported by the Vulkan physical # device. # This setting can list multiple values using the "," (comma) separator. khronos_profiles.exclude_formats = # Debug Actions # ------------------------------------------ # debug_actions (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # This indicates what action is to be taken when a layer wants to report # information # This setting can list multiple values using the "," (comma) separator. khronos_profiles.debug_actions = DEBUG_ACTION_STDOUT_BIT # Log Filename # ------------------------------------------ # debug_filename (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Specifies the output filename khronos_profiles.debug_filename = profiles_layer_log.txt # Clear Log at Launch # ------------------------------------------ # debug_file_clear (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Discard the content of the log file between each layer run khronos_profiles.debug_file_clear = true # Fail on Error # ------------------------------------------ # debug_fail_on_error (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # If the device doesn't support the capabilities of the selected Profile, the # layer fail to load. When enabled, vkEnumeratePhysicalDevices will fail when # the selected Profile is not supported. khronos_profiles.debug_fail_on_error = false # Message Types # ------------------------------------------ # debug_reports (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # This is a comma-delineated list of options telling the layer what types of # messages it should report back # This setting can list multiple values using the "," (comma) separator. khronos_profiles.debug_reports = DEBUG_REPORT_NOTIFICATION_BIT,DEBUG_REPORT_WARNING_BIT,DEBUG_REPORT_ERROR_BIT # Khronos Shader object layer # ========================================== # VK_LAYER_KHRONOS_shader_object - 1.4.350 (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Force Enable # ------------------------------------------ # force_enable (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Force the layer to be active even if the underlying driver also implements the # shader object extension. khronos_shader_object.force_enable = false # Disable Pipeline Pre-Caching # ------------------------------------------ # disable_pipeline_pre_caching (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS) # Disable the layer from pre-caching pipelines, reducing the memory overhead. khronos_shader_object.disable_pipeline_pre_caching = false # Khronos Synchronization2 layer # ========================================== # VK_LAYER_KHRONOS_synchronization2 - 1.4.350 (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # For more information about the layer: https://vulkan.lunarg.com/doc/sdk/latest/windows/synchronization2_layer.html # Force Enable # ------------------------------------------ # force_enable (WINDOWS_X86, WINDOWS_ARM, LINUX, MACOS, ANDROID) # Force the layer to be active even if the underlying driver also implements the # synchonization2 extension. khronos_synchronization2.force_enable = false