-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.IMG.BindlessTexture (
  -- * Extension Support
    gl_IMG_bindless_texture

  -- * GL_IMG_bindless_texture
  , glGetTextureHandleIMG
  , glGetTextureSamplerHandleIMG
  , glProgramUniformHandleui64IMG
  , glProgramUniformHandleui64vIMG
  , glUniformHandleui64IMG
  , glUniformHandleui64vIMG
) 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://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_bindless_texture.txt GL_IMG_bindless_texture> extension is available.

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

-- | Usage: @'glGetTextureHandleIMG' texture@
--
-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glGetTextureHandleARB'.


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

glGetTextureHandleIMGFunPtr :: FunPtr (GLuint -> IO GLuint64)
glGetTextureHandleIMGFunPtr :: FunPtr (GLuint -> IO GLuint64)
glGetTextureHandleIMGFunPtr = 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 "glGetTextureHandleIMG")

{-# NOINLINE glGetTextureHandleIMGFunPtr #-}

-- | Usage: @'glGetTextureSamplerHandleIMG' texture sampler@
--
-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glGetTextureSamplerHandleARB'.


glGetTextureSamplerHandleIMG :: MonadIO m => GLuint -> GLuint -> m GLuint64
glGetTextureSamplerHandleIMG :: GLuint -> GLuint -> m GLuint64
glGetTextureSamplerHandleIMG = 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)
glGetTextureSamplerHandleIMGFunPtr

glGetTextureSamplerHandleIMGFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
glGetTextureSamplerHandleIMGFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
glGetTextureSamplerHandleIMGFunPtr = 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 "glGetTextureSamplerHandleIMG")

{-# NOINLINE glGetTextureSamplerHandleIMGFunPtr #-}

-- | Usage: @'glProgramUniformHandleui64IMG' program location value@
--
-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glProgramUniformHandleui64ARB'.


glProgramUniformHandleui64IMG :: MonadIO m => GLuint -> GLint -> GLuint64 -> m ()
glProgramUniformHandleui64IMG :: GLuint -> GLint -> GLuint64 -> m ()
glProgramUniformHandleui64IMG = 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 ())
glProgramUniformHandleui64IMGFunPtr

glProgramUniformHandleui64IMGFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
glProgramUniformHandleui64IMGFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
glProgramUniformHandleui64IMGFunPtr = 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 "glProgramUniformHandleui64IMG")

{-# NOINLINE glProgramUniformHandleui64IMGFunPtr #-}

-- | Usage: @'glProgramUniformHandleui64vIMG' program location count values@
--
-- The length of @values@ should be @count@.
--
-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glProgramUniformHandleui64vARB'.


glProgramUniformHandleui64vIMG :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
glProgramUniformHandleui64vIMG :: GLuint -> GLint -> GLint -> Ptr GLuint64 -> m ()
glProgramUniformHandleui64vIMG = 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 ())
glProgramUniformHandleui64vIMGFunPtr

glProgramUniformHandleui64vIMGFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
glProgramUniformHandleui64vIMGFunPtr :: FunPtr (GLuint -> GLint -> GLint -> Ptr GLuint64 -> IO ())
glProgramUniformHandleui64vIMGFunPtr = 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 "glProgramUniformHandleui64vIMG")

{-# NOINLINE glProgramUniformHandleui64vIMGFunPtr #-}

-- | Usage: @'glUniformHandleui64IMG' location value@
--
-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glUniformHandleui64ARB'.


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

glUniformHandleui64IMGFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
glUniformHandleui64IMGFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
glUniformHandleui64IMGFunPtr = 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 "glUniformHandleui64IMG")

{-# NOINLINE glUniformHandleui64IMGFunPtr #-}

-- | Usage: @'glUniformHandleui64vIMG' location count value@
--
-- The length of @value@ should be @count@.
--
-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glUniformHandleui64vARB'.


glUniformHandleui64vIMG :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
glUniformHandleui64vIMG :: GLint -> GLint -> Ptr GLuint64 -> m ()
glUniformHandleui64vIMG = 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 ())
glUniformHandleui64vIMGFunPtr

glUniformHandleui64vIMGFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
glUniformHandleui64vIMGFunPtr :: FunPtr (GLint -> GLint -> Ptr GLuint64 -> IO ())
glUniformHandleui64vIMGFunPtr = 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 "glUniformHandleui64vIMG")

{-# NOINLINE glUniformHandleui64vIMGFunPtr #-}