-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.ARB.TextureCompression (
  -- * Extension Support
    gl_ARB_texture_compression

  -- * GL_ARB_texture_compression
  , glCompressedTexImage1DARB
  , glCompressedTexImage2DARB
  , glCompressedTexImage3DARB
  , glCompressedTexSubImage1DARB
  , glCompressedTexSubImage2DARB
  , glCompressedTexSubImage3DARB
  , glGetCompressedTexImageARB
  , pattern GL_COMPRESSED_ALPHA_ARB
  , pattern GL_COMPRESSED_INTENSITY_ARB
  , pattern GL_COMPRESSED_LUMINANCE_ALPHA_ARB
  , pattern GL_COMPRESSED_LUMINANCE_ARB
  , pattern GL_COMPRESSED_RGBA_ARB
  , pattern GL_COMPRESSED_RGB_ARB
  , pattern GL_COMPRESSED_TEXTURE_FORMATS_ARB
  , pattern GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
  , pattern GL_TEXTURE_COMPRESSED_ARB
  , pattern GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB
  , pattern GL_TEXTURE_COMPRESSION_HINT_ARB
) 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_ARB_texture_compression :: Bool
gl_ARB_texture_compression = member "GL_ARB_texture_compression" extensions

glCompressedTexImage1DARB :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
glCompressedTexImage1DARB = ffienumintenumsizeiintsizeiPtrVIOV glCompressedTexImage1DARBFunPtr

glCompressedTexImage1DARBFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
glCompressedTexImage1DARBFunPtr = unsafePerformIO (getProcAddress "glCompressedTexImage1DARB")

{-# NOINLINE glCompressedTexImage1DARBFunPtr #-}

glCompressedTexImage2DARB :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
glCompressedTexImage2DARB = ffienumintenumsizeisizeiintsizeiPtrVIOV glCompressedTexImage2DARBFunPtr

glCompressedTexImage2DARBFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
glCompressedTexImage2DARBFunPtr = unsafePerformIO (getProcAddress "glCompressedTexImage2DARB")

{-# NOINLINE glCompressedTexImage2DARBFunPtr #-}

glCompressedTexImage3DARB :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
glCompressedTexImage3DARB = ffienumintenumsizeisizeisizeiintsizeiPtrVIOV glCompressedTexImage3DARBFunPtr

glCompressedTexImage3DARBFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
glCompressedTexImage3DARBFunPtr = unsafePerformIO (getProcAddress "glCompressedTexImage3DARB")

{-# NOINLINE glCompressedTexImage3DARBFunPtr #-}

glCompressedTexSubImage1DARB :: MonadIO m => GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTexSubImage1DARB = ffienumintintsizeienumsizeiPtrVIOV glCompressedTexSubImage1DARBFunPtr

glCompressedTexSubImage1DARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTexSubImage1DARBFunPtr = unsafePerformIO (getProcAddress "glCompressedTexSubImage1DARB")

{-# NOINLINE glCompressedTexSubImage1DARBFunPtr #-}

glCompressedTexSubImage2DARB :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTexSubImage2DARB = ffienumintintintsizeisizeienumsizeiPtrVIOV glCompressedTexSubImage2DARBFunPtr

glCompressedTexSubImage2DARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTexSubImage2DARBFunPtr = unsafePerformIO (getProcAddress "glCompressedTexSubImage2DARB")

{-# NOINLINE glCompressedTexSubImage2DARBFunPtr #-}

glCompressedTexSubImage3DARB :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTexSubImage3DARB = ffienumintintintintsizeisizeisizeienumsizeiPtrVIOV glCompressedTexSubImage3DARBFunPtr

glCompressedTexSubImage3DARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTexSubImage3DARBFunPtr = unsafePerformIO (getProcAddress "glCompressedTexSubImage3DARB")

{-# NOINLINE glCompressedTexSubImage3DARBFunPtr #-}

glGetCompressedTexImageARB :: MonadIO m => GLenum -> GLint -> Ptr () -> m ()
glGetCompressedTexImageARB = ffienumintPtrVIOV glGetCompressedTexImageARBFunPtr

glGetCompressedTexImageARBFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> IO ())
glGetCompressedTexImageARBFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTexImageARB")

{-# NOINLINE glGetCompressedTexImageARBFunPtr #-}

pattern GL_COMPRESSED_ALPHA_ARB = 0x84E9 :: GLenum

pattern GL_COMPRESSED_INTENSITY_ARB = 0x84EC :: GLenum

pattern GL_COMPRESSED_LUMINANCE_ALPHA_ARB = 0x84EB :: GLenum

pattern GL_COMPRESSED_LUMINANCE_ARB = 0x84EA :: GLenum

pattern GL_COMPRESSED_RGBA_ARB = 0x84EE :: GLenum

pattern GL_COMPRESSED_RGB_ARB = 0x84ED :: GLenum

pattern GL_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A3 :: GLenum

pattern GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A2 :: GLenum

pattern GL_TEXTURE_COMPRESSED_ARB = 0x86A1 :: GLenum

pattern GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = 0x86A0 :: GLenum

pattern GL_TEXTURE_COMPRESSION_HINT_ARB = 0x84EF :: GLenum