Vulkan-Docs/doc/specs/vulkan/appendices/compressedtex.txt
Jon Leech b9e9296cd8 Change log for June 24, 2017 Vulkan 1.0.53 spec update:
* Bump API patch number and header version number to 53 for this update.

Github Issues:

Internal Issues:

  * Clarify mappings of coordinates for mutable, compatible image views in
    slink:VkImageViewCreateInfo (internal issue 815).
  * Make ename:VK_BIND_SFR_BIT require a logical device with multiple
    physical devices, so that standard sparse image block dimensions are
    only required on systems that support multi-GPU (internal issue 835).
  * Convert all files from use of // refBegin .. // refEnd comments to
    delimit ref pages, to use of open blocks, and update style guide
    accordingly (internal issue 839).
  * Add valid usage for slink:VkWriteDescriptorSet when performing updates
    to a ename:VK_STORAGE_IMAGE descriptor with layout
    ename:VK_IMAGE_LAYOUT_GENERAL.
  * Add a hack to the validity generator script to support an odd
    interaction between flink:vkCmdFillBuffer and an extension (internal
    issue 853).
  * Remove redundant text describing slink:VkBufferCreateInfo::pname:usage,
    which was already covered by implicit valid usage (internal issue 854).
  * Update implicit validity generator script to properly handle the
    pname:sType and pname:pNext members of "returnedonly" structures
    (internal issue 874).
  * Note that slink:VkApplicationInfo::pname:pApplicationName &
    slink:VkApplicationInfo::pname:pEngineName are optional, and add missing
    implicit valid usage statements for flink:vkDestroyInstance.
  * Added missing valid usage for flink:vkCmdWriteTimestamp to require a
    timestamp query pool.
  * Simplify and/or split "`non-atomic`" valid usage statements.

New Extensions:

  * `VK_AMD_gpu_shader_int16`
  * `VK_EXT_blend_operation_advanced`
  * `VK_EXT_sampler_filter_minmax`
  * `VK_NV_framebuffer_mixed_samples`

-----------------------------------------------------
Note: the 1.0.52 spec wasn't published on github, so the 1.0.53 release
combines both change sets.
-----------------------------------------------------

Change log for June 13, 2017 Vulkan 1.0.52 spec update:

  * Bump API patch number and header version number to 52 for this update.

Github Issues:

Internal Issues:

  * Clarify behavior when non-coherent memory has
    <<memory-device-unmap-does-not-flush, not been flushed before being
    unmapped>> (internal issue 819).
  * Fix description of code:WorkgroupSize builtin to note it decorates an
    object, not a variable (internal issue 836).
  * Fix asciidoc attributes so that trailing '{plus}' symbols in [eq] style
    equations are rendered properly (internal issue 845).
  * Add language to the "`Extension Handles, Objects, Enums, and Typedefs`"
    section of the Procedures and Conventions document stating that any new
    handle type requires a corresponding entry in the elink:VkObjectType
    enumerated type (internal issue 856).
  * Update style guide to use slink macro for Vulkan handle type names, and
    define narrow conditions under which to use the *name and *text macros
    instead of *link (internal issue 886).
  * Add a dependency of the <<VK_KHX_device_group,VK_KHX_device_group>>
    extension on VK_KHX_device_group_creation to +vk.xml+ and the extension
    appendix.
  * Change the copyright on Vulkan specification asciidoc *source* files to
    CC-BY 4.0, and update the proprietary Khronos copyright applied to the
    generated *output* formats (internal issue 327). This enables broader
    re-use and modification of the Vulkan specification sources, while not
    affecting the Reciprocal IP License between Vulkan Adopters and Working
    Group Members.

New Extensions:

  * `VK_NV_fill_rectangle`
  * `VK_NV_fragment_coverage_to_color`
2017-06-26 19:32:10 -07:00

120 lines
5.7 KiB
Plaintext

// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
[appendix]
= Compressed Image Formats
The compressed texture formats used by Vulkan are described in the
specifically identified sections of the <<data-format,Khronos Data Format
Specification>>, version 1.1.
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
[eq]#R#, [eq]#G# and [eq]#B# components which are nonlinearly-encoded as
[eq]#R'#, [eq]#G'#, and [eq]#B'#; any alpha component is unchanged.
As part of filtering, the nonlinear [eq]#R'#, [eq]#G'#, and [eq]#B'# values
are converted to linear [eq]#R#, [eq]#G#, and [eq]#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.
<<<
[[appendix-compressedtex-bc]]
== Block-Compressed Image Formats
.Mapping of Vulkan BC formats to descriptions
[width="90%",options="header",cols="5,4"]
|====
| VkFormat | <<data-format,Khronos Data Format Specification>> description
2+^| 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
2+^| 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
2+^| 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
|====
<<<
[[appendix-compressedtex-etc2]]
== ETC Compressed Image Formats
The following formats are described in the "`ETC2 Compressed Texture Image
Formats`" chapter of the <<data-format,Khronos Data Format Specification>>.
.Mapping of Vulkan ETC formats to descriptions
[options="header",cols="1,1"]
|====
| VkFormat | <<data-format,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
|====
<<<
[[appendix-compressedtex-astc]]
== ASTC Compressed Image Formats
ASTC formats are described in the "`ASTC Compressed Texture Image Formats`"
chapter of the <<data-format,Khronos Data Format Specification>>.
.Mapping of Vulkan ASTC formats to descriptions
[width="75%",options="header",cols="63%,15%,22%"]
|====
| VkFormat ^| Compressed texel block dimensions ^| sRGB-encoded
| ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK ^|[eq]#4 {times} 4# ^|No
| ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK ^|[eq]#4 {times} 4# ^|Yes
| ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK ^|[eq]#5 {times} 4# ^|No
| ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK ^|[eq]#5 {times} 4# ^|Yes
| ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK ^|[eq]#5 {times} 5# ^|No
| ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK ^|[eq]#5 {times} 5# ^|Yes
| ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK ^|[eq]#6 {times} 5# ^|No
| ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK ^|[eq]#6 {times} 5# ^|Yes
| ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK ^|[eq]#6 {times} 6# ^|No
| ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK ^|[eq]#6 {times} 6# ^|Yes
| ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK ^|[eq]#8 {times} 5# ^|No
| ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK ^|[eq]#8 {times} 5# ^|Yes
| ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK ^|[eq]#8 {times} 6# ^|No
| ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK ^|[eq]#8 {times} 6# ^|Yes
| ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK ^|[eq]#8 {times} 8# ^|No
| ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK ^|[eq]#8 {times} 8# ^|Yes
| ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK ^|[eq]#10 {times} 5# ^|No
| ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK ^|[eq]#10 {times} 5# ^|Yes
| ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK ^|[eq]#10 {times} 6# ^|No
| ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK ^|[eq]#10 {times} 6# ^|Yes
| ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK ^|[eq]#10 {times} 8# ^|No
| ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK ^|[eq]#10 {times} 8# ^|Yes
| ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK ^|[eq]#10 {times} 10# ^|No
| ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK ^|[eq]#10 {times} 10# ^|Yes
| ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK ^|[eq]#12 {times} 10# ^|No
| ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK ^|[eq]#12 {times} 10# ^|Yes
| ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK ^|[eq]#12 {times} 12# ^|No
| ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK ^|[eq]#12 {times} 12# ^|Yes
|====