Class ARBSync


  • public class ARBSync
    extends java.lang.Object
    Native bindings to the ARB_sync extension.

    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.

    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method 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
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • glFenceSync

        public static long glFenceSync​(int condition,
                                       int flags)
        Creates a new sync object and inserts it into the GL command stream.
        Parameters:
        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.
      • nglIsSync

        public static boolean nglIsSync​(long sync)
        Unsafe version of: IsSync
      • glIsSync

        public static boolean glIsSync​(long sync)
        Determines if a name corresponds to a sync object.
        Parameters:
        sync - a value that may be the name of a sync object
      • nglDeleteSync

        public static void nglDeleteSync​(long sync)
        Unsafe version of: DeleteSync
      • glDeleteSync

        public static void glDeleteSync​(long sync)
        Deletes a sync object.
        Parameters:
        sync - the sync object to be deleted
      • nglClientWaitSync

        public static int nglClientWaitSync​(long sync,
                                            int flags,
                                            long timeout)
        Unsafe version of: ClientWaitSync
      • glClientWaitSync

        public static int glClientWaitSync​(long sync,
                                           int flags,
                                           long timeout)
        Causes the client to block and wait for a sync object to become signaled. If 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.
        Parameters:
        sync - the sync object whose status to wait on
        flags - a bitfield controlling the command flushing behavior. One or more of:
        0SYNC_FLUSH_COMMANDS_BIT
        timeout - the timeout, specified in nanoseconds, for which the implementation should wait for sync to become signaled
      • nglWaitSync

        public static void nglWaitSync​(long sync,
                                       int flags,
                                       long timeout)
        Unsafe version of: WaitSync
      • glWaitSync

        public static void glWaitSync​(long sync,
                                      int flags,
                                      long timeout)
        Causes the GL server to block and wait for a sync object to become signaled.

        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.

        Parameters:
        sync - the sync object whose status to wait on
        flags - a bitfield controlling the command flushing behavior. Must be:
        0
        timeout - the timeout that the server should wait before continuing. Must be:
        TIMEOUT_IGNORED
      • nglGetInteger64v

        public static void nglGetInteger64v​(int pname,
                                            long params)
        Unsafe version of: GetInteger64v
      • glGetInteger64v

        public static void glGetInteger64v​(int pname,
                                           java.nio.LongBuffer params)
        Returns the 64bit integer value or values of a selected parameter.
        Parameters:
        pname - the parameter value to be returned
        params - the value or values of the specified parameter
      • glGetInteger64

        public static long glGetInteger64​(int pname)
        Returns the 64bit integer value or values of a selected parameter.
        Parameters:
        pname - the parameter value to be returned
      • nglGetSynciv

        public static void nglGetSynciv​(long sync,
                                        int pname,
                                        int bufSize,
                                        long length,
                                        long values)
        Unsafe version of: GetSynciv
        Parameters:
        bufSize - the size of the buffer whose address is given in values
      • glGetSynciv

        public static void glGetSynciv​(long sync,
                                       int pname,
                                       @Nullable
                                       java.nio.IntBuffer length,
                                       java.nio.IntBuffer values)
        Queries the properties of a sync object.
        Parameters:
        sync - the sync object whose properties to query
        pname - the parameter whose value to retrieve from the sync object specified in sync. One of:
        OBJECT_TYPESYNC_CONDITIONSYNC_STATUSSYNC_FLAGS
        length - the address of an variable to receive the number of integers placed in values
        values - the address of an array to receive the values of the queried parameter
      • glGetSynci

        public static int glGetSynci​(long sync,
                                     int pname,
                                     @Nullable
                                     java.nio.IntBuffer length)
        Queries the properties of a sync object.
        Parameters:
        sync - the sync object whose properties to query
        pname - the parameter whose value to retrieve from the sync object specified in sync. One of:
        OBJECT_TYPESYNC_CONDITIONSYNC_STATUSSYNC_FLAGS
        length - the address of an variable to receive the number of integers placed in values
      • glGetInteger64v

        public static void glGetInteger64v​(int pname,
                                           long[] params)
        Array version of: GetInteger64v
      • glGetSynciv

        public static void glGetSynciv​(long sync,
                                       int pname,
                                       @Nullable
                                       int[] length,
                                       int[] values)
        Array version of: GetSynciv