-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.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.Raw.Internal.FFI
import Graphics.GL.Raw.Internal.Proc
import Graphics.GL.Raw.Types
import System.IO.Unsafe

gl_NV_present_video :: Bool
gl_NV_present_video = member "GL_NV_present_video" extensions

glGetVideoi64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint64EXT -> m ()
glGetVideoi64vNV = ffiuintenumPtrint64EXTIOV glGetVideoi64vNVFunPtr

glGetVideoi64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64EXT -> IO ())
glGetVideoi64vNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoi64vNV")

{-# NOINLINE glGetVideoi64vNVFunPtr #-}

glGetVideoivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVideoivNV = ffiuintenumPtrintIOV glGetVideoivNVFunPtr

glGetVideoivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVideoivNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoivNV")

{-# NOINLINE glGetVideoivNVFunPtr #-}

glGetVideoui64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
glGetVideoui64vNV = ffiuintenumPtruint64EXTIOV glGetVideoui64vNVFunPtr

glGetVideoui64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ())
glGetVideoui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoui64vNV")

{-# NOINLINE glGetVideoui64vNVFunPtr #-}

glGetVideouivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetVideouivNV = ffiuintenumPtruintIOV glGetVideouivNVFunPtr

glGetVideouivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetVideouivNVFunPtr = unsafePerformIO (getProcAddress "glGetVideouivNV")

{-# NOINLINE glGetVideouivNVFunPtr #-}

glPresentFrameDualFillNV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> m ()
glPresentFrameDualFillNV = ffiuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV glPresentFrameDualFillNVFunPtr

glPresentFrameDualFillNVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> IO ())
glPresentFrameDualFillNVFunPtr = unsafePerformIO (getProcAddress "glPresentFrameDualFillNV")

{-# NOINLINE glPresentFrameDualFillNVFunPtr #-}

glPresentFrameKeyedNV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> m ()
glPresentFrameKeyedNV = ffiuintuint64EXTuintuintenumenumuintuintenumuintuintIOV glPresentFrameKeyedNVFunPtr

glPresentFrameKeyedNVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> IO ())
glPresentFrameKeyedNVFunPtr = unsafePerformIO (getProcAddress "glPresentFrameKeyedNV")

{-# NOINLINE glPresentFrameKeyedNVFunPtr #-}

pattern GL_CURRENT_TIME_NV = 0x8E28 :: GLenum

pattern GL_FIELDS_NV = 0x8E27 :: GLenum

pattern GL_FRAME_NV = 0x8E26 :: GLenum

pattern GL_NUM_FILL_STREAMS_NV = 0x8E29 :: GLenum

pattern GL_PRESENT_DURATION_NV = 0x8E2B :: GLenum

pattern GL_PRESENT_TIME_NV = 0x8E2A :: GLenum