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, AMD
  • 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

If VK_KHR_shared_presentable_image is supported:

If Vulkan Version 1.2 or VK_EXT_separate_stencil_usage is supported:

New Enums

New Bitmasks

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:

If VK_KHR_dynamic_rendering or Vulkan Version 1.3 and VK_KHR_fragment_shading_rate is supported:

If VK_ARM_pipeline_opacity_micromap is supported:

If VK_ARM_tensors is supported:

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:

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:

If VK_EXT_fragment_density_map_offset is supported:

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:

If VK_EXT_multisampled_render_to_single_sampled is supported:

If VK_EXT_opacity_micromap is supported:

If VK_EXT_sample_locations is supported:

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:

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:

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:

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:

If VK_NV_corner_sampled_image is supported:

If VK_NV_device_generated_commands is supported:

If VK_NV_displacement_micromap is supported:

If VK_NV_ray_tracing is supported:

If VK_NV_ray_tracing_motion_blur is supported:

If VK_QCOM_image_processing is supported:

If VK_QCOM_tile_memory_heap is supported:

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:

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:

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.