VK_KHR_format_feature_flags2(3)

# VK_KHR_format_feature_flags2(3) Manual Page

## Name

VK_KHR_format_feature_flags2 - device extension

Loading… please wait.

## Registered Extension Number

361

## Revision

2

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

- Interacts with VK_EXT_filter_cubic

- Interacts with VK_EXT_sampler_filter_minmax

- Interacts with VK_IMG_filter_cubic

## Deprecation State

- Promoted to Vulkan 1.3

## Contact

- Lionel Landwerlin [GitHub]llandwerlin

## 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_KHR` and `VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR` specify 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_KHR` specifies that an implementation supports depth comparison performed by `OpImage*Dref*` instructions on a given VkFormat. Previously the result of executing a `OpImage*Dref*` instruction on an image view, where the `format` was 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:

  - VkFormatProperties3KHR

## New Enums

- VkFormatFeatureFlagBits2KHR

## New Bitmasks

- VkFormatFeatureFlags2KHR

## New Enum Constants

- `VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME`

- `VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION`

- Extending VkFormatFeatureFlagBits2:

  - `VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR`

  - `VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR`

  - `VK_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

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

SPDX-License-Identifier: CC-BY-4.0