blob: 31eaa2a87ed0b879abab75950e1327261a403e47 [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 about potential API misuse but valid usages of the API.",
"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": "This indicates what action is to be taken when a layer wants to report 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": "This is a comma-delineated list of options telling the layer what types of messages it should report back",
"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 using the API in a way 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 limitation 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 would 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": "Setting an option here will disable areas of validation",
"type": "FLAGS",
"env": "VK_LAYER_DISABLES",
"flags": [
{
"key": "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
"label": "Thread Safety",
"description": "Thread checks. It may help with performance to run 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 running into crashes when authoring 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": "To redirect 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": "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": "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 one AMD GPUs",
"platforms": [ "WINDOWS", "LINUX", "MACOS"]
}
],
"default": []
}
]
}
}
}