VK_KHR_maintenance5
Other Extension Metadata
Last Modified Date
2023-05-02
Interactions and External Dependencies###### Contributors
- Stu Smith, AMD
- Tobias Hector, AMD
- Shahbaz Youssefi, Google
- Slawomir Cygan, Intel
- Lionel Landwerlin, Intel
- James Fitzpatrick, Imagination Technologies
- Andrew Garrard, Imagination Technologies
- Ralph Potter, Samsung
- Pan Gao, Huawei
- Jan-Harald Fredriksen, ARM
- Jon Leech, Khronos
- Mike Blumenkrantz, Valve
Description
VK_KHR_maintenance5
adds a collection of minor features, none of which
would warrant an entire extension of their own.
The new features are as follows:
- A new
VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR
format - A new
VK_FORMAT_A8_UNORM_KHR
format - A property to indicate that multisample coverage operations are performed after sample counting in EarlyFragmentTests mode
- Relax VkBufferView creation requirements by allowing subsets of the
associated VkBuffer usage using
VkBufferUsageFlags2CreateInfoKHR
- A new command vkCmdBindIndexBuffer2KHR, allowing a range of memory to be bound as an index buffer
- vkGetDeviceProcAddr must return
NULL
for supported core functions beyond the version requested by the application. - A property to indicate that the sample mask test is performed after sample counting in EarlyFragmentTests mode
vkCmdBindVertexBuffers2
now supports usingVK_WHOLE_SIZE
in thepSizes
parameter.- A default size of 1.0 is used if
PointSize
is not written - Shader modules are deprecated - applications can now pass VkShaderModuleCreateInfo as a chained structure to pipeline creation via VkPipelineShaderStageCreateInfo
- A function vkGetRenderingAreaGranularityKHR to query the optimal render area for a dynamic rendering instance.
- A property to indicate that depth/stencil texturing operations with
VK_COMPONENT_SWIZZLE_ONE
have defined behavior - Add vkGetImageSubresourceLayout2KHR and a new function vkGetDeviceImageSubresourceLayoutKHR to allow the application to query the image memory layout without having to create an image object and query it.
- Allow
VK_REMAINING_ARRAY_LAYERS
as thelayerCount
member of VkImageSubresourceLayers - Adds stronger guarantees for propagation of
VK_ERROR_DEVICE_LOST
return values - A property to indicate whether
PointSize
controls the final rasterization of polygons if polygon mode isVK_POLYGON_MODE_POINT
- Two properties to indicate the non-strict line rasterization algorithm used
- Two new flags words VkPipelineCreateFlagBits2KHR and VkBufferUsageFlagBits2KHR
- Physical-device-level functions can now be called with any value in the valid range for a type beyond the defined enumerants, such that applications can avoid checking individual features, extensions, or versions before querying supported properties of a particular enumerant.
- Clarification that copies between images of any type are allowed, treating 1D images as 2D images with a height of 1.
New Commands
- vkCmdBindIndexBuffer2KHR
- vkGetDeviceImageSubresourceLayoutKHR
- vkGetImageSubresourceLayout2KHR
- vkGetRenderingAreaGranularityKHR
New Structures
- VkDeviceImageSubresourceInfoKHR
- VkImageSubresource2KHR
- VkRenderingAreaInfoKHR
- VkSubresourceLayout2KHR
- Extending VkBufferViewCreateInfo, VkBufferCreateInfo, VkPhysicalDeviceExternalBufferInfo, VkDescriptorBufferBindingInfoEXT:
- Extending VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR:
- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
- Extending VkPhysicalDeviceProperties2:
New Enums
New Bitmasks
New Enum Constants
VK_KHR_MAINTENANCE_5_EXTENSION_NAME
VK_KHR_MAINTENANCE_5_SPEC_VERSION
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR
VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR
VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR
VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR
VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR
VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR
VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR
VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR
VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR
- Extending VkFormat:
VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR
VK_FORMAT_A8_UNORM_KHR
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR
VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR
VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR
VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR
VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
- Extending VkStructureType:
VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR
VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR
VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR
VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR
VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR
VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR
If VK_KHR_dynamic_rendering or Vulkan Version 1.3 and VK_EXT_fragment_density_map is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
If VK_KHR_dynamic_rendering or Vulkan Version 1.3 and VK_KHR_fragment_shading_rate is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
If VK_ARM_pipeline_opacity_micromap is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM
If VK_EXT_attachment_feedback_loop_layout is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
If VK_EXT_conditional_rendering is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT
If VK_EXT_descriptor_buffer is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT
VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT
VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT
If VK_EXT_graphics_pipeline_library is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT
VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
If VK_EXT_opacity_micromap is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
If VK_EXT_transform_feedback is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
If VK_KHR_acceleration_structure is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
If VK_KHR_pipeline_executable_properties is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR
If VK_KHR_pipeline_library is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR
If VK_KHR_ray_tracing_pipeline is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR
VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
If VK_KHR_video_decode_queue is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR
VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR
If VK_KHR_video_encode_queue is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR
VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR
If VK_NV_device_generated_commands is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV
If VK_NV_displacement_micromap is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV
If VK_NV_ray_tracing is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV
If VK_NV_ray_tracing_motion_blur is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV
If Vulkan Version 1.2 or VK_KHR_buffer_device_address or VK_EXT_buffer_device_address is supported:
- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR
If Vulkan Version 1.3 or VK_EXT_pipeline_creation_cache_control is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR
VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR
If Vulkan Version 1.4 or VK_EXT_pipeline_protected_access is supported:
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT
VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT
Promotion to Vulkan 1.4
Functionality in this extension is included in core Vulkan 1.4 with the KHR suffix omitted. The original type, enum and command names are still available as aliases of the core functionality.
Version History
- Revision 1, 2022-12-12 (Stu Smith)
- Initial revision