Name

    ANDROID_framebuffer_target

Name Strings

    EGL_ANDROID_framebuffer_target

Contributors

    Jamie Gennis

Contact

    Jamie Gennis, Google Inc. (jgennis 'at' google.com)

Status

    Draft.

Version

    Version 1, September 20, 2012

Number

    EGL Extension #XXX

Dependencies

    Requires EGL 1.0

    This extension is written against the wording of the EGL 1.4 Specification

Overview

    Android supports a number of different ANativeWindow implementations that
    can be used to create an EGLSurface.  One implementation, which is used to
    send the result of performing window composition to a display, may have
    some device-specific restrictions.  Because of this, some EGLConfigs may
    be incompatible with these ANativeWindows.  This extension introduces a
    new boolean EGLConfig attribute that indicates whether the EGLConfig
    supports rendering to an ANativeWindow for which the buffers are passed to
    the HWComposer HAL as a framebuffer target layer.

New Types

    None.

New Procedures and Functions

    None.

New Tokens

    Accepted by the <attribute> parameter of eglGetConfigAttrib and
    the <attrib_list> parameter of eglChooseConfig:

        EGL_FRAMEBUFFER_TARGET_ANDROID         0x3147

Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors)

    Section 3.4, Configuration Management, add a row to Table 3.1.

              Attribute                    Type                  Notes
        ------------------------------    -------     ---------------------------
        EGL_FRAMEBUFFER_TARGET_ANDROID    boolean     whether use as a HWComposer
                                                      framebuffer target layer is
                                                      supported

    Section 3.4, Configuration Management, add a row to Table 3.4.

              Attribute                    Default     Selection  Sort   Sort
                                                       Criteria   Order  Priority
        ------------------------------  -------------  ---------  -----  --------
        EGL_FRAMEBUFFER_TARGET_ANDROID  EGL_DONT_CARE    Exact    None

    Section 3.4, Configuration Management, add a paragraph at the end of the
    subsection titled Other EGLConfig Attribute Descriptions.

        EGL_FRAMEBUFFER_TARGET_ANDROID is a boolean indicating whether the
        config may be used to create an EGLSurface from an ANativeWindow for
        which the buffers are to be passed to HWComposer as a framebuffer
        target layer.

    Section 3.4.1, Querying Configurations, change the last paragraph as follow

        EGLConfigs are not sorted with respect to the parameters
        EGL_BIND_TO_TEXTURE_RGB, EGL_BIND_TO_TEXTURE_RGBA, EGL_CONFORMANT,
        EGL_LEVEL, EGL_NATIVE_RENDERABLE, EGL_MAX_SWAP_INTERVAL,
        EGL_MIN_SWAP_INTERVAL, EGL_RENDERABLE_TYPE, EGL_SURFACE_TYPE,
        EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_RED_VALUE,
        EGL_TRANSPARENT_GREEN_VALUE, EGL_TRANSPARENT_BLUE_VALUE, and
        EGL_RECORDABLE_ANDROID.

Issues


Revision History

#1 (Jamie Gennis, September 20, 2012)
    - Initial draft.
