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 2 - August 25, 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 an extended sRGB (also called scRGB) color space option for applications to choose from when creating an EGLSurface. This extension defines the non-linear display referred scRGB color 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 ~7.83, the corresponding luminance levels also increase 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_LINEAR as neither OpenGL nor OpenGL ES supports framebuffers using an scRGB transfer function. The application is responsible for applying the appropriate extended sRGB transfer function when reading or writing to this buffer. scRGB is defined to use the same primaries and white-point as sRGB. See IEC 61966-2-2:2003 for details. 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, ~7.83] 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/25 - Clarify definition of color space