Name

    EXT_gl_colorspace_scrgb_linear

Name Strings

    EGL_EXT_gl_colorspace_scrgb_linear

Contributors

    Lauri Hyvarinen
    Weiwan Liu
    Arun Swain

Contact

    Weiwan Liu (weiwliu 'at' nvidia.com)

IP Status

    No known IP claims.

Status

    Complete

Version

     Version 3 - November 22, 2016

Number

    EGL Extension #108

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.

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
    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.

New Procedures and Functions

    None.

New Tokens

    Accepted as attribute values for EGL_GL_COLORSPACE by
    eglCreateWindowSurface, eglCreatePbufferSurface and eglCreatePixmapSurface:

        EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT            0x3350

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 its value is EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT, then a linear scRGB
    color space is assumed, with a corresponding GL_FRAMEBUFFER_ATTACHMENT_-
    COLOR_ENCODING value of GL_LINEAR. As defined in IEC 61966-2-2:2003, scRGB
    is a linear color space and has the same white point and color primaries as
    those of sRGB.

    Add two paragraphs after the 4th paragraph above:

    When using a floating-point EGL surface with EGL_GL_COLORSPACE_SCRGB_-
    LINEAR_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] 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

    No issues so far.

Revision History

    Version 1, 2016/10/21
    - Initial draft

    Version 2, 2016/11/18
    - Add reference to IEC 61966-2-2:2003 standard and minor wording changes

    Version 3, 2016/11/22
    - Change status to complete

