Name

    ANGLE_flexible_surface_compatibility

Name Strings

    EGL_ANGLE_flexible_surface_compatibility

Contributors

    John Bauman   (jbauman 'at' google.com)
    Shannon Woods (shannonwoods 'at' google.com)

Contact

    John Bauman   (jbauman 'at' google.com)

Status

    Draft

Version

    Version 3, Dec 15, 2015

Number

    EGL Extension #XXX

Extension Type

    EGL display extension

Dependencies

    This extension is written against the language of EGL 1.5.

Overview

    Some EGL implementations may allow any surface to be made current with any
    context from the same display, without restrictions due to bit depth.

IP Status

    No known claims.

New Types

    None.

New Procedures and Functions

    None.

New Tokens

    Accepted by the <attribute> parameter of eglQuerySurface and by the
    <attrib_list> parameter of eglCreateWindowSurface,
    eglCreatePlatformWindowSurface, eglCreatePbufferSurface, and
    eglCreatePbufferFromClientBuffer:

    EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE  0x33A6

Changes to Chapter 2 of the EGL 1.5 Specification (EGL Operation)

    Replace the first paragraph of the first bulleted list item in section
    2.2, page 4
    (Rendering Contexts and Drawing Surfaces)

    "They support the same type of color buffer (RGB or luminance), or the
    surface has the EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE
    attribute set to EGL_TRUE."

    Replace the first paragraph of the second bulleted list item in section
    2.2, page 4
    (Rendering Contexts and Drawing Surfaces)

    "They have color buffers and ancillary buffers of the same depth, or the
    surface has the EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE
    attribute set to EGL_TRUE."

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

    Modify the fourth paragraph of Section 3.5.1, page 32
    (Creating On-Screen rendering Surfaces)

    "<attrib_list> specifies a list of attributes for the window. The list has
    the same structure as described for eglChooseConfig. Attributes that can
    be specified in <attrib_list> include
    EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE, EGL_GL_COLORSPACE,
    EGL_RENDER_BUFFER, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."

    Add the following between paragraphs 6 and 7 of Section 3.5.1, page 32
    (Creating On-Screen Rendering Surfaces)

    "EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE specifies whether the
    surface can be made current with a context with a config of different bit
    depth. Its values can be EGL_TRUE, in which case that is supported, or
    EGL_FALSE, in which case that is not supported."

    Modify the fourth paragraph of Section 3.5.2, page 35
    (Creating Off-Screen Rendering Surfaces)

    "<attrib_list> specifies a list of attributes for the pbuffer. The list
    has the same structure as described for eglChooseConfig. Attributes that
    can be specified in <attrib_list> include EGL_WIDTH, EGL_HEIGHT,
    EGL_LARGEST_PBUFFER, EGL_TEXTURE_FORMAT, EGL_TEXTURE_TARGET,
    EGL_MIPMAP_TEXTURE, EGL_GL_COLORSPACE, EGL_VG_COLORSPACE,
    EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE, and
    EGL_VG_ALPHA_FORMAT."

    Modify paragraph twelve of Section 3.5.2, page 36

    "EGL_GL_COLORSPACE, EGL_VG_COLORSPACE,
    EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE, and
    EGL_VG_ALPHA_FORMAT have the same meaning and default values as when used
    with eglCreatePlatformWindowSurface."

    Modify the fifth paragraph of Section 3.5.3, page 37
    (Binding Off-Screen Rendering Surfaces To Client Buffers)

    "<attrib_list> specifies a list of attributes for the pbuffer. The list
    has the same structure as described for eglChooseConfig. Attributes that
    can be specified in <attrib_list> include EGL_TEXTURE_FORMAT,
    EGL_TEXTURE_TARGET, EGL_- MIPMAP_TEXTURE, and
    EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE. The meaning of these
    attributes is as described above for eglCreatePbufferSurface. The
    EGL_VG_COLORSPACE and EGL_VG_ALPHA_FORMAT attributes of the surface are
    determined by the VGImageFormat of buffer."

    Add the following entry to Table 3.5, page 44 (Queryable surface
    attributes and types)

    Attribute                                          Type    Description
    -------------------------------------------------- ------- ------------------------
    EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE boolean Surface can be made
                                                               current with contexts
                                                               of a different bit depth

Issues

    None

Revision History

    Version 3, Dec 15, 2015 (John Bauman)
        - Modify EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE value.

    Version 2, Dec 1, 2015 (John Bauman)
        - Add EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE to specify
          new behavior.

    Version 1, Nov 24, 2015 (John Bauman)
        - Initial Draft
