102f4aeb0Sopenharmony_ciName
202f4aeb0Sopenharmony_ci
302f4aeb0Sopenharmony_ci    EXT_client_sync
402f4aeb0Sopenharmony_ci
502f4aeb0Sopenharmony_ciName Strings
602f4aeb0Sopenharmony_ci
702f4aeb0Sopenharmony_ci    EGL_EXT_client_sync
802f4aeb0Sopenharmony_ci
902f4aeb0Sopenharmony_ciContributors
1002f4aeb0Sopenharmony_ci
1102f4aeb0Sopenharmony_ci    Daniel Kartch
1202f4aeb0Sopenharmony_ci
1302f4aeb0Sopenharmony_ciContacts
1402f4aeb0Sopenharmony_ci
1502f4aeb0Sopenharmony_ci    Daniel Kartch, NVIDIA Corporation (dkartch 'at' nvidia.com)
1602f4aeb0Sopenharmony_ci
1702f4aeb0Sopenharmony_ciStatus
1802f4aeb0Sopenharmony_ci
1902f4aeb0Sopenharmony_ci    Complete
2002f4aeb0Sopenharmony_ci
2102f4aeb0Sopenharmony_ciVersion
2202f4aeb0Sopenharmony_ci
2302f4aeb0Sopenharmony_ci    Version 2, April 20, 2018
2402f4aeb0Sopenharmony_ci
2502f4aeb0Sopenharmony_ciNumber
2602f4aeb0Sopenharmony_ci
2702f4aeb0Sopenharmony_ci    EGL Extension #129
2802f4aeb0Sopenharmony_ci
2902f4aeb0Sopenharmony_ciExtension type
3002f4aeb0Sopenharmony_ci
3102f4aeb0Sopenharmony_ci    EGL display extension
3202f4aeb0Sopenharmony_ci
3302f4aeb0Sopenharmony_ciDependencies
3402f4aeb0Sopenharmony_ci
3502f4aeb0Sopenharmony_ci    Requires EGL_EXT_sync_reuse
3602f4aeb0Sopenharmony_ci
3702f4aeb0Sopenharmony_ciOverview
3802f4aeb0Sopenharmony_ci
3902f4aeb0Sopenharmony_ci    The EGL_KHR_reusable_sync extension defines an EGL_SYNC_REUSABLE_KHR
4002f4aeb0Sopenharmony_ci    EGLSync type which is signaled and unsignaled by client events. The
4102f4aeb0Sopenharmony_ci    EGL_EXT_sync_reuse extension allows all EGLSyncs to become reusable.
4202f4aeb0Sopenharmony_ci    The signaling behavior associated with EGL_SYNC_REUSABLE_KHR is
4302f4aeb0Sopenharmony_ci    still desirable, but the name becomes misleading if all EGLSyncs can
4402f4aeb0Sopenharmony_ci    be reused. This extension defines an EGLSync type with equivalent
4502f4aeb0Sopenharmony_ci    behavior, separating the signaling mechanism from the reusability.
4602f4aeb0Sopenharmony_ci
4702f4aeb0Sopenharmony_ciNew Procedures and Functions
4802f4aeb0Sopenharmony_ci
4902f4aeb0Sopenharmony_ci    EGLBoolean eglClientSignalSyncEXT(
5002f4aeb0Sopenharmony_ci                        EGLDisplay dpy,
5102f4aeb0Sopenharmony_ci                        EGLSync sync,
5202f4aeb0Sopenharmony_ci                        const EGLAttrib *attrib_list);
5302f4aeb0Sopenharmony_ci
5402f4aeb0Sopenharmony_ciNew Types
5502f4aeb0Sopenharmony_ci
5602f4aeb0Sopenharmony_ci    None
5702f4aeb0Sopenharmony_ci
5802f4aeb0Sopenharmony_ciNew Tokens
5902f4aeb0Sopenharmony_ci
6002f4aeb0Sopenharmony_ci    Accepted by the <type> parameter of eglCreateSync, and returned
6102f4aeb0Sopenharmony_ci    in <value> when eglGetSyncAttrib is called with <attribute>
6202f4aeb0Sopenharmony_ci    EGL_SYNC_TYPE:
6302f4aeb0Sopenharmony_ci
6402f4aeb0Sopenharmony_ci    EGL_SYNC_CLIENT_EXT                   0x3364
6502f4aeb0Sopenharmony_ci
6602f4aeb0Sopenharmony_ci    Returned in <value> when eglGetSyncAttrib is called with attribute
6702f4aeb0Sopenharmony_ci    EGL_SYNC_CONDITION:
6802f4aeb0Sopenharmony_ci
6902f4aeb0Sopenharmony_ci    EGL_SYNC_CLIENT_SIGNAL_EXT            0x3365
7002f4aeb0Sopenharmony_ci
7102f4aeb0Sopenharmony_ciAdd to the list of sync object decriptions in 3.8.1 Sync Objects
7202f4aeb0Sopenharmony_ci
7302f4aeb0Sopenharmony_ci    A <client sync object> reflects the readiness of some client-side
7402f4aeb0Sopenharmony_ci    state. Sync objects of this type are not visible to API contexts and
7502f4aeb0Sopenharmony_ci    may not be used with eglWaitSync. They may be waited for with
7602f4aeb0Sopenharmony_ci    eglClientWaitSync or polled with eglGetSyncAttrib as other sync
7702f4aeb0Sopenharmony_ci    types.
7802f4aeb0Sopenharmony_ci
7902f4aeb0Sopenharmony_ciAdd to the end of 3.8.1 Sync Objects
8002f4aeb0Sopenharmony_ci
8102f4aeb0Sopenharmony_ci    The command
8202f4aeb0Sopenharmony_ci
8302f4aeb0Sopenharmony_ci        EGLBoolean eglClientSignalSyncEXT(EGLDisplay dpy, EGLSync sync,
8402f4aeb0Sopenharmony_ci            const EGLAttrib *attrib_list);
8502f4aeb0Sopenharmony_ci
8602f4aeb0Sopenharmony_ci    may be called to switch sync objects which support it to the
8702f4aeb0Sopenharmony_ci    signaled state. Currently only sync objects with type
8802f4aeb0Sopenharmony_ci    EGL_SYNC_CLIENT_EXT provide this support. The attribute list may be
8902f4aeb0Sopenharmony_ci    used to provide additional information to the signaling operation,
9002f4aeb0Sopenharmony_ci    as defined for the sync type.
9102f4aeb0Sopenharmony_ci
9202f4aeb0Sopenharmony_ci    Errors
9302f4aeb0Sopenharmony_ci
9402f4aeb0Sopenharmony_ci        eglClientSignalSyncEXT returns EGL_FALSE on failure, and has no
9502f4aeb0Sopenharmony_ci        effect on <sync>.
9602f4aeb0Sopenharmony_ci        If <dpy> is not the name of a valid, initialized EGLDisplay, an
9702f4aeb0Sopenharmony_ci        EGL_BAD_DISPLAY error is generated.
9802f4aeb0Sopenharmony_ci        If <sync> is not a valid sync object associated with <dpy>, an
9902f4aeb0Sopenharmony_ci        EGL_BAD_PARAMETER error is generated.
10002f4aeb0Sopenharmony_ci        If <attrib_list> contains an attribute name not defined for the
10102f4aeb0Sopenharmony_ci        type of <sync>, an EGL_BAD_ATTRIBUTE error is generated.
10202f4aeb0Sopenharmony_ci        If <sync>'s type does not support this direct signaling, an
10302f4aeb0Sopenharmony_ci        EGL_BAD_ACCESS error is generated.
10402f4aeb0Sopenharmony_ci
10502f4aeb0Sopenharmony_ciInsert new subsection in 3.8.1 Sync Objects
10602f4aeb0Sopenharmony_ci
10702f4aeb0Sopenharmony_ci    3.8.1.x Creating and Signaling Client Sync Objects
10802f4aeb0Sopenharmony_ci
10902f4aeb0Sopenharmony_ci    If type is EGL_SYNC_CLIENT_EXT, a client sync object is created. The
11002f4aeb0Sopenharmony_ci    EGL_SYNC_STATUS attribute may be specified as either EGL_UNSIGNALED
11102f4aeb0Sopenharmony_ci    or EGL_SIGNALED, and will default to EGL_UNSIGNALED. No other
11202f4aeb0Sopenharmony_ci    attributes may be specified for a client sync object. The value of
11302f4aeb0Sopenharmony_ci    EGL_SYNC_CONDITION will be set to EGL_SYNC_CLIENT_SIGNAL_EXT.
11402f4aeb0Sopenharmony_ci
11502f4aeb0Sopenharmony_ci    A client sync object in the unsignaled state will switch to the
11602f4aeb0Sopenharmony_ci    signaled state when eglClientSignalSyncEXT is called. No attributes
11702f4aeb0Sopenharmony_ci    are supported for signaling a sync object of this type. Signaling a
11802f4aeb0Sopenharmony_ci    client sync object which is already in the signaled state will have
11902f4aeb0Sopenharmony_ci    no effect.
12002f4aeb0Sopenharmony_ci
12102f4aeb0Sopenharmony_ci    A client sync object which is in the signaled state may be switched
12202f4aeb0Sopenharmony_ci    back to the unsignaled state with eglUnsignalSyncEXT. No attributes
12302f4aeb0Sopenharmony_ci    are supported for unsignaling a sync object of this type.
12402f4aeb0Sopenharmony_ci
12502f4aeb0Sopenharmony_ciAdd to the error list for eglWaitSync in 3.8.1.3 Waiting for Sync
12602f4aeb0Sopenharmony_ciObjects
12702f4aeb0Sopenharmony_ci
12802f4aeb0Sopenharmony_ci    If <sync> is of type EGL_SYNC_CLIENT_EXT, an EGL_BAD_ACCESS error is
12902f4aeb0Sopenharmony_ci    generated.
13002f4aeb0Sopenharmony_ci
13102f4aeb0Sopenharmony_ciIssues
13202f4aeb0Sopenharmony_ci
13302f4aeb0Sopenharmony_ci    None
13402f4aeb0Sopenharmony_ci
13502f4aeb0Sopenharmony_ciRevision History
13602f4aeb0Sopenharmony_ci
13702f4aeb0Sopenharmony_ci    #2 (April 20, 2018) Daniel Kartch
13802f4aeb0Sopenharmony_ci       - Renamed to EXT
13902f4aeb0Sopenharmony_ci       - Fixed missing attrib_list in New Functions section
14002f4aeb0Sopenharmony_ci       - Eliminated condition as an allowed attribute at creation. This
14102f4aeb0Sopenharmony_ci         is inconsistent with other sync extensions, and there is no
14202f4aeb0Sopenharmony_ci         need to make it configurable at this time. Future extensions
14302f4aeb0Sopenharmony_ci         can make the condition configurable if desired.
14402f4aeb0Sopenharmony_ci
14502f4aeb0Sopenharmony_ci    #1 (Feburary 22, 2018) Daniel Kartch
14602f4aeb0Sopenharmony_ci       - Initial draft as XXX
147