[[VK_EXT_swapchain_colorspace]]
== VK_EXT_swapchain_colorspace

*Name String*::
    +VK_EXT_swapchain_colorspace+
*Extension Type*::
    Instance
*Registered Extension Number*::
    105
*Last Modified Date*::
    2017-03-15
*Revision*::
    1
*IP Status*::
    No known IP claims.
*Dependencies*::
  - This extension is written against version 1.0 of the Vulkan API.
  - This extension requires +VK_KHR_surface+
*Contributors*::
  - Courtney Goeltzenleuchter, Google
*Contacts*::
  - Courtney Goeltzenleuchter, Google

=== New Enum Constants

  * Extending elink:VkColorSpaceKHR:
  ** ename:VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT - supports the Display-P3
     color space and applies an sRGB-like OETF.
  ** ename:VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT - supports the extended
     sRGB color space and applies a linear OETF.
  ** ename:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT - supports the DCI-P3 color
     space and applies a linear OETF.
  ** ename:VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT - supports the DCI-P3 color
     space and applies the Gamma 2.6 OETF.
  ** ename:VK_COLOR_SPACE_BT709_LINEAR_EXT - supports the BT709 color space
     and applies a linear OETF.
  ** ename:VK_COLOR_SPACE_BT709_NONLINEAR_EXT - supports the BT709 color
     space and applies the SMPTE 170M OETF.
  ** ename:VK_COLOR_SPACE_BT2020_LINEAR_EXT - supports the BT2020 color
     space and applies a linear OETF.
  ** ename:VK_COLOR_SPACE_HDR10_ST2084_EXT - supports HDR10 (BT2020 color
     space and applies the SMPTE ST2084 Perceptual Quantizer (PQ) OETF).
  ** ename:VK_COLOR_SPACE_DOLBYVISION_EXT - supports Dolby Vision (BT2020
     color space, proprietary encoding, and applies the SMPTE ST2084 OETF).
  ** ename:VK_COLOR_SPACE_HDR10_HLG_EXT - supports HDR10 (BT2020 color space
     and applies the Hybrid Log Gamma (HLG) OETF).
  ** ename:VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT - supports the AdobeRGB color
     space and applies a linear OETF.
  ** ename:VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT - supports the AdobeRGB
     color space and applies the Gamma 2.2 OETF.
  ** ename:VK_COLOR_SPACE_PASS_THROUGH_EXT - color components used "as is".
     Intended to allow application to supply data for color spaces not
     described here.

=== Issues

1) Does the spec need to specify which kinds of image formats support the
color spaces?

*RESOLVED*: Pixel format is independent of color space (though some color
spaces really want / need floating point color components to be useful).
Therefore, do not plan on documenting what formats support which
colorspaces.
An application can: call flink:vkGetPhysicalDeviceSurfaceFormatsKHR to query
what a particular implementation supports.

2) How does application determine if HW supports appropriate transfer
function for a colorspace?

*RESOLVED*: Extension indicates that implementation must: not do the OETF
encoding if it is not sRGB.
That responsibility falls to the application shaders.
Any other native OETF / EOTF functions supported by an implementation can be
described by separate extension.

=== Version History

  * Revision 1, 2016-12-27 (Courtney Goeltzenleuchter)
    - Initial version

  * Revision 2, 2017-01-19 (Courtney Goeltzenleuchter)
    - Add pass through and multiple options for BT2020.
    - Clean up some issues with equations not displaying properly.
