-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.NV.BindlessTexture (
  -- * Extension Support
    gl_NV_bindless_texture

  -- * GL_NV_bindless_texture
  , glGetImageHandleNV
  , glGetTextureHandleNV
  , glGetTextureSamplerHandleNV
  , glIsImageHandleResidentNV
  , glIsTextureHandleResidentNV
  , glMakeImageHandleNonResidentNV
  , glMakeImageHandleResidentNV
  , glMakeTextureHandleNonResidentNV
  , glMakeTextureHandleResidentNV
  , glProgramUniformHandleui64NV
  , glProgramUniformHandleui64vNV
  , glUniformHandleui64NV
  , glUniformHandleui64vNV
) 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_bindless_texture :: Bool
gl_NV_bindless_texture = member "GL_NV_bindless_texture" extensions

glGetImageHandleNV :: MonadIO m => GLuint -> GLint -> GLboolean -> GLint -> GLenum -> m GLuint64
glGetImageHandleNV = ffiuintintbooleanintenumIOuint64 glGetImageHandleNVFunPtr

glGetImageHandleNVFunPtr :: FunPtr (GLuint -> GLint -> GLboolean -> GLint -> GLenum -> IO GLuint64)
glGetImageHandleNVFunPtr = unsafePerformIO (getProcAddress "glGetImageHandleNV")

{-# NOINLINE glGetImageHandleNVFunPtr #-}

glGetTextureHandleNV :: MonadIO m => GLuint -> m GLuint64
glGetTextureHandleNV = ffiuintIOuint64 glGetTextureHandleNVFunPtr

glGetTextureHandleNVFunPtr :: FunPtr (GLuint -> IO GLuint64)
glGetTextureHandleNVFunPtr = unsafePerformIO (getProcAddress "glGetTextureHandleNV")

{-# NOINLINE glGetTextureHandleNVFunPtr #-}

glGetTextureSamplerHandleNV :: MonadIO m => GLuint -> GLuint -> m GLuint64
glGetTextureSamplerHandleNV = ffiuintuintIOuint64 glGetTextureSamplerHandleNVFunPtr

glGetTextureSamplerHandleNVFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
glGetTextureSamplerHandleNVFunPtr = unsafePerformIO (getProcAddress "glGetTextureSamplerHandleNV")

{-# NOINLINE glGetTextureSamplerHandleNVFunPtr #-}

glIsImageHandleResidentNV :: MonadIO m => GLuint64 -> m GLboolean
glIsImageHandleResidentNV = ffiuint64IOboolean glIsImageHandleResidentNVFunPtr

glIsImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
glIsImageHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsImageHandleResidentNV")

{-# NOINLINE glIsImageHandleResidentNVFunPtr #-}

glIsTextureHandleResidentNV :: MonadIO m => GLuint64 -> m GLboolean
glIsTextureHandleResidentNV = ffiuint64IOboolean glIsTextureHandleResidentNVFunPtr

glIsTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
glIsTextureHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsTextureHandleResidentNV")

{-# NOINLINE glIsTextureHandleResidentNVFunPtr #-}

glMakeImageHandleNonResidentNV :: MonadIO m => GLuint64 -> m ()
glMakeImageHandleNonResidentNV = ffiuint64IOV glMakeImageHandleNonResidentNVFunPtr

glMakeImageHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeImageHandleNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeImageHandleNonResidentNV")

{-# NOINLINE glMakeImageHandleNonResidentNVFunPtr #-}

glMakeImageHandleResidentNV :: MonadIO m => GLuint64 -> GLenum -> m ()
glMakeImageHandleResidentNV = ffiuint64enumIOV glMakeImageHandleResidentNVFunPtr

glMakeImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> GLenum -> IO ())
glMakeImageHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeImageHandleResidentNV")

{-# NOINLINE glMakeImageHandleResidentNVFunPtr #-}

glMakeTextureHandleNonResidentNV :: MonadIO m => GLuint64 -> m ()
glMakeTextureHandleNonResidentNV = ffiuint64IOV glMakeTextureHandleNonResidentNVFunPtr

glMakeTextureHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeTextureHandleNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeTextureHandleNonResidentNV")

{-# NOINLINE glMakeTextureHandleNonResidentNVFunPtr #-}

glMakeTextureHandleResidentNV :: MonadIO m => GLuint64 -> m ()
glMakeTextureHandleResidentNV = ffiuint64IOV glMakeTextureHandleResidentNVFunPtr

glMakeTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeTextureHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeTextureHandleResidentNV")

{-# NOINLINE glMakeTextureHandleResidentNVFunPtr #-}

glProgramUniformHandleui64NV :: MonadIO m => GLuint -> GLint -> GLuint64 -> m ()
glProgramUniformHandleui64NV = ffiuintintuint64IOV glProgramUniformHandleui64NVFunPtr

glProgramUniformHandleui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
glProgramUniformHandleui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64NV")

{-# NOINLINE glProgramUniformHandleui64NVFunPtr #-}

glProgramUniformHandleui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
glProgramUniformHandleui64vNV = ffiuintintsizeiPtruint64IOV glProgramUniformHandleui64vNVFunPtr

glProgramUniformHandleui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
glProgramUniformHandleui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64vNV")

{-# NOINLINE glProgramUniformHandleui64vNVFunPtr #-}

glUniformHandleui64NV :: MonadIO m => GLint -> GLuint64 -> m ()
glUniformHandleui64NV = ffiintuint64IOV glUniformHandleui64NVFunPtr

glUniformHandleui64NVFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
glUniformHandleui64NVFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64NV")

{-# NOINLINE glUniformHandleui64NVFunPtr #-}

glUniformHandleui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
glUniformHandleui64vNV = ffiintsizeiPtruint64IOV glUniformHandleui64vNVFunPtr

glUniformHandleui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
glUniformHandleui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64vNV")

{-# NOINLINE glUniformHandleui64vNVFunPtr #-}