blob: 9f1863cc0052467d5ac845a07ef50048bbfad68e [file] [log] [blame]
Name
CHROMIUM_sync_point
Name Strings
GL_CHROMIUM_sync_point
Version
Last Modifed Date: September 8, 2015
Dependencies
OpenGL ES 2.0 is required.
Overview
This extension allows a client to order operations between contexts.
This extension introduces the concept of "fence syncs" and "sync token".
Inserted fence syncs represents a position in the command stream of a
context. Sync tokens are generated from fence syncs and allows another
context to issue a "wait" command on the sync token. This wait command
will then guarantee that commands before the inserted fence sync are
submitted before commands after the sync token wait.
This extension implements a small subset of ARB_sync, with weaker
guarantees. In particular it doesn't ensure commands are actually executed
by the server, it only guarantees submission order.
It does however guarantee operation order with respect to
ConsumeTextureCHROMIUM and ProduceTextureCHROMIUM from
CHROMIUM_texture_mailbox, if present.
Issues
None
New Procedures and Functions
The command
uint InsertFenceSyncCHROMIUM()
inserts a fence sync in the current command stream. The fence sync is
signaled when previous commands have been submitted to the server, or when
the context is destroyed, whichever happens first. The fence sync name is
only visible for the current context. The returned fence sync name cannot
be waited upon directly, but once the command is flushed to the server it
can be converted to a sync token using GenSyncTokenCHROMIUM which is
waitable.
The command
void GenSyncTokenCHROMIUM(uint fence_sync, GLbyte *sync_token)
converts <fence_sync> which is only visible to the current context to a
sync token which may be waited upon by any contexts on the same server.
The <fence_sync> command must be flushed before this function may be
called, otherwise an INVALID_OPERATION error is generated. The generated
<sync_token> must be generated on the same context as when
InsertSyncPointCHROMIUM was called. The <sync_token> can be passed and
used by any context on the same server, including other context groups.
<sync_token> returns a GL_SYNC_POINT_SIZE_CHROMIUM byte sized name.
The command
void WaitSyncTokenCHROMIUM(GLbyte *sync_token)
causes the current context to stop submitting commands until the specified
fence sync becomes signaled. This is implemented as a server-side wait.
<sync_token> is a sync token generated by GenSyncPointCHROMIUM. If
<sync_token> isn't a valid sync token returned by GenSyncPointCHROMIUM, the
command is equivalent to a no-op and no error is generated.
New Tokens
The size of a sync token name in bytes.
GL_SYNC_TOKEN_SIZE_CHROMIUM 12
Errors
INVALID_VALUE is generated if the <fence_sync> parameter of
GenSyncPointCHROMIUM is not a valid local fence sync name.
INVALID_OPERATION is generated if the <fence_sync> parameter of
GenSyncPointCHROMIUM has not been flushed to the server.
New State
None.
Revision History
2/25/2013 Documented the extension
9/8/2015 Modified functions to InsertFenceSyncCHROMIUM,
GenSyncTokenCHROMIUM, and WaitSyncTokenCHROMIUM.