Skip to content

Latest commit

 

History

History
214 lines (184 loc) · 9.96 KB

compressedtex.adoc

File metadata and controls

214 lines (184 loc) · 9.96 KB

Compressed Image Formats

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.

Block-Compressed Image Formats

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.

Table 1. Mapping of Vulkan BC formats to descriptions
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

ETC Compressed Image Formats

The following formats are described in the “ETC2 Compressed Texture Image Formats” chapter of the Khronos Data Format Specification.

Table 2. Mapping of Vulkan ETC formats to descriptions
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 Compressed Image Formats

ASTC formats are described in the “ASTC Compressed Texture Image Formats” chapter of the Khronos Data Format Specification.

Table 3. Mapping of Vulkan ASTC formats to descriptions
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.