blob: b871f394044db14659e3b7bfce5b7483e19fe410 [file] [log] [blame]
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