VK_KHR_format_feature_flags2
Other Extension Metadata
Last Modified Date
2021-07-01
IP Status
No known IP claims.
Contributors
- Lionel Landwerlin, Intel
- Faith Ekstrand, Intel
- Tobias Hector, AMD
- Spencer Fricke, Samsung Electronics
- Graeme Leese, Broadcom
- Jan-Harald Fredriksen, ARM
Description
This extension adds a new VkFormatFeatureFlagBits2KHR 64bits format feature flag type to extend the existing VkFormatFeatureFlagBits which is limited to 31 flags. At the time of this writing 29 bits of VkFormatFeatureFlagBits are already used.
Because VkFormatProperties2 is already defined to extend the Vulkan 1.0 vkGetPhysicalDeviceFormatProperties command, this extension defines a new VkFormatProperties3KHR to extend the VkFormatProperties.
On top of replicating all the bits from VkFormatFeatureFlagBits, VkFormatFeatureFlagBits2KHR adds the following bits :
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHRandVK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHRspecify that an implementation supports reading and writing, respectively, a given VkFormat through storage operations without specifying the format in the shader.VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHRspecifies that an implementation supports depth comparison performed byOpImage*Dref*instructions on a given VkFormat. Previously the result of executing aOpImage*Dref*instruction on an image view, where theformatwas not one of the depth/stencil formats with a depth component, was undefined. This bit clarifies on which formats such instructions can be used.
Prior to version 2 of this extension, implementations exposing the
shaderStorageImageReadWithoutFormat and
shaderStorageImageWriteWithoutFormat features may not report
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR and
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR in
VkFormatProperties3KHR::bufferFeatures.
Despite this, buffer reads/writes are supported as intended by the original
features.
New Structures
- Extending VkFormatProperties2:
New Enums
New Bitmasks
New Enum Constants
VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAMEVK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION- Extending VkFormatFeatureFlagBits2:
VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHRVK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHRVK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHRVK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHRVK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHRVK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHRVK_FORMAT_FEATURE_2_DISJOINT_BIT_KHRVK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHRVK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHRVK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHRVK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHRVK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHRVK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHRVK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHRVK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHRVK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHRVK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHRVK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHRVK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHRVK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHRVK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHRVK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHRVK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHRVK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHRVK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR
- Extending VkStructureType:
VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR
If VK_EXT_filter_cubic or VK_IMG_filter_cubic is supported:
- Extending VkFormatFeatureFlagBits2:
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
If Vulkan Version 1.2 or VK_EXT_sampler_filter_minmax is supported:
- Extending VkFormatFeatureFlagBits2:
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR
Promotion to Vulkan 1.3
Vulkan APIs in this extension are included in core Vulkan 1.3, with the KHR suffix omitted. External interactions defined by this extension, such as SPIR-V token names, retain their original names. The original Vulkan API names are still available as aliases of the core functionality.
Version History
- Revision 2, 2022-07-20 (Lionel Landwerlin)
- Clarify that VK_FORMAT_FEATURE_2_STORAGE_(READ|WRITE)_WITHOUT_FORMAT_BIT also apply to buffer views.
- Revision 1, 2020-07-21 (Lionel Landwerlin)
- Initial draft