# VK_KHR_maintenance5(3) Manual Page

## Name

VK_KHR_maintenance5 - device extension

Loading… please wait.

## Registered Extension Number

471

## Revision

1

## Ratification Status

Ratified

## Extension and Version Dependencies

Vulkan Version 1.1
and
VK_KHR_dynamic_rendering
or
Vulkan Version 1.3

## API Interactions

- Interacts with VK_VERSION_1_2

- Interacts with VK_VERSION_1_3

- Interacts with VK_VERSION_1_4

- Interacts with VK_EXT_attachment_feedback_loop_layout

- Interacts with VK_EXT_buffer_device_address

- Interacts with VK_EXT_conditional_rendering

- Interacts with VK_EXT_descriptor_buffer

- Interacts with VK_EXT_fragment_density_map

- Interacts with VK_EXT_graphics_pipeline_library

- Interacts with VK_EXT_opacity_micromap

- Interacts with VK_EXT_pipeline_creation_cache_control

- Interacts with VK_EXT_pipeline_protected_access

- Interacts with VK_EXT_transform_feedback

- Interacts with VK_KHR_acceleration_structure

- Interacts with VK_KHR_buffer_device_address

- Interacts with VK_KHR_dynamic_rendering

- Interacts with VK_KHR_fragment_shading_rate

- Interacts with VK_KHR_pipeline_executable_properties

- Interacts with VK_KHR_pipeline_library

- Interacts with VK_KHR_ray_tracing_pipeline

- Interacts with VK_KHR_video_decode_queue

- Interacts with VK_KHR_video_encode_queue

- Interacts with VK_NV_device_generated_commands

- Interacts with VK_NV_displacement_micromap

- Interacts with VK_NV_ray_tracing

- Interacts with VK_NV_ray_tracing_motion_blur

## Deprecation State

- Promoted to Vulkan 1.4

## Contact

- Stu Smith [GitHub]stu-s

## Extension Proposal

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 using `VK_WHOLE_SIZE` in the `pSizes` 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 struct 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 the `layerCount` 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 is `VK_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:

  - VkBufferUsageFlags2CreateInfoKHR

- Extending VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR:

  - VkPipelineCreateFlags2CreateInfoKHR

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceMaintenance5FeaturesKHR

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceMaintenance5PropertiesKHR

## New Enums

- VkBufferUsageFlagBits2KHR

- VkPipelineCreateFlagBits2KHR

## New Bitmasks

- VkBufferUsageFlags2KHR

- VkPipelineCreateFlags2KHR

## 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_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

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0