OLD | NEW |
1 Name | 1 Name |
2 | 2 |
3 CHROMIUM_sync_point | 3 CHROMIUM_sync_point |
4 | 4 |
5 Name Strings | 5 Name Strings |
6 | 6 |
7 GL_CHROMIUM_sync_point | 7 GL_CHROMIUM_sync_point |
8 | 8 |
9 Version | 9 Version |
10 | 10 |
11 Last Modifed Date: February 25, 2013 | 11 Last Modifed Date: September 8, 2015 |
12 | 12 |
13 Dependencies | 13 Dependencies |
14 | 14 |
15 OpenGL ES 2.0 is required. | 15 OpenGL ES 2.0 is required. |
16 | 16 |
17 Overview | 17 Overview |
18 | 18 |
19 This extension allows a client to order operations between contexts. | 19 This extension allows a client to order operations between contexts. |
20 | 20 |
| 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. |
| 27 |
21 This extension implements a small subset of ARB_sync, with weaker | 28 This extension implements a small subset of ARB_sync, with weaker |
22 guarantees. In particular it doesn't ensure commands are actually executed | 29 guarantees. In particular it doesn't ensure commands are actually executed |
23 by the server, it only guarantees submission order. | 30 by the server, it only guarantees submission order. |
24 | 31 |
25 It does however guarantee operation order with respect to | 32 It does however guarantee operation order with respect to |
26 ConsumeTextureCHROMIUM and ProduceTextureCHROMIUM from | 33 ConsumeTextureCHROMIUM and ProduceTextureCHROMIUM from |
27 CHROMIUM_texture_mailbox, if present. | 34 CHROMIUM_texture_mailbox, if present. |
28 | 35 |
29 Issues | 36 Issues |
30 | 37 |
31 None | 38 None |
32 | 39 |
33 New Tokens | |
34 | |
35 None | |
36 | |
37 New Procedures and Functions | 40 New Procedures and Functions |
38 | 41 |
39 The command | 42 The command |
40 | 43 |
41 uint InsertSyncPointCHROMIUM() | 44 uint InsertFenceSyncCHROMIUM() |
42 | 45 |
43 flushes the stream of commands for the current context and creates and | 46 inserts a fence sync in the current command stream. The fence sync is |
44 inserts a sync point. The sync point acts as a fence, which is signaled when | 47 signaled when previous commands have been submitted to the server, or when |
45 previous commands have been submitted to the server, or when the context is | 48 the context is destroyed, whichever happens first. The fence sync name is |
46 destroyed, whichever happens first. The sync point name is returned. The | 49 only visible for the current context. The returned fence sync name cannot |
47 sync point is implicitly deleted when it becomes signaled. The sync point | 50 be waited upon directly, but once the command is flushed to the server it |
48 namespace is shared between all contexts on the same server, including other | 51 can be converted to a sync token using GenSyncTokenCHROMIUM which is |
49 context groups. | 52 waitable. |
50 | |
51 | 53 |
52 The command | 54 The command |
53 | 55 |
54 void WaitSyncPointCHROMIUM(uint sync_point) | 56 void GenSyncTokenCHROMIUM(uint fence_sync, GLbyte *sync_token) |
| 57 |
| 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. |
| 65 |
| 66 <sync_token> returns a GL_SYNC_POINT_SIZE_CHROMIUM byte sized name. |
| 67 |
| 68 The command |
| 69 |
| 70 void WaitSyncTokenCHROMIUM(GLbyte *sync_token) |
55 | 71 |
56 causes the current context to stop submitting commands until the specified | 72 causes the current context to stop submitting commands until the specified |
57 sync point becomes signaled. This is implemented as a server-side wait. | 73 fence sync becomes signaled. This is implemented as a server-side wait. |
58 <sync_point> is the name of the sync point to wait for. If <sync_point> | 74 <sync_token> is a sync token generated by GenSyncPointCHROMIUM. If |
59 isn't a valid sync point returned by InsertSyncPointCHROMIUM, or if the sync | 75 <sync_token> isn't a valid sync token returned by GenSyncPointCHROMIUM, the |
60 point has already been deleted, the command is equivalent to a no-op and no | 76 command is equivalent to a no-op and no error is generated. |
61 error is generated. | 77 |
| 78 New Tokens |
| 79 |
| 80 The size of a sync token name in bytes. |
| 81 |
| 82 GL_SYNC_TOKEN_SIZE_CHROMIUM 12 |
62 | 83 |
63 Errors | 84 Errors |
64 | 85 |
65 None. | 86 INVALID_VALUE is generated if the <fence_sync> parameter of |
| 87 GenSyncPointCHROMIUM is not a valid local fence sync name. |
| 88 |
| 89 INVALID_OPERATION is generated if the <fence_sync> parameter of |
| 90 GenSyncPointCHROMIUM has not been flushed to the server. |
66 | 91 |
67 New State | 92 New State |
68 | 93 |
69 None. | 94 None. |
70 | 95 |
71 Revision History | 96 Revision History |
72 | 97 |
73 2/25/2013 Documented the extension | 98 2/25/2013 Documented the extension |
| 99 |
| 100 9/8/2015 Modified functions to InsertFenceSyncCHROMIUM, |
| 101 GenSyncTokenCHROMIUM, and WaitSyncTokenCHROMIUM. |
OLD | NEW |