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

  -- * GL_NV_shader_buffer_load
  , glGetBufferParameterui64vNV
  , glGetIntegerui64vNV
  , glGetNamedBufferParameterui64vNV
  , glGetUniformui64vNV
  , glIsBufferResidentNV
  , glIsNamedBufferResidentNV
  , glMakeBufferNonResidentNV
  , glMakeBufferResidentNV
  , glMakeNamedBufferNonResidentNV
  , glMakeNamedBufferResidentNV
  , glProgramUniformui64NV
  , glProgramUniformui64vNV
  , glUniformui64NV
  , glUniformui64vNV
  , pattern GL_BUFFER_GPU_ADDRESS_NV
  , pattern GL_GPU_ADDRESS_NV
  , pattern GL_MAX_SHADER_BUFFER_ADDRESS_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.Internal.Shared
import Graphics.GL.Types
import System.IO.Unsafe

-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_buffer_load.txt GL_NV_shader_buffer_load> extension is available.

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

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


glGetBufferParameterui64vNV :: MonadIO m => GLenum -> GLenum -> Ptr GLuint64EXT -> m ()
glGetBufferParameterui64vNV :: GLenum -> GLenum -> Ptr GLuint64EXT -> m ()
glGetBufferParameterui64vNV = FunPtr (GLenum -> GLenum -> Ptr GLuint64EXT -> IO ())
-> GLenum -> GLenum -> Ptr GLuint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> Ptr GLuint64EXT -> IO ())
-> GLenum -> GLenum -> Ptr GLuint64EXT -> m ()
ffienumenumPtruint64EXTIOV FunPtr (GLenum -> GLenum -> Ptr GLuint64EXT -> IO ())
glGetBufferParameterui64vNVFunPtr

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

{-# NOINLINE glGetBufferParameterui64vNVFunPtr #-}

-- | Usage: @'glGetIntegerui64vNV' value result@
--
-- The length of @result@ should be @COMPSIZE(value)@.


glGetIntegerui64vNV :: MonadIO m => GLenum -> Ptr GLuint64EXT -> m ()
glGetIntegerui64vNV :: GLenum -> Ptr GLuint64EXT -> m ()
glGetIntegerui64vNV = FunPtr (GLenum -> Ptr GLuint64EXT -> IO ())
-> GLenum -> Ptr GLuint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> Ptr GLuint64EXT -> IO ())
-> GLenum -> Ptr GLuint64EXT -> m ()
ffienumPtruint64EXTIOV FunPtr (GLenum -> Ptr GLuint64EXT -> IO ())
glGetIntegerui64vNVFunPtr

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

{-# NOINLINE glGetIntegerui64vNVFunPtr #-}

-- | Usage: @'glGetNamedBufferParameterui64vNV' buffer pname params@
--
-- The parameter @pname@ is a @VertexBufferObjectParameter@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


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

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

{-# NOINLINE glGetNamedBufferParameterui64vNVFunPtr #-}

-- | Usage: @'glIsBufferResidentNV' target@


glIsBufferResidentNV :: MonadIO m => GLenum -> m GLboolean
glIsBufferResidentNV :: GLenum -> m GLboolean
glIsBufferResidentNV = FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
ffienumIOboolean FunPtr (GLenum -> IO GLboolean)
glIsBufferResidentNVFunPtr

glIsBufferResidentNVFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsBufferResidentNVFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsBufferResidentNVFunPtr = IO (FunPtr (GLenum -> IO GLboolean))
-> FunPtr (GLenum -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsBufferResidentNV")

{-# NOINLINE glIsBufferResidentNVFunPtr #-}

-- | Usage: @'glIsNamedBufferResidentNV' buffer@


glIsNamedBufferResidentNV :: MonadIO m => GLuint -> m GLboolean
glIsNamedBufferResidentNV :: GLenum -> m GLboolean
glIsNamedBufferResidentNV = FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
ffiuintIOboolean FunPtr (GLenum -> IO GLboolean)
glIsNamedBufferResidentNVFunPtr

glIsNamedBufferResidentNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsNamedBufferResidentNVFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsNamedBufferResidentNVFunPtr = IO (FunPtr (GLenum -> IO GLboolean))
-> FunPtr (GLenum -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsNamedBufferResidentNV")

{-# NOINLINE glIsNamedBufferResidentNVFunPtr #-}

-- | Usage: @'glMakeBufferNonResidentNV' target@


glMakeBufferNonResidentNV :: MonadIO m => GLenum -> m ()
glMakeBufferNonResidentNV :: GLenum -> m ()
glMakeBufferNonResidentNV = FunPtr (GLenum -> IO ()) -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> IO ()) -> GLenum -> m ()
ffienumIOV FunPtr (GLenum -> IO ())
glMakeBufferNonResidentNVFunPtr

glMakeBufferNonResidentNVFunPtr :: FunPtr (GLenum -> IO ())
glMakeBufferNonResidentNVFunPtr :: FunPtr (GLenum -> IO ())
glMakeBufferNonResidentNVFunPtr = IO (FunPtr (GLenum -> IO ())) -> FunPtr (GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeBufferNonResidentNV")

{-# NOINLINE glMakeBufferNonResidentNVFunPtr #-}

-- | Usage: @'glMakeBufferResidentNV' target access@


glMakeBufferResidentNV :: MonadIO m => GLenum -> GLenum -> m ()
glMakeBufferResidentNV :: GLenum -> GLenum -> m ()
glMakeBufferResidentNV = FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
ffienumenumIOV FunPtr (GLenum -> GLenum -> IO ())
glMakeBufferResidentNVFunPtr

glMakeBufferResidentNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glMakeBufferResidentNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glMakeBufferResidentNVFunPtr = IO (FunPtr (GLenum -> GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeBufferResidentNV")

{-# NOINLINE glMakeBufferResidentNVFunPtr #-}

-- | Usage: @'glMakeNamedBufferNonResidentNV' buffer@


glMakeNamedBufferNonResidentNV :: MonadIO m => GLuint -> m ()
glMakeNamedBufferNonResidentNV :: GLenum -> m ()
glMakeNamedBufferNonResidentNV = FunPtr (GLenum -> IO ()) -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> IO ()) -> GLenum -> m ()
ffiuintIOV FunPtr (GLenum -> IO ())
glMakeNamedBufferNonResidentNVFunPtr

glMakeNamedBufferNonResidentNVFunPtr :: FunPtr (GLuint -> IO ())
glMakeNamedBufferNonResidentNVFunPtr :: FunPtr (GLenum -> IO ())
glMakeNamedBufferNonResidentNVFunPtr = IO (FunPtr (GLenum -> IO ())) -> FunPtr (GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeNamedBufferNonResidentNV")

{-# NOINLINE glMakeNamedBufferNonResidentNVFunPtr #-}

-- | Usage: @'glMakeNamedBufferResidentNV' buffer access@


glMakeNamedBufferResidentNV :: MonadIO m => GLuint -> GLenum -> m ()
glMakeNamedBufferResidentNV :: GLenum -> GLenum -> m ()
glMakeNamedBufferResidentNV = FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
ffiuintenumIOV FunPtr (GLenum -> GLenum -> IO ())
glMakeNamedBufferResidentNVFunPtr

glMakeNamedBufferResidentNVFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glMakeNamedBufferResidentNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glMakeNamedBufferResidentNVFunPtr = IO (FunPtr (GLenum -> GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeNamedBufferResidentNV")

{-# NOINLINE glMakeNamedBufferResidentNVFunPtr #-}

-- | Usage: @'glProgramUniformui64NV' program location value@


glProgramUniformui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> m ()
glProgramUniformui64NV :: GLenum -> GLint -> GLuint64EXT -> m ()
glProgramUniformui64NV = FunPtr (GLenum -> GLint -> GLuint64EXT -> IO ())
-> GLenum -> GLint -> GLuint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLint -> GLuint64EXT -> IO ())
-> GLenum -> GLint -> GLuint64EXT -> m ()
ffiuintintuint64EXTIOV FunPtr (GLenum -> GLint -> GLuint64EXT -> IO ())
glProgramUniformui64NVFunPtr

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

{-# NOINLINE glProgramUniformui64NVFunPtr #-}

-- | Usage: @'glProgramUniformui64vNV' program location count value@
--
-- The length of @value@ should be @count@.


glProgramUniformui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniformui64vNV :: GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> m ()
glProgramUniformui64vNV = FunPtr (GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> IO ())
-> GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> IO ())
-> GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> m ()
ffiuintintsizeiPtruint64EXTIOV FunPtr (GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> IO ())
glProgramUniformui64vNVFunPtr

glProgramUniformui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniformui64vNVFunPtr :: FunPtr (GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> IO ())
glProgramUniformui64vNVFunPtr = IO (FunPtr (GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> IO ()))
-> FunPtr (GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLenum -> GLint -> GLint -> Ptr GLuint64EXT -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramUniformui64vNV")

{-# NOINLINE glProgramUniformui64vNVFunPtr #-}

-- | Usage: @'glUniformui64NV' location value@


glUniformui64NV :: MonadIO m => GLint -> GLuint64EXT -> m ()
glUniformui64NV :: GLint -> GLuint64EXT -> m ()
glUniformui64NV = FunPtr (GLint -> GLuint64EXT -> IO ())
-> GLint -> GLuint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLuint64EXT -> IO ())
-> GLint -> GLuint64EXT -> m ()
ffiintuint64EXTIOV FunPtr (GLint -> GLuint64EXT -> IO ())
glUniformui64NVFunPtr

glUniformui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> IO ())
glUniformui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> IO ())
glUniformui64NVFunPtr = IO (FunPtr (GLint -> GLuint64EXT -> IO ()))
-> FunPtr (GLint -> GLuint64EXT -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> GLuint64EXT -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glUniformui64NV")

{-# NOINLINE glUniformui64NVFunPtr #-}

-- | Usage: @'glUniformui64vNV' location count value@
--
-- The length of @value@ should be @count*1@.


glUniformui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniformui64vNV :: GLint -> GLint -> Ptr GLuint64EXT -> m ()
glUniformui64vNV = FunPtr (GLint -> GLint -> Ptr GLuint64EXT -> IO ())
-> GLint -> GLint -> Ptr GLuint64EXT -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLint -> Ptr GLuint64EXT -> IO ())
-> GLint -> GLint -> Ptr GLuint64EXT -> m ()
ffiintsizeiPtruint64EXTIOV FunPtr (GLint -> GLint -> Ptr GLuint64EXT -> IO ())
glUniformui64vNVFunPtr

glUniformui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniformui64vNVFunPtr :: FunPtr (GLint -> GLint -> Ptr GLuint64EXT -> IO ())
glUniformui64vNVFunPtr = IO (FunPtr (GLint -> GLint -> Ptr GLuint64EXT -> IO ()))
-> FunPtr (GLint -> GLint -> Ptr GLuint64EXT -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> GLint -> Ptr GLuint64EXT -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glUniformui64vNV")

{-# NOINLINE glUniformui64vNVFunPtr #-}

pattern $bGL_BUFFER_GPU_ADDRESS_NV :: a
$mGL_BUFFER_GPU_ADDRESS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_BUFFER_GPU_ADDRESS_NV = 0x8F1D

pattern $bGL_GPU_ADDRESS_NV :: a
$mGL_GPU_ADDRESS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GPU_ADDRESS_NV = 0x8F34

pattern $bGL_MAX_SHADER_BUFFER_ADDRESS_NV :: a
$mGL_MAX_SHADER_BUFFER_ADDRESS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35