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 an 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 an 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 an 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 an 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 an 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 an 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.
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
Color formats must be represented in memory in exactly the form indicated
by the format’s name.
This means that promoting one format to another with more bits per component
and/or additional components must not occur for color formats.
Depth/stencil formats have more relaxed requirements as discussed
below.
Each format has an element size, the number of bytes used to stored one
element or one compressed block, with the value of the element size listed
in VkFormat
.
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 | ← 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 → | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
VK_FORMAT_R4G4_UNORM_PACK8
| R3 | R2 | R1 | R0 | G3 | G2 | G1 | G0 |
Table 31.7. Bit mappings for packed 16-bit formats
Bit → | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
VK_FORMAT_R4G4B4A4_UNORM_PACK16
| R3 | R2 | R1 | R0 | G3 | G2 | G1 | G0 | B3 | B2 | B1 | B0 | A3 | A2 | A1 | A0 |
VK_FORMAT_B4G4R4A4_UNORM_PACK16
| B3 | B2 | B1 | B0 | G3 | G2 | G1 | G0 | R3 | R2 | R1 | R0 | A3 | A2 | A1 | A0 |
VK_FORMAT_R5G6B5_UNORM_PACK16
| R4 | R3 | R2 | R1 | R0 | G5 | G4 | G3 | G2 | G1 | G0 | B4 | B3 | B2 | B1 | B0 |
VK_FORMAT_B5G6R5_UNORM_PACK16
| B4 | B3 | B2 | B1 | B0 | G5 | G4 | G3 | G2 | G1 | G0 | R4 | R3 | R2 | R1 | R0 |
VK_FORMAT_R5G5B5A1_UNORM_PACK16
| R4 | R3 | R2 | R1 | R0 | G4 | G3 | G2 | G1 | G0 | B4 | B3 | B2 | B1 | B0 | A0 |
VK_FORMAT_B5G5R5A1_UNORM_PACK16
| B4 | B3 | B2 | B1 | B0 | G4 | G3 | G2 | G1 | G0 | R4 | R3 | R2 | R1 | R0 | A0 |
VK_FORMAT_A1R5G5B5_UNORM_PACK16
| A0 | R4 | R3 | R2 | R1 | R0 | G4 | G3 | G2 | G1 | G0 | B4 | B3 | B2 | B1 | B0 |
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
|
A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | G7 | G6 | G5 | G4 | G3 | G2 | G1 | G0 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
VK_FORMAT_A2R10G10B10_*_PACK32
|
A1 | A0 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 | G9 | G8 | G7 | G6 | G5 | G4 | G3 | G2 | G1 | G0 | B9 | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
VK_FORMAT_A2B10G10R10_*_PACK32
|
A1 | A0 | B9 | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | G9 | G8 | G7 | G6 | G5 | G4 | G3 | G2 | G1 | G0 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
VK_FORMAT_B10G11R11_UFLOAT_PACK32
|
B9 | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | G10 | G9 | G8 | G7 | G6 | G5 | G4 | G3 | G2 | G1 | G0 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
|
E4 | E3 | E2 | E1 | E0 | B8 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | G8 | G7 | G6 | G5 | G4 | G3 | G2 | G1 | G0 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
VK_FORMAT_X8_D24_UNORM_PACK32
|
X7 | X6 | X5 | X4 | X3 | X2 | X1 | X0 | D23 | D22 | D21 | D20 | D19 | D18 | D17 | D16 | D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
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]](images/icons/note.png) | 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.