Formats
Supported buffer and image formats may vary across implementations. A minimum set of format features are guaranteed, but others must be explicitly queried before use to ensure they are supported by the implementation.
The features for the set of formats (VkFormat) supported by the implementation are queried individually using the vkGetPhysicalDeviceFormatProperties command.
Format Definition
Compatible Formats of Planes of Multi-Planar Formats
Individual planes of multi-planar formats are size-compatible with single-plane color formats if they occupy the same number of bits per texel block, and are compatible with those formats if they have the same block extent.
In the following table, individual planes of a multi-planar format are compatible with the format listed against the relevant plane index for that multi-planar format, and any format compatible with the listed single-plane format according to Format Compatibility Classes. These planes are also size-compatible with any format that is size-compatible with the listed single-plane format.
| Plane | Compatible format for plane | Width relative to the width w of the plane with the largest dimensions | Height relative to the height h of the plane with the largest dimensions |
|---|---|---|---|
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
2 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h |
2 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w | h |
2 |
| w | h |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
2 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h |
2 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w | h |
2 |
| w | h |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
2 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h |
2 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w | h |
2 |
| w | h |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
2 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h |
2 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w/2 | h |
| |||
0 |
| w | h |
1 |
| w | h |
2 |
| w | h |
| |||
0 |
| w | h |
1 |
| w | h |
| |||
0 |
| w | h |
1 |
| w | h |
| |||
0 |
| w | h |
1 |
| w | h |
| |||
0 |
| w | h |
1 |
| w | h |
| |||
0 |
| w | h |
1 |
| w/2 | h/2 |
| |||
0 |
| w | h |
1 |
| w/2 | h |
Compatible Formats for Depth-Stencil to/from Color Copies
If the maintenance8 feature is enabled,
individual aspects of depth-stencil formats are size-compatible with certain
single-component color formats when performing bit-wise copy operations.
The following is a complete list of all per-aspect format compatibility
relations by size:
- 32-bit depth (
VK_FORMAT_D32_SFLOAT,VK_FORMAT_D32_SFLOAT_S8_UINT)VK_FORMAT_R32_SFLOAT,VK_FORMAT_R32_SINT,VK_FORMAT_R32_UINT
- 24-bit depth (
VK_FORMAT_X8_D24_UNORM_PACK32,VK_FORMAT_D24_UNORM_S8_UINT)VK_FORMAT_R32_SFLOAT,VK_FORMAT_R32_SINT,VK_FORMAT_R32_UINT
- 16-bit depth (
VK_FORMAT_D16_UNORM,VK_FORMAT_D16_UNORM_S8_UINT)VK_FORMAT_R16_SFLOAT,VK_FORMAT_R16_UNORM,VK_FORMAT_R16_SNORM,VK_FORMAT_R16_UINT,VK_FORMAT_R16_SINT
- 8-bit stencil (
VK_FORMAT_S8_UINT,VK_FORMAT_D16_UNORM_S8_UINT,VK_FORMAT_D24_UNORM_S8_UINT,VK_FORMAT_D32_SFLOAT_S8_UINT)VK_FORMAT_R8_UINT,VK_FORMAT_R8_SINT,VK_FORMAT_R8_UNORM,VK_FORMAT_R8_SNORM
Multi-Planar Format Image Aspect
When using VkImageAspectFlagBits to select a plane of a multi-planar format, the following are the valid options:
- Two planes
VK_IMAGE_ASPECT_PLANE_0_BITVK_IMAGE_ASPECT_PLANE_1_BIT
- Three planes
VK_IMAGE_ASPECT_PLANE_0_BITVK_IMAGE_ASPECT_PLANE_1_BITVK_IMAGE_ASPECT_PLANE_2_BIT
Packed Formats
For the purposes of address alignment when accessing buffer memory containing vertex attribute or texel data, the following formats are considered packed - components of the texels or attributes are stored in bitfields packed into one or more 8-, 16-, or 32-bit fundamental data type.
- Packed into 8-bit data types:
VK_FORMAT_R4G4_UNORM_PACK8
- Packed into 16-bit data types:
VK_FORMAT_R4G4B4A4_UNORM_PACK16VK_FORMAT_B4G4R4A4_UNORM_PACK16VK_FORMAT_R5G6B5_UNORM_PACK16VK_FORMAT_B5G6R5_UNORM_PACK16VK_FORMAT_R5G5B5A1_UNORM_PACK16VK_FORMAT_B5G5R5A1_UNORM_PACK16VK_FORMAT_A1R5G5B5_UNORM_PACK16VK_FORMAT_A1B5G5R5_UNORM_PACK16VK_FORMAT_R10X6_UNORM_PACK16VK_FORMAT_R10X6G10X6_UNORM_2PACK16VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16VK_FORMAT_R12X4_UNORM_PACK16VK_FORMAT_R12X4G12X4_UNORM_2PACK16VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16VK_FORMAT_A4R4G4B4_UNORM_PACK16VK_FORMAT_A4B4G4R4_UNORM_PACK16VK_FORMAT_R10X6_UINT_PACK16_ARMVK_FORMAT_R10X6G10X6_UINT_2PACK16_ARMVK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARMVK_FORMAT_R12X4_UINT_PACK16_ARMVK_FORMAT_R12X4G12X4_UINT_2PACK16_ARMVK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARMVK_FORMAT_R14X2_UINT_PACK16_ARMVK_FORMAT_R14X2G14X2_UINT_2PACK16_ARMVK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARMVK_FORMAT_R14X2_UNORM_PACK16_ARMVK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARMVK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARMVK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARMVK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM
- Packed into 32-bit data types:
VK_FORMAT_A8B8G8R8_UNORM_PACK32VK_FORMAT_A8B8G8R8_SNORM_PACK32VK_FORMAT_A8B8G8R8_USCALED_PACK32VK_FORMAT_A8B8G8R8_SSCALED_PACK32VK_FORMAT_A8B8G8R8_UINT_PACK32VK_FORMAT_A8B8G8R8_SINT_PACK32VK_FORMAT_A8B8G8R8_SRGB_PACK32VK_FORMAT_A2R10G10B10_UNORM_PACK32VK_FORMAT_A2R10G10B10_SNORM_PACK32VK_FORMAT_A2R10G10B10_USCALED_PACK32VK_FORMAT_A2R10G10B10_SSCALED_PACK32VK_FORMAT_A2R10G10B10_UINT_PACK32VK_FORMAT_A2R10G10B10_SINT_PACK32VK_FORMAT_A2B10G10R10_UNORM_PACK32VK_FORMAT_A2B10G10R10_SNORM_PACK32VK_FORMAT_A2B10G10R10_USCALED_PACK32VK_FORMAT_A2B10G10R10_SSCALED_PACK32VK_FORMAT_A2B10G10R10_UINT_PACK32VK_FORMAT_A2B10G10R10_SINT_PACK32VK_FORMAT_B10G11R11_UFLOAT_PACK32VK_FORMAT_E5B9G9R9_UFLOAT_PACK32VK_FORMAT_X8_D24_UNORM_PACK32
Identification of Formats
A format is represented by a single enum value.
The name of a format is usually built up by using the following pattern:
VK_FORMAT_{component-format|compression-scheme}_{numeric-format}
The component-format indicates either the size of the R, G, B, and A components (if they are present) in the case of a color format, or the size of the depth (D) and stencil (S) components (if they are present) in the case of a depth/stencil format (see below). An X indicates a component that is unused, but may be present for padding.
| Numeric format | Type-Declaration instructions | Numeric type | Description |
|---|---|---|---|
| OpTypeFloat | floating-point | The components are unsigned normalized values in the range [0,1] |
| OpTypeFloat | floating-point | The components are signed normalized values in the range [-1,1] |
| OpTypeFloat | floating-point | The components are unsigned integer values that get converted to floating-point in the range [0,2n-1] |
| OpTypeFloat | floating-point | The components are signed integer values that get converted to floating-point in the range [-2n-1,2n-1-1] |
| OpTypeInt | unsigned integer | The components are unsigned integer values in the range [0,2n-1] |
| OpTypeInt | signed integer | The components are signed integer values in the range [-2n-1,2n-1-1] |
| OpTypeFloat | floating-point | The components are unsigned floating-point numbers (used by packed, shared exponent, and some compressed formats) |
| OpTypeFloat | floating-point | The components are signed floating-point numbers |
| OpTypeFloat | floating-point | The R, G, and B components are unsigned normalized values that represent values using sRGB nonlinear encoding, while the A component (if one exists) is a regular unsigned normalized value |
| OpTypeInt | scaled signed integer | The components are signed fractional integer values that get converted to floating-point in the range [-1024,1023.96875] |
| OpTypeBool | boolean | The components are booleans |
n is the number of bits in the component. | |||
The suffix _PACKnn indicates that the format is packed into an
underlying type with nn bits.
The suffix _mPACKnn is a short-hand that indicates that the format has
m groups of components (which may or may not be stored in separate
planes) that are each packed into an underlying type with nn bits.
The suffix _BLOCK indicates that the format is a block-compressed
format, with the representation of multiple texels encoded interdependently
within a region.
The suffix _FPENCODING_<encoding> indicates that the format uses a
floating-point encoding, specified by <encoding>, that is different from
IEEE754.
| FP Encoding | Description |
|---|---|
| FLOAT8E4M3 | 8-bit signed float with 4-bit mantissa and 3-bit exponent |
| FLOAT8E5M2 | 8-bit signed float with 5-bit mantissa and 2-bit exponent |
| BFLOAT16 | 16-bit signed float with 7-bit mantissa and 8-bit exponent (a.k.a. "brain float 16") |
| Compression scheme | Description |
|---|---|
BC | Block Compression. SeeBlock-Compressed Image Formats. |
ETC2 | Ericsson Texture Compression. SeeETC Compressed Image Formats. |
EAC | ETC2 Alpha Compression. SeeETC Compressed Image Formats. |
ASTC | Adaptive Scalable Texture Compression (LDR Profile). SeeASTC Compressed Image Formats. |
For multi-planar images, the components in separate planes are separated
by underscores, and the number of planes is indicated by the addition of a
_2PLANE or _3PLANE suffix.
Similarly, the separate aspects of depth-stencil formats are separated by
underscores, although these are not considered separate planes.
Formats are suffixed by _422 to indicate that planes other than the
first are reduced in size by a factor of two horizontally or that the R and
B values appear at half the horizontal frequency of the G values, _420
to indicate that planes other than the first are reduced in size by a factor
of two both horizontally and vertically, and _444 for consistency to
indicate that all three planes of a three-planar image are the same size.
Representation and Texel Block Size
Color formats must be represented in memory in exactly the form indicated by the format’s name. This means that promoting one format to another with more bits per component and/or additional components must not occur for color formats. Depth/stencil formats have more relaxed requirements as discussed below.
Each format has a texel block size, the number of bytes used to store one texel block (a single addressable element of an uncompressed image, or a single compressed block of a compressed image). The texel block size for each format is shown in the Compatible formats table.
The representation of non-packed formats is that the first component specified in the name of the format is in the lowest memory addresses and the last component specified is in the highest memory addresses. See Byte Mappings for Non-Packed/Compressed Color Formats. The in-memory ordering of bytes within a component is determined by the host endianness.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ← Byte |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
R |
| |||||||||||||||
R | G |
| ||||||||||||||
R | G | B |
| |||||||||||||
B | G | R |
| |||||||||||||
R | G | B | A |
| ||||||||||||
B | G | R | A |
| ||||||||||||
A |
| |||||||||||||||
G0 | B | G1 | R |
| ||||||||||||
B | G0 | R | G1 |
| ||||||||||||
R |
| |||||||||||||||
R | G |
| ||||||||||||||
R | G | B |
| |||||||||||||
R | G | B | A |
| ||||||||||||
G0 | B | G1 | R |
| ||||||||||||
B | G0 | R | G1 |
| ||||||||||||
R |
| |||||||||||||||
R | G |
| ||||||||||||||
R | G | B |
| |||||||||||||
R | G | B | A |
| ||||||||||||
R |
| |||||||||||||||
R | G |
| ||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Packed formats store multiple components within one underlying type. The bit representation is that the first component specified in the name of the format is in the most-significant bits and the last component specified is in the least-significant bits of the underlying type. The in-memory ordering of bytes comprising the underlying type is determined by the host endianness.
| Bit | |||||||
|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||
R | G | ||||||
3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| Bit | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | G | B | A | ||||||||||||
3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| |||||||||||||||
B | G | R | A | ||||||||||||
3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| |||||||||||||||
A | R | G | B | ||||||||||||
3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| |||||||||||||||
A | B | G | R | ||||||||||||
3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | G | B | |||||||||||||
4 | 3 | 2 | 1 | 0 | 5 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||
B | G | R | |||||||||||||
4 | 3 | 2 | 1 | 0 | 5 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | G | B | A | ||||||||||||
4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 0 |
| |||||||||||||||
B | G | R | A | ||||||||||||
4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 0 |
| |||||||||||||||
A | R | G | B | ||||||||||||
0 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||
A | B | G | R | ||||||||||||
0 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | X | ||||||||||||||
9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | X | ||||||||||||||
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | X | ||||||||||||||
9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | X | ||||||||||||||
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| |||||||||||||||
R | X | ||||||||||||||
11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 |
| Bit | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||||||||||||||||||
A | B | G | R | ||||||||||||||||||||||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||||||||||||||||||
A | R | G | B | ||||||||||||||||||||||||||||
1 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||||||||||||||||||
A | B | G | R | ||||||||||||||||||||||||||||
1 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||||||||||||||||||
B | G | R | |||||||||||||||||||||||||||||
9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||||||||||||||||||
E | B | G | R | ||||||||||||||||||||||||||||
4 | 3 | 2 | 1 | 0 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| |||||||||||||||||||||||||||||||
X | D | ||||||||||||||||||||||||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Depth/Stencil Formats
Depth/stencil formats are considered opaque and need not be stored in the exact number of bits per texel or component ordering indicated by the format enum. However, implementations must not substitute a different depth or stencil precision than is described in the format (e.g. D16 must not be implemented as D24 or D32).
Format Compatibility Classes
Uncompressed color formats are compatible with each other if they occupy
the same number of bits per texel block
as long as neither or both are alpha formats (e.g.,
VK_FORMAT_A8_UNORM)
.
Compressed color formats are compatible with each other if the only
difference between them is the numeric format of
the uncompressed texels.
Each depth/stencil format is only compatible with itself.
In the following table, all the formats in the
same row are compatible.
Each format has a defined texel block extent specifying how many texels
each texel block represents in each dimension.
| Class, Texel Block Size, Texel Block Extent, # Texels/Block | Formats |
|---|---|
| 8-bitBlock size 1 byte1x1x1 block extent1 texel/block | VK_FORMAT_R8_BOOL_ARM,VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM,VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM,VK_FORMAT_R4G4_UNORM_PACK8,VK_FORMAT_R8_UNORM,VK_FORMAT_R8_SNORM,VK_FORMAT_R8_USCALED,VK_FORMAT_R8_SSCALED,VK_FORMAT_R8_UINT,VK_FORMAT_R8_SINT,VK_FORMAT_R8_SRGB |
| 16-bitBlock size 2 byte1x1x1 block extent1 texel/block | VK_FORMAT_A1B5G5R5_UNORM_PACK16,VK_FORMAT_R10X6_UNORM_PACK16,VK_FORMAT_R12X4_UNORM_PACK16,VK_FORMAT_A4R4G4B4_UNORM_PACK16,VK_FORMAT_A4B4G4R4_UNORM_PACK16,VK_FORMAT_R10X6_UINT_PACK16_ARM,VK_FORMAT_R12X4_UINT_PACK16_ARM,VK_FORMAT_R14X2_UINT_PACK16_ARM,VK_FORMAT_R14X2_UNORM_PACK16_ARM,VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM,VK_FORMAT_R4G4B4A4_UNORM_PACK16,VK_FORMAT_B4G4R4A4_UNORM_PACK16,VK_FORMAT_R5G6B5_UNORM_PACK16,VK_FORMAT_B5G6R5_UNORM_PACK16,VK_FORMAT_R5G5B5A1_UNORM_PACK16,VK_FORMAT_B5G5R5A1_UNORM_PACK16,VK_FORMAT_A1R5G5B5_UNORM_PACK16,VK_FORMAT_R8G8_UNORM,VK_FORMAT_R8G8_SNORM,VK_FORMAT_R8G8_USCALED,VK_FORMAT_R8G8_SSCALED,VK_FORMAT_R8G8_UINT,VK_FORMAT_R8G8_SINT,VK_FORMAT_R8G8_SRGB,VK_FORMAT_R16_UNORM,VK_FORMAT_R16_SNORM,VK_FORMAT_R16_USCALED,VK_FORMAT_R16_SSCALED,VK_FORMAT_R16_UINT,VK_FORMAT_R16_SINT,VK_FORMAT_R16_SFLOAT |
| 8-bit alphaBlock size 1 byte1x1x1 block extent1 texel/block | VK_FORMAT_A8_UNORM |
| 24-bitBlock size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_R8G8B8_UNORM,VK_FORMAT_R8G8B8_SNORM,VK_FORMAT_R8G8B8_USCALED,VK_FORMAT_R8G8B8_SSCALED,VK_FORMAT_R8G8B8_UINT,VK_FORMAT_R8G8B8_SINT,VK_FORMAT_R8G8B8_SRGB,VK_FORMAT_B8G8R8_UNORM,VK_FORMAT_B8G8R8_SNORM,VK_FORMAT_B8G8R8_USCALED,VK_FORMAT_B8G8R8_SSCALED,VK_FORMAT_B8G8R8_UINT,VK_FORMAT_B8G8R8_SINT,VK_FORMAT_B8G8R8_SRGB |
| 32-bitBlock size 4 byte1x1x1 block extent1 texel/block | VK_FORMAT_R10X6G10X6_UNORM_2PACK16,VK_FORMAT_R12X4G12X4_UNORM_2PACK16,VK_FORMAT_R16G16_SFIXED5_NV,VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM,VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM,VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM,VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM,VK_FORMAT_R8G8B8A8_UNORM,VK_FORMAT_R8G8B8A8_SNORM,VK_FORMAT_R8G8B8A8_USCALED,VK_FORMAT_R8G8B8A8_SSCALED,VK_FORMAT_R8G8B8A8_UINT,VK_FORMAT_R8G8B8A8_SINT,VK_FORMAT_R8G8B8A8_SRGB,VK_FORMAT_B8G8R8A8_UNORM,VK_FORMAT_B8G8R8A8_SNORM,VK_FORMAT_B8G8R8A8_USCALED,VK_FORMAT_B8G8R8A8_SSCALED,VK_FORMAT_B8G8R8A8_UINT,VK_FORMAT_B8G8R8A8_SINT,VK_FORMAT_B8G8R8A8_SRGB,VK_FORMAT_A8B8G8R8_UNORM_PACK32,VK_FORMAT_A8B8G8R8_SNORM_PACK32,VK_FORMAT_A8B8G8R8_USCALED_PACK32,VK_FORMAT_A8B8G8R8_SSCALED_PACK32,VK_FORMAT_A8B8G8R8_UINT_PACK32,VK_FORMAT_A8B8G8R8_SINT_PACK32,VK_FORMAT_A8B8G8R8_SRGB_PACK32,VK_FORMAT_A2R10G10B10_UNORM_PACK32,VK_FORMAT_A2R10G10B10_SNORM_PACK32,VK_FORMAT_A2R10G10B10_USCALED_PACK32,VK_FORMAT_A2R10G10B10_SSCALED_PACK32,VK_FORMAT_A2R10G10B10_UINT_PACK32,VK_FORMAT_A2R10G10B10_SINT_PACK32,VK_FORMAT_A2B10G10R10_UNORM_PACK32,VK_FORMAT_A2B10G10R10_SNORM_PACK32,VK_FORMAT_A2B10G10R10_USCALED_PACK32,VK_FORMAT_A2B10G10R10_SSCALED_PACK32,VK_FORMAT_A2B10G10R10_UINT_PACK32,VK_FORMAT_A2B10G10R10_SINT_PACK32,VK_FORMAT_R16G16_UNORM,VK_FORMAT_R16G16_SNORM,VK_FORMAT_R16G16_USCALED,VK_FORMAT_R16G16_SSCALED |
| 32-bit (continued)Block size 4 byte1x1x1 block extent1 texel/block | VK_FORMAT_R16G16_UINT,VK_FORMAT_R16G16_SINT,VK_FORMAT_R16G16_SFLOAT,VK_FORMAT_R32_UINT,VK_FORMAT_R32_SINT,VK_FORMAT_R32_SFLOAT,VK_FORMAT_B10G11R11_UFLOAT_PACK32,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 |
| 48-bitBlock size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_R16G16B16_UNORM,VK_FORMAT_R16G16B16_SNORM,VK_FORMAT_R16G16B16_USCALED,VK_FORMAT_R16G16B16_SSCALED,VK_FORMAT_R16G16B16_UINT,VK_FORMAT_R16G16B16_SINT,VK_FORMAT_R16G16B16_SFLOAT |
| 64-bitBlock size 8 byte1x1x1 block extent1 texel/block | VK_FORMAT_R16G16B16A16_UNORM,VK_FORMAT_R16G16B16A16_SNORM,VK_FORMAT_R16G16B16A16_USCALED,VK_FORMAT_R16G16B16A16_SSCALED,VK_FORMAT_R16G16B16A16_UINT,VK_FORMAT_R16G16B16A16_SINT,VK_FORMAT_R16G16B16A16_SFLOAT,VK_FORMAT_R32G32_UINT,VK_FORMAT_R32G32_SINT,VK_FORMAT_R32G32_SFLOAT,VK_FORMAT_R64_UINT,VK_FORMAT_R64_SINT,VK_FORMAT_R64_SFLOAT |
| 96-bitBlock size 12 byte1x1x1 block extent1 texel/block | VK_FORMAT_R32G32B32_UINT,VK_FORMAT_R32G32B32_SINT,VK_FORMAT_R32G32B32_SFLOAT |
| 128-bitBlock size 16 byte1x1x1 block extent1 texel/block | VK_FORMAT_R32G32B32A32_UINT,VK_FORMAT_R32G32B32A32_SINT,VK_FORMAT_R32G32B32A32_SFLOAT,VK_FORMAT_R64G64_UINT,VK_FORMAT_R64G64_SINT,VK_FORMAT_R64G64_SFLOAT |
| 192-bitBlock size 24 byte1x1x1 block extent1 texel/block | VK_FORMAT_R64G64B64_UINT,VK_FORMAT_R64G64B64_SINT,VK_FORMAT_R64G64B64_SFLOAT |
| 256-bitBlock size 32 byte1x1x1 block extent1 texel/block | VK_FORMAT_R64G64B64A64_UINT,VK_FORMAT_R64G64B64A64_SINT,VK_FORMAT_R64G64B64A64_SFLOAT |
| D16Block size 2 byte1x1x1 block extent1 texel/block | VK_FORMAT_D16_UNORM |
| D24Block size 4 byte1x1x1 block extent1 texel/block | VK_FORMAT_X8_D24_UNORM_PACK32 |
| D32Block size 4 byte1x1x1 block extent1 texel/block | VK_FORMAT_D32_SFLOAT |
| S8Block size 1 byte1x1x1 block extent1 texel/block | VK_FORMAT_S8_UINT |
| D16S8Block size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_D16_UNORM_S8_UINT |
| D24S8Block size 4 byte1x1x1 block extent1 texel/block | VK_FORMAT_D24_UNORM_S8_UINT |
| D32S8Block size 5 byte1x1x1 block extent1 texel/block | VK_FORMAT_D32_SFLOAT_S8_UINT |
| BC1_RGBBlock size 8 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC1_RGB_UNORM_BLOCK,VK_FORMAT_BC1_RGB_SRGB_BLOCK |
| BC1_RGBABlock size 8 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC1_RGBA_UNORM_BLOCK,VK_FORMAT_BC1_RGBA_SRGB_BLOCK |
| BC2Block size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC2_UNORM_BLOCK,VK_FORMAT_BC2_SRGB_BLOCK |
| BC3Block size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC3_UNORM_BLOCK,VK_FORMAT_BC3_SRGB_BLOCK |
| BC4Block size 8 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC4_UNORM_BLOCK,VK_FORMAT_BC4_SNORM_BLOCK |
| BC5Block size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC5_UNORM_BLOCK,VK_FORMAT_BC5_SNORM_BLOCK |
| BC6HBlock size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC6H_UFLOAT_BLOCK,VK_FORMAT_BC6H_SFLOAT_BLOCK |
| BC7Block size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_BC7_UNORM_BLOCK,VK_FORMAT_BC7_SRGB_BLOCK |
| ETC2_RGBBlock size 8 byte4x4x1 block extent16 texel/block | VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK |
| ETC2_RGBABlock size 8 byte4x4x1 block extent16 texel/block | VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK |
| ETC2_EAC_RGBABlock size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK |
| EAC_RBlock size 8 byte4x4x1 block extent16 texel/block | VK_FORMAT_EAC_R11_UNORM_BLOCK,VK_FORMAT_EAC_R11_SNORM_BLOCK |
| EAC_RGBlock size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_EAC_R11G11_UNORM_BLOCK,VK_FORMAT_EAC_R11G11_SNORM_BLOCK |
| ASTC_4x4Block size 16 byte4x4x1 block extent16 texel/block | VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK,VK_FORMAT_ASTC_4x4_UNORM_BLOCK,VK_FORMAT_ASTC_4x4_SRGB_BLOCK |
| ASTC_5x4Block size 16 byte5x4x1 block extent20 texel/block | VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK,VK_FORMAT_ASTC_5x4_UNORM_BLOCK,VK_FORMAT_ASTC_5x4_SRGB_BLOCK |
| ASTC_5x5Block size 16 byte5x5x1 block extent25 texel/block | VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK,VK_FORMAT_ASTC_5x5_UNORM_BLOCK,VK_FORMAT_ASTC_5x5_SRGB_BLOCK |
| ASTC_6x5Block size 16 byte6x5x1 block extent30 texel/block | VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK,VK_FORMAT_ASTC_6x5_UNORM_BLOCK,VK_FORMAT_ASTC_6x5_SRGB_BLOCK |
| ASTC_6x6Block size 16 byte6x6x1 block extent36 texel/block | VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK,VK_FORMAT_ASTC_6x6_UNORM_BLOCK,VK_FORMAT_ASTC_6x6_SRGB_BLOCK |
| ASTC_8x5Block size 16 byte8x5x1 block extent40 texel/block | VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK,VK_FORMAT_ASTC_8x5_UNORM_BLOCK,VK_FORMAT_ASTC_8x5_SRGB_BLOCK |
| ASTC_8x6Block size 16 byte8x6x1 block extent48 texel/block | VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK,VK_FORMAT_ASTC_8x6_UNORM_BLOCK,VK_FORMAT_ASTC_8x6_SRGB_BLOCK |
| ASTC_8x8Block size 16 byte8x8x1 block extent64 texel/block | VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK,VK_FORMAT_ASTC_8x8_UNORM_BLOCK,VK_FORMAT_ASTC_8x8_SRGB_BLOCK |
| ASTC_10x5Block size 16 byte10x5x1 block extent50 texel/block | VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK,VK_FORMAT_ASTC_10x5_UNORM_BLOCK,VK_FORMAT_ASTC_10x5_SRGB_BLOCK |
| ASTC_10x6Block size 16 byte10x6x1 block extent60 texel/block | VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK,VK_FORMAT_ASTC_10x6_UNORM_BLOCK,VK_FORMAT_ASTC_10x6_SRGB_BLOCK |
| ASTC_10x8Block size 16 byte10x8x1 block extent80 texel/block | VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK,VK_FORMAT_ASTC_10x8_UNORM_BLOCK,VK_FORMAT_ASTC_10x8_SRGB_BLOCK |
| ASTC_10x10Block size 16 byte10x10x1 block extent100 texel/block | VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK,VK_FORMAT_ASTC_10x10_UNORM_BLOCK,VK_FORMAT_ASTC_10x10_SRGB_BLOCK |
| ASTC_12x10Block size 16 byte12x10x1 block extent120 texel/block | VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK,VK_FORMAT_ASTC_12x10_UNORM_BLOCK,VK_FORMAT_ASTC_12x10_SRGB_BLOCK |
| ASTC_12x12Block size 16 byte12x12x1 block extent144 texel/block | VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK,VK_FORMAT_ASTC_12x12_UNORM_BLOCK,VK_FORMAT_ASTC_12x12_SRGB_BLOCK |
| 32-bit G8B8G8R8Block size 4 byte2x1x1 block extent1 texel/block | VK_FORMAT_G8B8G8R8_422_UNORM |
| 32-bit B8G8R8G8Block size 4 byte2x1x1 block extent1 texel/block | VK_FORMAT_B8G8R8G8_422_UNORM |
| 8-bit 3-plane 420Block size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM |
| 8-bit 2-plane 420Block size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_G8_B8R8_2PLANE_420_UNORM |
| 8-bit 3-plane 422Block size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM |
| 8-bit 2-plane 422Block size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_G8_B8R8_2PLANE_422_UNORM |
| 8-bit 3-plane 444Block size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM |
| 64-bit R10G10B10A10Block size 8 byte1x1x1 block extent1 texel/block | VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM |
| 64-bit G10B10G10R10Block size 8 byte2x1x1 block extent1 texel/block | VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 |
| 64-bit B10G10R10G10Block size 8 byte2x1x1 block extent1 texel/block | VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 |
| 10-bit 3-plane 420Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 |
| 10-bit 2-plane 420Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 |
| 10-bit 3-plane 422Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 |
| 10-bit 2-plane 422Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 |
| 10-bit 3-plane 444Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 |
| 64-bit R12G12B12A12Block size 8 byte1x1x1 block extent1 texel/block | VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM |
| 64-bit G12B12G12R12Block size 8 byte2x1x1 block extent1 texel/block | VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 |
| 64-bit B12G12R12G12Block size 8 byte2x1x1 block extent1 texel/block | VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 |
| 12-bit 3-plane 420Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 |
| 12-bit 2-plane 420Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 |
| 12-bit 3-plane 422Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 |
| 12-bit 2-plane 422Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 |
| 12-bit 3-plane 444Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 |
| 64-bit G16B16G16R16Block size 8 byte2x1x1 block extent1 texel/block | VK_FORMAT_G16B16G16R16_422_UNORM |
| 64-bit B16G16R16G16Block size 8 byte2x1x1 block extent1 texel/block | VK_FORMAT_B16G16R16G16_422_UNORM |
| 16-bit 3-plane 420Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM |
| 16-bit 2-plane 420Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G16_B16R16_2PLANE_420_UNORM |
| 16-bit 3-plane 422Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM |
| 16-bit 2-plane 422Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G16_B16R16_2PLANE_422_UNORM |
| 16-bit 3-plane 444Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM |
| PVRTC1_2BPPBlock size 8 byte8x4x1 block extent1 texel/block | VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG |
| PVRTC1_4BPPBlock size 8 byte4x4x1 block extent1 texel/block | VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG |
| PVRTC2_2BPPBlock size 8 byte8x4x1 block extent1 texel/block | VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG |
| PVRTC2_4BPPBlock size 8 byte4x4x1 block extent1 texel/block | VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG |
| ASTC_3x3x3Block size 16 byte3x3x3 block extent27 texel/block | VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT |
| ASTC_4x3x3Block size 16 byte4x3x3 block extent36 texel/block | VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT |
| ASTC_4x4x3Block size 16 byte4x4x3 block extent48 texel/block | VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT |
| ASTC_4x4x4Block size 16 byte4x4x4 block extent64 texel/block | VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT |
| ASTC_5x4x4Block size 16 byte5x4x4 block extent80 texel/block | VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT |
| ASTC_5x5x4Block size 16 byte5x5x4 block extent100 texel/block | VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT |
| ASTC_5x5x5Block size 16 byte5x5x5 block extent125 texel/block | VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT |
| ASTC_6x5x5Block size 16 byte6x5x5 block extent150 texel/block | VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT |
| ASTC_6x6x5Block size 16 byte6x6x5 block extent180 texel/block | VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT |
| ASTC_6x6x6Block size 16 byte6x6x6 block extent216 texel/block | VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT,VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT,VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT |
| 8-bit 2-plane 444Block size 3 byte1x1x1 block extent1 texel/block | VK_FORMAT_G8_B8R8_2PLANE_444_UNORM |
| 10-bit 2-plane 444Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 |
| 12-bit 2-plane 444Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 |
| 16-bit 2-plane 444Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G16_B16R16_2PLANE_444_UNORM |
| 64-bit R14G14B14A14Block size 8 byte1x1x1 block extent1 texel/block | VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM,VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM |
| 14-bit 2-plane 420Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM |
| 14-bit 2-plane 422Block size 6 byte1x1x1 block extent1 texel/block | VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM |
Size Compatibility
Color formats with the same texel block size are considered
size-compatible as long as neither or both are alpha formats (e.g.,
VK_FORMAT_A8_UNORM).
If two size-compatible formats have different block extents (i.e. for
compressed formats), then an image with size A × B × C in
one format with a block extent of a × b × c can be
represented as an image with size X × Y × Z in the other
format with block extent x × y × z at the ratio between
the block extents for each format, where
- ⌈A/a⌉ = ⌈X/x⌉
- ⌈B/b⌉ = ⌈Y/y⌉
- ⌈C/c⌉ = ⌈Z/z⌉
VK_FORMAT_ASTC_8x5_UNORM_BLOCK format
can be represented as a 1x1 VK_FORMAT_R64G64_UINT image.Images created with the
VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT flag can have
size-compatible views created from them to enable access via different
size-compatible formats.
Image views created in this way will be sized to match the expectations of
the block extents noted above.
Copy operations are able to copy between size-compatible formats in different resources to enable manipulation of data in different formats. The extent used in these copy operations always matches the source image, and is resized to the expectations of the block extents noted above for the destination image.
Copy operations between color formats and a depth-stencil are size-compatible as defined by the list of compatible depth-stencil and color formats.
Format Properties
The following bits may be set in linearTilingTensorFeatures and
optimalTilingTensorFeatures, specifying that the features are
supported by tensors or tensor views created with the queried
vkGetPhysicalDeviceFormatProperties2::format:
VK_FORMAT_FEATURE_2_TRANSFER_SRC_BITspecifies that a tensor can be used as a source tensor for copy commands.VK_FORMAT_FEATURE_2_TRANSFER_DST_BITspecifies that a tensor can be used as a destination tensor for copy commands.VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARMspecifies that a tensor view can be used as a storage tensor in shaders.VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARMspecifies that a tensor can be aliased to an image or that an image can be aliased to a tensor.VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARMspecifies that a tensor view can be used as a storage tensor with data graph pipelines.
Potential Format Features
Some valid usage conditions depend on the format features supported by a VkImage whose VkImageTiling is unknown. In such cases the exact VkFormatFeatureFlagBits supported by the VkImage cannot be determined, so the valid usage conditions are expressed in terms of the potential format features of the VkImage format.
The potential format features of a VkFormat are defined as follows:
- The union of VkFormatFeatureFlagBits
and VkFormatFeatureFlagBits2,
supported when the VkImageTiling is
VK_IMAGE_TILING_OPTIMAL,VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, orVK_IMAGE_TILING_LINEARif VkFormat is notVK_FORMAT_UNDEFINED - VkAndroidHardwareBufferFormatPropertiesANDROID::
formatFeaturesand VkAndroidHardwareBufferFormatProperties2ANDROID::formatFeaturesof a valid external format if VkFormat isVK_FORMAT_UNDEFINED - VkScreenBufferFormatPropertiesQNX::
formatFeaturesof a valid external format if VkFormat isVK_FORMAT_UNDEFINED
Required Format Support
Implementations must support at least the following set of features on the listed formats. For images, these features must be supported for every VkImageType (including arrayed and cube variants) unless otherwise noted. These features are supported on existing formats without needing to advertise an extension or needing to explicitly enable them. Support for additional functionality beyond the requirements listed here is queried using the vkGetPhysicalDeviceFormatProperties command.
The following tables show which feature bits must be supported for each
format.
Formats that are required to support
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must also support
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT and
VK_FORMAT_FEATURE_TRANSFER_DST_BIT.
| ✓ | This feature must be supported on the named format |
|---|---|
| † | This feature must be supported on at least some of the named formats, with more information in the table where the symbol appears |
| ‡ | This feature must be supported with some caveats or preconditions, with more information in the table where the symbol appears |
| § | This feature must be supported with some caveats or preconditions, with more information in the table where the symbol appears |
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT |
|---|
VK_FORMAT_FEATURE_TRANSFER_DST_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT |
VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT |
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT |
VK_FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR |
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT |
|---|
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT |
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | |||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
| ||||||||||||||
| † | † | † | |||||||||||
| ‡ | ‡ | ‡ | |||||||||||
Format features marked † :normative{type="must"} be supported for
| ||||||||||||||
Format features marked ‡ :normative{type="must"} be supported for
| ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| ✓ | ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| ✓ | ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | |||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| ✓ | ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | |||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
Format features marked with ‡ :normative{type="must"} be supported for
| ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | |||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
Format features marked with ‡ :normative{type="must"} be supported for
| ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| ‡ | ✓ | ✓ | |||||||||||
| ‡ | ✓ | ✓ | |||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ✓ | ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| ‡ | ✓ | ✓ | |||||||||||
| ‡ | ✓ | ✓ | |||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ✓ | ✓ | ‡ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| ✓ | ✓ | ✓ | ‡ | § | ✓ | ✓ | ✓ | ✓ | ✓ | § | ✓ | ||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ‡ | ✓ | ✓ | |||||||||||
| ‡ | ✓ | ✓ | |||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | § | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
Format features marked with ‡ :normative{type="must"} be supported for
| ||||||||||||||
Format features marked with § :normative{type="must"} be supported for
| ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| ✓ | ✓ | ✓ | † | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | |||||||||||||
| ✓ | |||||||||||||
| ✓ | |||||||||||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
Format features marked with † :normative{type="must"} be supported for
| ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| † | † | ||||||||||||
| † | † | ||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
| ✓ | ✓ | ✓ | ‡ | ✓ | ✓ | ||||||||
| ✓ | ✓ | ✓ | |||||||||||
Format features marked with ‡ :normative{type="must"} be supported for
| ||||||||||||||
If the | ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| ✓ | ✓ | ✓ | |||||||||||
| † | |||||||||||||
| ✓ | ✓ | † | |||||||||||
| ||||||||||||||
| ||||||||||||||
| † | |||||||||||||
| † | |||||||||||||
| ||||||||||||||
| ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
The | ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
The | ||||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
Format | ||||||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
| † | † | † | |||||||||||
The | ||||||||||||||
If cubic filtering is supported,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must be
supported for the following image view types:
VK_IMAGE_VIEW_TYPE_2DVK_IMAGE_VIEW_TYPE_2D_ARRAY
for the following formats:
VK_FORMAT_R4G4_UNORM_PACK8VK_FORMAT_R4G4B4A4_UNORM_PACK16VK_FORMAT_B4G4R4A4_UNORM_PACK16VK_FORMAT_R5G6B5_UNORM_PACK16VK_FORMAT_B5G6R5_UNORM_PACK16VK_FORMAT_R5G5B5A1_UNORM_PACK16VK_FORMAT_B5G5R5A1_UNORM_PACK16VK_FORMAT_A1R5G5B5_UNORM_PACK16VK_FORMAT_R8_UNORMVK_FORMAT_R8_SNORMVK_FORMAT_R8_SRGBVK_FORMAT_R8G8_UNORMVK_FORMAT_R8G8_SNORMVK_FORMAT_R8G8_SRGBVK_FORMAT_R8G8B8_UNORMVK_FORMAT_R8G8B8_SNORMVK_FORMAT_R8G8B8_SRGBVK_FORMAT_B8G8R8_UNORMVK_FORMAT_B8G8R8_SNORMVK_FORMAT_B8G8R8_SRGBVK_FORMAT_R8G8B8A8_UNORMVK_FORMAT_R8G8B8A8_SNORMVK_FORMAT_R8G8B8A8_SRGBVK_FORMAT_B8G8R8A8_UNORMVK_FORMAT_B8G8R8A8_SNORMVK_FORMAT_B8G8R8A8_SRGBVK_FORMAT_A8B8G8R8_UNORM_PACK32VK_FORMAT_A8B8G8R8_SNORM_PACK32VK_FORMAT_A8B8G8R8_SRGB_PACK32
If ETC compressed formats are supported,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must be
supported for the following image view types:
VK_IMAGE_VIEW_TYPE_2DVK_IMAGE_VIEW_TYPE_2D_ARRAY
for the following additional formats:
VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCKVK_FORMAT_ETC2_R8G8B8_SRGB_BLOCKVK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCKVK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCKVK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCKVK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
If cubic filtering is supported for any other formats, the following image view types must be supported for those formats:
VK_IMAGE_VIEW_TYPE_2DVK_IMAGE_VIEW_TYPE_2D_ARRAY
To be used with VkImageView with subresourceRange.aspectMask
equal to VK_IMAGE_ASPECT_COLOR_BIT, sampler Y′CBCR conversion must be enabled for the following formats:
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
| ↓ | ||||||||||
Format | Planes | ||||||||||
| 1 | ||||||||||
| 1 | ||||||||||
| 3 | † | † | † | † | ||||||
| 2 | † | † | † | † | ||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 1 | ||||||||||
| 1 | ||||||||||
| 1 | ||||||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 1 | ||||||||||
| 1 | ||||||||||
| 1 | ||||||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 1 | ||||||||||
| 1 | ||||||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 3 | ||||||||||
| 2 | ||||||||||
| 2 | ||||||||||
| 2 | ||||||||||
| 2 | ||||||||||
| 2 | ||||||||||
| 2 | ||||||||||
Format features marked † :normative{type="must"} be supported for
| |||||||||||
Formats marked ‡ do not require a sampler Y′CBCR conversion for
| |||||||||||
Implementations are not required to support the
VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or
VK_IMAGE_CREATE_SPARSE_ALIASED_BIT VkImageCreateFlags for the
above formats that require sampler Y′CBCR
conversion.
To determine whether the implementation supports sparse image creation flags
with these formats use vkGetPhysicalDeviceImageFormatProperties or
vkGetPhysicalDeviceImageFormatProperties2.
VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT must be supported for
the following formats if the fragmentDensityMap feature is enabled:
VK_FORMAT_R8G8_UNORM
VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR must
be supported in bufferFeatures for the following formats if the
accelerationStructure feature is
supported:
VK_FORMAT_R32G32_SFLOATVK_FORMAT_R32G32B32_SFLOATVK_FORMAT_R16G16_SFLOATVK_FORMAT_R16G16B16A16_SFLOATVK_FORMAT_R16G16_SNORMVK_FORMAT_R16G16B16A16_SNORM
VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV must
be supported in bufferFeatures for the following formats if either of
the spheres or linearSweptSpheres feature is supported:
VK_FORMAT_R32_SFLOATVK_FORMAT_R16_SFLOAT
VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR must be
supported for the following formats if the
attachmentFragmentShadingRate feature is supported:
VK_FORMAT_R8_UINT
If the hostImageCopy feature is supported
and VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is supported in
optimalTilingFeatures or linearTilingFeatures for a color
format, VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT must also be
supported in optimalTilingFeatures or linearTilingFeatures
respectively.
Formats Without Shader Storage Format
The device-level features for using a storage image or a storage texel
buffer with an image format of Unknown,
shaderStorageImageReadWithoutFormat and
shaderStorageImageWriteWithoutFormat, only apply to the following
formats:
VK_FORMAT_R8G8B8A8_UNORMVK_FORMAT_R8G8B8A8_SNORMVK_FORMAT_R8G8B8A8_UINTVK_FORMAT_R8G8B8A8_SINTVK_FORMAT_R32_UINTVK_FORMAT_R32_SINTVK_FORMAT_R32_SFLOATVK_FORMAT_R32G32_UINTVK_FORMAT_R32G32_SINTVK_FORMAT_R32G32_SFLOATVK_FORMAT_R32G32B32A32_UINTVK_FORMAT_R32G32B32A32_SINTVK_FORMAT_R32G32B32A32_SFLOATVK_FORMAT_R16G16B16A16_UINTVK_FORMAT_R16G16B16A16_SINTVK_FORMAT_R16G16B16A16_SFLOATVK_FORMAT_R16G16_SFLOATVK_FORMAT_B10G11R11_UFLOAT_PACK32VK_FORMAT_R16_SFLOATVK_FORMAT_R16G16B16A16_UNORMVK_FORMAT_A2B10G10R10_UNORM_PACK32VK_FORMAT_R16G16_UNORMVK_FORMAT_R8G8_UNORMVK_FORMAT_R16_UNORMVK_FORMAT_R8_UNORMVK_FORMAT_R16G16B16A16_SNORMVK_FORMAT_R16G16_SNORMVK_FORMAT_R8G8_SNORMVK_FORMAT_R16_SNORMVK_FORMAT_R8_SNORMVK_FORMAT_R16G16_SINTVK_FORMAT_R8G8_SINTVK_FORMAT_R16_SINTVK_FORMAT_R8_SINTVK_FORMAT_A2B10G10R10_UINT_PACK32VK_FORMAT_R16G16_UINTVK_FORMAT_R8G8_UINTVK_FORMAT_R16_UINTVK_FORMAT_R8_UINTVK_FORMAT_A8_UNORM
shaderStorageImageExtendedFormats.An implementation that supports VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
for any format from the given list of formats and supports
shaderStorageImageReadWithoutFormat must support
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT for that same
format if Vulkan 1.3 or the VK_KHR_format_feature_flags2 extension
is supported.
An implementation that supports VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
for any format from the given list of formats and supports
shaderStorageImageWriteWithoutFormat must support
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT for that same
format if Vulkan 1.3 or the VK_KHR_format_feature_flags2 extension
is supported.
An implementation that does not support either of
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT or
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT for a format
must not report support for VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT or
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT for that format if it is
not listed in the SPIR-V and Vulkan Image Format
Compatibility table.
Format qualifier and there is no matching
Format token.
Such images cannot be either read from or written to.Drivers which pass Vulkan conformance test suite version 1.3.9.0, or any
subsequent version will conform to the requirement above.Depth Comparison Format Support
If Vulkan 1.3 or the VK_KHR_format_feature_flags2 extension is
supported, a depth/stencil format with a depth component supporting
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT must support
VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT.
Format Feature Dependent Usage Flags
Certain resource usage flags depend on support for the corresponding format feature flag for the format in question. The following tables list the VkBufferUsageFlagBits, VkImageUsageFlagBits and VkTensorUsageFlagBitsARM that have such dependencies, and the format feature flags they depend on. Additional restrictions, including, but not limited to, further required format feature flags specific to the particular use of the resource may apply, as described in the respective sections of this specification.
| Buffer usage flag | Required format feature flag |
|---|---|
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT |
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT |
| Image usage flag | Required format feature flag |
|---|---|
VK_IMAGE_USAGE_SAMPLED_BIT | VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT |
VK_IMAGE_USAGE_STORAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT |
VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT |
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BITorVK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT |
VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR | VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR | VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR | VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR | VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR | VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR | VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR |
VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR | VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR |
VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM | VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM |
| Tensor usage flag | Required format feature flag |
|---|---|
VK_TENSOR_USAGE_TRANSFER_SRC_BIT_ARM | VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT |
VK_TENSOR_USAGE_TRANSFER_DST_BIT_ARM | VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT |
VK_TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM | VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM |
VK_TENSOR_USAGE_SHADER_BIT_ARM | VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM |
VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM | VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM |
Tensor Format Support
For tensors, implementations must support at least the following set of features on the listed tensor formats.
The following tables show which tensor feature bits must be supported for each format.
| ✓ | This feature must be supported on the named format |
|---|---|
| † | This feature must be supported on at least some of the named formats, with more information in the table where the symbol appears |
VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT |
|---|
VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT |
VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM |
VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT |
|---|
VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT |
VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM |
| ↓ | ||
| ↓ | ||
| ↓ | ||
Format | |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||