| { |
| "file_format_version": "1.2.0", |
| "layer": { |
| "name": "@JSON_LAYER_NAME@", |
| "prefix": "vvl", |
| "type": "GLOBAL", |
| "library_path": "@JSON_LIBRARY_PATH@", |
| "api_version": "1.4.349", |
| "implementation_version": "1", |
| "description": "Khronos Validation Layer", |
| "introduction": "The main, comprehensive Khronos validation layer.\n\nVulkan 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. \n\nThe Khronos Validation Layer can be enabled to assist development by enabling developers to verify their applications correctly use the Vulkan API.", |
| "platforms": [ |
| "WINDOWS", |
| "LINUX", |
| "ANDROID", |
| "MACOS" |
| ], |
| "url": "https://vulkan.lunarg.com/doc/sdk/latest/windows/khronos_validation_layer.html", |
| "instance_extensions": [ |
| { |
| "name": "VK_EXT_debug_report", |
| "spec_version": "9" |
| }, |
| { |
| "name": "VK_EXT_debug_utils", |
| "spec_version": "1" |
| }, |
| { |
| "name": "VK_EXT_layer_settings", |
| "spec_version": "2" |
| }, |
| { |
| "name": "VK_EXT_validation_features", |
| "spec_version": "2" |
| } |
| ], |
| "device_extensions": [ |
| { |
| "name": "VK_EXT_debug_marker", |
| "spec_version": "4", |
| "entrypoints": [ |
| "vkDebugMarkerSetObjectTagEXT", |
| "vkDebugMarkerSetObjectNameEXT", |
| "vkCmdDebugMarkerBeginEXT", |
| "vkCmdDebugMarkerEndEXT", |
| "vkCmdDebugMarkerInsertEXT" |
| ] |
| }, |
| { |
| "name": "VK_EXT_validation_cache", |
| "spec_version": "1", |
| "entrypoints": [ |
| "vkCreateValidationCacheEXT", |
| "vkDestroyValidationCacheEXT", |
| "vkGetValidationCacheDataEXT", |
| "vkMergeValidationCachesEXT" |
| ] |
| }, |
| { |
| "name": "VK_EXT_tooling_info", |
| "spec_version": "1", |
| "entrypoints": [ |
| "vkGetPhysicalDeviceToolPropertiesEXT" |
| ] |
| } |
| ], |
| "features": { |
| "presets": [ |
| { |
| "label": "Standard", |
| "description": "Good default validation setup that balance validation coverage and performance.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "status": "STABLE", |
| "settings": [ |
| { "key": "validate_core", "value": true }, |
| { "key": "check_image_layout", "value": true }, |
| { "key": "check_command_buffer", "value": true }, |
| { "key": "check_object_in_use", "value": true }, |
| { "key": "check_query", "value": true }, |
| { "key": "check_shaders", "value": true }, |
| { "key": "check_shaders_caching", "value": true }, |
| { "key": "unique_handles", "value": true }, |
| { "key": "object_lifetime", "value": true }, |
| { "key": "stateless_param", "value": true }, |
| { "key": "legacy_detection", "value": false }, |
| { "key": "thread_safety", "value": false }, |
| { "key": "validate_sync", "value": false }, |
| { "key": "printf_enable", "value": false }, |
| { "key": "debug_descriptor", "value": false }, |
| { "key": "gpuav_enable", "value": false }, |
| { "key": "validate_best_practices", "value": false }, |
| { "key": "report_flags", "value": [ "error", "warn" ] }, |
| { "key": "debug_action", "value": [ "VK_DBG_LAYER_ACTION_LOG_MSG", "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT" ] }, |
| { "key": "enable_message_limit", "value": true } |
| ] |
| }, |
| { |
| "label": "Reduced-Overhead", |
| "description": "Disables some checks in the interest of better performance.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS" ], |
| "status": "STABLE", |
| "settings": [ |
| { "key": "validate_core", "value": true }, |
| { "key": "check_image_layout", "value": false }, |
| { "key": "check_command_buffer", "value": false }, |
| { "key": "check_object_in_use", "value": false }, |
| { "key": "check_query", "value": false }, |
| { "key": "check_shaders", "value": true }, |
| { "key": "check_shaders_caching", "value": true }, |
| { "key": "unique_handles", "value": false }, |
| { "key": "object_lifetime", "value": true }, |
| { "key": "stateless_param", "value": true }, |
| { "key": "legacy_detection", "value": false }, |
| { "key": "thread_safety", "value": false }, |
| { "key": "validate_sync", "value": false }, |
| { "key": "printf_enable", "value": false }, |
| { "key": "debug_descriptor", "value": false }, |
| { "key": "gpuav_enable", "value": false }, |
| { "key": "validate_best_practices", "value": false }, |
| { "key": "report_flags", "value": [ "error" ] }, |
| { "key": "debug_action", "value": [ "VK_DBG_LAYER_ACTION_LOG_MSG" ] }, |
| { "key": "enable_message_limit", "value": true } |
| ] |
| }, |
| { |
| "label": "Best Practices", |
| "description": "Provides warnings on valid API usage that is potential API misuse.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "status": "STABLE", |
| "settings": [ |
| { "key": "validate_core", "value": false }, |
| { "key": "check_image_layout", "value": false }, |
| { "key": "check_command_buffer", "value": false }, |
| { "key": "check_object_in_use", "value": false }, |
| { "key": "check_query", "value": false }, |
| { "key": "check_shaders", "value": false }, |
| { "key": "check_shaders_caching", "value": false }, |
| { "key": "unique_handles", "value": false }, |
| { "key": "object_lifetime", "value": false }, |
| { "key": "stateless_param", "value": false }, |
| { "key": "legacy_detection", "value": false }, |
| { "key": "thread_safety", "value": false }, |
| { "key": "validate_sync", "value": false }, |
| { "key": "printf_enable", "value": false }, |
| { "key": "debug_descriptor", "value": false }, |
| { "key": "gpuav_enable", "value": false }, |
| { "key": "validate_best_practices", "value": true }, |
| { "key": "report_flags", "value": [ "error", "warn", "perf" ] }, |
| { "key": "debug_action", "value": [ "VK_DBG_LAYER_ACTION_LOG_MSG", "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT" ] }, |
| { "key": "enable_message_limit", "value": true } |
| ] |
| }, |
| { |
| "label": "Synchronization", |
| "description": "Identify resource access conflicts due to missing or incorrect synchronization operations between actions reading or writing the same regions of memory.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "status": "STABLE", |
| "settings": [ |
| { "key": "validate_core", "value": false }, |
| { "key": "check_image_layout", "value": false }, |
| { "key": "check_command_buffer", "value": false }, |
| { "key": "check_object_in_use", "value": false }, |
| { "key": "check_query", "value": false }, |
| { "key": "check_shaders", "value": false }, |
| { "key": "check_shaders_caching", "value": false }, |
| { "key": "unique_handles", "value": true }, |
| { "key": "object_lifetime", "value": false }, |
| { "key": "stateless_param", "value": false }, |
| { "key": "legacy_detection", "value": false }, |
| { "key": "thread_safety", "value": true }, |
| { "key": "validate_sync", "value": true }, |
| { "key": "printf_enable", "value": false }, |
| { "key": "debug_descriptor", "value": false }, |
| { "key": "gpuav_enable", "value": false }, |
| { "key": "validate_best_practices", "value": false }, |
| { "key": "report_flags", "value": [ "error" ] }, |
| { "key": "debug_action", "value": [ "VK_DBG_LAYER_ACTION_LOG_MSG", "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT" ] }, |
| { "key": "enable_message_limit", "value": true } |
| ] |
| }, |
| { |
| "label": "GPU-Assisted", |
| "description": "Check for API usage errors at shader execution time.", |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "status": "STABLE", |
| "settings": [ |
| { "key": "validate_core", "value": false }, |
| { "key": "check_image_layout", "value": false }, |
| { "key": "check_command_buffer", "value": false }, |
| { "key": "check_object_in_use", "value": false }, |
| { "key": "check_query", "value": false }, |
| { "key": "check_shaders", "value": false }, |
| { "key": "check_shaders_caching", "value": false }, |
| { "key": "unique_handles", "value": false }, |
| { "key": "object_lifetime", "value": false }, |
| { "key": "stateless_param", "value": false }, |
| { "key": "legacy_detection", "value": false }, |
| { "key": "thread_safety", "value": false }, |
| { "key": "validate_sync", "value": false }, |
| { "key": "printf_enable", "value": false }, |
| { "key": "debug_descriptor", "value": false }, |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true }, |
| { "key": "gpuav_select_instrumented_shaders", "value": false }, |
| { "key": "gpuav_buffers_validation", "value": true }, |
| { "key": "validate_best_practices", "value": false }, |
| { "key": "report_flags", "value": [ "error", "warn" ] }, |
| { "key": "debug_action", "value": [ "VK_DBG_LAYER_ACTION_LOG_MSG", "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT" ] }, |
| { "key": "enable_message_limit", "value": true } |
| ] |
| }, |
| { |
| "label": "Debug Printf", |
| "description": "Debug shader code by \"printing\" any values of interest to the debug callback or stdout.", |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "status": "STABLE", |
| "settings": [ |
| { "key": "validate_core", "value": false }, |
| { "key": "check_image_layout", "value": false }, |
| { "key": "check_command_buffer", "value": false }, |
| { "key": "check_object_in_use", "value": false }, |
| { "key": "check_query", "value": false }, |
| { "key": "check_shaders", "value": false }, |
| { "key": "check_shaders_caching", "value": false }, |
| { "key": "unique_handles", "value": false }, |
| { "key": "object_lifetime", "value": false }, |
| { "key": "stateless_param", "value": false }, |
| { "key": "legacy_detection", "value": false }, |
| { "key": "thread_safety", "value": false }, |
| { "key": "validate_sync", "value": false }, |
| { "key": "gpuav_enable", "value": false }, |
| { "key": "printf_enable", "value": true }, |
| { "key": "debug_descriptor", "value": false }, |
| { "key": "validate_best_practices", "value": false }, |
| { "key": "report_flags", "value": [ "error", "warn", "info" ] }, |
| { "key": "debug_action", "value": [] }, |
| { "key": "enable_message_limit", "value": false } |
| ] |
| }, |
| { |
| "label": "Legacy Detection Only", |
| "description": "Turn off everything but legacy detection.", |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "status": "STABLE", |
| "settings": [ |
| { "key": "validate_core", "value": false }, |
| { "key": "check_image_layout", "value": false }, |
| { "key": "check_command_buffer", "value": false }, |
| { "key": "check_object_in_use", "value": false }, |
| { "key": "check_query", "value": false }, |
| { "key": "check_shaders", "value": false }, |
| { "key": "check_shaders_caching", "value": false }, |
| { "key": "unique_handles", "value": false }, |
| { "key": "object_lifetime", "value": false }, |
| { "key": "stateless_param", "value": false }, |
| { "key": "legacy_detection", "value": true }, |
| { "key": "thread_safety", "value": false }, |
| { "key": "validate_sync", "value": false }, |
| { "key": "gpuav_enable", "value": false }, |
| { "key": "printf_enable", "value": false }, |
| { "key": "debug_descriptor", "value": false }, |
| { "key": "validate_best_practices", "value": false }, |
| { "key": "report_flags", "value": [ "warn" ] }, |
| { "key": "debug_action", "value": [ "VK_DBG_LAYER_ACTION_LOG_MSG", "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT" ] }, |
| { "key": "enable_message_limit", "value": false } |
| ] |
| } |
| ], |
| "settings": [ |
| { |
| "key": "validation_control", |
| "label": "Validation Areas", |
| "description": "Control of the Validation layer validation", |
| "type": "GROUP", |
| "expanded": true, |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "settings": [ |
| { |
| "key": "fine_grained_locking", |
| "env": "VK_LAYER_FINE_GRAINED_LOCKING", |
| "label": "Fine Grained Locking", |
| "description": "Enable fine grained locking for Core Validation, which should improve performance in multithreaded applications. This setting allows the optimization to be disabled for debugging.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/fine_grained_locking_usage.md", |
| "type": "BOOL", |
| "default": true |
| }, |
| { |
| "key": "validate_core", |
| "label": "Core", |
| "description": "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.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/core_checks.md", |
| "type": "BOOL", |
| "default": true, |
| "settings": [ |
| { |
| "key": "check_image_layout", |
| "label": "Image Layout", |
| "description": "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.", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_core", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "check_command_buffer", |
| "label": "Command Buffer State", |
| "description": "Check that all Vulkan objects used by a command buffer have not been destroyed. These checks can be CPU intensive for some applications.", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_core", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "check_object_in_use", |
| "label": "Object in Use", |
| "description": "Check that Vulkan objects are not in use by a command buffer when they are destroyed.", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_core", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "check_query", |
| "label": "Query", |
| "description": "Checks for commands that use VkQueryPool objects.", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_core", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "check_shaders", |
| "label": "Shader", |
| "description": "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)", |
| "type": "BOOL", |
| "default": true, |
| "expanded": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_core", "value": true } |
| ] |
| }, |
| "settings": [ |
| { |
| "key": "check_shaders_caching", |
| "label": "Caching", |
| "description": "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.", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_core", "value": true }, |
| { "key": "check_shaders", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "debug_disable_spirv_val", |
| "label": "Disable spirv-val", |
| "view": "DEBUG", |
| "description": "Allows normal shader validation to run, but removes just spirv-val for performance reasons", |
| "type": "BOOL", |
| "default": false |
| } |
| ] |
| } |
| ], |
| "messages": [ |
| { |
| "key": "validate_core_msg0", |
| "title": "Validation layer performance issue", |
| "version": 1, |
| "description": "Both 'Core validation' and 'GPU-assisted validation' are enabled. This is going to require a lot of CPU resource causing the Vulkan application to run very slowly.", |
| "informative": "Are you sure you want to enable 'Core Validation'?", |
| "severity": "WARNING", |
| "conditions": [ |
| { "setting": { "key": "validate_core", "value": true }}, |
| { "setting": { "key": "gpuav_enable", "value": true }} |
| ], |
| "actions": { |
| "default": "BUTTON0", |
| "BUTTON0": { |
| "type": "OK", |
| "changes": [ |
| { "setting": { "key": "validate_core", "value": true }}, |
| { "setting": { "key": "gpuav_enable", "value": true }} |
| ] |
| }, |
| "BUTTON1": { |
| "type": "CANCEL", |
| "changes": [ |
| { "setting": { "key": "validate_core", "value": false }} |
| ] |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "key": "unique_handles", |
| "label": "Handle Wrapping", |
| "description": "Handle wrapping checks. Disable this feature if you are experiencing crashes when creating new extensions or developing new Vulkan objects/structures.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/handle_wrapping.md", |
| "type": "BOOL", |
| "default": true |
| }, |
| { |
| "key": "object_lifetime", |
| "label": "Object Lifetime", |
| "description": "Object tracking checks. This may not always be necessary late in a development cycle.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/object_lifetimes.md", |
| "type": "BOOL", |
| "default": true |
| }, |
| { |
| "key": "stateless_param", |
| "label": "Stateless Parameter", |
| "description": "Stateless parameter checks. This may not always be necessary late in a development cycle.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/stateless_validation.md", |
| "type": "BOOL", |
| "default": true |
| }, |
| { |
| "key": "legacy_detection", |
| "label": "Legacy Detection", |
| "description": "Give warnings when using legacy parts of the API.", |
| "type": "BOOL", |
| "default": false |
| }, |
| { |
| "key": "thread_safety", |
| "label": "Thread Safety", |
| "description": "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.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/thread_safety.md", |
| "type": "BOOL", |
| "default": true |
| }, |
| { |
| "key": "validate_sync", |
| "label": "Synchronization", |
| "description": "Check for resource access conflicts caused by missing or incorrectly used synchronization operations.", |
| "url": "${LUNARG_SDK}/synchronization_usage.html", |
| "type": "BOOL", |
| "default": false, |
| "expanded": true, |
| "settings": [ |
| { |
| "key": "syncval_submit_time_validation", |
| "label": "Submit time validation", |
| "description": "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.", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_sync", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "syncval_shader_accesses_heuristic", |
| "label": "Shader accesses heuristic", |
| "description": "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.", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_sync", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "syncval_load_op_after_store_op_validation", |
| "label": "LoadOp after StoreOp validation", |
| "description": "Detect LoadOp after StoreOp hazards between render pass instances.", |
| "view": "HIDDEN", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_sync", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "syncval_reporting", |
| "label": "Error messages", |
| "description": "Options to configure synchronization validation error reporting", |
| "type": "GROUP", |
| "expanded": true, |
| "settings": [ |
| { |
| "key": "syncval_message_extra_properties", |
| "label": "Extra properties", |
| "description": "Append a section of key-value properties to the error message. Useful for filtering errors.", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_sync", "value": true } |
| ] |
| } |
| } |
| ] |
| } |
| ] |
| }, |
| { |
| "key": "printf_only_preset", |
| "label": "Debug Printf only preset", |
| "description": "A single, quick setting to turn on only DebugPrintf and turn off everything else", |
| "type": "BOOL", |
| "default": false, |
| "view": "DEBUG", |
| "platforms": [ "WINDOWS", "LINUX" ] |
| }, |
| { |
| "key": "printf_enable", |
| "label": "Debug Printf", |
| "description": "Enable DebugPrintf and will print anything use NonSemantic.DebugPrintf in their SPIR-V", |
| "type": "BOOL", |
| "url": "${LUNARG_SDK}/debug_printf.html", |
| "default": false, |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "settings": [ |
| { |
| "key": "printf_to_stdout", |
| "label": "Redirect Printf messages to stdout", |
| "description": "Enable redirection of Debug Printf messages from the debug callback to stdout", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "printf_enable", "value": true } |
| ] |
| }, |
| "messages": [ |
| { |
| "key": "printf_enable_msg3", |
| "title": "Debug Printf without 'info' level message severity flag", |
| "version": 1, |
| "description": "Enabling Debug Printf output redirection to the debug callback, but 'info' level message severity is disabled, so printf message won't be shown.", |
| "informative": "Adding 'info' level to 'Message Severity'", |
| "severity": "INFORMATION", |
| "conditions": [ |
| { "setting": { "key": "printf_enable", "value": true }}, |
| { "setting": { "key": "printf_to_stdout", "value": false }}, |
| { "setting": { "key": "report_flags", "value": ["info"]}, "operator": "NOT" } |
| ], |
| "actions": { |
| "default": "BUTTON0", |
| "BUTTON0": { |
| "type": "OK", |
| "changes": [ |
| { "setting": { "key": "report_flags", "value": ["info"]}, "operator": "APPEND" } |
| ] |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "key": "printf_verbose", |
| "label": "Printf verbose", |
| "description": "Will print out handles, instruction location, position in command buffer, and more", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "printf_enable", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "printf_buffer_size", |
| "label": "Printf buffer size", |
| "description": "Set the size in bytes of the buffer per VkCommandBuffer to hold the messages (Each message is about 50 bytes)", |
| "type": "INT", |
| "default": 1024, |
| "range": { |
| "min": 128, |
| "max": 1048576 |
| }, |
| "unit": "bytes", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "printf_enable", "value": true } |
| ] |
| } |
| } |
| ], |
| "messages": [ |
| { |
| "key": "printf_enable_msg1", |
| "title": "Warning: Debug Printf without info level message severity flag", |
| "version": 1, |
| "description": "Enabling Debug Printf, with output directed to the debug callback, but info level message severity is disabled, so printf message won't be shown.", |
| "informative": "Adding 'info' level to 'Message Severity'", |
| "severity": "INFORMATION", |
| "conditions": [ |
| { "setting": { "key": "printf_enable", "value": true }}, |
| { "setting": { "key": "printf_to_stdout", "value": false }}, |
| { "setting": { "key": "report_flags", "value": ["info"]}, "operator": "NOT" } |
| ], |
| "actions": { |
| "default": "BUTTON0", |
| "BUTTON0": { |
| "type": "OK", |
| "changes": [ |
| { "setting": { "key": "report_flags", "value": ["info"] }, "operator": "APPEND" } |
| ] |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "key": "debug_descriptor", |
| "label": "Debug Descriptor", |
| "description": "[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", |
| "view": "DEBUG", |
| "type": "BOOL", |
| "default": false, |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "settings": [ |
| { |
| "key": "debug_descriptor_to_stdout", |
| "label": "Redirect DebugDescriptor messages to stdout", |
| "description": "Enable redirection of Debug Descriptor messages from the debug callback to stdout", |
| "view": "DEBUG", |
| "type": "BOOL", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "debug_descriptor", "value": true } |
| ] |
| }, |
| "messages": [ |
| { |
| "key": "debug_descriptor_msg3", |
| "title": "Debug Descriptor without 'info' level message severity flag", |
| "version": 1, |
| "description": "Enabling Debug Descriptor output redirection to the debug callback, but 'info' level message severity is disabled, so messages won't be shown.", |
| "informative": "Adding 'info' level to 'Message Severity'", |
| "severity": "INFORMATION", |
| "conditions": [ |
| { "setting": { "key": "debug_descriptor", "value": true }}, |
| { "setting": { "key": "debug_descriptor_to_stdout", "value": false }}, |
| { "setting": { "key": "report_flags", "value": ["info"]}, "operator": "NOT" } |
| ], |
| "actions": { |
| "default": "BUTTON0", |
| "BUTTON0": { |
| "type": "OK", |
| "changes": [ |
| { "setting": { "key": "report_flags", "value": ["info"]}, "operator": "APPEND" } |
| ] |
| } |
| } |
| } |
| ] |
| } |
| ], |
| "messages": [ |
| { |
| "key": "debug_descriptor_msg1", |
| "title": "Warning: Debug Descriptor without info level message severity flag", |
| "version": 1, |
| "description": "Enabling Debug Descriptor, with output directed to the debug callback, but info level message severity is disabled, so messages won't be shown.", |
| "informative": "Adding 'info' level to 'Message Severity'", |
| "severity": "INFORMATION", |
| "conditions": [ |
| { "setting": { "key": "debug_descriptor", "value": true }}, |
| { "setting": { "key": "debug_descriptor_to_stdout", "value": false }}, |
| { "setting": { "key": "report_flags", "value": ["info"]}, "operator": "NOT" } |
| ], |
| "actions": { |
| "default": "BUTTON0", |
| "BUTTON0": { |
| "type": "OK", |
| "changes": [ |
| { "setting": { "key": "report_flags", "value": ["info"] }, "operator": "APPEND" } |
| ] |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "key": "gpuav_enable", |
| "label": "GPU Assisted Validation", |
| "description": "Enable validation that cannot be done the CPU and needs hooks into the GPU execution", |
| "url": "${LUNARG_SDK}/gpu_validation.html", |
| "type": "BOOL", |
| "default": false, |
| "expanded": true, |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "settings": [ |
| { |
| "key": "gpuav_safe_mode", |
| "label": "Safe Mode", |
| "description": "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.", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_force_on_robustness", |
| "label": "Force on robustness features", |
| "description": "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.", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_shader_instrumentation", |
| "label": "Shader instrumentation", |
| "description": "Instrument shaders to validate descriptors, descriptor indexing, buffer device addresses and ray queries. Warning: will considerably slow down shader executions.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_shader_instrumentation.md", |
| "type": "BOOL", |
| "expanded": true, |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| }, |
| "settings": [ |
| { |
| "key": "gpuav_select_instrumented_shaders", |
| "label": "Enable instrumenting shaders selectively", |
| "description": "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.", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_selective_shader.md", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| }, |
| "settings": [ |
| { |
| "key": "gpuav_shaders_to_instrument", |
| "label": "Shader/pipeline name regexes", |
| "description": "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.", |
| "type": "LIST", |
| "default": [], |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true }, |
| { "key": "gpuav_select_instrumented_shaders", "value": true } |
| ] |
| } |
| } |
| ] |
| }, |
| { |
| "key": "gpuav_descriptor_checks", |
| "label": "Descriptors indexing", |
| "description": "Enable descriptors and buffer out of bounds validation when using descriptor indexing", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_descriptor_indexing.md", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "expanded": true, |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_post_process_descriptor_indexing", |
| "label": "Post process descriptor indexing", |
| "description": "Track which descriptor indexes were used in shader to run normal validation afterwards", |
| "url": "https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/docs/gpu_av_post_process.md", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_buffer_address_oob", |
| "label": "Out of bounds buffer device addresses", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "expanded": true, |
| "description": "Check for invalid access using buffer device address", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_mesh_shading", |
| "label": "Mesh Shading SPIR-V instructions", |
| "description": "Enable shader instrumentation on VK_EXT_mesh_shader", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_validate_ray_query", |
| "label": "RayQuery SPIR-V instructions", |
| "description": "Enable shader instrumentation on OpRayQueryInitializeKHR", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_validate_trace_ray", |
| "label": "TraceRay SPIR-V instructions", |
| "description": "Enable shader instrumentation on OpTraceRayKHR, OpHitObject*", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_vertex_attribute_fetch_oob", |
| "label": "Out of bounds vertex attribute fetching", |
| "description": "Validate that no vertex attribute fetching is out of bonds", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_shader_sanitizer", |
| "label": "Shader Sanitizer", |
| "description": "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.", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_shared_memory_data_race", |
| "label": "Shared Memory Data Race Detection", |
| "description": "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.", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_shader_instrumentation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_max_indices_count", |
| "label": "Maximum Indices", |
| "description": "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.", |
| "type": "INT", |
| "view": "DEBUG", |
| "default": 8192, |
| "range": { |
| "min": 0, |
| "max": 65534 |
| }, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| } |
| ] |
| }, |
| { |
| "key": "gpuav_buffers_validation", |
| "label": "Buffer content validation", |
| "description": "Validate buffers containing parameters used in indirect Vulkan commands, or used in copy commands", |
| "type": "BOOL", |
| "view": "DEBUG", |
| "default": true, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| }, |
| "settings": [ |
| { |
| "key": "gpuav_indirect_draws_buffers", |
| "label": "Indirect draws parameters", |
| "type": "BOOL", |
| "default": true, |
| "description": "Validate buffers containing draw parameters used in indirect draw commands. Includes vkCmdDrawMeshTasks* calls as well", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_indirect_dispatches_buffers", |
| "label": "Indirect dispatches parameters", |
| "type": "BOOL", |
| "default": true, |
| "description": "Validate buffers containing dispatch parameters used in indirect dispatch commands", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_indirect_trace_rays_buffers", |
| "label": "Indirect trace rays parameters", |
| "type": "BOOL", |
| "default": true, |
| "description": "Validate buffers containing ray tracing parameters used in indirect ray tracing commands", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_buffer_copies", |
| "label": "Buffer copies", |
| "type": "BOOL", |
| "default": true, |
| "description": "Validate copies involving a VkBuffer. Right now only validates copy buffer to image.", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_copy_memory_indirect", |
| "label": "VK_KHR_copy_memory_indirect", |
| "type": "BOOL", |
| "default": true, |
| "description": "Validate VK_KHR_copy_memory_indirect.", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_index_buffers", |
| "label": "Index buffers", |
| "type": "BOOL", |
| "default": true, |
| "description": "Validate that indexed draws do not fetch indices outside of the bounds of the index buffer.", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_acceleration_structures_builds", |
| "label": "Acceleration structures builds", |
| "type": "BOOL", |
| "default": true, |
| "description": "Validate acceleration structures references in TLAS build commands.", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| } |
| ] |
| }, |
| { |
| "key": "gpuav_ray_tracing_buffers_consistency", |
| "label": "Ray tracing buffers consistency", |
| "type": "BOOL", |
| "default": false, |
| "description": "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.", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true }, |
| { "key": "gpuav_buffers_validation", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_debug_settings", |
| "label": "Developer Debug Settings", |
| "description": "GPU-AV debug settings", |
| "type": "GROUP", |
| "view": "DEBUG", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| }, |
| "settings": [ |
| { |
| "key": "gpuav_debug_disable_all", |
| "label": "Disable all of GPU-AV", |
| "description": "Acts as a VkValidationFeatureDisableEXT to override the VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT passed by the user", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_debug_validate_instrumented_shaders", |
| "label": "Validate instrumented shaders", |
| "description": "Run spirv-val after doing shader instrumentation", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_debug_dump_instrumented_shaders", |
| "label": "Dump instrumented shaders", |
| "description": "Will dump the instrumented shaders (before and after) to working directory", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_debug_max_instrumentations_count", |
| "label": "Limit how many time a pass can instrument the SPIR-V", |
| "description": "Zero is same as unlimited", |
| "type": "INT", |
| "default": 0, |
| "range": { |
| "min": 0 |
| }, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "gpuav_debug_print_instrumentation_info", |
| "label": "Print SPIR-V instrumentation info", |
| "description": "Prints verbose information about the instrumentation of the SPIR-V", |
| "type": "BOOL", |
| "default": false, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "gpuav_enable", "value": true } |
| ] |
| } |
| } |
| ] |
| } |
| ], |
| "messages": [ |
| { |
| "key": "gpuav_enable_msg0", |
| "title": "Validation layer performance warning", |
| "version": 1, |
| "description": "Both 'Core validation' and 'GPU-assisted validation' are enabled. This is going to require a lot of CPU resource causing the Vulkan application to run very slowly.", |
| "informative": "Are you sure you want to enable 'GPU Assisted Validation'?", |
| "severity": "WARNING", |
| "conditions": [ |
| { "setting": { "key": "validate_core", "value": true }}, |
| { "setting": { "key": "gpuav_enable", "value": true }} |
| ], |
| "actions": { |
| "default": "BUTTON0", |
| "BUTTON0": { |
| "type": "OK", |
| "changes": [ |
| { "setting": { "key": "validate_core", "value": true }}, |
| { "setting": { "key": "gpuav_enable", "value": true }} |
| ] |
| }, |
| "BUTTON1": { |
| "type": "CANCEL", |
| "changes": [ |
| { "setting": { "key": "gpuav_enable", "value": false }} |
| ] |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "key": "validate_best_practices", |
| "label": "Best Practices", |
| "description": "Outputs warnings related to common misuse of the API, but which are not explicitly prohibited by the specification.", |
| "url": "${LUNARG_SDK}/best_practices.html", |
| "type": "BOOL", |
| "default": false, |
| "expanded": true, |
| "status": "STABLE", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "settings": [ |
| { |
| "key": "validate_best_practices_arm", |
| "label": "ARM-specific best practices", |
| "description": "Outputs warnings for spec-conforming but non-ideal code on ARM GPUs.", |
| "type": "BOOL", |
| "default": false, |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_best_practices", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "validate_best_practices_amd", |
| "label": "AMD-specific best practices", |
| "description": "Outputs warnings for spec-conforming but non-ideal code on AMD GPUs.", |
| "type": "BOOL", |
| "default": false, |
| "platforms": [ "WINDOWS", "LINUX", "MACOS" ], |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_best_practices", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "validate_best_practices_img", |
| "label": "IMG-specific best practices", |
| "description": "Outputs warnings for spec-conforming but non-ideal code on Imagination GPUs.", |
| "type": "BOOL", |
| "default": false, |
| "platforms": [ "WINDOWS", "LINUX", "MACOS" ], |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_best_practices", "value": true } |
| ] |
| } |
| }, |
| { |
| "key": "validate_best_practices_nvidia", |
| "label": "NVIDIA-specific best practices", |
| "description": "Outputs warnings for spec-conforming but non-ideal code on NVIDIA GPUs.", |
| "type": "BOOL", |
| "default": false, |
| "platforms": [ "WINDOWS", "LINUX", "ANDROID" ], |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "validate_best_practices", "value": true } |
| ] |
| } |
| } |
| ] |
| } |
| ] |
| }, |
| { |
| "key": "gpu_dump", |
| "label": "GPU Dump", |
| "view": "DEBUG", |
| "description": "Similar to API Dump, but using all the state tracking information, print out information about GPU centric API usages.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "type": "GROUP", |
| "expanded": true, |
| "settings": [ |
| { |
| "key": "gpu_dump_descriptors", |
| "label": "Dump Descriptors", |
| "view": "DEBUG", |
| "description": "Dump VK_EXT_descriptor_buffer/VK_EXT_descriptor_heap descriptor information for draw/dispatch/traceRays", |
| "type": "BOOL", |
| "default": false |
| }, |
| { |
| "key": "gpu_dump_copy_memory_indirect", |
| "label": "Dump VK_KHR_copy_memory_indirect", |
| "view": "DEBUG", |
| "description": "Dump VK_KHR_copy_memory_indirect information", |
| "type": "BOOL", |
| "default": false |
| }, |
| { |
| "key": "gpu_dump_device_generated_commands", |
| "label": "Dump VK_EXT_device_generated_commands", |
| "view": "DEBUG", |
| "description": "Dump VK_EXT_device_generated_commands information", |
| "type": "BOOL", |
| "default": false |
| }, |
| { |
| "key": "gpu_dump_to_stdout", |
| "label": "Redirect all GPU Dump to stdout", |
| "view": "DEBUG", |
| "description": "Instead of using the debug callback with information severity, redirect to stdout instead.", |
| "type": "BOOL", |
| "default": false |
| } |
| ] |
| }, |
| { |
| "key": "debug_action", |
| "label": "Debug Action", |
| "description": "Specifies what action is to be taken when a layer reports information", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "type": "FLAGS", |
| "flags": [ |
| { |
| "key": "VK_DBG_LAYER_ACTION_LOG_MSG", |
| "label": "Log Message", |
| "description": "Log a txt message to stdout or to a log filename.", |
| "settings": [ |
| { |
| "key": "log_filename", |
| "label": "Log Filename", |
| "description": "Specifies the output filename", |
| "type": "SAVE_FILE", |
| "default": "stdout", |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "debug_action", "value": [ "VK_DBG_LAYER_ACTION_LOG_MSG" ] } |
| ] |
| } |
| } |
| ] |
| }, |
| { |
| "key": "VK_DBG_LAYER_ACTION_CALLBACK", |
| "label": "Callback", |
| "description": "Call user defined callback function(s) that have been registered via the VK_EXT_debug_report extension. Since application must register callback, this is a NOOP for the settings file.", |
| "view": "HIDDEN" |
| }, |
| { |
| "key": "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT", |
| "label": "Debug Output", |
| "description": "Log a txt message using the Windows OutputDebugString function.", |
| "platforms": [ "WINDOWS" ] |
| }, |
| { |
| "key": "VK_DBG_LAYER_ACTION_BREAK", |
| "label": "Break", |
| "description": "Trigger a breakpoint if a debugger is in use." |
| } |
| ], |
| "default": [ |
| "VK_DBG_LAYER_ACTION_LOG_MSG", "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT" |
| ] |
| }, |
| { |
| "key": "report_flags", |
| "label": "Message Severity", |
| "description": "Comma-delineated list of options specifying the types of messages to be reported", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "type": "FLAGS", |
| "flags": [ |
| { |
| "key": "info", |
| "label": "Info", |
| "description": "Report informational messages.", |
| "messages": [ |
| { |
| "key": "printf_enable_msg2", |
| "title": "Warning: Debug Printf without info level message severity flag", |
| "version": 1, |
| "description": "Disabling info level message severity is disabled, but Debug Printf output is directed to the debug callback, so printf message won't be shown.", |
| "informative": "Adding 'info' level to 'Message Severity'", |
| "severity": "INFORMATION", |
| "conditions": [ |
| { "setting": { "key": "printf_enable", "value": true }}, |
| { "setting": { "key": "printf_to_stdout", "value": false }}, |
| { "setting": { "key": "report_flags", "value": ["info"]}, "operator": "NOT" } |
| ], |
| "actions": { |
| "default": "BUTTON0", |
| "BUTTON0": { |
| "type": "OK", |
| "changes": [ |
| { "setting": {"key": "report_flags", "value": ["info"]}, "operator": "APPEND" } |
| ] |
| } |
| } |
| } |
| ] |
| }, |
| { |
| "key": "warn", |
| "label": "Warning", |
| "description": "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." |
| }, |
| { |
| "key": "perf", |
| "label": "Performance", |
| "description": "Report usage of the API that may cause suboptimal performance." |
| }, |
| { |
| "key": "error", |
| "label": "Error", |
| "description": "Report errors in API usage." |
| }, |
| { |
| "key": "debug", |
| "label": "Debug", |
| "description": "For layer development. Report messages for debugging layer behavior.", |
| "view": "DEBUG" |
| } |
| ], |
| "default": [ |
| "error" |
| ] |
| }, |
| { |
| "key": "enable_message_limit", |
| "label": "Limit Duplicated Messages", |
| "description": "Enable limiting of duplicate messages.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "type": "BOOL", |
| "default": true, |
| "settings": [ |
| { |
| "key": "duplicate_message_limit", |
| "env": "VK_LAYER_DUPLICATE_MESSAGE_LIMIT", |
| "label": "Max Duplicated Messages", |
| "description": "Maximum number of times any single validation message should be reported.", |
| "type": "INT", |
| "default": 10, |
| "range": { |
| "min": 1 |
| }, |
| "dependence": { |
| "mode": "ALL", |
| "settings": [ |
| { "key": "enable_message_limit", "value": true } |
| ] |
| } |
| } |
| ] |
| }, |
| { |
| "key": "message_id_filter", |
| "label": "Mute Message VUIDs", |
| "description": "List of VUIDs and VUID identifiers which are to be IGNORED by the validation layer", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "type": "LIST", |
| "env": "VK_LAYER_MESSAGE_ID_FILTER", |
| "default": [] |
| }, |
| { |
| "key": "message_format", |
| "label": "Message Format", |
| "description": "Specifies how error messages are reported", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "type": "GROUP", |
| "expanded": true, |
| "settings": [ |
| { |
| "key": "message_format_json", |
| "label": "JSON", |
| "description": "Display Validation as JSON (VkDebugUtilsMessengerCallbackDataEXT::pMessage will contain JSON)", |
| "type": "BOOL", |
| "default": false |
| }, |
| { |
| "key": "message_format_display_application_name", |
| "label": "Display Application Name", |
| "description": "Useful when running multiple instances to know which instance the message is from.", |
| "type": "BOOL", |
| "default": false |
| } |
| ] |
| }, |
| { |
| "key": "custom_stype_list", |
| "label": "Provide Custom SType", |
| "type": "LIST", |
| "description": "specify custom pNext structs using a vector of strings", |
| "view": "HIDDEN", |
| "default": [] |
| }, |
| { |
| "key": "disables", |
| "label": "Disables", |
| "description": "Specify areas of validation to be disabled", |
| "type": "FLAGS", |
| "status": "DEPRECATED", |
| "view": "HIDDEN", |
| "env": "VK_LAYER_DISABLES", |
| "flags": [ |
| { |
| "key": "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT", |
| "label": "Thread Safety", |
| "description": "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.", |
| "deprecated_by_key": "thread_safety" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT", |
| "label": "Stateless Parameter", |
| "description": "Stateless parameter checks. This may not always be necessary late in a development cycle.", |
| "deprecated_by_key": "stateless_param" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT", |
| "label": "Object Lifetime", |
| "description": "Object tracking checks. This may not always be necessary late in a development cycle.", |
| "deprecated_by_key": "object_lifetime" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT", |
| "label": "Core", |
| "description": "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.", |
| "deprecated_by_key": "validate_core" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT", |
| "label": "Handle Wrapping", |
| "description": "Handle wrapping checks. Disable this feature if you are experiencing crashes when creating new extensions or developing new Vulkan objects/structures.", |
| "deprecated_by_key": "unique_handles" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT", |
| "label": "Shader Validation", |
| "description": "Shader checks. These checks can be CPU intensive during application start up, especially if Shader Validation Caching is also disabled.", |
| "deprecated_by_key": "check_shaders" |
| }, |
| { |
| "key": "VALIDATION_CHECK_DISABLE_COMMAND_BUFFER_STATE", |
| "label": "Command Buffer State", |
| "description": "Check that all Vulkan objects used by a command buffer have not been destroyed. These checks can be CPU intensive for some applications.", |
| "deprecated_by_key": "check_command_buffer" |
| }, |
| { |
| "key": "VALIDATION_CHECK_DISABLE_IMAGE_LAYOUT_VALIDATION", |
| "label": "Image Layout", |
| "description": "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.", |
| "deprecated_by_key": "check_image_layout" |
| }, |
| { |
| "key": "VALIDATION_CHECK_DISABLE_QUERY_VALIDATION", |
| "label": "Query", |
| "description": "Checks for commands that use VkQueryPool objects.", |
| "deprecated_by_key": "check_query" |
| }, |
| { |
| "key": "VALIDATION_CHECK_DISABLE_OBJECT_IN_USE", |
| "label": "Object in Use", |
| "description": "Check that Vulkan objects are not in use by a command buffer when they are destroyed.", |
| "deprecated_by_key": "check_object_in_use" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT", |
| "label": "Shader Validation Caching", |
| "description": "Disable caching of shader validation results.", |
| "deprecated_by_key": "check_shaders_caching" |
| } |
| ], |
| "default": [ |
| "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT" |
| ] |
| }, |
| { |
| "key": "enables", |
| "label": "Enables", |
| "description": "Setting an option here will enable specialized areas of validation", |
| "type": "FLAGS", |
| "status": "DEPRECATED", |
| "view": "HIDDEN", |
| "env": "VK_LAYER_ENABLES", |
| "flags": [ |
| { |
| "key": "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT", |
| "label": "Synchronization", |
| "description": "This feature reports resource access conflicts due to missing or incorrect synchronization operations between actions (Draw, Copy, Dispatch, Blit) reading or writing the same regions of memory.", |
| "url": "${LUNARG_SDK}/synchronization_usage.html", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "deprecated_by_key": "validate_sync" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT", |
| "label": "Debug Printf", |
| "description": "Enables processing of debug printf instructions in shaders and sending debug strings to the debug callback.", |
| "url": "${LUNARG_SDK}/debug_printf.html", |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "deprecated_by_key": "printf_enable" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT", |
| "label": "GPU-Assisted", |
| "description": "Check for API usage errors at shader execution time.", |
| "url": "${LUNARG_SDK}/gpu_validation.html", |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "deprecated_by_key": "gpuav_enable" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT", |
| "label": "Reserve Descriptor Set Binding Slot", |
| "description": "Specifies that the validation layers reserve a descriptor set binding slot for their own use. The layer reports a value for VkPhysicalDeviceLimits::maxBoundDescriptorSets that is one less than the value reported by the device. If the device supports the binding of only one descriptor set, the validation layer does not perform GPU-assisted validation.", |
| "platforms": [ "WINDOWS", "LINUX" ], |
| "deprecated_by_key": "gpuav_enable" |
| }, |
| { |
| "key": "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT", |
| "label": "Best Practices", |
| "description": "Activating this feature enables the output of warnings related to common misuse of the API, but which are not explicitly prohibited by the specification.", |
| "url": "${LUNARG_SDK}/best_practices.html", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "deprecated_by_key": "validate_best_practices" |
| }, |
| { |
| "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_ARM", |
| "label": "ARM-specific best practices", |
| "description": "Activating this feature enables the output of warnings related to ARM-specific misuse of the API, but which are not explicitly prohibited by the specification.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], |
| "deprecated_by_key": "validate_best_practices_arm" |
| }, |
| { |
| "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD", |
| "label": "AMD-specific best practices", |
| "description": "Adds check for spec-conforming but non-ideal code on AMD GPUs.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS" ], |
| "deprecated_by_key": "validate_best_practices_amd" |
| }, |
| { |
| "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_IMG", |
| "label": "IMG-specific best practices", |
| "description": "Adds check for spec-conforming but non-ideal code on Imagination GPUs.", |
| "platforms": [ "WINDOWS", "LINUX", "MACOS" ], |
| "deprecated_by_key": "validate_best_practices_img" |
| }, |
| { |
| "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA", |
| "label": "NVIDIA-specific best practices", |
| "description": "Activating this feature enables the output of warnings related to NVIDIA-specific misuse of the API, but which are not explicitly prohibited by the specification.", |
| "platforms": [ "WINDOWS", "LINUX", "ANDROID" ], |
| "deprecated_by_key": "validate_best_practices_nvidia" |
| }, |
| { |
| "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_ALL", |
| "label": "Hardware specific best practices", |
| "description": "Activating this feature enables all vendor specific best practices.", |
| "platforms": [ "WINDOWS", "LINUX", "ANDROID" ] |
| } |
| ], |
| "default": [] |
| } |
| ] |
| } |
| } |
| } |