| Name |
| |
| EXT_gl_colorspace_scrgb |
| |
| Name Strings |
| |
| EGL_EXT_gl_colorspace_scrgb |
| |
| Contributors |
| |
| Courtney Goeltzenleuchter |
| Lauri Hyvarinen |
| Weiwan Liu |
| Arun Swain |
| |
| Contact |
| |
| Courtney Goeltzenleuchter (courtneygo 'at' google.com) |
| |
| IP Status |
| |
| No known IP claims. |
| |
| Status |
| |
| Draft |
| |
| Version |
| |
| Version 1 - June 21, 2017 |
| |
| Number |
| |
| EGL Extension #119 |
| |
| Dependencies |
| |
| This extension is written against the wording of the EGL 1.5 specification |
| (August 27, 2014). |
| |
| This extension requires EGL_KHR_gl_colorspace and EGL_EXT_pixel_format_- |
| float, and interacts with EGL_EXT_surface_SMPTE2086_metadata. This extension |
| is closely related to EGL_EXT_gl_colorspace_scrgb_linear. |
| |
| Overview |
| |
| This extension provides a new color space option, scRGB, for applications to |
| choose from when creating an EGLSurface. The scRGB color space defines a |
| non-linear display referred space. It has the same white point and color |
| primaries as sRGB, and thus is backward-compatible with sRGB. Refer to |
| the IEC 61966-2-2:2003 standard for details on scRGB color space. |
| |
| This extension chooses to use floating-point formats for scRGB color space. |
| For each color channel, the floating-point values of 0.0 and 1.0 still |
| correspond to sRGB chromaticities and luminance levels. However, scRGB |
| space allows for color values beyond the range of [0.0, 1.0], and can thus |
| achieve a larger color volume than that of sRGB. As it is display referred, |
| scRGB space makes assumptions of how the floating-point color values should |
| map to luminance levels by the underlying display pipeline. The expected |
| mapping is such that a color value of (1.0, 1.0, 1.0) corresponds to a |
| luminance level of 80 nits on a standardized studio monitor. As the color |
| value per channel goes beyond 1.0 and up to 125.0, the corresponding |
| luminance levels also increase linearly to a maximum of 10000 nits. |
| |
| The application is responsible for applying the extended sRGB transfer |
| function to color values written to or read from a surface with a |
| colorspace of EGL_EXT_gl_colorspace_scrgb. |
| |
| New Procedures and Functions |
| |
| None. |
| |
| New Tokens |
| |
| Accepted as attribute values for EGL_GL_COLORSPACE by |
| eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface: |
| |
| EGL_GL_COLORSPACE_SCRGB_EXT 0x3351 |
| |
| Modifications to the EGL 1.5 Specification |
| |
| Insert below text in the 3rd paragraph on page 33 in 3.5.1 "Creating On- |
| Screen Rendering Surfaces", before "The default value of EGL_GL_COLORSPACE |
| is EGL_GL_COLORSPACE_LINEAR.": |
| |
| [[ If EGL_EXT_gl_colorspace_scrgb is supported ]] |
| |
| If its value is EGL_GL_COLORSPACE_SCRGB_EXT, then a non-linear scRGB |
| color space is assumed. with a corresponding GL_FRAMEBUFFER_ATTACHMENT_- |
| COLOR_ENCODING value of GL_SRGB. As defined in IEC 61966-2-2:2003, scRGB |
| is a color space and has the same white point and color primaries as |
| those of sRGB. The application is responsible for applying the appropriate |
| extended sRGB transfer function when reading or writing to this surface. |
| |
| |
| Add two paragraphs after the 4th paragraph above: |
| |
| When using a floating-point EGL surface with EGL_GL_COLORSPACE_SCRGB_EXT, |
| the display-referred values in the range of (0.0, 0.0, 0.0) to |
| (1.0, 1.0, 1.0) correspond to a luminance range of 0 to 80 nits, which is |
| the same luminance range for sRGB. To achieve a larger dynamic range of up |
| to 10000 nits, the output values can go beyond 1.0 and to a range of |
| [0.0, 125.0] (approximately 7.83 after the extended sRGB transfer function |
| applied) for each channel. |
| |
| The effective color gamut and luminance range of the content that extend |
| beyond those of sRGB may be described via EGL_EXT_surface_SMPTE2086_metadata. |
| It is highly recommended to supply such metadata, so the display pipeline |
| may use this information to transform the the colors in a manner that |
| attempts to preserve the creative intent of the color data. |
| |
| In the "Errors" section on page 34 in 3.5.1 "Creating On Screen Rendering |
| Surfaces", change the 3rd error definition to: |
| |
| * If config does not support the OpenGL colorspace, the OpenVG colorspace or |
| alpha format attributes specified in attrib list (as defined for |
| eglCreatePlatformWindowSurface), an EGL_BAD_MATCH error is generated. |
| |
| Issues |
| |
| * Clarifications on the scRGB colorspace extensions |
| |
| Revision History |
| |
| Version 1, 2017/06/21 |
| - Initial draft |
| |
| Version 2, 2017/08/17 |
| - Clarify definition of color space |