## Name

glWaitSync — instruct the GL server to block until the specified sync object becomes signaled

## C Specification

`void glWaitSync(` | GLsync sync,
| GLbitfield flags,
| GLuint64 timeout`)`;

## Parameters

`sync`

  Specifies the sync object whose status to wait on.

`flags`

  A bitfield controlling the command flushing behavior. `flags` may be zero.

`timeout`

  Specifies the timeout that the server should wait before continuing. `timeout` must be `GL_TIMEOUT_IGNORED`.

## Description

`glWaitSync` causes the GL server to block and wait until `sync` becomes signaled. `sync` is the name of an existing sync object upon which to wait. `flags` and `timeout` are currently not used and must be set to zero and the special value `GL_TIMEOUT_IGNORED`, respectively[1]. `glWaitSync` will always wait no longer than an implementation-dependent timeout. The duration of this timeout in nanoseconds may be queried by calling glGet with the parameter `GL_MAX_SERVER_WAIT_TIMEOUT`. There is currently no way to determine whether `glWaitSync` unblocked because the timeout expired or because the sync object being waited on was signaled.

If an error occurs, `glWaitSync` does not cause the GL server to block.

## Notes

`glWaitSync` is available only if the GL version is 3.2 or higher.

## Errors

`GL_INVALID_VALUE` is generated if `sync` is not the name of a sync object.

`GL_INVALID_VALUE` is generated if `flags` is not zero.

`GL_INVALID_VALUE` is generated if `timeout` is not `GL_TIMEOUT_IGNORED`.

## Version Support

| OpenGL Version
--- | ---
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5
`glWaitSync` | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

glFenceSync, glClientWaitSync

## Copyright

Copyright © 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.

[1] `flags` and `timeout` are placeholders for anticipated future extensions of sync object capabilities. They must have these reserved values in order that existing code calling `glWaitSync` operate properly in the presence of such extensions.