The compressed texture formats used by Vulkan are described in the specifically identified sections of the Khronos Data Format Specification, version 1.3.
Unless otherwise described, the quantities encoded in these compressed formats are treated as normalized, unsigned values.
Those formats listed as sRGB-encoded have in-memory representations of R, G and B components which are nonlinearly-encoded as R', G', and B'; any alpha component is unchanged. As part of filtering, the nonlinear R', G', and B' values are converted to linear R, G, and B components; any alpha component is unchanged. The conversion between linear and nonlinear encoding is performed as described in the “KHR_DF_TRANSFER_SRGB” section of the Khronos Data Format Specification.
BC1, BC2 and BC3 formats are described in “S3TC Compressed Texture Image Formats” chapter of the Khronos Data Format Specification. BC4 and BC5 are described in the “RGTC Compressed Texture Image Formats” chapter. BC6H and BC7 are described in the “BPTC Compressed Texture Image Formats” chapter.
elink:VkFormat | Khronos Data Format Specification description |
---|---|
Formats described in the “S3TC Compressed Texture Image Formats” chapter |
|
ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK |
BC1 with no alpha |
ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK |
BC1 with no alpha, sRGB-encoded |
ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK |
BC1 with alpha |
ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK |
BC1 with alpha, sRGB-encoded |
ename:VK_FORMAT_BC2_UNORM_BLOCK |
BC2 |
ename:VK_FORMAT_BC2_SRGB_BLOCK |
BC2, sRGB-encoded |
ename:VK_FORMAT_BC3_UNORM_BLOCK |
BC3 |
ename:VK_FORMAT_BC3_SRGB_BLOCK |
BC3, sRGB-encoded |
Formats described in the “RGTC Compressed Texture Image Formats” chapter |
|
ename:VK_FORMAT_BC4_UNORM_BLOCK |
BC4 unsigned |
ename:VK_FORMAT_BC4_SNORM_BLOCK |
BC4 signed |
ename:VK_FORMAT_BC5_UNORM_BLOCK |
BC5 unsigned |
ename:VK_FORMAT_BC5_SNORM_BLOCK |
BC5 signed |
Formats described in the “BPTC Compressed Texture Image Formats” chapter |
|
ename:VK_FORMAT_BC6H_UFLOAT_BLOCK |
BC6H (unsigned version) |
ename:VK_FORMAT_BC6H_SFLOAT_BLOCK |
BC6H (signed version) |
ename:VK_FORMAT_BC7_UNORM_BLOCK |
BC7 |
ename:VK_FORMAT_BC7_SRGB_BLOCK |
BC7, sRGB-encoded |
The following formats are described in the “ETC2 Compressed Texture Image Formats” chapter of the Khronos Data Format Specification.
elink:VkFormat | Khronos Data Format Specification description |
---|---|
ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK |
RGB ETC2 |
ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK |
RGB ETC2 with sRGB encoding |
ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK |
RGB ETC2 with punch-through alpha |
ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK |
RGB ETC2 with punch-through alpha and sRGB |
ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK |
RGBA ETC2 |
ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK |
RGBA ETC2 with sRGB encoding |
ename:VK_FORMAT_EAC_R11_UNORM_BLOCK |
Unsigned R11 EAC |
ename:VK_FORMAT_EAC_R11_SNORM_BLOCK |
Signed R11 EAC |
ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK |
Unsigned RG11 EAC |
ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK |
Signed RG11 EAC |
ASTC formats are described in the “ASTC Compressed Texture Image Formats” chapter of the Khronos Data Format Specification.
elink:VkFormat | Compressed texel block dimensions | Requested mode |
---|---|---|
ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK |
4 {times} 4 |
Linear LDR |
ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK |
4 {times} 4 |
sRGB |
ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK |
5 {times} 4 |
Linear LDR |
ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK |
5 {times} 4 |
sRGB |
ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK |
5 {times} 5 |
Linear LDR |
ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK |
5 {times} 5 |
sRGB |
ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK |
6 {times} 5 |
Linear LDR |
ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK |
6 {times} 5 |
sRGB |
ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK |
6 {times} 6 |
Linear LDR |
ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK |
6 {times} 6 |
sRGB |
ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK |
8 {times} 5 |
Linear LDR |
ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK |
8 {times} 5 |
sRGB |
ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK |
8 {times} 6 |
Linear LDR |
ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK |
8 {times} 6 |
sRGB |
ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK |
8 {times} 8 |
Linear LDR |
ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK |
8 {times} 8 |
sRGB |
ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK |
10 {times} 5 |
Linear LDR |
ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK |
10 {times} 5 |
sRGB |
ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK |
10 {times} 6 |
Linear LDR |
ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK |
10 {times} 6 |
sRGB |
ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK |
10 {times} 8 |
Linear LDR |
ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK |
10 {times} 8 |
sRGB |
ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK |
10 {times} 10 |
Linear LDR |
ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK |
10 {times} 10 |
sRGB |
ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK |
12 {times} 10 |
Linear LDR |
ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK |
12 {times} 10 |
sRGB |
ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK |
12 {times} 12 |
Linear LDR |
ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK |
12 {times} 12 |
sRGB |
ASTC textures containing any HDR blocks should: not be passed into the API using an sRGB or UNORM texture format.
Note
|
Note
An HDR block in a texture passed using a LDR UNORM format will return the appropriate ASTC error color if the implementation supports only the ASTC LDR profile, but may result in either the error color or a decompressed HDR color if the implementation supports HDR decoding. |
The ASTC decode mode is decode_float16.
Note that an implementation may: use HDR mode when linear LDR mode is requested.