Lines Matching refs:sync
42 This extension introduces the concept of "sync objects" into EGL.
46 extension, introduces only a single type of sync object, the
47 "fence sync object." Additional types of sync objects may be
50 Fence sync objects have corresponding fences, which are inserted
51 into client API command streams. A sync object can be queried
65 * EGLSyncNV is an opaque handle to an EGL sync object
84 EGLBoolean eglDestroySyncNV( EGLSyncNV sync );
86 EGLBoolean eglFenceNV( EGLSyncNV sync );
88 EGLint eglClientWaitSyncNV( EGLSyncNV sync,
91 EGLBoolean eglSignalSyncNV( EGLSyncNV sync, EGLenum mode );
93 EGLBoolean eglGetSyncAttribNV( EGLSyncNV sync, EGLint attribute,
164 <unsignaled>. Events may be associated with a sync object. When an
165 event is initially associated with a sync object, the object is
166 unsignaled (its status is set to unsignaled). Once a sync object has
167 been created, EGL may be asked to wait for a sync object to become
170 is made when the sync object is created.
172 Only one type of sync object is defined, the fence sync object, whose
174 into the command streams of client API contexts. Fence sync objects may
184 creates a fence sync object for the specified display <dpy> and returns
185 a handle to the new object. The sync object is assigned a type of
188 list specifying other attributes of the sync object, terminated by an
190 assigned their default values. Attributes accepted by fence sync objects
212 EGLBoolean eglFenceNV( EGLSyncNV sync );
216 assoicates it with sync object <sync>. <sync> must be a sync object
217 created with eglCreateFenceSyncNV, and the display associated with <sync>
219 eglGetCurrentDisplay). Calling eglFenceNV unsignals <sync>.
221 When the condition of <sync> is satisfied by the fence command, <sync> is
223 eglClientWaitSyncNV commands (see below) blocking on <sync> to unblock.
225 of the fence command corresponding to the sync object, and all preceding
226 commands in the associated client API context's command stream. <sync>
232 for a single sync object. The sync object is unsignaled every time a new
235 associated with the sync object have completed. However, each time a fence
236 command completes (signaling the sync object), at least one
237 eglClientWaitSyncNV command blocking on that sync object will unblock.
241 * If <sync> is not a valid sync object with a type of EGL_SYNC_FENCE_NV,
244 * If the display associated with <sync> does not match the current
253 EGLint eglClientWaitSyncNV( EGLSyncNV sync, uint flags,
256 blocks the calling thread until the specified sync object <sync> is
257 signaled, or until a specified timeout value expires. If <sync> is
259 will not block. If <sync> is unsignaled at the time eglClientWaitSyncNV is
261 <sync> to become signaled.
264 block and simply tests the current status of <sync>. If the value of
270 always be returned if <sync> was signaled when eglClientWaitSyncNV was
273 timeout period expired before <sync> was signaled. A return value of
274 EGL_CONDITION_SATISFIED_NV indicates that <sync> was signaled before
277 Note that a fence sync object can be in the signaled state because one of
280 1. A previously inserte fence has completed and has signaled the sync
282 2. The sync object was created. Creation of a sync object sets it in the
285 3. The sync object was signaled by a previously issued
286 eglSignalSyncNV(sync, EGL_SIGNALED_NV) command.
288 If the sync object being blocked upon will not be signaled in finite time
292 EGL_SYNC_FLUSH_COMMANDS_BIT_NV bit is set in <flags>, and <sync> is
295 returned by eglGetCurrentContext()) before blocking on <sync>. If no
302 which block on a fence sync object must take additional steps to ensure
306 If a sync object is deleted when an eglClientWaitSyncNV is blocking on
309 associated with the deleted sync to complete, or to not return until the
312 * If <sync> is not a valid sync object, EGL_FALSE is returned and an
318 EGLBoolean eglSignalSyncNV( EGLSyncNV sync, enum mode );
320 signals or unsignals the sync object <sync> by changing its status to
322 result of calling eglSignalSyncNV, the status of <sync> transitions
324 commands blocking on <sync> will unblock.
330 EGL_SIGNALED_NV Set the status of <sync> to signaled
331 EGL_UNSIGNALED_NV Set the status of <sync> to unsignaled
335 * If <sync> is not a valid sync object, EGL_FALSE is returned and an
341 EGLBoolean eglGetSyncAttribNV( EGLSyncNV sync, EGLint attribute,
344 is used to query attributes of the sync object <sync>. Legal values for
345 <attribute> depend on the type of sync object; these are listed in table 3.cc.
351 EGL_SYNC_TYPE_NV Type of the sync object All
352 EGL_SYNC_STATUS_NV Status of the sync object All
355 * If <sync> is not a valid sync object, EGL_FALSE is returned and an
360 EGLBoolean eglDestroySyncNV( EGLSyncNV sync );
362 is used to destroy an existing sync object. If any eglClientWaitSyncNV
363 commands are blocking on <sync> when eglDestroySyncNV is called, their
364 behavior is undefined. After calling eglDestroySyncNV, <sync> is no
365 longer a valid sync object. Assuming no errors are generated, EGL_TRUE
368 * If <sync> is not a valid sync object, EGL_FALSE is returned and an
455 Does ClientWaitSyncARB wait on an event, or on sync object
456 status? What is the meaning of sync object status?
458 RESOLVED: ClientWaitSyncARB blocks until the status of the sync
464 R1) A sync object has two possible status values: signaled or
468 R2) When created, the state of the sync object is signaled by
471 R3) A fence command is inserted into a command stream. A sync
475 FenceARB(), the status of the sync object associated with
478 R5) Multiple fence commands can be associated with the same sync
482 its associated sync object to the signaled state. The only
486 R7) A wait function, such as ClientWaitSyncARB, waits on a sync
489 R8) A wait function, such as ClientWaitSyncARB, called on a sync
491 (note, not "returns to the application") when the sync
497 TRUE if the sync object is in the signaled state. Note that
501 has been met, will set its associated sync object to the
502 signaled state. If the sync object is already in the
507 caller. If ClientWaitSyncARB unblocks because the sync
511 unblock once all (or any) of the sync objects passed to it
514 set the sync object in the signaled or unsignaled state.
515 This makes it easy for apps to reuse a sync object in the
516 multi-context case, so the sync object can be blocked upon
519 B6) We could define an API to convert a sync object into an OS