Name

    EXT_client_sync

Name Strings

    EGL_EXT_client_sync

Contributors

    Daniel Kartch

Contacts

    Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)

Status

    Complete

Version

    Version 2, April 20, 2018

Number

    EGL Extension #129

Extension type

    EGL display extension

Dependencies

    Requires EGL_EXT_sync_reuse

Overview

    The EGL_KHR_reusable_sync extension defines an EGL_SYNC_REUSABLE_KHR
    EGLSync type which is signaled and unsignaled by client events. The
    EGL_EXT_sync_reuse extension allows all EGLSyncs to become reusable.
    The signaling behavior associated with EGL_SYNC_REUSABLE_KHR is
    still desirable, but the name becomes misleading if all EGLSyncs can
    be reused. This extension defines an EGLSync type with equivalent
    behavior, separating the signaling mechanism from the reusability.

New Procedures and Functions

    EGLBoolean eglClientSignalSyncEXT(
                        EGLDisplay dpy,
                        EGLSync sync,
                        const EGLAttrib *attrib_list);

New Types

    None

New Tokens

    Accepted by the <type> parameter of eglCreateSync, and returned
    in <value> when eglGetSyncAttrib is called with <attribute>
    EGL_SYNC_TYPE:

    EGL_SYNC_CLIENT_EXT                   0x3364

    Returned in <value> when eglGetSyncAttrib is called with attribute
    EGL_SYNC_CONDITION:

    EGL_SYNC_CLIENT_SIGNAL_EXT            0x3365

Add to the list of sync object decriptions in 3.8.1 Sync Objects

    A <client sync object> reflects the readiness of some client-side
    state. Sync objects of this type are not visible to API contexts and
    may not be used with eglWaitSync. They may be waited for with
    eglClientWaitSync or polled with eglGetSyncAttrib as other sync
    types.

Add to the end of 3.8.1 Sync Objects

    The command

        EGLBoolean eglClientSignalSyncEXT(EGLDisplay dpy, EGLSync sync,
            const EGLAttrib *attrib_list);

    may be called to switch sync objects which support it to the
    signaled state. Currently only sync objects with type
    EGL_SYNC_CLIENT_EXT provide this support. The attribute list may be
    used to provide additional information to the signaling operation,
    as defined for the sync type.

    Errors

        eglClientSignalSyncEXT returns EGL_FALSE on failure, and has no
        effect on <sync>.
        If <dpy> is not the name of a valid, initialized EGLDisplay, an
        EGL_BAD_DISPLAY error is generated.
        If <sync> is not a valid sync object associated with <dpy>, an
        EGL_BAD_PARAMETER error is generated.
        If <attrib_list> contains an attribute name not defined for the
        type of <sync>, an EGL_BAD_ATTRIBUTE error is generated.
        If <sync>'s type does not support this direct signaling, an
        EGL_BAD_ACCESS error is generated.

Insert new subsection in 3.8.1 Sync Objects

    3.8.1.x Creating and Signaling Client Sync Objects

    If type is EGL_SYNC_CLIENT_EXT, a client sync object is created. The
    EGL_SYNC_STATUS attribute may be specified as either EGL_UNSIGNALED
    or EGL_SIGNALED, and will default to EGL_UNSIGNALED. No other
    attributes may be specified for a client sync object. The value of
    EGL_SYNC_CONDITION will be set to EGL_SYNC_CLIENT_SIGNAL_EXT.

    A client sync object in the unsignaled state will switch to the
    signaled state when eglClientSignalSyncEXT is called. No attributes
    are supported for signaling a sync object of this type. Signaling a
    client sync object which is already in the signaled state will have
    no effect.

    A client sync object which is in the signaled state may be switched
    back to the unsignaled state with eglUnsignalSyncEXT. No attributes
    are supported for unsignaling a sync object of this type.

Add to the error list for eglWaitSync in 3.8.1.3 Waiting for Sync
Objects

    If <sync> is of type EGL_SYNC_CLIENT_EXT, an EGL_BAD_ACCESS error is
    generated.

Issues

    None

Revision History

    #2 (April 20, 2018) Daniel Kartch
       - Renamed to EXT
       - Fixed missing attrib_list in New Functions section
       - Eliminated condition as an allowed attribute at creation. This
         is inconsistent with other sync extensions, and there is no
         need to make it configurable at this time. Future extensions
         can make the condition configurable if desired.

    #1 (Feburary 22, 2018) Daniel Kartch
       - Initial draft as XXX
