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

gl_NV_shader_buffer_load :: Bool
gl_NV_shader_buffer_load = member "GL_NV_shader_buffer_load" extensions

glGetBufferParameterui64vNV :: MonadIO m => GLenum -> GLenum -> Ptr GLuint64EXT -> m ()
glGetBufferParameterui64vNV = ffienumenumPtruint64EXTIOV glGetBufferParameterui64vNVFunPtr

glGetBufferParameterui64vNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint64EXT -> IO ())
glGetBufferParameterui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetBufferParameterui64vNV")

{-# NOINLINE glGetBufferParameterui64vNVFunPtr #-}

glGetIntegerui64vNV :: MonadIO m => GLenum -> Ptr GLuint64EXT -> m ()
glGetIntegerui64vNV = ffienumPtruint64EXTIOV glGetIntegerui64vNVFunPtr

glGetIntegerui64vNVFunPtr :: FunPtr (GLenum -> Ptr GLuint64EXT -> IO ())
glGetIntegerui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetIntegerui64vNV")

{-# NOINLINE glGetIntegerui64vNVFunPtr #-}

glGetNamedBufferParameterui64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
glGetNamedBufferParameterui64vNV = ffiuintenumPtruint64EXTIOV glGetNamedBufferParameterui64vNVFunPtr

glGetNamedBufferParameterui64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ())
glGetNamedBufferParameterui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferParameterui64vNV")

{-# NOINLINE glGetNamedBufferParameterui64vNVFunPtr #-}

glIsBufferResidentNV :: MonadIO m => GLenum -> m GLboolean
glIsBufferResidentNV = ffienumIOboolean glIsBufferResidentNVFunPtr

glIsBufferResidentNVFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsBufferResidentNV")

{-# NOINLINE glIsBufferResidentNVFunPtr #-}

glIsNamedBufferResidentNV :: MonadIO m => GLuint -> m GLboolean
glIsNamedBufferResidentNV = ffiuintIOboolean glIsNamedBufferResidentNVFunPtr

glIsNamedBufferResidentNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsNamedBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsNamedBufferResidentNV")

{-# NOINLINE glIsNamedBufferResidentNVFunPtr #-}

glMakeBufferNonResidentNV :: MonadIO m => GLenum -> m ()
glMakeBufferNonResidentNV = ffienumIOV glMakeBufferNonResidentNVFunPtr

glMakeBufferNonResidentNVFunPtr :: FunPtr (GLenum -> IO ())
glMakeBufferNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeBufferNonResidentNV")

{-# NOINLINE glMakeBufferNonResidentNVFunPtr #-}

glMakeBufferResidentNV :: MonadIO m => GLenum -> GLenum -> m ()
glMakeBufferResidentNV = ffienumenumIOV glMakeBufferResidentNVFunPtr

glMakeBufferResidentNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glMakeBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeBufferResidentNV")

{-# NOINLINE glMakeBufferResidentNVFunPtr #-}

glMakeNamedBufferNonResidentNV :: MonadIO m => GLuint -> m ()
glMakeNamedBufferNonResidentNV = ffiuintIOV glMakeNamedBufferNonResidentNVFunPtr

glMakeNamedBufferNonResidentNVFunPtr :: FunPtr (GLuint -> IO ())
glMakeNamedBufferNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeNamedBufferNonResidentNV")

{-# NOINLINE glMakeNamedBufferNonResidentNVFunPtr #-}

glMakeNamedBufferResidentNV :: MonadIO m => GLuint -> GLenum -> m ()
glMakeNamedBufferResidentNV = ffiuintenumIOV glMakeNamedBufferResidentNVFunPtr

glMakeNamedBufferResidentNVFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glMakeNamedBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeNamedBufferResidentNV")

{-# NOINLINE glMakeNamedBufferResidentNVFunPtr #-}

glProgramUniformui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> m ()
glProgramUniformui64NV = ffiuintintuint64EXTIOV glProgramUniformui64NVFunPtr

glProgramUniformui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ())
glProgramUniformui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformui64NV")

{-# NOINLINE glProgramUniformui64NVFunPtr #-}

glProgramUniformui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniformui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniformui64vNVFunPtr

glProgramUniformui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniformui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformui64vNV")

{-# NOINLINE glProgramUniformui64vNVFunPtr #-}

glUniformui64NV :: MonadIO m => GLint -> GLuint64EXT -> m ()
glUniformui64NV = ffiintuint64EXTIOV glUniformui64NVFunPtr

glUniformui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> IO ())
glUniformui64NVFunPtr = unsafePerformIO (getProcAddress "glUniformui64NV")

{-# NOINLINE glUniformui64NVFunPtr #-}

glUniformui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniformui64vNV = ffiintsizeiPtruint64EXTIOV glUniformui64vNVFunPtr

glUniformui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniformui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniformui64vNV")

{-# NOINLINE glUniformui64vNVFunPtr #-}

pattern GL_BUFFER_GPU_ADDRESS_NV = 0x8F1D

pattern GL_GPU_ADDRESS_NV = 0x8F34

pattern GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35