-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.APPLE.Sync (
  -- * Extension Support
    gl_APPLE_sync

  -- * GL_APPLE_sync
  , glClientWaitSyncAPPLE
  , glDeleteSyncAPPLE
  , glFenceSyncAPPLE
  , glGetInteger64vAPPLE
  , glGetSyncivAPPLE
  , glIsSyncAPPLE
  , glWaitSyncAPPLE
  , pattern GL_ALREADY_SIGNALED_APPLE
  , pattern GL_CONDITION_SATISFIED_APPLE
  , pattern GL_MAX_SERVER_WAIT_TIMEOUT_APPLE
  , pattern GL_OBJECT_TYPE_APPLE
  , pattern GL_SIGNALED_APPLE
  , pattern GL_SYNC_CONDITION_APPLE
  , pattern GL_SYNC_FENCE_APPLE
  , pattern GL_SYNC_FLAGS_APPLE
  , pattern GL_SYNC_FLUSH_COMMANDS_BIT_APPLE
  , pattern GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE
  , pattern GL_SYNC_OBJECT_APPLE
  , pattern GL_SYNC_STATUS_APPLE
  , pattern GL_TIMEOUT_EXPIRED_APPLE
  , pattern GL_TIMEOUT_IGNORED_APPLE
  , pattern GL_UNSIGNALED_APPLE
  , pattern GL_WAIT_FAILED_APPLE
) where

import Control.Monad.IO.Class
import Data.Set
import Foreign.Ptr
import Graphics.GL.Internal.FFI
import Graphics.GL.Internal.Proc
import Graphics.GL.Types
import System.IO.Unsafe

-- | Checks that the <https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt GL_APPLE_sync> extension is available.

gl_APPLE_sync :: Bool
gl_APPLE_sync :: Bool
gl_APPLE_sync = [Char] -> Set [Char] -> Bool
forall a. Ord a => a -> Set a -> Bool
member "GL_APPLE_sync" Set [Char]
extensions
{-# NOINLINE gl_APPLE_sync #-}

-- | Usage: @'glClientWaitSyncAPPLE' sync flags timeout@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glClientWaitSync'.


glClientWaitSyncAPPLE :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m GLenum
glClientWaitSyncAPPLE :: GLsync -> GLbitfield -> GLuint64 -> m GLbitfield
glClientWaitSyncAPPLE = FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLbitfield)
-> GLsync -> GLbitfield -> GLuint64 -> m GLbitfield
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLbitfield)
-> GLsync -> GLbitfield -> GLuint64 -> m GLbitfield
ffisyncbitfielduint64IOenum FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLbitfield)
glClientWaitSyncAPPLEFunPtr

glClientWaitSyncAPPLEFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLenum)
glClientWaitSyncAPPLEFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLbitfield)
glClientWaitSyncAPPLEFunPtr = IO (FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLbitfield))
-> FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLbitfield)
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO (FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLbitfield))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glClientWaitSyncAPPLE")

{-# NOINLINE glClientWaitSyncAPPLEFunPtr #-}

-- | Usage: @'glDeleteSyncAPPLE' sync@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDeleteSync'.


glDeleteSyncAPPLE :: MonadIO m => GLsync -> m ()
glDeleteSyncAPPLE :: GLsync -> m ()
glDeleteSyncAPPLE = FunPtr (GLsync -> IO ()) -> GLsync -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsync -> IO ()) -> GLsync -> m ()
ffisyncIOV FunPtr (GLsync -> IO ())
glDeleteSyncAPPLEFunPtr

glDeleteSyncAPPLEFunPtr :: FunPtr (GLsync -> IO ())
glDeleteSyncAPPLEFunPtr :: FunPtr (GLsync -> IO ())
glDeleteSyncAPPLEFunPtr = IO (FunPtr (GLsync -> IO ())) -> FunPtr (GLsync -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsync -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeleteSyncAPPLE")

{-# NOINLINE glDeleteSyncAPPLEFunPtr #-}

-- | Usage: @'glFenceSyncAPPLE' condition flags@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glFenceSync'.


glFenceSyncAPPLE :: MonadIO m => GLenum -> GLbitfield -> m GLsync
glFenceSyncAPPLE :: GLbitfield -> GLbitfield -> m GLsync
glFenceSyncAPPLE = FunPtr (GLbitfield -> GLbitfield -> IO GLsync)
-> GLbitfield -> GLbitfield -> m GLsync
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLbitfield -> GLbitfield -> IO GLsync)
-> GLbitfield -> GLbitfield -> m GLsync
ffienumbitfieldIOsync FunPtr (GLbitfield -> GLbitfield -> IO GLsync)
glFenceSyncAPPLEFunPtr

glFenceSyncAPPLEFunPtr :: FunPtr (GLenum -> GLbitfield -> IO GLsync)
glFenceSyncAPPLEFunPtr :: FunPtr (GLbitfield -> GLbitfield -> IO GLsync)
glFenceSyncAPPLEFunPtr = IO (FunPtr (GLbitfield -> GLbitfield -> IO GLsync))
-> FunPtr (GLbitfield -> GLbitfield -> IO GLsync)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLbitfield -> GLbitfield -> IO GLsync))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glFenceSyncAPPLE")

{-# NOINLINE glFenceSyncAPPLEFunPtr #-}

-- | Usage: @'glGetInteger64vAPPLE' pname params@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetInteger64v'.


glGetInteger64vAPPLE :: MonadIO m => GLenum -> Ptr GLint64 -> m ()
glGetInteger64vAPPLE :: GLbitfield -> Ptr GLint64 -> m ()
glGetInteger64vAPPLE = FunPtr (GLbitfield -> Ptr GLint64 -> IO ())
-> GLbitfield -> Ptr GLint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLbitfield -> Ptr GLint64 -> IO ())
-> GLbitfield -> Ptr GLint64 -> m ()
ffienumPtrint64IOV FunPtr (GLbitfield -> Ptr GLint64 -> IO ())
glGetInteger64vAPPLEFunPtr

glGetInteger64vAPPLEFunPtr :: FunPtr (GLenum -> Ptr GLint64 -> IO ())
glGetInteger64vAPPLEFunPtr :: FunPtr (GLbitfield -> Ptr GLint64 -> IO ())
glGetInteger64vAPPLEFunPtr = IO (FunPtr (GLbitfield -> Ptr GLint64 -> IO ()))
-> FunPtr (GLbitfield -> Ptr GLint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLbitfield -> Ptr GLint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetInteger64vAPPLE")

{-# NOINLINE glGetInteger64vAPPLEFunPtr #-}

-- | Usage: @'glGetSyncivAPPLE' sync pname bufSize length values@
--
-- The length of @values@ should be @bufSize@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetSynciv'.


glGetSyncivAPPLE :: MonadIO m => GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
glGetSyncivAPPLE :: GLsync
-> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> m ()
glGetSyncivAPPLE = FunPtr
  (GLsync
   -> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> IO ())
-> GLsync
-> GLbitfield
-> GLsizei
-> Ptr GLsizei
-> Ptr GLsizei
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLsync
   -> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> IO ())
-> GLsync
-> GLbitfield
-> GLsizei
-> Ptr GLsizei
-> Ptr GLsizei
-> m ()
ffisyncenumsizeiPtrsizeiPtrintIOV FunPtr
  (GLsync
   -> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> IO ())
glGetSyncivAPPLEFunPtr

glGetSyncivAPPLEFunPtr :: FunPtr (GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ())
glGetSyncivAPPLEFunPtr :: FunPtr
  (GLsync
   -> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> IO ())
glGetSyncivAPPLEFunPtr = IO
  (FunPtr
     (GLsync
      -> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> IO ()))
-> FunPtr
     (GLsync
      -> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLsync
         -> GLbitfield -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetSyncivAPPLE")

{-# NOINLINE glGetSyncivAPPLEFunPtr #-}

-- | Usage: @'glIsSyncAPPLE' sync@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glIsSync'.


glIsSyncAPPLE :: MonadIO m => GLsync -> m GLboolean
glIsSyncAPPLE :: GLsync -> m GLboolean
glIsSyncAPPLE = FunPtr (GLsync -> IO GLboolean) -> GLsync -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsync -> IO GLboolean) -> GLsync -> m GLboolean
ffisyncIOboolean FunPtr (GLsync -> IO GLboolean)
glIsSyncAPPLEFunPtr

glIsSyncAPPLEFunPtr :: FunPtr (GLsync -> IO GLboolean)
glIsSyncAPPLEFunPtr :: FunPtr (GLsync -> IO GLboolean)
glIsSyncAPPLEFunPtr = IO (FunPtr (GLsync -> IO GLboolean))
-> FunPtr (GLsync -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsync -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsSyncAPPLE")

{-# NOINLINE glIsSyncAPPLEFunPtr #-}

-- | Usage: @'glWaitSyncAPPLE' sync flags timeout@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glWaitSync'.


glWaitSyncAPPLE :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m ()
glWaitSyncAPPLE :: GLsync -> GLbitfield -> GLuint64 -> m ()
glWaitSyncAPPLE = FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
-> GLsync -> GLbitfield -> GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
-> GLsync -> GLbitfield -> GLuint64 -> m ()
ffisyncbitfielduint64IOV FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
glWaitSyncAPPLEFunPtr

glWaitSyncAPPLEFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
glWaitSyncAPPLEFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
glWaitSyncAPPLEFunPtr = IO (FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ()))
-> FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glWaitSyncAPPLE")

{-# NOINLINE glWaitSyncAPPLEFunPtr #-}

pattern $bGL_ALREADY_SIGNALED_APPLE :: a
$mGL_ALREADY_SIGNALED_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_ALREADY_SIGNALED_APPLE = 0x911A

pattern $bGL_CONDITION_SATISFIED_APPLE :: a
$mGL_CONDITION_SATISFIED_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_CONDITION_SATISFIED_APPLE = 0x911C

pattern $bGL_MAX_SERVER_WAIT_TIMEOUT_APPLE :: a
$mGL_MAX_SERVER_WAIT_TIMEOUT_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_SERVER_WAIT_TIMEOUT_APPLE = 0x9111

pattern $bGL_OBJECT_TYPE_APPLE :: a
$mGL_OBJECT_TYPE_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_OBJECT_TYPE_APPLE = 0x9112

pattern $bGL_SIGNALED_APPLE :: a
$mGL_SIGNALED_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SIGNALED_APPLE = 0x9119

pattern $bGL_SYNC_CONDITION_APPLE :: a
$mGL_SYNC_CONDITION_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SYNC_CONDITION_APPLE = 0x9113

pattern $bGL_SYNC_FENCE_APPLE :: a
$mGL_SYNC_FENCE_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SYNC_FENCE_APPLE = 0x9116

pattern $bGL_SYNC_FLAGS_APPLE :: a
$mGL_SYNC_FLAGS_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SYNC_FLAGS_APPLE = 0x9115

pattern $bGL_SYNC_FLUSH_COMMANDS_BIT_APPLE :: a
$mGL_SYNC_FLUSH_COMMANDS_BIT_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SYNC_FLUSH_COMMANDS_BIT_APPLE = 0x00000001

pattern $bGL_SYNC_GPU_COMMANDS_COMPLETE_APPLE :: a
$mGL_SYNC_GPU_COMMANDS_COMPLETE_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE = 0x9117

pattern $bGL_SYNC_OBJECT_APPLE :: a
$mGL_SYNC_OBJECT_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SYNC_OBJECT_APPLE = 0x8A53

pattern $bGL_SYNC_STATUS_APPLE :: a
$mGL_SYNC_STATUS_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SYNC_STATUS_APPLE = 0x9114

pattern $bGL_TIMEOUT_EXPIRED_APPLE :: a
$mGL_TIMEOUT_EXPIRED_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TIMEOUT_EXPIRED_APPLE = 0x911B

pattern $bGL_TIMEOUT_IGNORED_APPLE :: a
$mGL_TIMEOUT_IGNORED_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TIMEOUT_IGNORED_APPLE = 0xFFFFFFFFFFFFFFFF

pattern $bGL_UNSIGNALED_APPLE :: a
$mGL_UNSIGNALED_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_UNSIGNALED_APPLE = 0x9118

pattern $bGL_WAIT_FAILED_APPLE :: a
$mGL_WAIT_FAILED_APPLE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_WAIT_FAILED_APPLE = 0x911D