-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.NV.PresentVideo (
  -- * Extension Support
    gl_NV_present_video

  -- * GL_NV_present_video
  , glGetVideoi64vNV
  , glGetVideoivNV
  , glGetVideoui64vNV
  , glGetVideouivNV
  , glPresentFrameDualFillNV
  , glPresentFrameKeyedNV
  , pattern GL_CURRENT_TIME_NV
  , pattern GL_FIELDS_NV
  , pattern GL_FRAME_NV
  , pattern GL_NUM_FILL_STREAMS_NV
  , pattern GL_PRESENT_DURATION_NV
  , pattern GL_PRESENT_TIME_NV
) 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://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/present_video.txt GL_NV_present_video> extension is available.

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

-- | Usage: @'glGetVideoi64vNV' video_slot pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetVideoi64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint64EXT -> m ()
glGetVideoi64vNV :: GLuint -> GLuint -> Ptr GLint64EXT -> m ()
glGetVideoi64vNV = FunPtr (GLuint -> GLuint -> Ptr GLint64EXT -> IO ())
-> GLuint -> GLuint -> Ptr GLint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> Ptr GLint64EXT -> IO ())
-> GLuint -> GLuint -> Ptr GLint64EXT -> m ()
ffiuintenumPtrint64EXTIOV FunPtr (GLuint -> GLuint -> Ptr GLint64EXT -> IO ())
glGetVideoi64vNVFunPtr

glGetVideoi64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64EXT -> IO ())
glGetVideoi64vNVFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLint64EXT -> IO ())
glGetVideoi64vNVFunPtr = IO (FunPtr (GLuint -> GLuint -> Ptr GLint64EXT -> IO ()))
-> FunPtr (GLuint -> GLuint -> Ptr GLint64EXT -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> Ptr GLint64EXT -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetVideoi64vNV")

{-# NOINLINE glGetVideoi64vNVFunPtr #-}

-- | Usage: @'glGetVideoivNV' video_slot pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetVideoivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVideoivNV :: GLuint -> GLuint -> Ptr GLint -> m ()
glGetVideoivNV = FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ())
-> GLuint -> GLuint -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ())
-> GLuint -> GLuint -> Ptr GLint -> m ()
ffiuintenumPtrintIOV FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ())
glGetVideoivNVFunPtr

glGetVideoivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVideoivNVFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ())
glGetVideoivNVFunPtr = IO (FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ()))
-> FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetVideoivNV")

{-# NOINLINE glGetVideoivNVFunPtr #-}

-- | Usage: @'glGetVideoui64vNV' video_slot pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetVideoui64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
glGetVideoui64vNV :: GLuint -> GLuint -> Ptr GLuint64EXT -> m ()
glGetVideoui64vNV = FunPtr (GLuint -> GLuint -> Ptr GLuint64EXT -> IO ())
-> GLuint -> GLuint -> Ptr GLuint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> Ptr GLuint64EXT -> IO ())
-> GLuint -> GLuint -> Ptr GLuint64EXT -> m ()
ffiuintenumPtruint64EXTIOV FunPtr (GLuint -> GLuint -> Ptr GLuint64EXT -> IO ())
glGetVideoui64vNVFunPtr

glGetVideoui64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ())
glGetVideoui64vNVFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLuint64EXT -> IO ())
glGetVideoui64vNVFunPtr = IO (FunPtr (GLuint -> GLuint -> Ptr GLuint64EXT -> IO ()))
-> FunPtr (GLuint -> GLuint -> Ptr GLuint64EXT -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO (FunPtr (GLuint -> GLuint -> Ptr GLuint64EXT -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetVideoui64vNV")

{-# NOINLINE glGetVideoui64vNVFunPtr #-}

-- | Usage: @'glGetVideouivNV' video_slot pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetVideouivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetVideouivNV :: GLuint -> GLuint -> Ptr GLuint -> m ()
glGetVideouivNV = FunPtr (GLuint -> GLuint -> Ptr GLuint -> IO ())
-> GLuint -> GLuint -> Ptr GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> Ptr GLuint -> IO ())
-> GLuint -> GLuint -> Ptr GLuint -> m ()
ffiuintenumPtruintIOV FunPtr (GLuint -> GLuint -> Ptr GLuint -> IO ())
glGetVideouivNVFunPtr

glGetVideouivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetVideouivNVFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLuint -> IO ())
glGetVideouivNVFunPtr = IO (FunPtr (GLuint -> GLuint -> Ptr GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> Ptr GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetVideouivNV")

{-# NOINLINE glGetVideouivNVFunPtr #-}

-- | Usage: @'glPresentFrameDualFillNV' video_slot minPresentTime beginPresentTimeId presentDurationId type target0 fill0 target1 fill1 target2 fill2 target3 fill3@


glPresentFrameDualFillNV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> m ()
glPresentFrameDualFillNV :: GLuint
-> GLuint64EXT
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> m ()
glPresentFrameDualFillNV = FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
-> GLuint
-> GLuint64EXT
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
-> GLuint
-> GLuint64EXT
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> m ()
ffiuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
glPresentFrameDualFillNVFunPtr

glPresentFrameDualFillNVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> IO ())
glPresentFrameDualFillNVFunPtr :: FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
glPresentFrameDualFillNVFunPtr = IO
  (FunPtr
     (GLuint
      -> GLuint64EXT
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> IO ()))
-> FunPtr
     (GLuint
      -> GLuint64EXT
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLuint64EXT
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glPresentFrameDualFillNV")

{-# NOINLINE glPresentFrameDualFillNVFunPtr #-}

-- | Usage: @'glPresentFrameKeyedNV' video_slot minPresentTime beginPresentTimeId presentDurationId type target0 fill0 key0 target1 fill1 key1@


glPresentFrameKeyedNV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> m ()
glPresentFrameKeyedNV :: GLuint
-> GLuint64EXT
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> m ()
glPresentFrameKeyedNV = FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
-> GLuint
-> GLuint64EXT
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
-> GLuint
-> GLuint64EXT
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> GLuint
-> m ()
ffiuintuint64EXTuintuintenumenumuintuintenumuintuintIOV FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
glPresentFrameKeyedNVFunPtr

glPresentFrameKeyedNVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> IO ())
glPresentFrameKeyedNVFunPtr :: FunPtr
  (GLuint
   -> GLuint64EXT
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> GLuint
   -> IO ())
glPresentFrameKeyedNVFunPtr = IO
  (FunPtr
     (GLuint
      -> GLuint64EXT
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> IO ()))
-> FunPtr
     (GLuint
      -> GLuint64EXT
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> GLuint
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLuint64EXT
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> GLuint
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glPresentFrameKeyedNV")

{-# NOINLINE glPresentFrameKeyedNVFunPtr #-}

pattern $bGL_CURRENT_TIME_NV :: a
$mGL_CURRENT_TIME_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_CURRENT_TIME_NV = 0x8E28

pattern $bGL_FIELDS_NV :: a
$mGL_FIELDS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FIELDS_NV = 0x8E27

pattern $bGL_FRAME_NV :: a
$mGL_FRAME_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAME_NV = 0x8E26

pattern $bGL_NUM_FILL_STREAMS_NV :: a
$mGL_NUM_FILL_STREAMS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_NUM_FILL_STREAMS_NV = 0x8E29

pattern $bGL_PRESENT_DURATION_NV :: a
$mGL_PRESENT_DURATION_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PRESENT_DURATION_NV = 0x8E2B

pattern $bGL_PRESENT_TIME_NV :: a
$mGL_PRESENT_TIME_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PRESENT_TIME_NV = 0x8E2A