Name

    ANGLE_display_semaphore_share_group

Name Strings

    EGL_ANGLE_display_semaphore_share_group

Contributors

    Peng Huang, Google

Contacts

    Peng Huang, Google (penghuang 'at' google.com)

Status

    Draft

Version

    Version 1, July 27, 2020

Number

    EGL Extension TBD

Dependencies

    This extension is written against the wording of the EGL 1.5 specification.

Overview

    This extension allows for the creation of OpenGL ES contexts that share
    semaphore objects with other contexts owned by the same display. This method
    of sharing semaphores can be used in conjuction with regular share groups.

New Types

    None

New Procedures and Functions

    None

New Tokens

    Accepted as an attribute name in the <*attrib_list> argument to
    eglCreateContext:

        EGL_DISPLAY_SEMAPHORE_SHARE_GROUP_ANGLE    0x348D

Additions to the EGL 1.5 Specification

    Add a new section entitled "OpenGL ES Global Semaphore Share Groups"
    to section 3.7.1:

    "If the attribute EGL_DISPLAY_SEMAPHORE_SHARE_GROUP_ANGLE is set to EGL_TRUE,
    a context that shares semaphores with other contexts owned by the same
    display and created with EGL_DISPLAY_SEMAPHORE_SHARE_GROUP_ANGLE set to
    EGL_TRUE will be created. If the share_context parameter to
    eglCreateContext is not NULL, all contexts within the share group must have
    been created with the same value of EGL_DISPLAY_SEMAPHORE_SHARE_GROUP_ANGLE.
    The default value of EGL_DISPLAY_SEMAPHORE_SHARE_GROUP_ANGLE is EGL_FALSE."

Issues

    (1) What happens to the shared semaphores when a context in the global share
        group is destroyed?

    RESOLOVED: When the last context in the global semaphore share group is
    destroyed, all semaphores in the global semaphore share group are released. If
    a new context is created in the global semaphore share group, no semaphores
    will exist.

    This mirrors how regular share groups work, releasing all objects when the
    last context is destroyed.

Revision History

    Version 1, 2020/07/27 - first draft.
