Name

    EXT_present_opaque

Name Strings

    EGL_EXT_present_opaque

Contributors

    Eric Engestrom

Contacts

    Eric Engestrom (eric 'at' engestrom.ch)

IP Status

    No known IP claims.

Status

    Complete

Version

    #1, August 8, 2021

Number

    EGL Extension #146

Extension Type

    EGL display extension

Dependencies

    Requires EGL 1.4 and EGL_KHR_image_base extension

    This extension is written against the wording of the EGL 1.4
    specification, and EGL_KHR_image_base version 6.

Overview

    This extension adds a new EGL surface attribute EGL_PRESENT_OPAQUE_EXT
    to indicate that the surface should be presented as opaque,
    disregarding any alpha channel if present.
    If surface attribute EGL_PRESENT_OPAQUE_EXT is EGL_TRUE, then the
    surface will be presented as opaque.

New Types

    None

New Procedures and Functions

    None

New Tokens

    New EGLSurface attribute name:

        EGL_PRESENT_OPAQUE_EXT                  0x31DF


Additions to Chapter 3 of the EGL 1.4 Specification (Rendering Surfaces)

    Change the second paragraph in section 3.5 on p. 28 (describing
    eglCreateWindowSurface):

        "Attributes that can be specified in attrib list include EGL_RENDER_BUFFER,
        EGL_PRESENT_OPAQUE_EXT, EGL_VG_COLORSPACE, and EGL_VG_ALPHA_FORMAT."

    Add the following paragraph in section 3.5 on p. 28 before
    "EGL_VG_COLORSPACE specifies the color space used by OpenVG"
    (describing eglCreateWindowSurface attrib_list):

        "EGL_PRESENT_OPAQUE_EXT specifies the presentation opacity mode
        of the window surface. If its value is EGL_TRUE, then the
        surface's alpha channel (if any) will be ignored and considered
        fully opaque. If its value is EGL_FALSE, then the compositor
        doesn't change its behaviour, and considers the surface's alpha
        channel the same way as if the extension wasn't implemented. The
        default value of EGL_PRESENT_OPAQUE_EXT is EGL_FALSE."

    Add to Table 3.5: Queryable surface attributes and types on p. 37

        EGL_PRESENT_OPAQUE_EXT    boolean    Surface presentation opacity mode

    Add following the second paragraph in section 3.6 on p. 39 (describing
    eglQuerySurface):

        "Querying EGL_PRESENT_OPAQUE_EXT returns the presentation
        opacity mode of the surface. The presentation opacity mode of
        window surfaces is specified in eglCreateWindowSurface. The
        presentation opacity mode of pbuffer and pixmap surfaces is
        always EGL_FALSE."

    Add following after "which must be a valid native pixmap handle." in section 3.9.2 on
    p. 53 (describing eglCopyBuffers):

        "If attribute EGL_PRESENT_OPAQUE_EXT of surface has value of EGL_TRUE, then
        an EGL_BAD_ACCESS error is returned."

Issues

    None

Revision History

    Version 2, 2021-08-17 (Eric Engestrom)
      - Re-worded the compositor's behaviour for EGL_FALSE.
      - Marked extension as Complete.

    Version 1, 2021-08-08 (Eric Engestrom)
      - Initial draft

