-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.EXT.TextureStorage (
  -- * Extension Support
    gl_EXT_texture_storage

  -- * GL_EXT_texture_storage
  , glTexStorage1DEXT
  , glTexStorage2DEXT
  , glTexStorage3DEXT
  , glTextureStorage1DEXT
  , glTextureStorage2DEXT
  , glTextureStorage3DEXT
  , pattern GL_ALPHA16F_EXT
  , pattern GL_ALPHA32F_EXT
  , pattern GL_ALPHA8_EXT
  , pattern GL_BGRA8_EXT
  , pattern GL_LUMINANCE16F_EXT
  , pattern GL_LUMINANCE32F_EXT
  , pattern GL_LUMINANCE8_ALPHA8_EXT
  , pattern GL_LUMINANCE8_EXT
  , pattern GL_LUMINANCE_ALPHA16F_EXT
  , pattern GL_LUMINANCE_ALPHA32F_EXT
  , pattern GL_R16F_EXT
  , pattern GL_R32F_EXT
  , pattern GL_R8_EXT
  , pattern GL_RG16F_EXT
  , pattern GL_RG32F_EXT
  , pattern GL_RG8_EXT
  , pattern GL_RGB10_A2_EXT
  , pattern GL_RGB10_EXT
  , pattern GL_RGB16F_EXT
  , pattern GL_RGB32F_EXT
  , pattern GL_RGBA16F_EXT
  , pattern GL_RGBA32F_EXT
  , pattern GL_TEXTURE_IMMUTABLE_FORMAT_EXT
) 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://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt GL_EXT_texture_storage> extension is available.

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

-- | Usage: @'glTexStorage1DEXT' target levels internalformat width@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glTexStorage1D'.


glTexStorage1DEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
glTexStorage1DEXT :: GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
glTexStorage1DEXT = FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
-> GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
-> GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
ffienumsizeienumsizeiIOV FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
glTexStorage1DEXTFunPtr

glTexStorage1DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
glTexStorage1DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
glTexStorage1DEXTFunPtr = IO (FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()))
-> FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO (FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTexStorage1DEXT")

{-# NOINLINE glTexStorage1DEXTFunPtr #-}

-- | Usage: @'glTexStorage2DEXT' target levels internalformat width height@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glTexStorage2D'.


glTexStorage2DEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTexStorage2DEXT :: GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTexStorage2DEXT = FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
-> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
-> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
ffienumsizeienumsizeisizeiIOV FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTexStorage2DEXTFunPtr

glTexStorage2DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTexStorage2DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTexStorage2DEXTFunPtr = IO
  (FunPtr
     (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()))
-> FunPtr
     (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTexStorage2DEXT")

{-# NOINLINE glTexStorage2DEXTFunPtr #-}

-- | Usage: @'glTexStorage3DEXT' target levels internalformat width height depth@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glTexStorage3D'.


glTexStorage3DEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTexStorage3DEXT :: GLenum
-> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTexStorage3DEXT = FunPtr
  (GLenum
   -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
-> GLenum
-> GLsizei
-> GLenum
-> GLsizei
-> GLsizei
-> GLsizei
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLenum
   -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
-> GLenum
-> GLsizei
-> GLenum
-> GLsizei
-> GLsizei
-> GLsizei
-> m ()
ffienumsizeienumsizeisizeisizeiIOV FunPtr
  (GLenum
   -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTexStorage3DEXTFunPtr

glTexStorage3DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTexStorage3DEXTFunPtr :: FunPtr
  (GLenum
   -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTexStorage3DEXTFunPtr = IO
  (FunPtr
     (GLenum
      -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()))
-> FunPtr
     (GLenum
      -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLenum
         -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTexStorage3DEXT")

{-# NOINLINE glTexStorage3DEXTFunPtr #-}

pattern $bGL_ALPHA16F_EXT :: a
$mGL_ALPHA16F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_ALPHA16F_EXT = 0x881C

pattern $bGL_ALPHA32F_EXT :: a
$mGL_ALPHA32F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_ALPHA32F_EXT = 0x8816

pattern $bGL_LUMINANCE16F_EXT :: a
$mGL_LUMINANCE16F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LUMINANCE16F_EXT = 0x881E

pattern $bGL_LUMINANCE32F_EXT :: a
$mGL_LUMINANCE32F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LUMINANCE32F_EXT = 0x8818

pattern $bGL_LUMINANCE_ALPHA16F_EXT :: a
$mGL_LUMINANCE_ALPHA16F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LUMINANCE_ALPHA16F_EXT = 0x881F

pattern $bGL_LUMINANCE_ALPHA32F_EXT :: a
$mGL_LUMINANCE_ALPHA32F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LUMINANCE_ALPHA32F_EXT = 0x8819

pattern $bGL_R32F_EXT :: a
$mGL_R32F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_R32F_EXT = 0x822E

pattern $bGL_RG32F_EXT :: a
$mGL_RG32F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_RG32F_EXT = 0x8230

pattern $bGL_RGB32F_EXT :: a
$mGL_RGB32F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_RGB32F_EXT = 0x8815

pattern $bGL_RGBA32F_EXT :: a
$mGL_RGBA32F_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_RGBA32F_EXT = 0x8814

pattern $bGL_TEXTURE_IMMUTABLE_FORMAT_EXT :: a
$mGL_TEXTURE_IMMUTABLE_FORMAT_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_IMMUTABLE_FORMAT_EXT = 0x912F