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 available 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:

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 VK_FORMAT_* formats

Bit $\rightarrow$ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

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$

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$

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$

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$

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$

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$

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 1615 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.

vkGetPhysicalDeviceFormatProperties returns VkFormatProperties:

 

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

The 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 features may be supported by images or image views created with 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 bufferFeatures member of the VkFormatProperties structure describes what features are supported by buffers.

The following features may be supported by buffers or buffer views created with 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).

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.