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