11 Last Modifed Date: September 8, 2015
15 OpenGL ES 2.0 is required.
19 This extension allows a client to order operations between contexts.
21 This extension introduces the concept of "fence syncs" and "sync token".
22 Inserted fence syncs represents a position in the command stream of a
23 context. Sync tokens are generated from fence syncs and allows another
24 context to issue a "wait" command on the sync token. This wait command
25 will then guarantee that commands before the inserted fence sync are
26 submitted before commands after the sync token wait.
28 This extension implements a small subset of ARB_sync, with weaker
29 guarantees. In particular it doesn't ensure commands are actually executed
30 by the server, it only guarantees submission order.
32 It does however guarantee operation order with respect to
33 ConsumeTextureCHROMIUM and ProduceTextureCHROMIUM from
34 CHROMIUM_texture_mailbox, if present.
40 New Procedures and Functions
44 uint InsertFenceSyncCHROMIUM()
46 inserts a fence sync in the current command stream. The fence sync is
47 signaled when previous commands have been submitted to the server, or when
48 the context is destroyed, whichever happens first. The fence sync name is
49 only visible for the current context. The returned fence sync name cannot
50 be waited upon directly, but once the command is flushed to the server it
51 can be converted to a sync token using GenSyncTokenCHROMIUM which is
56 void GenSyncTokenCHROMIUM(uint fence_sync, GLbyte *sync_token)
58 converts <fence_sync> which is only visible to the current context to a
59 sync token which may be waited upon by any contexts on the same server.
60 The <fence_sync> command must be flushed before this function may be
61 called, otherwise an INVALID_OPERATION error is generated. The generated
62 <sync_token> must be generated on the same context as when
63 InsertSyncPointCHROMIUM was called. The <sync_token> can be passed and
64 used by any context on the same server, including other context groups.
66 <sync_token> returns a GL_SYNC_POINT_SIZE_CHROMIUM byte sized name.
70 void WaitSyncTokenCHROMIUM(GLbyte *sync_token)
72 causes the current context to stop submitting commands until the specified
73 fence sync becomes signaled. This is implemented as a server-side wait.
74 <sync_token> is a sync token generated by GenSyncPointCHROMIUM. If
75 <sync_token> isn't a valid sync token returned by GenSyncPointCHROMIUM, the
76 command is equivalent to a no-op and no error is generated.
80 The size of a sync token name in bytes.
82 GL_SYNC_TOKEN_SIZE_CHROMIUM 12
86 INVALID_VALUE is generated if the <fence_sync> parameter of
87 GenSyncPointCHROMIUM is not a valid local fence sync name.
89 INVALID_OPERATION is generated if the <fence_sync> parameter of
90 GenSyncPointCHROMIUM has not been flushed to the server.
98 2/25/2013 Documented the extension
100 9/8/2015 Modified functions to InsertFenceSyncCHROMIUM,
101 GenSyncTokenCHROMIUM, and WaitSyncTokenCHROMIUM.