-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.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.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_EXT_texture_storage :: Bool
gl_EXT_texture_storage = member "GL_EXT_texture_storage" extensions

glTexStorage1DEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
glTexStorage1DEXT = ffienumsizeienumsizeiIOV glTexStorage1DEXTFunPtr

glTexStorage1DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
glTexStorage1DEXTFunPtr = unsafePerformIO (getProcAddress "glTexStorage1DEXT")

{-# NOINLINE glTexStorage1DEXTFunPtr #-}

glTexStorage2DEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTexStorage2DEXT = ffienumsizeienumsizeisizeiIOV glTexStorage2DEXTFunPtr

glTexStorage2DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTexStorage2DEXTFunPtr = unsafePerformIO (getProcAddress "glTexStorage2DEXT")

{-# NOINLINE glTexStorage2DEXTFunPtr #-}

glTexStorage3DEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTexStorage3DEXT = ffienumsizeienumsizeisizeisizeiIOV glTexStorage3DEXTFunPtr

glTexStorage3DEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTexStorage3DEXTFunPtr = unsafePerformIO (getProcAddress "glTexStorage3DEXT")

{-# NOINLINE glTexStorage3DEXTFunPtr #-}

pattern GL_ALPHA16F_EXT = 0x881C :: GLenum

pattern GL_ALPHA32F_EXT = 0x8816 :: GLenum

pattern GL_LUMINANCE16F_EXT = 0x881E :: GLenum

pattern GL_LUMINANCE32F_EXT = 0x8818 :: GLenum

pattern GL_LUMINANCE_ALPHA16F_EXT = 0x881F :: GLenum

pattern GL_LUMINANCE_ALPHA32F_EXT = 0x8819 :: GLenum

pattern GL_R32F_EXT = 0x822E :: GLenum

pattern GL_RG32F_EXT = 0x8230 :: GLenum

pattern GL_RGB32F_EXT = 0x8815 :: GLenum

pattern GL_RGBA32F_EXT = 0x8814 :: GLenum

pattern GL_TEXTURE_IMMUTABLE_FORMAT_EXT = 0x912F :: GLenum