## 31.3. Formats

The features for the set of formats (`VkFormat`) supported by the implementation are queried individually using the `vkGetPhysicalDeviceFormatProperties` command.

### 31.3.1. Format Definition

The available formats are defined by the `VkFormat` enumeration:

    typedef enum VkFormat {
        VK_FORMAT_UNDEFINED = 0,
        VK_FORMAT_R4G4_UNORM_PACK8 = 1,
        VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
        VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
        VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
        VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
        VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
        VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
        VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
        VK_FORMAT_R8_UNORM = 9,
        VK_FORMAT_R8_SNORM = 10,
        VK_FORMAT_R8_USCALED = 11,
        VK_FORMAT_R8_SSCALED = 12,
        VK_FORMAT_R8_UINT = 13,
        VK_FORMAT_R8_SINT = 14,
        VK_FORMAT_R8_SRGB = 15,
        VK_FORMAT_R8G8_UNORM = 16,
        VK_FORMAT_R8G8_SNORM = 17,
        VK_FORMAT_R8G8_USCALED = 18,
        VK_FORMAT_R8G8_SSCALED = 19,
        VK_FORMAT_R8G8_UINT = 20,
        VK_FORMAT_R8G8_SINT = 21,
        VK_FORMAT_R8G8_SRGB = 22,
        VK_FORMAT_R8G8B8_UNORM = 23,
        VK_FORMAT_R8G8B8_SNORM = 24,
        VK_FORMAT_R8G8B8_USCALED = 25,
        VK_FORMAT_R8G8B8_SSCALED = 26,
        VK_FORMAT_R8G8B8_UINT = 27,
        VK_FORMAT_R8G8B8_SINT = 28,
        VK_FORMAT_R8G8B8_SRGB = 29,
        VK_FORMAT_B8G8R8_UNORM = 30,
        VK_FORMAT_B8G8R8_SNORM = 31,
        VK_FORMAT_B8G8R8_USCALED = 32,
        VK_FORMAT_B8G8R8_SSCALED = 33,
        VK_FORMAT_B8G8R8_UINT = 34,
        VK_FORMAT_B8G8R8_SINT = 35,
        VK_FORMAT_B8G8R8_SRGB = 36,
        VK_FORMAT_R8G8B8A8_UNORM = 37,
        VK_FORMAT_R8G8B8A8_SNORM = 38,
        VK_FORMAT_R8G8B8A8_USCALED = 39,
        VK_FORMAT_R8G8B8A8_SSCALED = 40,
        VK_FORMAT_R8G8B8A8_UINT = 41,
        VK_FORMAT_R8G8B8A8_SINT = 42,
        VK_FORMAT_R8G8B8A8_SRGB = 43,
        VK_FORMAT_B8G8R8A8_UNORM = 44,
        VK_FORMAT_B8G8R8A8_SNORM = 45,
        VK_FORMAT_B8G8R8A8_USCALED = 46,
        VK_FORMAT_B8G8R8A8_SSCALED = 47,
        VK_FORMAT_B8G8R8A8_UINT = 48,
        VK_FORMAT_B8G8R8A8_SINT = 49,
        VK_FORMAT_B8G8R8A8_SRGB = 50,
        VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
        VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
        VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
        VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
        VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
        VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
        VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
        VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
        VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
        VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
        VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
        VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
        VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
        VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
        VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
        VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
        VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
        VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
        VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
        VK_FORMAT_R16_UNORM = 70,
        VK_FORMAT_R16_SNORM = 71,
        VK_FORMAT_R16_USCALED = 72,
        VK_FORMAT_R16_SSCALED = 73,
        VK_FORMAT_R16_UINT = 74,
        VK_FORMAT_R16_SINT = 75,
        VK_FORMAT_R16_SFLOAT = 76,
        VK_FORMAT_R16G16_UNORM = 77,
        VK_FORMAT_R16G16_SNORM = 78,
        VK_FORMAT_R16G16_USCALED = 79,
        VK_FORMAT_R16G16_SSCALED = 80,
        VK_FORMAT_R16G16_UINT = 81,
        VK_FORMAT_R16G16_SINT = 82,
        VK_FORMAT_R16G16_SFLOAT = 83,
        VK_FORMAT_R16G16B16_UNORM = 84,
        VK_FORMAT_R16G16B16_SNORM = 85,
        VK_FORMAT_R16G16B16_USCALED = 86,
        VK_FORMAT_R16G16B16_SSCALED = 87,
        VK_FORMAT_R16G16B16_UINT = 88,
        VK_FORMAT_R16G16B16_SINT = 89,
        VK_FORMAT_R16G16B16_SFLOAT = 90,
        VK_FORMAT_R16G16B16A16_UNORM = 91,
        VK_FORMAT_R16G16B16A16_SNORM = 92,
        VK_FORMAT_R16G16B16A16_USCALED = 93,
        VK_FORMAT_R16G16B16A16_SSCALED = 94,
        VK_FORMAT_R16G16B16A16_UINT = 95,
        VK_FORMAT_R16G16B16A16_SINT = 96,
        VK_FORMAT_R16G16B16A16_SFLOAT = 97,
        VK_FORMAT_R32_UINT = 98,
        VK_FORMAT_R32_SINT = 99,
        VK_FORMAT_R32_SFLOAT = 100,
        VK_FORMAT_R32G32_UINT = 101,
        VK_FORMAT_R32G32_SINT = 102,
        VK_FORMAT_R32G32_SFLOAT = 103,
        VK_FORMAT_R32G32B32_UINT = 104,
        VK_FORMAT_R32G32B32_SINT = 105,
        VK_FORMAT_R32G32B32_SFLOAT = 106,
        VK_FORMAT_R32G32B32A32_UINT = 107,
        VK_FORMAT_R32G32B32A32_SINT = 108,
        VK_FORMAT_R32G32B32A32_SFLOAT = 109,
        VK_FORMAT_R64_UINT = 110,
        VK_FORMAT_R64_SINT = 111,
        VK_FORMAT_R64_SFLOAT = 112,
        VK_FORMAT_R64G64_UINT = 113,
        VK_FORMAT_R64G64_SINT = 114,
        VK_FORMAT_R64G64_SFLOAT = 115,
        VK_FORMAT_R64G64B64_UINT = 116,
        VK_FORMAT_R64G64B64_SINT = 117,
        VK_FORMAT_R64G64B64_SFLOAT = 118,
        VK_FORMAT_R64G64B64A64_UINT = 119,
        VK_FORMAT_R64G64B64A64_SINT = 120,
        VK_FORMAT_R64G64B64A64_SFLOAT = 121,
        VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
        VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
        VK_FORMAT_D16_UNORM = 124,
        VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
        VK_FORMAT_D32_SFLOAT = 126,
        VK_FORMAT_S8_UINT = 127,
        VK_FORMAT_D16_UNORM_S8_UINT = 128,
        VK_FORMAT_D24_UNORM_S8_UINT = 129,
        VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
        VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
        VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
        VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
        VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
        VK_FORMAT_BC2_UNORM_BLOCK = 135,
        VK_FORMAT_BC2_SRGB_BLOCK = 136,
        VK_FORMAT_BC3_UNORM_BLOCK = 137,
        VK_FORMAT_BC3_SRGB_BLOCK = 138,
        VK_FORMAT_BC4_UNORM_BLOCK = 139,
        VK_FORMAT_BC4_SNORM_BLOCK = 140,
        VK_FORMAT_BC5_UNORM_BLOCK = 141,
        VK_FORMAT_BC5_SNORM_BLOCK = 142,
        VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
        VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
        VK_FORMAT_BC7_UNORM_BLOCK = 145,
        VK_FORMAT_BC7_SRGB_BLOCK = 146,
        VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
        VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
        VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
        VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
        VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
        VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
        VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
        VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
        VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
        VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
        VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
        VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
        VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
        VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
        VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
        VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
        VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
        VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
        VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
        VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
        VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
        VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
        VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
        VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
        VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
        VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
        VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
        VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
        VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
        VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
        VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
        VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
        VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
        VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
        VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
        VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
        VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
        VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
    } VkFormat;

`VK_FORMAT_UNDEFINED`
  The format is not specified.
`VK_FORMAT_R4G4_UNORM_PACK8`
  A two-component, 8-bit packed unsigned normalized format that has a 4-bit R component in bits 4..7, and a 4-bit G component in bits 0..3.
`VK_FORMAT_R4G4B4A4_UNORM_PACK16`
  A four-component, 16-bit packed unsigned normalized format that has a 4-bit R component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and a 4-bit A component in bits 0..3.
`VK_FORMAT_B4G4R4A4_UNORM_PACK16`
  A four-component, 16-bit packed unsigned normalized format that has a 4-bit B component in bits 12..15, a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and a 4-bit A component in bits 0..3.
`VK_FORMAT_R5G6B5_UNORM_PACK16`
  A three-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4.
`VK_FORMAT_B5G6R5_UNORM_PACK16`
  A three-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4.
`VK_FORMAT_R5G5B5A1_UNORM_PACK16`
  A four-component, 16-bit packed unsigned normalized format that has a 5-bit R component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and a 1-bit A component in bit 0.
`VK_FORMAT_B5G5R5A1_UNORM_PACK16`
  A four-component, 16-bit packed unsigned normalized format that has a 5-bit B component in bits 11..15, a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and a 1-bit A component in bit 0.
`VK_FORMAT_A1R5G5B5_UNORM_PACK16`
  A four-component, 16-bit packed unsigned normalized format that has a 1-bit A component in bit 15, a 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and a 5-bit B component in bits 0..4.
`VK_FORMAT_R8_UNORM`
  A one-component, 8-bit unsigned normalized format that has a single 8-bit R component.
`VK_FORMAT_R8_SNORM`
  A one-component, 8-bit signed normalized format that has a single 8-bit R component.
`VK_FORMAT_R8_USCALED`
  A one-component, 8-bit unsigned scaled integer format that has a single 8-bit R component.
`VK_FORMAT_R8_SSCALED`
  A one-component, 8-bit signed scaled integer format that has a single 8-bit R component.
`VK_FORMAT_R8_UINT`
  A one-component, 8-bit unsigned integer format that has a single 8-bit R component.
`VK_FORMAT_R8_SINT`
  A one-component, 8-bit signed integer format that has a single 8-bit R component.
`VK_FORMAT_R8_SRGB`
  A one-component, 8-bit unsigned normalized format that has a single 8-bit R component stored with sRGB nonlinear encoding.
`VK_FORMAT_R8G8_UNORM`
  A two-component, 16-bit unsigned normalized format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.
`VK_FORMAT_R8G8_SNORM`
  A two-component, 16-bit signed normalized format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.
`VK_FORMAT_R8G8_USCALED`
  A two-component, 16-bit unsigned scaled integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.
`VK_FORMAT_R8G8_SSCALED`
  A two-component, 16-bit signed scaled integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.
`VK_FORMAT_R8G8_UINT`
  A two-component, 16-bit unsigned integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.
`VK_FORMAT_R8G8_SINT`
  A two-component, 16-bit signed integer format that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1.
`VK_FORMAT_R8G8_SRGB`
  A two-component, 16-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding in byte 1.
`VK_FORMAT_R8G8B8_UNORM`
  A three-component, 24-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.
`VK_FORMAT_R8G8B8_SNORM`
  A three-component, 24-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.
`VK_FORMAT_R8G8B8_USCALED`
  A three-component, 24-bit unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.
`VK_FORMAT_R8G8B8_SSCALED`
  A three-component, 24-bit signed scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.
`VK_FORMAT_R8G8B8_UINT`
  A three-component, 24-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.
`VK_FORMAT_R8G8B8_SINT`
  A three-component, 24-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2.
`VK_FORMAT_R8G8B8_SRGB`
  A three-component, 24-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2.
`VK_FORMAT_B8G8R8_UNORM`
  A three-component, 24-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.
`VK_FORMAT_B8G8R8_SNORM`
  A three-component, 24-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.
`VK_FORMAT_B8G8R8_USCALED`
  A three-component, 24-bit unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.
`VK_FORMAT_B8G8R8_SSCALED`
  A three-component, 24-bit signed scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.
`VK_FORMAT_B8G8R8_UINT`
  A three-component, 24-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.
`VK_FORMAT_B8G8R8_SINT`
  A three-component, 24-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2.
`VK_FORMAT_B8G8R8_SRGB`
  A three-component, 24-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB nonlinear encoding in byte 2.
`VK_FORMAT_R8G8B8A8_UNORM`
  A four-component, 32-bit unsigned normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_R8G8B8A8_SNORM`
  A four-component, 32-bit signed normalized format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_R8G8B8A8_USCALED`
  A four-component, 32-bit unsigned scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_R8G8B8A8_SSCALED`
  A four-component, 32-bit signed scaled format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_R8G8B8A8_UINT`
  A four-component, 32-bit unsigned integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_R8G8B8A8_SINT`
  A four-component, 32-bit signed integer format that has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_R8G8B8A8_SRGB`
  A four-component, 32-bit unsigned normalized format that has an 8-bit R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit B component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_B8G8R8A8_UNORM`
  A four-component, 32-bit unsigned normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_B8G8R8A8_SNORM`
  A four-component, 32-bit signed normalized format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_B8G8R8A8_USCALED`
  A four-component, 32-bit unsigned scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_B8G8R8A8_SSCALED`
  A four-component, 32-bit signed scaled format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_B8G8R8A8_UINT`
  A four-component, 32-bit unsigned integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_B8G8R8A8_SINT`
  A four-component, 32-bit signed integer format that has an 8-bit B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_B8G8R8A8_SRGB`
  A four-component, 32-bit unsigned normalized format that has an 8-bit B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte 1, an 8-bit R component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3.
`VK_FORMAT_A8B8G8R8_UNORM_PACK32`
  A four-component, 32-bit packed unsigned normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.
`VK_FORMAT_A8B8G8R8_SNORM_PACK32`
  A four-component, 32-bit packed signed normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.
`VK_FORMAT_A8B8G8R8_USCALED_PACK32`
  A four-component, 32-bit packed unsigned scaled integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.
`VK_FORMAT_A8B8G8R8_SSCALED_PACK32`
  A four-component, 32-bit packed signed scaled integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.
`VK_FORMAT_A8B8G8R8_UINT_PACK32`
  A four-component, 32-bit packed unsigned integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.
`VK_FORMAT_A8B8G8R8_SINT_PACK32`
  A four-component, 32-bit packed signed integer format that has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit R component in bits 0..7.
`VK_FORMAT_A8B8G8R8_SRGB_PACK32`
  A four-component, 32-bit packed unsigned normalized format that has an 8-bit A component in bits 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23, an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15, and an 8-bit R component stored with sRGB nonlinear encoding in bits 0..7.
`VK_FORMAT_A2R10G10B10_UNORM_PACK32`
  A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.
`VK_FORMAT_A2R10G10B10_SNORM_PACK32`
  A four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.
`VK_FORMAT_A2R10G10B10_USCALED_PACK32`
  A four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.
`VK_FORMAT_A2R10G10B10_SSCALED_PACK32`
  A four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.
`VK_FORMAT_A2R10G10B10_UINT_PACK32`
  A four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.
`VK_FORMAT_A2R10G10B10_SINT_PACK32`
  A four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit B component in bits 0..9.
`VK_FORMAT_A2B10G10R10_UNORM_PACK32`
  A four-component, 32-bit packed unsigned normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.
`VK_FORMAT_A2B10G10R10_SNORM_PACK32`
  A four-component, 32-bit packed signed normalized format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.
`VK_FORMAT_A2B10G10R10_USCALED_PACK32`
  A four-component, 32-bit packed unsigned scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.
`VK_FORMAT_A2B10G10R10_SSCALED_PACK32`
  A four-component, 32-bit packed signed scaled integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.
`VK_FORMAT_A2B10G10R10_UINT_PACK32`
  A four-component, 32-bit packed unsigned integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.
`VK_FORMAT_A2B10G10R10_SINT_PACK32`
  A four-component, 32-bit packed signed integer format that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a 10-bit R component in bits 0..9.
`VK_FORMAT_R16_UNORM`
  A one-component, 16-bit unsigned normalized format that has a single 16-bit R component.
`VK_FORMAT_R16_SNORM`
  A one-component, 16-bit signed normalized format that has a single 16-bit R component.
`VK_FORMAT_R16_USCALED`
  A one-component, 16-bit unsigned scaled integer format that has a single 16-bit R component.
`VK_FORMAT_R16_SSCALED`
  A one-component, 16-bit signed scaled integer format that has a single 16-bit R component.
`VK_FORMAT_R16_UINT`
  A one-component, 16-bit unsigned integer format that has a single 16-bit R component.
`VK_FORMAT_R16_SINT`
  A one-component, 16-bit signed integer format that has a single 16-bit R component.
`VK_FORMAT_R16_SFLOAT`
  A one-component, 16-bit signed floating-point format that has a single 16-bit R component.
`VK_FORMAT_R16G16_UNORM`
  A two-component, 32-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.
`VK_FORMAT_R16G16_SNORM`
  A two-component, 32-bit signed normalized format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.
`VK_FORMAT_R16G16_USCALED`
  A two-component, 32-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.
`VK_FORMAT_R16G16_SSCALED`
  A two-component, 32-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.
`VK_FORMAT_R16G16_UINT`
  A two-component, 32-bit unsigned integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.
`VK_FORMAT_R16G16_SINT`
  A two-component, 32-bit signed integer format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.
`VK_FORMAT_R16G16_SFLOAT`
  A two-component, 32-bit signed floating-point format that has a 16-bit R component in bytes 0..1, and a 16-bit G component in bytes 2..3.
`VK_FORMAT_R16G16B16_UNORM`
  A three-component, 48-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
`VK_FORMAT_R16G16B16_SNORM`
  A three-component, 48-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
`VK_FORMAT_R16G16B16_USCALED`
  A three-component, 48-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
`VK_FORMAT_R16G16B16_SSCALED`
  A three-component, 48-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
`VK_FORMAT_R16G16B16_UINT`
  A three-component, 48-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
`VK_FORMAT_R16G16B16_SINT`
  A three-component, 48-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
`VK_FORMAT_R16G16B16_SFLOAT`
  A three-component, 48-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5.
`VK_FORMAT_R16G16B16A16_UNORM`
  A four-component, 64-bit unsigned normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.
`VK_FORMAT_R16G16B16A16_SNORM`
  A four-component, 64-bit signed normalized format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.
`VK_FORMAT_R16G16B16A16_USCALED`
  A four-component, 64-bit unsigned scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.
`VK_FORMAT_R16G16B16A16_SSCALED`
  A four-component, 64-bit signed scaled integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.
`VK_FORMAT_R16G16B16A16_UINT`
  A four-component, 64-bit unsigned integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.
`VK_FORMAT_R16G16B16A16_SINT`
  A four-component, 64-bit signed integer format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.
`VK_FORMAT_R16G16B16A16_SFLOAT`
  A four-component, 64-bit signed floating-point format that has a 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A component in bytes 6..7.
`VK_FORMAT_R32_UINT`
  A one-component, 32-bit unsigned integer format that has a single 32-bit R component.
`VK_FORMAT_R32_SINT`
  A one-component, 32-bit signed integer format that has a single 32-bit R component.
`VK_FORMAT_R32_SFLOAT`
  A one-component, 32-bit signed floating-point format that has a single 32-bit R component.
`VK_FORMAT_R32G32_UINT`
  A two-component, 64-bit unsigned integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.
`VK_FORMAT_R32G32_SINT`
  A two-component, 64-bit signed integer format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.
`VK_FORMAT_R32G32_SFLOAT`
  A two-component, 64-bit signed floating-point format that has a 32-bit R component in bytes 0..3, and a 32-bit G component in bytes 4..7.
`VK_FORMAT_R32G32B32_UINT`
  A three-component, 96-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.
`VK_FORMAT_R32G32B32_SINT`
  A three-component, 96-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.
`VK_FORMAT_R32G32B32_SFLOAT`
  A three-component, 96-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11.
`VK_FORMAT_R32G32B32A32_UINT`
  A four-component, 128-bit unsigned integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.
`VK_FORMAT_R32G32B32A32_SINT`
  A four-component, 128-bit signed integer format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.
`VK_FORMAT_R32G32B32A32_SFLOAT`
  A four-component, 128-bit signed floating-point format that has a 32-bit R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A component in bytes 12..15.
`VK_FORMAT_R64_UINT`
  A one-component, 64-bit unsigned integer format that has a single 64-bit R component.
`VK_FORMAT_R64_SINT`
  A one-component, 64-bit signed integer format that has a single 64-bit R component.
`VK_FORMAT_R64_SFLOAT`
  A one-component, 64-bit signed floating-point format that has a single 64-bit R component.
`VK_FORMAT_R64G64_UINT`
  A two-component, 128-bit unsigned integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.
`VK_FORMAT_R64G64_SINT`
  A two-component, 128-bit signed integer format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.
`VK_FORMAT_R64G64_SFLOAT`
  A two-component, 128-bit signed floating-point format that has a 64-bit R component in bytes 0..7, and a 64-bit G component in bytes 8..15.
`VK_FORMAT_R64G64B64_UINT`
  A three-component, 192-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.
`VK_FORMAT_R64G64B64_SINT`
  A three-component, 192-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.
`VK_FORMAT_R64G64B64_SFLOAT`
  A three-component, 192-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23.
`VK_FORMAT_R64G64B64A64_UINT`
  A four-component, 256-bit unsigned integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.
`VK_FORMAT_R64G64B64A64_SINT`
  A four-component, 256-bit signed integer format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.
`VK_FORMAT_R64G64B64A64_SFLOAT`
  A four-component, 256-bit signed floating-point format that has a 64-bit R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit A component in bytes 24..31.
`VK_FORMAT_B10G11R11_UFLOAT_PACK32`
  A three-component, 32-bit packed unsigned floating-point format that has a 10-bit B component in bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component in bits 0..10. See Section 2.7.4, “Unsigned 10-Bit Floating-Point Numbers” and Section 2.7.3, “Unsigned 11-Bit Floating-Point Numbers”.
`VK_FORMAT_E5B9G9R9_UFLOAT_PACK32`
  A three-component, 32-bit packed unsigned floating-point format that has a 5-bit shared exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G component mantissa in bits 9..17, and a 9-bit R component mantissa in bits 0..8.
`VK_FORMAT_D16_UNORM`
  A one-component, 16-bit unsigned normalized format that has a single 16-bit depth component.
`VK_FORMAT_X8_D24_UNORM_PACK32`
  A two-component, 32-bit format that has 24 unsigned normalized bits in the depth component and, optionally, 8 bits that are unused.
`VK_FORMAT_D32_SFLOAT`
  A one-component, 32-bit signed floating-point format that has 32-bits in the depth component.
`VK_FORMAT_S8_UINT`
  A one-component, 8-bit unsigned integer format that has 8-bits in the stencil component.
`VK_FORMAT_D16_UNORM_S8_UINT`
  A two-component, 24-bit format that has 16 unsigned normalized bits in the depth component and 8 unsigned integer bits in the stencil component.
`VK_FORMAT_D24_UNORM_S8_UINT`
  A two-component, 32-bit packed format that has 8 unsigned integer bits in the stencil component, and 24 unsigned normalized bits in the depth component.
`VK_FORMAT_D32_SFLOAT_S8_UINT`
  A two-component format that has 32 signed float bits in the depth component and 8 unsigned integer bits in the stencil component. There are optionally 24-bits that are unused.
`VK_FORMAT_BC1_RGB_UNORM_BLOCK`
  A three-component, block-compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque.
`VK_FORMAT_BC1_RGB_SRGB_BLOCK`
  A three-component, block-compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque.
`VK_FORMAT_BC1_RGBA_UNORM_BLOCK`
  A four-component, block-compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha.
`VK_FORMAT_BC1_RGBA_SRGB_BLOCK`
  A four-component, block-compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha.
`VK_FORMAT_BC2_UNORM_BLOCK`
  A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.
`VK_FORMAT_BC2_SRGB_BLOCK`
  A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding.
`VK_FORMAT_BC3_UNORM_BLOCK`
  A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.
`VK_FORMAT_BC3_SRGB_BLOCK`
  A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding.
`VK_FORMAT_BC4_UNORM_BLOCK`
  A one-component, block-compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized red texel data.
`VK_FORMAT_BC4_SNORM_BLOCK`
  A one-component, block-compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of signed normalized red texel data.
`VK_FORMAT_BC5_UNORM_BLOCK`
  A two-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.
`VK_FORMAT_BC5_SNORM_BLOCK`
  A two-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.
`VK_FORMAT_BC6H_UFLOAT_BLOCK`
  A three-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned floating-point RGB texel data.
`VK_FORMAT_BC6H_SFLOAT_BLOCK`
  A three-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of signed floating-point RGB texel data.
`VK_FORMAT_BC7_UNORM_BLOCK`
  A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_BC7_SRGB_BLOCK`
  A four-component, block-compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK`
  A three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data. This format has no alpha and is considered opaque.
`VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK`
  A three-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no alpha and is considered opaque.
`VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK`
  A four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha.
`VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK`
  A four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit of alpha.
`VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK`
  A four-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values.
`VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK`
  A four-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values followed by 64 bits encoding RGB values with sRGB nonlinear encoding applied.
`VK_FORMAT_EAC_R11_UNORM_BLOCK`
  A one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized red texel data.
`VK_FORMAT_EAC_R11_SNORM_BLOCK`
  A one-component, ETC2 compressed format where each 64-bit compressed texel block encodes a 4x4 rectangle of signed normalized red texel data.
`VK_FORMAT_EAC_R11G11_UNORM_BLOCK`
  A two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.
`VK_FORMAT_EAC_R11G11_SNORM_BLOCK`
  A two-component, ETC2 compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values followed by 64 bits encoding green values.
`VK_FORMAT_ASTC_4x4_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_4x4_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 4x4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_5x4_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5x4 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_5x4_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5x4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_5x5_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5x5 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_5x5_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 5x5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_6x5_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6x5 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_6x5_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6x5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_6x6_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6x6 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_6x6_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 6x6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_8x5_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 8x5 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_8x5_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 8x5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_8x6_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 8x6 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_8x6_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 8x6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_8x8_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 8x8 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_8x8_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 8x8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_10x5_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x5 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_10x5_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_10x6_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x6 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_10x6_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_10x8_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x8 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_10x8_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_10x10_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x10 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_10x10_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 10x10 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_12x10_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12x10 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_12x10_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12x10 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.
`VK_FORMAT_ASTC_12x12_UNORM_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12x12 rectangle of unsigned normalized RGBA texel data.
`VK_FORMAT_ASTC_12x12_SRGB_BLOCK`
  A four-component, ASTC compressed format where each 128-bit compressed texel block encodes a 12x12 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB components.

#### Packed Formats

For the purposes of address alignment when accessing buffer memory containing vertex attribute or texel data, the following formats are considered packed - whole texels or attributes are stored in a single data element, rather than individual components occupying a single data element:

- Packed into 8-bit data types:

  - `VK_FORMAT_R4G4_UNORM_PACK8`

- Packed into 16-bit data types:

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

- Packed into 32-bit data types:

  - `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_B10G11R11_UFLOAT_PACK32`
  - `VK_FORMAT_E5B9G9R9_UFLOAT_PACK32`
  - `VK_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:

    etext:VK_FORMAT_{component-format|compression-scheme}_{numeric-format}

The component-format specifies 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.

Table 31.3. Interpretation of Numeric Format

Numeric format | Description
--- | ---
`UNORM` | The components are unsigned normalized values in the range [0,1]
`SNORM` | The components are signed normalized values in the range [-1,1]
`USCALED` | The components are unsigned integer values that get converted to floating-point in the range [0,2n-1]
`SSCALED` | The components are signed integer values that get converted to floating-point in the range [-2n-1,2n-1-1]
`UINT` | The components are unsigned integer values in the range [0,2n-1]
`SINT` | The components are signed integer values in the range [-2n-1,2n-1-1]
`UFLOAT` | The components are unsigned floating-point numbers (used by packed, shared exponent, and some compressed formats)
`SFLOAT` | The components are signed floating-point numbers
`SRGB` | 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

The suffix `_PACKnn` indicates that the format is 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 pixels encoded interdependently within a region.

Table 31.4. Interpretation of Compression Scheme

Compression scheme | Description
--- | ---
`BC` | Block Compression. See Section B.1, “Block-Compressed Image Formats”.
`ETC2` | Ericsson Texture Compression. See Section B.2, “ETC Compressed Image Formats”.
`EAC` | ETC2 Alpha Compression. See Section B.2, “ETC Compressed Image Formats”.
`ASTC` | Adaptive Scalable Texture Compression (LDR Profile). See Section B.3, “ASTC Compressed Image Formats”.

#### Representation

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.

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.

Table 31.5. Byte mappings for non-packed/compressed color formats

0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | $\leftarrow$ Byte
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
R | `VK_FORMAT_R8_*`
R | G | `VK_FORMAT_R8G8_*`
R | G | B | `VK_FORMAT_R8G8B8_*`
B | G | R | `VK_FORMAT_B8G8R8_*`
R | G | B | A | `VK_FORMAT_R8G8B8A8_*`
B | G | R | A | `VK_FORMAT_B8G8R8A8_*`
R | `VK_FORMAT_R16_*`
R | G | `VK_FORMAT_R16G16_*`
R | G | B | `VK_FORMAT_R16G16B16_*`
R | G | B | A | `VK_FORMAT_R16G16B16A16_*`
R | `VK_FORMAT_R32_*`
R | G | `VK_FORMAT_R32G32_*`
R | G | B | `VK_FORMAT_R32G32B32_*`
R | G | B | A | `VK_FORMAT_R32G32B32A32_*`
R | `VK_FORMAT_R64_*`
R | G | `VK_FORMAT_R64G64_*`
`VK_FORMAT_R64G64B64_*` as `VK_FORMAT_R64G64_*` but with B in bytes 16-23
`VK_FORMAT_R64G64B64A64_*` as `VK_FORMAT_R64G64B64_*` but with A in bytes 24-31

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.

Table 31.6. Bit mappings for packed 8-bit formats

Bit $\rightarrow$ | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
--- | --- | --- | --- | --- | --- | --- | --- | ---
`VK_FORMAT_R4G4_UNORM_PACK8` | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $G_3$ | $G_2$ | $G_1$ | $G_0$

Table 31.7. Bit mappings for packed 16-bit formats

Bit $\rightarrow$ | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
`VK_FORMAT_R4G4B4A4_UNORM_PACK16` | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $A_3$ | $A_2$ | $A_1$ | $A_0$
`VK_FORMAT_B4G4R4A4_UNORM_PACK16` | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $A_3$ | $A_2$ | $A_1$ | $A_0$
`VK_FORMAT_R5G6B5_UNORM_PACK16` | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $G_5$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$
`VK_FORMAT_B5G6R5_UNORM_PACK16` | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $G_5$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$
`VK_FORMAT_R5G5B5A1_UNORM_PACK16` | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $A_0$
`VK_FORMAT_B5G5R5A1_UNORM_PACK16` | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $A_0$
`VK_FORMAT_A1R5G5B5_UNORM_PACK16` | $A_0$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$

Table 31.8. Bit mappings for packed 32-bit formats

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
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
`VK_FORMAT_A8B8G8R8_*_PACK32`
$A_7$ | $A_6$ | $A_5$ | $A_4$ | $A_3$ | $A_2$ | $A_1$ | $A_0$ | $B_7$ | $B_6$ | $B_5$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $G_7$ | $G_6$ | $G_5$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $R_7$ | $R_6$ | $R_5$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$
`VK_FORMAT_A2R10G10B10_*_PACK32`
$A_1$ | $A_0$ | $R_9$ | $R_8$ | $R_7$ | $R_6$ | $R_5$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$ | $G_9$ | $G_8$ | $G_7$ | $G_6$ | $G_5$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $B_9$ | $B_8$ | $B_7$ | $B_6$ | $B_5$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$
`VK_FORMAT_A2B10G10R10_*_PACK32`
$A_1$ | $A_0$ | $B_9$ | $B_8$ | $B_7$ | $B_6$ | $B_5$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $G_9$ | $G_8$ | $G_7$ | $G_6$ | $G_5$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $R_9$ | $R_8$ | $R_7$ | $R_6$ | $R_5$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$
`VK_FORMAT_B10G11R11_UFLOAT_PACK32`
$B_9$ | $B_8$ | $B_7$ | $B_6$ | $B_5$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $G_{10}$ | $G_9$ | $G_8$ | $G_7$ | $G_6$ | $G_5$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $R_{10}$ | $R_9$ | $R_8$ | $R_7$ | $R_6$ | $R_5$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$
`VK_FORMAT_E5B9G9R9_UFLOAT_PACK32`
$E_4$ | $E_3$ | $E_2$ | $E_1$ | $E_0$ | $B_8$ | $B_7$ | $B_6$ | $B_5$ | $B_4$ | $B_3$ | $B_2$ | $B_1$ | $B_0$ | $G_8$ | $G_7$ | $G_6$ | $G_5$ | $G_4$ | $G_3$ | $G_2$ | $G_1$ | $G_0$ | $R_8$ | $R_7$ | $R_6$ | $R_5$ | $R_4$ | $R_3$ | $R_2$ | $R_1$ | $R_0$
`VK_FORMAT_X8_D24_UNORM_PACK32`
$X_7$ | $X_6$ | $X_5$ | $X_4$ | $X_3$ | $X_2$ | $X_1$ | $X_0$ | $D_{23}$ | $D_{22}$ | $D_{21}$ | $D_{20}$ | $D_{19}$ | $D_{18}$ | $D_{17}$ | $D_{16}$ | $D_{15}$ | $D_{14}$ | $D_{13}$ | $D_{12}$ | $D_{11}$ | $D_{10}$ | $D_9$ | $D_8$ | $D_7$ | $D_6$ | $D_5$ | $D_4$ | $D_3$ | $D_2$ | $D_1$ | $D_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 that 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 data element. Compressed color formats are compatible with each other if the only difference between them is the numerical type of the uncompressed pixels (e.g. signed vs. unsigned, or SRGB vs. UNORM encoding). Each depth/stencil format is only compatible with itself. In the following table, all the formats in the same row are compatible.

Table 31.9. Compatible formats

Class | Formats
--- | ---
8-bit | `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-bit | `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`
24-bit | `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-bit | `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`, `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-bit | `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-bit | `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-bit | `VK_FORMAT_R32G32B32_UINT`, `VK_FORMAT_R32G32B32_SINT`, `VK_FORMAT_R32G32B32_SFLOAT`
128-bit | `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-bit | `VK_FORMAT_R64G64B64_UINT`, `VK_FORMAT_R64G64B64_SINT`, `VK_FORMAT_R64G64B64_SFLOAT`
256-bit | `VK_FORMAT_R64G64B64A64_UINT`, `VK_FORMAT_R64G64B64A64_SINT`, `VK_FORMAT_R64G64B64A64_SFLOAT`
BC1_RGB | `VK_FORMAT_BC1_RGB_UNORM_BLOCK`, `VK_FORMAT_BC1_RGB_SRGB_BLOCK`
BC1_RGBA | `VK_FORMAT_BC1_RGBA_UNORM_BLOCK`, `VK_FORMAT_BC1_RGBA_SRGB_BLOCK`
BC2 | `VK_FORMAT_BC2_UNORM_BLOCK`, `VK_FORMAT_BC2_SRGB_BLOCK`
BC3 | `VK_FORMAT_BC3_UNORM_BLOCK`, `VK_FORMAT_BC3_SRGB_BLOCK`
BC4 | `VK_FORMAT_BC4_UNORM_BLOCK`, `VK_FORMAT_BC4_SNORM_BLOCK`
BC5 | `VK_FORMAT_BC5_UNORM_BLOCK`, `VK_FORMAT_BC5_SNORM_BLOCK`
BC6H | `VK_FORMAT_BC6H_UFLOAT_BLOCK`, `VK_FORMAT_BC6H_SFLOAT_BLOCK`
BC7 | `VK_FORMAT_BC7_UNORM_BLOCK`, `VK_FORMAT_BC7_SRGB_BLOCK`
ETC2_RGB | `VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK`, `VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK`
ETC2_RGBA | `VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK`, `VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK`
ETC2_EAC_RGBA | `VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK`, `VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK`
EAC_R | `VK_FORMAT_EAC_R11_UNORM_BLOCK`, `VK_FORMAT_EAC_R11_SNORM_BLOCK`
EAC_RG | `VK_FORMAT_EAC_R11G11_UNORM_BLOCK`, `VK_FORMAT_EAC_R11G11_SNORM_BLOCK`
ASTC_4x4 | `VK_FORMAT_ASTC_4x4_UNORM_BLOCK`, `VK_FORMAT_ASTC_4x4_SRGB_BLOCK`
ASTC_5x4 | `VK_FORMAT_ASTC_5x4_UNORM_BLOCK`, `VK_FORMAT_ASTC_5x4_SRGB_BLOCK`
ASTC_5x5 | `VK_FORMAT_ASTC_5x5_UNORM_BLOCK`, `VK_FORMAT_ASTC_5x5_SRGB_BLOCK`
ASTC_6x5 | `VK_FORMAT_ASTC_6x5_UNORM_BLOCK`, `VK_FORMAT_ASTC_6x5_SRGB_BLOCK`
ASTC_6x6 | `VK_FORMAT_ASTC_6x6_UNORM_BLOCK`, `VK_FORMAT_ASTC_6x6_SRGB_BLOCK`
ASTC_8x5 | `VK_FORMAT_ASTC_8x5_UNORM_BLOCK`, `VK_FORMAT_ASTC_8x5_SRGB_BLOCK`
ASTC_8x6 | `VK_FORMAT_ASTC_8x6_UNORM_BLOCK`, `VK_FORMAT_ASTC_8x6_SRGB_BLOCK`
ASTC_8x8 | `VK_FORMAT_ASTC_8x8_UNORM_BLOCK`, `VK_FORMAT_ASTC_8x8_SRGB_BLOCK`
ASTC_10x5 | `VK_FORMAT_ASTC_10x5_UNORM_BLOCK`, `VK_FORMAT_ASTC_10x5_SRGB_BLOCK`
ASTC_10x6 | `VK_FORMAT_ASTC_10x6_UNORM_BLOCK`, `VK_FORMAT_ASTC_10x6_SRGB_BLOCK`
ASTC_10x8 | `VK_FORMAT_ASTC_10x8_UNORM_BLOCK`, `VK_FORMAT_ASTC_10x8_SRGB_BLOCK`
ASTC_10x10 | `VK_FORMAT_ASTC_10x10_UNORM_BLOCK`, `VK_FORMAT_ASTC_10x10_SRGB_BLOCK`
ASTC_12x10 | `VK_FORMAT_ASTC_12x10_UNORM_BLOCK`, `VK_FORMAT_ASTC_12x10_SRGB_BLOCK`
ASTC_12x12 | `VK_FORMAT_ASTC_12x12_UNORM_BLOCK`, `VK_FORMAT_ASTC_12x12_SRGB_BLOCK`
D16 | `VK_FORMAT_D16_UNORM`
D24 | `VK_FORMAT_X8_D24_UNORM_PACK32`
D32 | `VK_FORMAT_D32_SFLOAT`
S8 | `VK_FORMAT_S8_UINT`
D16S8 | `VK_FORMAT_D16_UNORM_S8_UINT`
D24S8 | `VK_FORMAT_D24_UNORM_S8_UINT`
D32S8 | `VK_FORMAT_D32_SFLOAT_S8_UINT`

### 31.3.2. Format Properties

To query supported format features which are properties of the physical device, call:

    void vkGetPhysicalDeviceFormatProperties(
        VkPhysicalDevice                            physicalDevice,
        VkFormat                                    format,
        VkFormatProperties*                         pFormatProperties);

- `physicalDevice` is the physical device from which to query the format properties.
- `format` is the format whose properties are queried.
- `pFormatProperties` is a pointer to a `VkFormatProperties` structure in which physical device properties for `format` are returned.

The `VkPhysicalDeviceLimits` structure is defined as:

    typedef struct VkFormatProperties {
        VkFormatFeatureFlags    linearTilingFeatures;
        VkFormatFeatureFlags    optimalTilingFeatures;
        VkFormatFeatureFlags    bufferFeatures;
    } VkFormatProperties;

- `linearTilingFeatures` describes the features supported by `VK_IMAGE_TILING_LINEAR`.
- `optimalTilingFeatures` describes the features supported by `VK_IMAGE_TILING_OPTIMAL`.
- `bufferFeatures` describes the features supported by buffers.

Supported features are described as a set of `VkFormatFeatureFlagBits`:

    typedef enum VkFormatFeatureFlagBits {
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
        VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
        VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
        VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
        VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
    } VkFormatFeatureFlagBits;

The `linearTilingFeatures` and `optimalTilingFeatures` members of the `VkFormatProperties` structure describe what features are supported by `VK_IMAGE_TILING_LINEAR` and `VK_IMAGE_TILING_OPTIMAL` images, respectively.

The following bits may be set in `linearTilingFeatures` and `optimalTilingFeatures`, indicating they are supported by images or image views created with the queried `vkGetPhysicalDeviceFormatProperties`::`format`:

`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT`
  `VkImageView` can be sampled from. See sampled images section.
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT`
  `VkImageView` can be used as storage image. See storage images section.
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT`
  `VkImageView` can be used as storage image that supports atomic operations.
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT`
  `VkImageView` can be used as a framebuffer color attachment and as an input attachment.
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT`
  `VkImageView` can be used as a framebuffer color attachment that supports blending and as an input attachment.
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT`
  `VkImageView` can be used as a framebuffer depth/stencil attachment and as an input attachment.
`VK_FORMAT_FEATURE_BLIT_SRC_BIT`
  `VkImage` can be used as `srcImage` for the `vkCmdBlitImage` command.
`VK_FORMAT_FEATURE_BLIT_DST_BIT`
  `VkImage` can be used as `dstImage` for the `vkCmdBlitImage` command.
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT`

  If `VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` is also set, `VkImageView` can be used with a sampler that has either of `magFilter` or `minFilter` set to `VK_FILTER_LINEAR`, or `mipmapMode` set to `VK_SAMPLER_MIPMAP_MODE_LINEAR`. If `VK_FORMAT_FEATURE_BLIT_SRC_BIT` is also set, `VkImage` can be used as the `srcImage` to `vkCmdBlitImage` with a `filter` of `VK_FILTER_LINEAR`. This bit must only be exposed for formats that also support the `VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` or `VK_FORMAT_FEATURE_BLIT_SRC_BIT`.

  If the format being queried is a depth/stencil format, this bit only indicates that the depth aspect (not the stencil aspect) of an image of this format supports linear filtering, and that linear filtering of the depth aspect is supported whether depth compare is enabled in the sampler or not. If this bit is not present, linear filtering with depth compare disabled is unsupported and linear filtering with depth compare enabled is supported, but may compute the filtered value in an implementation-dependent manner which differs from the normal rules of linear filtering. The resulting value must be in the range $[0,1]$ and should be proportional to, or a weighted average of, the number of comparison passes or failures.

The following features may appear in `bufferFeatures`, indicating they are supported by buffers or buffer views created with the queried `vkGetPhysicalDeviceFormatProperties`::`format`:

`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT`
  Format can be used to create a `VkBufferView` that can be bound to a `VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER` descriptor.
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT`
  Format can be used to create a `VkBufferView` that can be bound to a `VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER` descriptor.
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
  Atomic operations are supported on `VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER` with this format.
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT`
  Format can be used as a vertex attribute format (`VkVertexInputAttributeDescription`::`format`).

| Note
If no format feature flags are supported, then the only possible use would be image transfers - which alone are not useful. As such, if no format feature flags are supported, the format itself is not supported, and images of that format cannot be created.

If `format` is a block-compression format, then buffers must not support any features for the format.

### 31.3.3. 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.

Table 31.10. Key for format feature tables

✓ | 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

Table 31.11. Feature bits in `optimalTilingFeatures`

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

Table 31.12. Feature bits in `bufferFeatures`

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

Table 31.13. Mandatory format support: sub-byte channels

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`VK_FORMAT_UNDEFINED` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R4G4_UNORM_PACK8` |  |  |  |  |  |  |  |  |  |  |  |  |
`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` | ✓ | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |  |  |  |  |

Table 31.14. Mandatory format support: 1-3 byte-sized channels

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`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` |  |  |  |  |  |  |  |  |  |  |  |  |
`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_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` |  |  |  |  |  |  |  |  |  |  |  |  |

Table 31.15. Mandatory format support: 4 byte-sized channels

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`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` | ✓ | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |  |  |  |  |

Table 31.16. Mandatory format support: 10-bit channels

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`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` |  |  |  |  |  |  |  |  |  |  |  |  |

Table 31.17. Mandatory format support: 16-bit channels

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`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` | ✓ | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |  | ✓ | ✓ |  |
`VK_FORMAT_R16G16_UNORM` |  |  |  |  |  |  |  |  |  | ✓ |  |  |
`VK_FORMAT_R16G16_SNORM` |  |  |  |  |  |  |  |  |  | ✓ |  |  |
`VK_FORMAT_R16G16_USCALED` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R16G16_SSCALED` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R16G16_UINT` | ✓ | ✓ |  |  |  | ✓ | ✓ |  |  | ✓ | ✓ |  |
`VK_FORMAT_R16G16_SINT` | ✓ | ✓ |  |  |  | ✓ | ✓ |  |  | ✓ | ✓ |  |
`VK_FORMAT_R16G16_SFLOAT` | ✓ | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |  | ✓ | ✓ |  |
`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` |  |  |  |  |  |  |  |  |  |  |  |  |
`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` | ✓ | ✓ | ✓ | ✓ |  | ✓ | ✓ | ✓ |  | ✓ | ✓ | ✓ |

Table 31.18. Mandatory format support: 32-bit channels

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`VK_FORMAT_R32_UINT` | ✓ | ✓ |  | ✓ | ✓ | ✓ | ✓ |  |  | ✓ | ✓ | ✓ | ✓
`VK_FORMAT_R32_SINT` | ✓ | ✓ |  | ✓ | ✓ | ✓ | ✓ |  |  | ✓ | ✓ | ✓ | ✓
`VK_FORMAT_R32_SFLOAT` | ✓ | ✓ |  | ✓ |  | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |
`VK_FORMAT_R32G32_UINT` | ✓ | ✓ |  | ✓ |  | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |
`VK_FORMAT_R32G32_SINT` | ✓ | ✓ |  | ✓ |  | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |
`VK_FORMAT_R32G32_SFLOAT` | ✓ | ✓ |  | ✓ |  | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |
`VK_FORMAT_R32G32B32_UINT` |  |  |  |  |  |  |  |  |  | ✓ |  |  |
`VK_FORMAT_R32G32B32_SINT` |  |  |  |  |  |  |  |  |  | ✓ |  |  |
`VK_FORMAT_R32G32B32_SFLOAT` |  |  |  |  |  |  |  |  |  | ✓ |  |  |
`VK_FORMAT_R32G32B32A32_UINT` | ✓ | ✓ |  | ✓ |  | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |
`VK_FORMAT_R32G32B32A32_SINT` | ✓ | ✓ |  | ✓ |  | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |
`VK_FORMAT_R32G32B32A32_SFLOAT` | ✓ | ✓ |  | ✓ |  | ✓ | ✓ |  |  | ✓ | ✓ | ✓ |

Table 31.19. Mandatory format support: 64-bit/uneven channels and depth/stencil

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`VK_FORMAT_R64_UINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64_SINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64_SFLOAT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64_UINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64_SINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64_SFLOAT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64B64_UINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64B64_SINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64B64_SFLOAT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64B64A64_UINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64B64A64_SINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_R64G64B64A64_SFLOAT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_B10G11R11_UFLOAT_PACK32` | ✓ | ✓ | ✓ |  |  |  |  |  |  |  | ✓ |  |
`VK_FORMAT_E5B9G9R9_UFLOAT_PACK32` | ✓ | ✓ | ✓ |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_D16_UNORM` | ✓ | ✓ |  |  |  |  |  |  | ✓ |  |  |  |
`VK_FORMAT_X8_D24_UNORM_PACK32` |  |  |  |  |  |  |  |  | † |  |  |  |
`VK_FORMAT_D32_SFLOAT` | ✓ | ✓ |  |  |  |  |  |  | † |  |  |  |
`VK_FORMAT_S8_UINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_D16_UNORM_S8_UINT` |  |  |  |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_D24_UNORM_S8_UINT` |  |  |  |  |  |  |  |  | † |  |  |  |
`VK_FORMAT_D32_SFLOAT_S8_UINT` |  |  |  |  |  |  |  |  | † |  |  |  |
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` feature must be supported for at least one of `VK_FORMAT_X8_D24_UNORM_PACK32` and `VK_FORMAT_D32_SFLOAT`, and must be supported for at least one of `VK_FORMAT_D24_UNORM_S8_UINT` and `VK_FORMAT_D32_SFLOAT_S8_UINT`.

Table 31.20. Mandatory format support: BC compressed formats with `VkImageType` `VK_IMAGE_TYPE_2D` and `VK_IMAGE_TYPE_3D`

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`VK_FORMAT_BC1_RGB_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC1_RGB_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC1_RGBA_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC1_RGBA_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC2_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC2_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC3_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC3_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC4_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC4_SNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC5_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC5_SNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC6H_UFLOAT_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC6H_SFLOAT_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC7_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_BC7_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
The `VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT`, `VK_FORMAT_FEATURE_BLIT_SRC_BIT` and `VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` features must be supported in `optimalTilingFeatures` for all the formats in at least one of: this table, Table 31.21, “Mandatory format support: ETC2 and EAC compressed formats with VkImageType `VK_IMAGE_TYPE_2D`”, or Table 31.22, “Mandatory format support: ASTC LDR compressed formats with VkImageType `VK_IMAGE_TYPE_2D`”.

Table 31.21. Mandatory format support: ETC2 and EAC compressed formats with `VkImageType` `VK_IMAGE_TYPE_2D`

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_EAC_R11_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_EAC_R11_SNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_EAC_R11G11_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_EAC_R11G11_SNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
The `VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT`, `VK_FORMAT_FEATURE_BLIT_SRC_BIT` and `VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` features must be supported in `optimalTilingFeatures` for all the formats in at least one of: this table, Table 31.20, “Mandatory format support: BC compressed formats with VkImageType `VK_IMAGE_TYPE_2D` and `VK_IMAGE_TYPE_3D`”, or Table 31.22, “Mandatory format support: ASTC LDR compressed formats with VkImageType `VK_IMAGE_TYPE_2D`”.

Table 31.22. Mandatory format support: ASTC LDR compressed formats with `VkImageType` `VK_IMAGE_TYPE_2D`

`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT`
`VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_DST_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_BLIT_SRC_BIT` | $\downarrow$
`VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT` | $\downarrow$
Format | $\downarrow$
`VK_FORMAT_ASTC_4x4_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_4x4_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_5x4_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_5x4_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_5x5_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_5x5_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_6x5_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_6x5_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_6x6_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_6x6_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_8x5_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_8x5_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_8x6_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_8x6_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_8x8_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_8x8_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x5_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x5_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x6_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x6_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x8_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x8_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x10_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_10x10_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_12x10_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_12x10_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_12x12_UNORM_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
`VK_FORMAT_ASTC_12x12_SRGB_BLOCK` | † | † | † |  |  |  |  |  |  |  |  |  |
The `VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT`, `VK_FORMAT_FEATURE_BLIT_SRC_BIT` and `VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT` features must be supported in `optimalTilingFeatures` for all the formats in at least one of: this table, Table 31.20, “Mandatory format support: BC compressed formats with VkImageType `VK_IMAGE_TYPE_2D` and `VK_IMAGE_TYPE_3D`”, or Table 31.21, “Mandatory format support: ETC2 and EAC compressed formats with VkImageType `VK_IMAGE_TYPE_2D`”.