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
- Extending VkBufferViewCreateInfo, VkBufferCreateInfo, VkPhysicalDeviceExternalBufferInfo, VkDescriptorBufferBindingInfoEXT:
- Extending VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR:
- Extending VkFormatProperties2:
- Extending VkFramebufferAttachmentImageInfo, VkImageCreateInfo, VkPhysicalDeviceImageFormatInfo2, VkPhysicalDeviceSparseImageFormatInfo2, VkPhysicalDeviceVideoFormatInfoKHR, VkSurfaceCapabilities2KHR, VkSwapchainCreateInfoKHR, VkVideoFormatPropertiesKHR:
- Extending VkImageCreateInfo, VkPhysicalDeviceImageFormatInfo2, VkFramebufferAttachmentImageInfo, VkVideoFormatPropertiesKHR:
- Extending VkImageViewCreateInfo:
- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
If VK_KHR_shared_presentable_image is supported:
If Vulkan Version 1.2 or VK_EXT_separate_stencil_usage is supported:
New Enums
- VkBufferUsageFlagBits2KHR
- VkFormatFeatureFlagBits4KHR
- VkImageCreateFlagBits2KHR
- VkImageUsageFlagBits2KHR
- VkPipelineCreateFlagBits2KHR
New Bitmasks
- VkBufferUsageFlags2KHR
- VkFormatFeatureFlags4KHR
- VkImageCreateFlags2KHR
- VkImageUsageFlags2KHR
- VkPipelineCreateFlags2KHR
New Enum Constants
VK_KHR_EXTENDED_FLAGS_EXTENSION_NAMEVK_KHR_EXTENDED_FLAGS_SPEC_VERSION- Extending VkBufferUsageFlagBits2:
VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHRVK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHRVK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHRVK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHRVK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHRVK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHRVK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHRVK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHRVK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR
- Extending VkPipelineCreateFlagBits2:
VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHRVK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHRVK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHRVK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHRVK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
- Extending VkStructureType:
VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHRVK_STRUCTURE_TYPE_FORMAT_PROPERTIES_4_KHRVK_STRUCTURE_TYPE_IMAGE_CREATE_FLAGS_2_CREATE_INFO_KHRVK_STRUCTURE_TYPE_IMAGE_USAGE_FLAGS_2_CREATE_INFO_KHRVK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_2_CREATE_INFO_KHRVK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_FLAGS_FEATURES_KHRVK_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_EXTVK_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_EXTVK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXTVK_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_EXTVK_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_EXTVK_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_EXTVK_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_KHRVK_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_KHRVK_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_KHRVK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHRVK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHRVK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHRVK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHRVK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHRVK_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_KHRVK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR
- Extending VkImageUsageFlagBits2KHR:
VK_IMAGE_USAGE_2_VIDEO_DECODE_DPB_BIT_KHRVK_IMAGE_USAGE_2_VIDEO_DECODE_DST_BIT_KHRVK_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_KHRVK_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_KHRVK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR
- Extending VkImageUsageFlagBits2KHR:
VK_IMAGE_USAGE_2_VIDEO_ENCODE_DPB_BIT_KHRVK_IMAGE_USAGE_2_VIDEO_ENCODE_DST_BIT_KHRVK_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_QCOMVK_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_KHRVK_IMAGE_CREATE_2_ALIAS_BIT_KHRVK_IMAGE_CREATE_2_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHRVK_IMAGE_CREATE_2_DISJOINT_BIT_KHRVK_IMAGE_CREATE_2_EXTENDED_USAGE_BIT_KHRVK_IMAGE_CREATE_2_PROTECTED_BIT_KHRVK_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_KHRVK_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.