{ "file_format_version": "1.2.0", "layer": { "name": "VK_LAYER_KHRONOS_validation", "type": "GLOBAL", "library_path": "../../../lib/libVkLayer_khronos_validation.dylib", "api_version": "1.3.290", "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 Valiation 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": "thread_safety", "value": false }, { "key": "validate_sync", "value": false }, { "key": "validate_gpu_based", "value": "GPU_BASED_NONE" }, { "key": "validate_best_practices", "value": false }, { "key": "report_flags", "value": [ "error" ] } ] }, { "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": "thread_safety", "value": false }, { "key": "validate_sync", "value": false }, { "key": "validate_gpu_based", "value": "GPU_BASED_NONE" }, { "key": "validate_best_practices", "value": false }, { "key": "report_flags", "value": [ "error" ] } ] }, { "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": "thread_safety", "value": false }, { "key": "validate_sync", "value": false }, { "key": "validate_gpu_based", "value": "GPU_BASED_NONE" }, { "key": "validate_best_practices", "value": true }, { "key": "report_flags", "value": [ "error", "warn", "perf" ] } ] }, { "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": "thread_safety", "value": true }, { "key": "validate_sync", "value": true }, { "key": "validate_gpu_based", "value": "GPU_BASED_NONE" }, { "key": "validate_best_practices", "value": false }, { "key": "report_flags", "value": [ "error" ] } ] }, { "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": "thread_safety", "value": false }, { "key": "validate_sync", "value": false }, { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" }, { "key": "gpuav_reserve_binding_slot", "value": true }, { "key": "validate_best_practices", "value": false }, { "key": "report_flags", "value": [ "error" ] } ] }, { "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": "thread_safety", "value": false }, { "key": "validate_sync", "value": false }, { "key": "validate_gpu_based", "value": "GPU_BASED_DEBUG_PRINTF" }, { "key": "validate_best_practices", "value": false }, { "key": "report_flags", "value": [ "error" ] } ] } ], "settings": [ { "key": "validation_control", "label": "Validation Areas", "description": "Control of the Validation layer validation", "type": "GROUP", "expanded": true, "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.", "type": "BOOL", "default": true, "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ] }, { "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.", "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": "Shader checks. These checks can be CPU intensive during application start up, especially if Shader Validation Caching is also disabled.", "type": "BOOL", "default": true, "expanded": true, "dependence": { "mode": "ALL", "settings": [ { "key": "validate_core", "value": true } ] }, "settings": [ { "key": "check_shaders_caching", "label": "Caching", "description": "Enable caching of shader validation results.", "type": "BOOL", "default": true, "dependence": { "mode": "ALL", "settings": [ { "key": "validate_core", "value": true }, { "key": "check_shaders", "value": true } ] } } ] } ] }, { "key": "unique_handles", "label": "Handle Wrapping", "description": "Handle wrapping checks. Disable this feature if you are exerience crashes when creating new extensions or developing new Vulkan objects/structures.", "type": "BOOL", "default": true, "status": "STABLE", "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ] }, { "key": "object_lifetime", "label": "Object Lifetime", "description": "Object tracking checks. This may not always be necessary late in a development cycle.", "type": "BOOL", "default": true, "status": "STABLE", "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ] }, { "key": "stateless_param", "label": "Stateless Parameter", "description": "Stateless parameter checks. This may not always be necessary late in a development cycle.", "type": "BOOL", "default": true, "status": "STABLE", "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ] }, { "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.", "type": "BOOL", "default": true, "status": "STABLE", "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ] }, { "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, "status": "STABLE", "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ], "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, "status": "STABLE", "dependence": { "mode": "ALL", "settings": [ { "key": "validate_sync", "value": true } ] } }, { "key": "syncval_shader_accesses_heuristic", "label": "Shader accesses heuristic", "description": "Takes 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.", "type": "BOOL", "default": false, "status": "STABLE", "dependence": { "mode": "ALL", "settings": [ { "key": "validate_sync", "value": true } ] } } ] }, { "key": "validate_gpu_based", "label": "GPU Base", "description": "Setting an option here will enable specialized areas of validation", "type": "ENUM", "default": "GPU_BASED_NONE", "expanded": true, "status": "STABLE", "platforms": [ "WINDOWS", "LINUX" ], "flags": [ { "key": "GPU_BASED_NONE", "label": "None", "description": "No GPU-based validation." }, { "key": "GPU_BASED_DEBUG_PRINTF", "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", "status": "STABLE", "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, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_DEBUG_PRINTF" } ] } }, { "key": "printf_verbose", "label": "Printf verbose", "description": "Set the verbosity of debug printf messages", "type": "BOOL", "default": false, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_DEBUG_PRINTF" } ] } }, { "key": "printf_buffer_size", "label": "Printf buffer size", "description": "Set the size in bytes of the buffer used by debug printf", "type": "INT", "default": 1024, "range": { "min": 128, "max": 1048576 }, "unit": "bytes", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_DEBUG_PRINTF" } ] } } ] }, { "key": "GPU_BASED_GPU_ASSISTED", "label": "GPU-Assisted", "description": "Check for API usage errors at shader execution time.", "url": "${LUNARG_SDK}/gpu_validation.html", "platforms": [ "WINDOWS", "LINUX" ], "settings": [ { "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.", "type": "BOOL", "default": true, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] }, "settings": [ { "key": "gpuav_descriptor_checks", "label": "Descriptors indexing", "description": "Enable descriptors and buffer out of bounds validation when using descriptor indexing", "type": "BOOL", "default": true, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_shader_instrumentation", "value": true } ] }, "settings": [ { "key": "gpuav_warn_on_robust_oob", "label": "Generate warning on out of bounds accesses even if buffer robustness is enabled", "description": "Warn on out of bounds accesses even if robustness is enabled", "type": "BOOL", "default": true, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_shader_instrumentation", "value": true } ] } } ] }, { "key": "gpuav_buffer_address_oob", "label": "Out of bounds buffer device addresses", "type": "BOOL", "default": true, "description": "Check for ", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_shader_instrumentation", "value": true } ] }, "settings": [ { "key": "gpuav_max_buffer_device_addresses", "label": "Maximum number of buffer device addresses in use at one time", "description": "", "type": "INT", "default": 10000, "range": { "min": 100, "max": 10000000 }, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_shader_instrumentation", "value": true } ] } } ] }, { "key": "gpuav_validate_ray_query", "label": "RayQuery SPIR-V Instructions", "description": "Enable shader instrumentation on OpRayQueryInitializeKHR", "type": "BOOL", "default": true, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_shader_instrumentation", "value": true } ] } }, { "key": "gpuav_cache_instrumented_shaders", "label": "Cache instrumented shaders rather than instrumenting them on every run", "description": "Enable instrumented shader caching", "type": "BOOL", "default": true, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_shader_instrumentation", "value": true } ] } }, { "key": "gpuav_select_instrumented_shaders", "label": "Enable instrumenting shaders selectively", "description": "Select which shaders to instrument passing a VkValidationFeaturesEXT struct with GPU-AV enabled in the VkShaderModuleCreateInfo pNext", "type": "BOOL", "default": false, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_shader_instrumentation", "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", "default": true, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] }, "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", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "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", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "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", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "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.", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "gpuav_buffers_validation", "value": true } ] } } ] }, { "key": "gpuav_advanced_settings", "label": "Advanced Settings", "description": "GPU-AV advanced settings", "type": "GROUP", "view": "ADVANCED", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] }, "settings": [ { "key": "gpuav_reserve_binding_slot", "label": "Reserve Descriptor Set Binding Slot", "type": "BOOL", "default": true, "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" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] } }, { "key": "gpuav_vma_linear_output", "label": "Linear Memory Allocation Mode", "description": "Use VMA linear memory allocations for GPU-AV output buffers instead of finding best place for new allocations among free regions to optimize memory usage. Enabling this setting reduces performance cost but disabling this method minimizes memory usage.", "type": "BOOL", "default": true, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] } } ] }, { "key": "gpuav_debug_settings", "label": "Developer Debug Settings", "description": "GPU-AV debug settings", "type": "GROUP", "view": "ADVANCED", "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] }, "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, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] } }, { "key": "gpuav_debug_validate_instrumented_shaders", "label": "Validate instrumented shaders", "description": "Run spirv-val after doing shader instrumentation", "type": "BOOL", "default": false, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] } }, { "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, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] } }, { "key": "gpuav_debug_max_instrumented_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 }, "platforms": [ "WINDOWS", "LINUX" ], "dependence": { "mode": "ALL", "settings": [ { "key": "validate_gpu_based", "value": "GPU_BASED_GPU_ASSISTED" } ] } } ] } ] } ] }, { "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": "debug_action", "label": "Debug Action", "description": "Specifies what action is to be taken when a layer reports information", "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" ] }, { "key": "report_flags", "label": "Message Severity", "description": "Comma-delineated list of options specifying the types of messages to be reported", "type": "FLAGS", "flags": [ { "key": "info", "label": "Info", "description": "Report informational messages." }, { "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": "HIDDEN" } ], "default": [ "error" ] }, { "key": "enable_message_limit", "label": "Limit Duplicated Messages", "description": "Enable limiting of duplicate messages.", "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 identifers which are to be IGNORED by the validation layer", "type": "LIST", "env": "VK_LAYER_MESSAGE_ID_FILTER", "default": [] }, { "key": "message_format", "label": "Message Format", "description": "Specifies how error messages are reported", "type": "GROUP", "expanded": true, "settings": [ { "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, "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ] } ] }, { "key": "disables", "label": "Disables", "description": "Specify areas of validation to be disabled", "type": "FLAGS", "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." }, { "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." }, { "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." }, { "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." }, { "key": "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT", "label": "Handle Wrapping", "description": "Handle wrapping checks. Disable this feature if you are exerience crashes when creating new extensions or developing new Vulkan objects/structures." }, { "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.", "view": "ADVANCED" }, { "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.", "view": "ADVANCED" }, { "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.", "view": "ADVANCED" }, { "key": "VALIDATION_CHECK_DISABLE_QUERY_VALIDATION", "label": "Query", "description": "Checks for commands that use VkQueryPool objects.", "view": "ADVANCED" }, { "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.", "view": "ADVANCED" }, { "key": "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT", "label": "Shader Validation Caching", "description": "Disable caching of shader validation results.", "view": "ADVANCED" } ], "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", "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", "status": "STABLE", "platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ] }, { "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", "status": "STABLE", "platforms": [ "WINDOWS", "LINUX" ] }, { "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" ] }, { "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" ] }, { "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" ] }, { "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" ] }, { "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" ] }, { "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" ] }, { "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" ] }, { "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": [] } ] } } }