public class ARBSync
extends java.lang.Object
This extension introduces the concept of "sync objects". Sync objects are a synchronization primitive - a representation of events whose completion status can be tested or waited upon. One specific type of sync object, the "fence sync object", is supported in this extension, and additional types can easily be added in the future.
Fence sync objects have corresponding fences, which are inserted into the OpenGL command stream at the time the sync object is created. A sync object can be queried for a given condition. The only condition supported for fence sync objects is completion of the corresponding fence command. Fence completion allows applications to request a partial Finish, wherein all commands prior to the fence will be forced to complete before control is returned to the calling process.
These new mechanisms allow for synchronization between the host CPU and the GPU, which may be accessing the same resources (typically memory), as well as between multiple GL contexts bound to multiple threads in the host CPU.
Requires OpenGL 3.1. Promoted to core in OpenGL 3.2.
| Modifier and Type | Field and Description |
|---|---|
static int |
GL_ALREADY_SIGNALED
Returned by ClientWaitSync.
|
static int |
GL_CONDITION_SATISFIED
Returned by ClientWaitSync.
|
static int |
GL_MAX_SERVER_WAIT_TIMEOUT
Accepted as the
pname parameter of GetInteger64v. |
static int |
GL_OBJECT_TYPE
Accepted as the
pname parameter of GetSynciv. |
static int |
GL_SIGNALED
Returned in
values for GetSynciv pname SYNC_STATUS. |
static int |
GL_SYNC_CONDITION
Accepted as the
pname parameter of GetSynciv. |
static int |
GL_SYNC_FENCE
Returned in
values for GetSynciv pname OBJECT_TYPE. |
static int |
GL_SYNC_FLAGS
Accepted as the
pname parameter of GetSynciv. |
static int |
GL_SYNC_FLUSH_COMMANDS_BIT
Accepted in the
flags parameter of ClientWaitSync. |
static int |
GL_SYNC_GPU_COMMANDS_COMPLETE
Returned in
values for GetSynciv pname SYNC_CONDITION. |
static int |
GL_SYNC_STATUS
Accepted as the
pname parameter of GetSynciv. |
static int |
GL_TIMEOUT_EXPIRED
Returned by ClientWaitSync.
|
static long |
GL_TIMEOUT_IGNORED
Accepted in the
timeout parameter of WaitSync. |
static int |
GL_UNSIGNALED
Returned in
values for GetSynciv pname SYNC_STATUS. |
static int |
GL_WAIT_FAILED
Returned by ClientWaitSync.
|
| Modifier and Type | Method and Description |
|---|---|
static int |
glClientWaitSync(long sync,
int flags,
long timeout)
Causes the client to block and wait for a sync object to become signaled.
|
static void |
glDeleteSync(long sync)
Deletes a sync object.
|
static long |
glFenceSync(int condition,
int flags)
Creates a new sync object and inserts it into the GL command stream.
|
static long |
glGetInteger64(int pname)
Returns the 64bit integer value or values of a selected parameter.
|
static void |
glGetInteger64v(int pname,
long[] params)
Array version of:
GetInteger64v |
static void |
glGetInteger64v(int pname,
java.nio.LongBuffer params)
Returns the 64bit integer value or values of a selected parameter.
|
static int |
glGetSynci(long sync,
int pname,
java.nio.IntBuffer length)
Queries the properties of a sync object.
|
static void |
glGetSynciv(long sync,
int pname,
int[] length,
int[] values)
Array version of:
GetSynciv |
static void |
glGetSynciv(long sync,
int pname,
java.nio.IntBuffer length,
java.nio.IntBuffer values)
Queries the properties of a sync object.
|
static boolean |
glIsSync(long sync)
Determines if a name corresponds to a sync object.
|
static void |
glWaitSync(long sync,
int flags,
long timeout)
Causes the GL server to block and wait for a sync object to become signaled.
|
static int |
nglClientWaitSync(long sync,
int flags,
long timeout)
Unsafe version of:
ClientWaitSync |
static void |
nglDeleteSync(long sync)
Unsafe version of:
DeleteSync |
static void |
nglGetInteger64v(int pname,
long params)
Unsafe version of:
GetInteger64v |
static void |
nglGetSynciv(long sync,
int pname,
int bufSize,
long length,
long values)
Unsafe version of:
GetSynciv |
static boolean |
nglIsSync(long sync)
Unsafe version of:
IsSync |
static void |
nglWaitSync(long sync,
int flags,
long timeout)
Unsafe version of:
WaitSync |
public static final int GL_MAX_SERVER_WAIT_TIMEOUT
pname parameter of GetInteger64v.public static final int GL_OBJECT_TYPE
pname parameter of GetSynciv.public static final int GL_SYNC_CONDITION
pname parameter of GetSynciv.public static final int GL_SYNC_STATUS
pname parameter of GetSynciv.public static final int GL_SYNC_FLAGS
pname parameter of GetSynciv.public static final int GL_SYNC_FENCE
values for GetSynciv pname OBJECT_TYPE.public static final int GL_SYNC_GPU_COMMANDS_COMPLETE
values for GetSynciv pname SYNC_CONDITION.public static final int GL_UNSIGNALED
values for GetSynciv pname SYNC_STATUS.public static final int GL_SIGNALED
values for GetSynciv pname SYNC_STATUS.public static final int GL_SYNC_FLUSH_COMMANDS_BIT
flags parameter of ClientWaitSync.public static final long GL_TIMEOUT_IGNORED
timeout parameter of WaitSync.public static final int GL_ALREADY_SIGNALED
public static final int GL_TIMEOUT_EXPIRED
public static final int GL_CONDITION_SATISFIED
public static final int GL_WAIT_FAILED
public static long glFenceSync(int condition,
int flags)
condition - the condition that must be met to set the sync object's state to signaled. Must be:SYNC_GPU_COMMANDS_COMPLETE |
flags - a bitwise combination of flags controlling the behavior of the sync object. No flags are presently defined for this operation and flags must
be zero.public static boolean nglIsSync(long sync)
IsSyncpublic static boolean glIsSync(long sync)
sync - a value that may be the name of a sync objectpublic static void nglDeleteSync(long sync)
DeleteSyncpublic static void glDeleteSync(long sync)
sync - the sync object to be deletedpublic static int nglClientWaitSync(long sync,
int flags,
long timeout)
ClientWaitSyncpublic static int glClientWaitSync(long sync,
int flags,
long timeout)
sync is signaled when glClientWaitSync is called,
glClientWaitSync returns immediately, otherwise it will block and wait for up to timeout nanoseconds for sync to become signaled.
The return value is one of four status values:
ALREADY_SIGNALED indicates that sync was signaled at the time that glClientWaitSync was called.TIMEOUT_EXPIRED indicates that at least timeout nanoseconds passed and sync did not become signaled.CONDITION_SATISFIED indicates that sync was signaled before the timeout expired.WAIT_FAILED indicates that an error occurred. Additionally, an OpenGL error will be generated.sync - the sync object whose status to wait onflags - a bitfield controlling the command flushing behavior. One or more of:| 0 | SYNC_FLUSH_COMMANDS_BIT |
timeout - the timeout, specified in nanoseconds, for which the implementation should wait for sync to become signaledpublic static void nglWaitSync(long sync,
int flags,
long timeout)
WaitSyncpublic static void glWaitSync(long sync,
int flags,
long timeout)
glWaitSync will always wait no longer than an implementation-dependent timeout. The duration of this timeout in nanoseconds may be queried by
with 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.
sync - the sync object whose status to wait onflags - a bitfield controlling the command flushing behavior. Must be:| 0 |
timeout - the timeout that the server should wait before continuing. Must be:TIMEOUT_IGNORED |
public static void nglGetInteger64v(int pname,
long params)
GetInteger64vpublic static void glGetInteger64v(int pname,
java.nio.LongBuffer params)
pname - the parameter value to be returnedparams - the value or values of the specified parameterpublic static long glGetInteger64(int pname)
pname - the parameter value to be returnedpublic static void nglGetSynciv(long sync,
int pname,
int bufSize,
long length,
long values)
GetSyncivbufSize - the size of the buffer whose address is given in valuespublic static void glGetSynciv(long sync,
int pname,
@Nullable
java.nio.IntBuffer length,
java.nio.IntBuffer values)
sync - the sync object whose properties to querypname - the parameter whose value to retrieve from the sync object specified in sync. One of:OBJECT_TYPE | SYNC_CONDITION | SYNC_STATUS | SYNC_FLAGS |
length - the address of an variable to receive the number of integers placed in valuesvalues - the address of an array to receive the values of the queried parameterpublic static int glGetSynci(long sync,
int pname,
@Nullable
java.nio.IntBuffer length)
sync - the sync object whose properties to querypname - the parameter whose value to retrieve from the sync object specified in sync. One of:OBJECT_TYPE | SYNC_CONDITION | SYNC_STATUS | SYNC_FLAGS |
length - the address of an variable to receive the number of integers placed in valuespublic static void glGetInteger64v(int pname,
long[] params)
GetInteger64vpublic static void glGetSynciv(long sync,
int pname,
@Nullable
int[] length,
int[] values)
GetSyncivCopyright LWJGL. All Rights Reserved. License terms.