// Copyright 2019-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_texture_compression_astc_hdr.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2019-05-28
*IP Status*::
    No known issues.
*Contributors*::
  - Jan-Harald Fredriksen, Arm

=== Description

This extension adds support for textures compressed using the Adaptive
Scalable Texture Compression (ASTC) High Dynamic Range (HDR) profile.

When this extension is enabled, the HDR profile is supported for all ASTC
formats listed in <<appendix-compressedtex-astc, ASTC Compressed Image
Formats>>.

include::{generated}/interfaces/VK_EXT_texture_compression_astc_hdr.txt[]

=== Issues

1) Should we add a feature or limit for this functionality?

Yes.
It is consistent with the ASTC LDR support to add a feature like
textureCompressionASTC_HDR.

The feature is strictly speaking redundant as long as this is just an
extension; it would be sufficient to just enable the extension.
But adding the feature is more forward-looking if wanted to make this an
optional core feature in the future.

2) Should we introduce new format enums for HDR?

Yes.
Vulkan 1.0 describes the ASTC format enums as UNORM, e.g.
ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK, so it is confusing to make these
contain HDR data.
Note that the OpenGL (ES) extensions did not make this distinction because a
single ASTC HDR texture may contain both unorm and float blocks.
Implementations may: not be able to distinguish between LDR and HDR ASTC
textures internally and just treat them as the same format, i.e. if this
extension is supported then sampling from a
ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK image format may: return HDR results.
Applications can: get predictable results by using the appropriate image
format.


=== Version History

  * Revision 1, 2019-05-28 (Jan-Harald Fredriksen)
    - Initial version

