VK_KHR_maintenance5(3)

# 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

Version 1.1
and
VK_KHR_dynamic_rendering

## API Interactions

- Interacts with VK_VERSION_1_1

- Interacts with VK_VERSION_1_2

- Interacts with VK_VERSION_1_3

- 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_device_group

- 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

## Contact

- Stu Smith 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 entry point 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 VkFormat:

  - `VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR`

  - `VK_FORMAT_A8_UNORM_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_EXT_attachment_feedback_loop_layout is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `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 VkBufferUsageFlagBits2KHR:

  - `VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT`

If VK_EXT_descriptor_buffer is supported:

- Extending VkBufferUsageFlagBits2KHR:

  - `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 VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT`

If VK_EXT_graphics_pipeline_library is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `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 VkBufferUsageFlagBits2KHR:

  - `VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT`

  - `VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT`

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT`

If VK_EXT_pipeline_protected_access is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT`

  - `VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT`

If VK_EXT_transform_feedback is supported:

- Extending VkBufferUsageFlagBits2KHR:

  - `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 VkBufferUsageFlagBits2KHR:

  - `VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR`

  - `VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR`

If VK_KHR_dynamic_rendering and VK_EXT_fragment_density_map is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT`

If VK_KHR_dynamic_rendering and VK_KHR_fragment_shading_rate is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR`

If VK_KHR_pipeline_executable_properties is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `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 VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR`

If VK_KHR_ray_tracing_pipeline is supported:

- Extending VkBufferUsageFlagBits2KHR:

  - `VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR`

- Extending VkPipelineCreateFlagBits2KHR:

  - `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 VkBufferUsageFlagBits2KHR:

  - `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 VkBufferUsageFlagBits2KHR:

  - `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 VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV`

If VK_NV_displacement_micromap is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV`

If VK_NV_ray_tracing is supported:

- Extending VkBufferUsageFlagBits2KHR:

  - `VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV`

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV`

If VK_NV_ray_tracing_motion_blur is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV`

If Version 1.1 or VK_KHR_device_group is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR`

  - `VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR`

If Version 1.2 or VK_KHR_buffer_device_address or VK_EXT_buffer_device_address is supported:

- Extending VkBufferUsageFlagBits2KHR:

  - `VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR`

If Version 1.3 or VK_EXT_pipeline_creation_cache_control is supported:

- Extending VkPipelineCreateFlagBits2KHR:

  - `VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR`

  - `VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR`

## Issues

None.

## Version History

- Revision 1, 2022-12-12 (Stu Smith)

  - Initial revision

## See Also

VkDeviceImageSubresourceInfoKHR, VkImageSubresource2KHR, VkPhysicalDeviceMaintenance5FeaturesKHR, VkPhysicalDeviceMaintenance5PropertiesKHR, VkRenderingAreaInfoKHR, VkSubresourceLayout2KHR, vkCmdBindIndexBuffer2KHR, vkGetDeviceImageSubresourceLayoutKHR, vkGetImageSubresourceLayout2KHR, vkGetRenderingAreaGranularityKHR

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