-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.ATI.SeparateStencil (
  -- * Extension Support
    gl_ATI_separate_stencil

  -- * GL_ATI_separate_stencil
  , glStencilFuncSeparateATI
  , glStencilOpSeparateATI
  , pattern GL_STENCIL_BACK_FAIL_ATI
  , pattern GL_STENCIL_BACK_FUNC_ATI
  , pattern GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI
  , pattern GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI
) 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_ATI_separate_stencil :: Bool
gl_ATI_separate_stencil = member "GL_ATI_separate_stencil" extensions

glStencilFuncSeparateATI :: MonadIO m => GLenum -> GLenum -> GLint -> GLuint -> m ()
glStencilFuncSeparateATI = ffienumenumintuintIOV glStencilFuncSeparateATIFunPtr

glStencilFuncSeparateATIFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLuint -> IO ())
glStencilFuncSeparateATIFunPtr = unsafePerformIO (getProcAddress "glStencilFuncSeparateATI")

{-# NOINLINE glStencilFuncSeparateATIFunPtr #-}

glStencilOpSeparateATI :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
glStencilOpSeparateATI = ffienumenumenumenumIOV glStencilOpSeparateATIFunPtr

glStencilOpSeparateATIFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glStencilOpSeparateATIFunPtr = unsafePerformIO (getProcAddress "glStencilOpSeparateATI")

{-# NOINLINE glStencilOpSeparateATIFunPtr #-}

pattern GL_STENCIL_BACK_FAIL_ATI = 0x8801 :: GLenum

pattern GL_STENCIL_BACK_FUNC_ATI = 0x8800 :: GLenum

pattern GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI = 0x8802 :: GLenum

pattern GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI = 0x8803 :: GLenum