-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.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.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/bindless_texture.txt GL_NV_bindless_texture> extension is available.

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

-- | Usage: @'glGetImageHandleNV' texture level layered layer format@
--
-- The parameter @layered@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.


glGetImageHandleNV :: MonadIO m => GLuint -> GLint -> GLboolean -> GLint -> GLenum -> m GLuint64
glGetImageHandleNV :: GLuint -> GLint -> GLboolean -> GLint -> GLuint -> m GLuint64
glGetImageHandleNV = FunPtr
  (GLuint -> GLint -> GLboolean -> GLint -> GLuint -> IO GLuint64)
-> GLuint -> GLint -> GLboolean -> GLint -> GLuint -> m GLuint64
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint -> GLint -> GLboolean -> GLint -> GLuint -> IO GLuint64)
-> GLuint -> GLint -> GLboolean -> GLint -> GLuint -> m GLuint64
ffiuintintbooleanintenumIOuint64 FunPtr
  (GLuint -> GLint -> GLboolean -> GLint -> GLuint -> IO GLuint64)
glGetImageHandleNVFunPtr

glGetImageHandleNVFunPtr :: FunPtr (GLuint -> GLint -> GLboolean -> GLint -> GLenum -> IO GLuint64)
glGetImageHandleNVFunPtr :: FunPtr
  (GLuint -> GLint -> GLboolean -> GLint -> GLuint -> IO GLuint64)
glGetImageHandleNVFunPtr = IO
  (FunPtr
     (GLuint -> GLint -> GLboolean -> GLint -> GLuint -> IO GLuint64))
-> FunPtr
     (GLuint -> GLint -> GLboolean -> GLint -> GLuint -> IO GLuint64)
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint -> GLint -> GLboolean -> GLint -> GLuint -> IO GLuint64))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetImageHandleNV")

{-# NOINLINE glGetImageHandleNVFunPtr #-}

-- | Usage: @'glGetTextureHandleNV' texture@


glGetTextureHandleNV :: MonadIO m => GLuint -> m GLuint64
glGetTextureHandleNV :: GLuint -> m GLuint64
glGetTextureHandleNV = FunPtr (GLuint -> IO GLuint64) -> GLuint -> m GLuint64
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO GLuint64) -> GLuint -> m GLuint64
ffiuintIOuint64 FunPtr (GLuint -> IO GLuint64)
glGetTextureHandleNVFunPtr

glGetTextureHandleNVFunPtr :: FunPtr (GLuint -> IO GLuint64)
glGetTextureHandleNVFunPtr :: FunPtr (GLuint -> IO GLuint64)
glGetTextureHandleNVFunPtr = IO (FunPtr (GLuint -> IO GLuint64))
-> FunPtr (GLuint -> IO GLuint64)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> IO GLuint64))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetTextureHandleNV")

{-# NOINLINE glGetTextureHandleNVFunPtr #-}

-- | Usage: @'glGetTextureSamplerHandleNV' texture sampler@


glGetTextureSamplerHandleNV :: MonadIO m => GLuint -> GLuint -> m GLuint64
glGetTextureSamplerHandleNV :: GLuint -> GLuint -> m GLuint64
glGetTextureSamplerHandleNV = FunPtr (GLuint -> GLuint -> IO GLuint64)
-> GLuint -> GLuint -> m GLuint64
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO GLuint64)
-> GLuint -> GLuint -> m GLuint64
ffiuintuintIOuint64 FunPtr (GLuint -> GLuint -> IO GLuint64)
glGetTextureSamplerHandleNVFunPtr

glGetTextureSamplerHandleNVFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
glGetTextureSamplerHandleNVFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
glGetTextureSamplerHandleNVFunPtr = IO (FunPtr (GLuint -> GLuint -> IO GLuint64))
-> FunPtr (GLuint -> GLuint -> IO GLuint64)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> IO GLuint64))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetTextureSamplerHandleNV")

{-# NOINLINE glGetTextureSamplerHandleNVFunPtr #-}

-- | Usage: @'glIsImageHandleResidentNV' handle@


glIsImageHandleResidentNV :: MonadIO m => GLuint64 -> m GLboolean
glIsImageHandleResidentNV :: GLuint64 -> m GLboolean
glIsImageHandleResidentNV = FunPtr (GLuint64 -> IO GLboolean) -> GLuint64 -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint64 -> IO GLboolean) -> GLuint64 -> m GLboolean
ffiuint64IOboolean FunPtr (GLuint64 -> IO GLboolean)
glIsImageHandleResidentNVFunPtr

glIsImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
glIsImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
glIsImageHandleResidentNVFunPtr = IO (FunPtr (GLuint64 -> IO GLboolean))
-> FunPtr (GLuint64 -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint64 -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsImageHandleResidentNV")

{-# NOINLINE glIsImageHandleResidentNVFunPtr #-}

-- | Usage: @'glIsTextureHandleResidentNV' handle@


glIsTextureHandleResidentNV :: MonadIO m => GLuint64 -> m GLboolean
glIsTextureHandleResidentNV :: GLuint64 -> m GLboolean
glIsTextureHandleResidentNV = FunPtr (GLuint64 -> IO GLboolean) -> GLuint64 -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint64 -> IO GLboolean) -> GLuint64 -> m GLboolean
ffiuint64IOboolean FunPtr (GLuint64 -> IO GLboolean)
glIsTextureHandleResidentNVFunPtr

glIsTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
glIsTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
glIsTextureHandleResidentNVFunPtr = IO (FunPtr (GLuint64 -> IO GLboolean))
-> FunPtr (GLuint64 -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint64 -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsTextureHandleResidentNV")

{-# NOINLINE glIsTextureHandleResidentNVFunPtr #-}

-- | Usage: @'glMakeImageHandleNonResidentNV' handle@


glMakeImageHandleNonResidentNV :: MonadIO m => GLuint64 -> m ()
glMakeImageHandleNonResidentNV :: GLuint64 -> m ()
glMakeImageHandleNonResidentNV = FunPtr (GLuint64 -> IO ()) -> GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint64 -> IO ()) -> GLuint64 -> m ()
ffiuint64IOV FunPtr (GLuint64 -> IO ())
glMakeImageHandleNonResidentNVFunPtr

glMakeImageHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeImageHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeImageHandleNonResidentNVFunPtr = IO (FunPtr (GLuint64 -> IO ())) -> FunPtr (GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeImageHandleNonResidentNV")

{-# NOINLINE glMakeImageHandleNonResidentNVFunPtr #-}

-- | Usage: @'glMakeImageHandleResidentNV' handle access@


glMakeImageHandleResidentNV :: MonadIO m => GLuint64 -> GLenum -> m ()
glMakeImageHandleResidentNV :: GLuint64 -> GLuint -> m ()
glMakeImageHandleResidentNV = FunPtr (GLuint64 -> GLuint -> IO ()) -> GLuint64 -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint64 -> GLuint -> IO ()) -> GLuint64 -> GLuint -> m ()
ffiuint64enumIOV FunPtr (GLuint64 -> GLuint -> IO ())
glMakeImageHandleResidentNVFunPtr

glMakeImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> GLenum -> IO ())
glMakeImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> GLuint -> IO ())
glMakeImageHandleResidentNVFunPtr = IO (FunPtr (GLuint64 -> GLuint -> IO ()))
-> FunPtr (GLuint64 -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint64 -> GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeImageHandleResidentNV")

{-# NOINLINE glMakeImageHandleResidentNVFunPtr #-}

-- | Usage: @'glMakeTextureHandleNonResidentNV' handle@


glMakeTextureHandleNonResidentNV :: MonadIO m => GLuint64 -> m ()
glMakeTextureHandleNonResidentNV :: GLuint64 -> m ()
glMakeTextureHandleNonResidentNV = FunPtr (GLuint64 -> IO ()) -> GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint64 -> IO ()) -> GLuint64 -> m ()
ffiuint64IOV FunPtr (GLuint64 -> IO ())
glMakeTextureHandleNonResidentNVFunPtr

glMakeTextureHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeTextureHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeTextureHandleNonResidentNVFunPtr = IO (FunPtr (GLuint64 -> IO ())) -> FunPtr (GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeTextureHandleNonResidentNV")

{-# NOINLINE glMakeTextureHandleNonResidentNVFunPtr #-}

-- | Usage: @'glMakeTextureHandleResidentNV' handle@


glMakeTextureHandleResidentNV :: MonadIO m => GLuint64 -> m ()
glMakeTextureHandleResidentNV :: GLuint64 -> m ()
glMakeTextureHandleResidentNV = FunPtr (GLuint64 -> IO ()) -> GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint64 -> IO ()) -> GLuint64 -> m ()
ffiuint64IOV FunPtr (GLuint64 -> IO ())
glMakeTextureHandleResidentNVFunPtr

glMakeTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
glMakeTextureHandleResidentNVFunPtr = IO (FunPtr (GLuint64 -> IO ())) -> FunPtr (GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMakeTextureHandleResidentNV")

{-# NOINLINE glMakeTextureHandleResidentNVFunPtr #-}

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


glProgramUniformHandleui64NV :: MonadIO m => GLuint -> GLint -> GLuint64 -> m ()
glProgramUniformHandleui64NV :: GLuint -> GLint -> GLuint64 -> m ()
glProgramUniformHandleui64NV = FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
-> GLuint -> GLint -> GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
-> GLuint -> GLint -> GLuint64 -> m ()
ffiuintintuint64IOV FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
glProgramUniformHandleui64NVFunPtr

glProgramUniformHandleui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
glProgramUniformHandleui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
glProgramUniformHandleui64NVFunPtr = IO (FunPtr (GLuint -> GLint -> GLuint64 -> IO ()))
-> FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLint -> GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramUniformHandleui64NV")

{-# NOINLINE glProgramUniformHandleui64NVFunPtr #-}

-- | Usage: @'glProgramUniformHandleui64vNV' program location count values@
--
-- The length of @values@ should be @count@.


glProgramUniformHandleui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
glProgramUniformHandleui64vNV :: GLuint -> GLint -> GLint -> Ptr GLuint64 -> m ()
glProgramUniformHandleui64vNV = FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ())
-> GLuint -> GLint -> GLint -> Ptr GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ())
-> GLuint -> GLint -> GLint -> Ptr GLuint64 -> m ()
ffiuintintsizeiPtruint64IOV FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ())
glProgramUniformHandleui64vNVFunPtr

glProgramUniformHandleui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
glProgramUniformHandleui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ())
glProgramUniformHandleui64vNVFunPtr = IO (FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ()))
-> FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO (FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramUniformHandleui64vNV")

{-# NOINLINE glProgramUniformHandleui64vNVFunPtr #-}

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


glUniformHandleui64NV :: MonadIO m => GLint -> GLuint64 -> m ()
glUniformHandleui64NV :: GLint -> GLuint64 -> m ()
glUniformHandleui64NV = FunPtr (GLint -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> m ()
ffiintuint64IOV FunPtr (GLint -> GLuint64 -> IO ())
glUniformHandleui64NVFunPtr

glUniformHandleui64NVFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
glUniformHandleui64NVFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
glUniformHandleui64NVFunPtr = IO (FunPtr (GLint -> GLuint64 -> IO ()))
-> FunPtr (GLint -> GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glUniformHandleui64NV")

{-# NOINLINE glUniformHandleui64NVFunPtr #-}

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


glUniformHandleui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
glUniformHandleui64vNV :: GLint -> GLint -> Ptr GLuint64 -> m ()
glUniformHandleui64vNV = FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ())
-> GLint -> GLint -> Ptr GLuint64 -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ())
-> GLint -> GLint -> Ptr GLuint64 -> m ()
ffiintsizeiPtruint64IOV FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ())
glUniformHandleui64vNVFunPtr

glUniformHandleui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
glUniformHandleui64vNVFunPtr :: FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ())
glUniformHandleui64vNVFunPtr = IO (FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ()))
-> FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glUniformHandleui64vNV")

{-# NOINLINE glUniformHandleui64vNVFunPtr #-}