blob: d16b0924db96be260fcad7d1831b1072dc38a894 [file] [log] [blame]
{
"file_format_version": "1.2.0",
"layer": {
"name": "VK_LAYER_KHRONOS_validation",
"type": "GLOBAL",
"library_path": "@RELATIVE_LAYER_BINARY@",
"api_version": "@VK_VERSION@",
"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_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": "enables",
"value": []
},
{
"key": "disables",
"value": [ "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT" ]
}
]
},
{
"label": "Reduced-Overhead",
"description": "Disables some checks in the interest of better performance.",
"platforms": [ "WINDOWS", "LINUX", "MACOS" ],
"status": "STABLE",
"editor_state": "01110111111111111111111001111111111110",
"settings": [
{
"key": "enables",
"value": [
]
},
{
"key": "disables",
"value": [
"VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
"VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
"VALIDATION_CHECK_DISABLE_IMAGE_LAYOUT_VALIDATION",
"VALIDATION_CHECK_DISABLE_COMMAND_BUFFER_STATE",
"VALIDATION_CHECK_DISABLE_OBJECT_IN_USE",
"VALIDATION_CHECK_DISABLE_QUERY_VALIDATION"
]
}
]
},
{
"label": "Best Practices",
"description": "Provides warnings on valid API usage that is potential API misuse.",
"platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ],
"status": "STABLE",
"settings": [
{
"key": "enables",
"value": [
"VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"
]
},
{
"key": "disables",
"value": [
"VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
"VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
"VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
]
}
]
},
{
"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": "enables",
"value": [
"VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT"
]
},
{
"key": "disables",
"value": [
"VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
"VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
]
}
]
},
{
"label": "GPU-Assisted",
"description": "Check for API usage errors at shader execution time.",
"platforms": [ "WINDOWS", "LINUX" ],
"status": "STABLE",
"settings": [
{
"key": "enables",
"value": [
"VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT",
"VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"
]
},
{
"key": "disables",
"value": [
"VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
"VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
"VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
]
}
]
},
{
"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": "enables",
"value": [
"VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"
]
},
{
"key": "disables",
"value": [
"VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
"VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
"VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
"VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
]
},
{
"key": "enable_message_limit",
"value": false
}
]
}
],
"settings": [
{
"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",
"warn",
"perf"
]
},
{
"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": "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" ],
"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": "ANY",
"settings": [
{
"key": "enables",
"value": [ "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT" ]
}
]
}
},
{
"key": "printf_verbose",
"label": "Printf verbose",
"description": "Set the verbosity of debug printf messages",
"type": "BOOL",
"default": false,
"platforms": [ "WINDOWS", "LINUX" ],
"dependence": {
"mode": "ANY",
"settings": [
{
"key": "enables",
"value": [ "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT" ]
}
]
}
},
{
"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": "ANY",
"settings": [
{
"key": "enables",
"value": [ "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT" ]
}
]
}
}
]
},
{
"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" ],
"settings": [
{
"key": "gpuav_descriptor_indexing",
"label": "Check descriptor indexing accesses",
"description": "Enable descriptor indexing access checking",
"type": "BOOL",
"default": true,
"platforms": [ "WINDOWS", "LINUX" ],
"dependence": {
"mode": "ANY",
"settings": [
{
"key": "enables",
"value": [ "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT" ]
}
]
}
},
{
"key": "gpuav_buffer_oob",
"label": "Check Out of Bounds ",
"description": "Enable buffer out of bounds checking",
"type": "BOOL",
"default": true,
"platforms": [ "WINDOWS", "LINUX" ],
"dependence": {
"mode": "ANY",
"settings": [
{
"key": "enables",
"value": [ "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT" ]
}
]
}
},
{
"key": "validate_draw_indirect",
"label": "Check Draw Indirect Count Buffers and firstInstance values",
"description": "Enable draw indirect checking",
"type": "BOOL",
"default": true,
"platforms": [ "WINDOWS", "LINUX" ],
"dependence": {
"mode": "ANY",
"settings": [
{
"key": "enables",
"value": [ "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT" ]
}
]
}
}
]
},
{
"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"]
}
],
"default": []
},
{
"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 is an experimental feature which may cause stability problems or incorrect errors to be reported.",
"status": "BETA",
"type": "BOOL",
"default": false,
"platforms": [ "WINDOWS", "LINUX", "MACOS", "ANDROID" ]
}
]
}
}
}