VK_KHR_extended_flags(3)

# VK_KHR_extended_flags(3) Manual Page

## Name

VK_KHR_extended_flags - device extension

## Registered Extension Number

669

## Revision

1

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2
or
Vulkan Version 1.1

## API Interactions

- Interacts with VK_VERSION_1_0

- Interacts with VK_VERSION_1_2

- Interacts with VK_VERSION_1_3

- Interacts with VK_VERSION_1_4

- Interacts with VK_ARM_pipeline_opacity_micromap

- Interacts with VK_ARM_tensors

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

- Interacts with VK_EXT_graphics_pipeline_library

- Interacts with VK_EXT_image_2d_view_of_3d

- Interacts with VK_EXT_multisampled_render_to_single_sampled

- Interacts with VK_EXT_opacity_micromap

- Interacts with VK_EXT_pipeline_creation_cache_control

- Interacts with VK_EXT_sample_locations

- Interacts with VK_EXT_separate_stencil_usage

- Interacts with VK_EXT_transform_feedback

- Interacts with VK_HUAWEI_invocation_mask

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

- Interacts with VK_KHR_video_decode_queue

- Interacts with VK_KHR_video_encode_quantization_map

- Interacts with VK_KHR_video_encode_queue

- Interacts with VK_KHR_video_maintenance1

- Interacts with VK_NV_corner_sampled_image

- 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

- Interacts with VK_QCOM_image_processing

- Interacts with VK_QCOM_tile_memory_heap

## Contact

- Jon Leech [GitHub]oddhack

## Extension Proposal

VK_KHR_extended_flags

## Other Extension Metadata

Last Modified Date

  2025-12-17

IP Status

  No known IP claims.

Contributors

  - Andreas Süßenbach, NVIDIA

  - Daniel Koch, NVIDIA

  - Daniel Rakos, RasterGrid

  - Jon Leech, Independent

  - Matthew Netsch, QUALCOMM

  - Noah Fredriks, AMD

  - Spencer Fricke, LunarG

  - Ting Wei, ARM

  - Žiga Markuš, LunarG

## Description

This extension adds a new VkFormatFeatureFlagBits4KHR format feature flag type, supporting up to 64 additional flags beyond those defined by VkFormatFeatureFlagBits2; and a new VkFormatProperties4KHR structure to extend VkFormatProperties2. The new structure does not replace format feature flag bits specified by existing commands and structures, unlike VkFormatProperties3. Instead, it adds new flags to the existing APIs. Initially, no new format flag bits are defined.

This extension also adds a new VkImageCreateFlagBits2KHR image create flag type, supporting up to 32 additional flags, and a new VkImageCreateFlags2CreateInfoKHR structure to extend VkImageCreateInfo and other commands that specify image create flag bits. The new structure duplicates image create flag bits specified by existing commands and structures, while also adding up to 32 new flags. All the existing VkImageCreateFlagBits are given corresponding VkImageCreateFlagBits2KHR bits with the same meaning. Initially, no new image create flag bits are defined.

This extension also adds a new VkImageUsageFlagBits2KHR image usage flag type, supporting up to 32 additional flags, and a new VkImageUsageFlags2CreateInfoKHR structure to extend VkImageCreateInfo and other commands that specify image usage flag bits. The new structure duplicates image usage flag bits specified by existing commands and structures, while also adding up to 32 new flags. All the existing VkImageUsageFlagBits are given corresponding VkImageUsageFlagBits2KHR bits with the same meaning. Initially, no new image usage flag bits are defined.

The extension is infrastructure used because the API is running out of available bits in the VkFormatFeatureFlagBits2 and VkImageUsageFlagBits types, and will soon thereafter run out of bits in VkImageCreateFlagBits.

Finally, this extension adds all the same 64-bit flag types first introduced by VK_KHR_maintenance5. This will allow API variants like Vulkan SC to support the extended flags without requiring other, unrelated functionality of VK_KHR_maintenance5.

## New Structures

- Extending VkBufferViewCreateInfo, VkBufferCreateInfo, VkPhysicalDeviceExternalBufferInfo, VkDescriptorBufferBindingInfoEXT:

  - VkBufferUsageFlags2CreateInfoKHR

- Extending VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR:

  - VkPipelineCreateFlags2CreateInfoKHR

- Extending VkFormatProperties2:

  - VkFormatProperties4KHR

- Extending VkFramebufferAttachmentImageInfo, VkImageCreateInfo, VkPhysicalDeviceImageFormatInfo2, VkPhysicalDeviceSparseImageFormatInfo2, VkPhysicalDeviceVideoFormatInfoKHR, VkSurfaceCapabilities2KHR, VkSwapchainCreateInfoKHR, VkVideoFormatPropertiesKHR:

  - VkImageUsageFlags2CreateInfoKHR

- Extending VkImageCreateInfo, VkPhysicalDeviceImageFormatInfo2, VkFramebufferAttachmentImageInfo, VkVideoFormatPropertiesKHR:

  - VkImageCreateFlags2CreateInfoKHR

- Extending VkImageViewCreateInfo:

  - VkImageViewUsage2CreateInfoKHR

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceExtendedFlagsFeaturesKHR

If VK_KHR_shared_presentable_image is supported:

- Extending VkSurfaceCapabilities2KHR:

  - VkSharedPresentSurfaceCapabilities2KHR

If Vulkan Version 1.2 or VK_EXT_separate_stencil_usage is supported:

- Extending VkImageCreateInfo, VkPhysicalDeviceImageFormatInfo2:

  - VkImageStencilUsage2CreateInfoKHR

## New Enums

- VkBufferUsageFlagBits2KHR

- VkFormatFeatureFlagBits4KHR

- VkImageCreateFlagBits2KHR

- VkImageUsageFlagBits2KHR

- VkPipelineCreateFlagBits2KHR

## New Bitmasks

- VkBufferUsageFlags2KHR

- VkFormatFeatureFlags4KHR

- VkImageCreateFlags2KHR

- VkImageUsageFlags2KHR

- VkPipelineCreateFlags2KHR

## New Enum Constants

- `VK_KHR_EXTENDED_FLAGS_EXTENSION_NAME`

- `VK_KHR_EXTENDED_FLAGS_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 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_FORMAT_PROPERTIES_4_KHR

  - VK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHR

  - VK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHR

  - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHR

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHR

  - VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_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_ARM_tensors is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_TENSOR_ALIASING_BIT_ARM

If VK_EXT_attachment_feedback_loop_layout is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT

- 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 VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT

- Extending VkPipelineCreateFlagBits2:

  - VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT

If VK_EXT_fragment_density_map is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_SUBSAMPLED_BIT_EXT

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_FRAGMENT_DENSITY_MAP_BIT_EXT

If VK_EXT_fragment_density_map_offset is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_FRAGMENT_DENSITY_MAP_OFFSET_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_image_2d_view_of_3d is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_2D_VIEW_COMPATIBLE_BIT_EXT

If VK_EXT_multisampled_render_to_single_sampled is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_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_sample_locations is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_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_HUAWEI_invocation_mask is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_INVOCATION_MASK_BIT_HUAWEI

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_fragment_shading_rate is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_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_shared_presentable_image is supported:

- Extending VkStructureType:

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

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_VIDEO_DECODE_DPB_BIT_KHR

  - VK_IMAGE_USAGE_2_VIDEO_DECODE_DST_BIT_KHR

  - VK_IMAGE_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR

If VK_KHR_video_encode_quantization_map is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR

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

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_VIDEO_ENCODE_DPB_BIT_KHR

  - VK_IMAGE_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR

  - VK_IMAGE_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR

If VK_KHR_video_maintenance1 is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_VIDEO_PROFILE_INDEPENDENT_BIT_KHR

If VK_NV_corner_sampled_image is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_CORNER_SAMPLED_BIT_NV

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 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 VK_QCOM_image_processing is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_SAMPLE_BLOCK_MATCH_BIT_QCOM

  - VK_IMAGE_USAGE_2_SAMPLE_WEIGHT_BIT_QCOM

If VK_QCOM_tile_memory_heap is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_TILE_MEMORY_BIT_QCOM

If Vulkan Version 1.0 is supported:

- Extending VkImageCreateFlagBits2KHR:

  - VK_IMAGE_CREATE_2_2D_ARRAY_COMPATIBLE_BIT_KHR

  - VK_IMAGE_CREATE_2_ALIAS_BIT_KHR

  - VK_IMAGE_CREATE_2_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR

  - VK_IMAGE_CREATE_2_DISJOINT_BIT_KHR

  - VK_IMAGE_CREATE_2_EXTENDED_USAGE_BIT_KHR

  - VK_IMAGE_CREATE_2_PROTECTED_BIT_KHR

  - VK_IMAGE_CREATE_2_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR

If Vulkan Version 1.2 or VK_EXT_separate_stencil_usage is supported:

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_2_CREATE_INFO_KHR

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 is supported:

- Extending VkImageUsageFlagBits2KHR:

  - VK_IMAGE_USAGE_2_HOST_TRANSFER_BIT_KHR

## Version History

- Revision 0.1, 2025-12-17 (Jon Leech)

  - Initial draft

- Revision 0.2, 2026-01-19 (Jon Leech)

  - Add VkImageCreateFlags2KHR and import 64-bit flags types from VK_KHR_maintenance5.

- Revision 0.3, 2026-02-14 (Jon Leech)

  - Add a feature structure.

## 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-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0