Name

    EXT_pixel_format_float

Name Strings

    EGL_EXT_pixel_format_float

Contributors

    Tom Cooksey
    Jesse Hall
    Mathias Heyer
    Adam Jackson
    James Jones
    Daniel Koch
    Jeff Leger
    Weiwan Liu
    Jeff Vigil

Contact

    Weiwan Liu, NVIDIA (weiwliu 'at' nvidia.com)

Status

    Complete

Version

    Version 4 - Nov 22, 2016

Number

    EGL Extension #106

Dependencies

    This extension is written against the wording of the EGL 1.5 specification
    (August 27, 2014).

Overview

    This extensions aims to provide similar functionality as GL_ARB_color_-
    buffer_float, WGL_ARB_pixel_format_float and GLX_ARB_fbconfig_float. This
    extension allows exposing new EGLConfigs that support formats with
    floating-point RGBA components. This is done by introducing a new EGLConfig
    attribute that represents the component type, i.e. fixed-point or
    floating-point. Such new EGLConfigs can be used to create floating-point
    rendering surfaces and contexts.

New Types

    None

New Procedures and Functions

    None

New Tokens

    Accepted as an attribute name in the <attrib_list> argument of
    eglChooseConfig, and the <attribute> argument of eglGetConfigAttrib:

        EGL_COLOR_COMPONENT_TYPE_EXT              0x3339

    Accepted as attribute values for the EGL_COLOR_COMPONENT_TYPE_EXT attribute
    of eglChooseConfig:

        EGL_COLOR_COMPONENT_TYPE_FIXED_EXT        0x333A
        EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT        0x333B

    Additions to table 3.1, "EGLConfig attributes" in Section 3.4 "Configuration
    Management":

        Attribute                       Type       Notes
        ---------                       ----       ---------
        EGL_COLOR_COMPONENT_TYPE_EXT     enum       color component type

    Append one paragraph at the end of "The Color Buffer" section on page 21:

        EGL_COLOR_COMPONENT_TYPE_EXT indicates the color buffer component type,
        and must be either EGL_COLOR_COMPONENT_TYPE_FIXED_EXT for fixed-point
        color buffers, or EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT for floating-point
        color buffers.

    Add one entry to Table 3.4 and increment "Sort Priority" between "2" and
    "11" by one for existing entries:

        Attribute                      Default
        -----------                    ------------
        EGL_COLOR_COMPONENT_TYPE_EXT    EGL_COLOR_COMPONENT_TYPE_FIXED_EXT

        Selection Criteria    Sort Order    Priority
        ------------------    ----------    --------
        Exact                 Special        2

    Insert before the entry for EGL_COLOR_BUFFER_TYPE, and increment its
    numbering and subsequent numbering by one:

        2. Special: by EGL_COLOR_COMPONENT_TYPE_EXT where the precedence is
        EGL_COLOR_COMPONENT_TYPE_FIXED_EXT, EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT

    Change footnote 8 on page 30 to:

        Within the same EGL_COLOR_COMPONENT_TYPE_EXT, this rule places configs
        with deeper color buffers first in the list returned by
        eglChooseConfig...

Issues

    1. When reading from or rendering to a floating-point EGL surface, is there
       any clamping performed on the values?

       RESOLVED: It depends on the behavior of the client API. For example, in
       OpenGL and ES, by default no clamping will be done on the floating-point
       values, unless the clamping behavior is changed via the client API.

    2. When rendering to a floating-point EGL surface, since values may not be
       clamped to [0, 1], what is the range of values that applications can use
       to get display's "darkest black" and "brightest white"?

       RESOLVED: It is not in the scope of this extension to define a range of
       values that corresponds to display's capability. Please refer to the EGL
       specification for the chosen colorspace (EGL_GL_COLORSPACE), where such a
       reference range may be defined.

Revision History

    Rev.     Date        Author          Changes
    ----   --------  ---------------  ------------------------------------------
     1     12/11/15   Weiwan Liu      Initial version
     2     05/18/16   Weiwan Liu      Rename to EXT
     3     05/31/16   Weiwan Liu      Add issues
     4     11/22/16   Weiwan Liu      Change status to complete

