EXT_pixel_format_float

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