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

  -- * GL_EXT_separate_shader_objects
  , glActiveProgramEXT
  , glActiveShaderProgramEXT
  , glBindProgramPipelineEXT
  , glCreateShaderProgramEXT
  , glCreateShaderProgramvEXT
  , glDeleteProgramPipelinesEXT
  , glGenProgramPipelinesEXT
  , glGetProgramPipelineInfoLogEXT
  , glGetProgramPipelineivEXT
  , glIsProgramPipelineEXT
  , glProgramParameteriEXT
  , glProgramUniform1fEXT
  , glProgramUniform1fvEXT
  , glProgramUniform1iEXT
  , glProgramUniform1ivEXT
  , glProgramUniform1uiEXT
  , glProgramUniform1uivEXT
  , glProgramUniform2fEXT
  , glProgramUniform2fvEXT
  , glProgramUniform2iEXT
  , glProgramUniform2ivEXT
  , glProgramUniform2uiEXT
  , glProgramUniform2uivEXT
  , glProgramUniform3fEXT
  , glProgramUniform3fvEXT
  , glProgramUniform3iEXT
  , glProgramUniform3ivEXT
  , glProgramUniform3uiEXT
  , glProgramUniform3uivEXT
  , glProgramUniform4fEXT
  , glProgramUniform4fvEXT
  , glProgramUniform4iEXT
  , glProgramUniform4ivEXT
  , glProgramUniform4uiEXT
  , glProgramUniform4uivEXT
  , glProgramUniformMatrix2fvEXT
  , glProgramUniformMatrix2x3fvEXT
  , glProgramUniformMatrix2x4fvEXT
  , glProgramUniformMatrix3fvEXT
  , glProgramUniformMatrix3x2fvEXT
  , glProgramUniformMatrix3x4fvEXT
  , glProgramUniformMatrix4fvEXT
  , glProgramUniformMatrix4x2fvEXT
  , glProgramUniformMatrix4x3fvEXT
  , glUseProgramStagesEXT
  , glUseShaderProgramEXT
  , glValidateProgramPipelineEXT
  , pattern GL_ACTIVE_PROGRAM_EXT
  , pattern GL_ALL_SHADER_BITS_EXT
  , pattern GL_FRAGMENT_SHADER_BIT_EXT
  , pattern GL_PROGRAM_PIPELINE_BINDING_EXT
  , pattern GL_PROGRAM_SEPARABLE_EXT
  , pattern GL_VERTEX_SHADER_BIT_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_separate_shader_objects.txt GL_EXT_separate_shader_objects> extension is available.

gl_EXT_separate_shader_objects :: Bool
gl_EXT_separate_shader_objects :: Bool
gl_EXT_separate_shader_objects = String -> Set String -> Bool
forall a. Ord a => a -> Set a -> Bool
member String
"GL_EXT_separate_shader_objects" Set String
extensions
{-# NOINLINE gl_EXT_separate_shader_objects #-}

-- | Usage: @'glActiveProgramEXT' program@


glActiveProgramEXT :: MonadIO m => GLuint -> m ()
glActiveProgramEXT :: forall (m :: * -> *). MonadIO m => GLuint -> m ()
glActiveProgramEXT = FunPtr (GLuint -> IO ()) -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO ()) -> GLuint -> m ()
ffiuintIOV FunPtr (GLuint -> IO ())
glActiveProgramEXTFunPtr

glActiveProgramEXTFunPtr :: FunPtr (GLuint -> IO ())
glActiveProgramEXTFunPtr :: FunPtr (GLuint -> IO ())
glActiveProgramEXTFunPtr = IO (FunPtr (GLuint -> IO ())) -> FunPtr (GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glActiveProgramEXT")

{-# NOINLINE glActiveProgramEXTFunPtr #-}

-- | Usage: @'glActiveShaderProgramEXT' pipeline program@


glActiveShaderProgramEXT :: MonadIO m => GLuint -> GLuint -> m ()
glActiveShaderProgramEXT :: forall (m :: * -> *). MonadIO m => GLuint -> GLuint -> m ()
glActiveShaderProgramEXT = FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
ffiuintuintIOV FunPtr (GLuint -> GLuint -> IO ())
glActiveShaderProgramEXTFunPtr

glActiveShaderProgramEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glActiveShaderProgramEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glActiveShaderProgramEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glActiveShaderProgramEXT")

{-# NOINLINE glActiveShaderProgramEXTFunPtr #-}

-- | Usage: @'glBindProgramPipelineEXT' pipeline@


glBindProgramPipelineEXT :: MonadIO m => GLuint -> m ()
glBindProgramPipelineEXT :: forall (m :: * -> *). MonadIO m => GLuint -> m ()
glBindProgramPipelineEXT = FunPtr (GLuint -> IO ()) -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO ()) -> GLuint -> m ()
ffiuintIOV FunPtr (GLuint -> IO ())
glBindProgramPipelineEXTFunPtr

glBindProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO ())
glBindProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO ())
glBindProgramPipelineEXTFunPtr = IO (FunPtr (GLuint -> IO ())) -> FunPtr (GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glBindProgramPipelineEXT")

{-# NOINLINE glBindProgramPipelineEXTFunPtr #-}

-- | Usage: @'glCreateShaderProgramEXT' type string@


glCreateShaderProgramEXT :: MonadIO m => GLenum -> Ptr GLchar -> m GLuint
glCreateShaderProgramEXT :: forall (m :: * -> *). MonadIO m => GLuint -> Ptr GLchar -> m GLuint
glCreateShaderProgramEXT = FunPtr (GLuint -> Ptr GLchar -> IO GLuint)
-> GLuint -> Ptr GLchar -> m GLuint
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> Ptr GLchar -> IO GLuint)
-> GLuint -> Ptr GLchar -> m GLuint
ffienumPtrcharIOuint FunPtr (GLuint -> Ptr GLchar -> IO GLuint)
glCreateShaderProgramEXTFunPtr

glCreateShaderProgramEXTFunPtr :: FunPtr (GLenum -> Ptr GLchar -> IO GLuint)
glCreateShaderProgramEXTFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLuint)
glCreateShaderProgramEXTFunPtr = IO (FunPtr (GLuint -> Ptr GLchar -> IO GLuint))
-> FunPtr (GLuint -> Ptr GLchar -> IO GLuint)
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> Ptr GLchar -> IO GLuint))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glCreateShaderProgramEXT")

{-# NOINLINE glCreateShaderProgramEXTFunPtr #-}

-- | Usage: @'glCreateShaderProgramvEXT' type count strings@
--
-- The length of @strings@ should be @count@.


glCreateShaderProgramvEXT :: MonadIO m => GLenum -> GLsizei -> Ptr (Ptr GLchar) -> m GLuint
glCreateShaderProgramvEXT :: forall (m :: * -> *).
MonadIO m =>
GLuint -> GLsizei -> Ptr (Ptr GLchar) -> m GLuint
glCreateShaderProgramvEXT = FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint)
-> GLuint -> GLsizei -> Ptr (Ptr GLchar) -> m GLuint
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint)
-> GLuint -> GLsizei -> Ptr (Ptr GLchar) -> m GLuint
ffienumsizeiPtrPtrcharIOuint FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint)
glCreateShaderProgramvEXTFunPtr

glCreateShaderProgramvEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint)
glCreateShaderProgramvEXTFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint)
glCreateShaderProgramvEXTFunPtr = IO (FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint))
-> FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint)
forall a. IO a -> a
unsafePerformIO (String
-> IO (FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glCreateShaderProgramvEXT")

{-# NOINLINE glCreateShaderProgramvEXTFunPtr #-}

-- | Usage: @'glDeleteProgramPipelinesEXT' n pipelines@
--
-- The length of @pipelines@ should be @n@.


glDeleteProgramPipelinesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteProgramPipelinesEXT :: forall (m :: * -> *). MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteProgramPipelinesEXT = FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteProgramPipelinesEXTFunPtr

glDeleteProgramPipelinesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteProgramPipelinesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteProgramPipelinesEXTFunPtr = IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
-> FunPtr (GLsizei -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glDeleteProgramPipelinesEXT")

{-# NOINLINE glDeleteProgramPipelinesEXTFunPtr #-}

-- | Usage: @'glGenProgramPipelinesEXT' n pipelines@
--
-- The length of @pipelines@ should be @n@.


glGenProgramPipelinesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenProgramPipelinesEXT :: forall (m :: * -> *). MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenProgramPipelinesEXT = FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenProgramPipelinesEXTFunPtr

glGenProgramPipelinesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenProgramPipelinesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenProgramPipelinesEXTFunPtr = IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
-> FunPtr (GLsizei -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glGenProgramPipelinesEXT")

{-# NOINLINE glGenProgramPipelinesEXTFunPtr #-}

-- | Usage: @'glGetProgramPipelineInfoLogEXT' pipeline bufSize length infoLog@
--
-- The length of @length@ should be @1@.
--
-- The length of @infoLog@ should be @bufSize@.


glGetProgramPipelineInfoLogEXT :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetProgramPipelineInfoLogEXT :: forall (m :: * -> *).
MonadIO m =>
GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetProgramPipelineInfoLogEXT = FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
ffiuintsizeiPtrsizeiPtrcharIOV FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetProgramPipelineInfoLogEXTFunPtr

glGetProgramPipelineInfoLogEXTFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetProgramPipelineInfoLogEXTFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetProgramPipelineInfoLogEXTFunPtr = IO
  (FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
-> FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
forall a. IO a -> a
unsafePerformIO (String
-> IO
     (FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glGetProgramPipelineInfoLogEXT")

{-# NOINLINE glGetProgramPipelineInfoLogEXTFunPtr #-}

-- | Usage: @'glGetProgramPipelineivEXT' pipeline pname params@


glGetProgramPipelineivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetProgramPipelineivEXT :: forall (m :: * -> *).
MonadIO m =>
GLuint -> GLuint -> Ptr GLsizei -> m ()
glGetProgramPipelineivEXT = FunPtr (GLuint -> GLuint -> Ptr GLsizei -> IO ())
-> GLuint -> GLuint -> Ptr GLsizei -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> Ptr GLsizei -> IO ())
-> GLuint -> GLuint -> Ptr GLsizei -> m ()
ffiuintenumPtrintIOV FunPtr (GLuint -> GLuint -> Ptr GLsizei -> IO ())
glGetProgramPipelineivEXTFunPtr

glGetProgramPipelineivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetProgramPipelineivEXTFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLsizei -> IO ())
glGetProgramPipelineivEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> Ptr GLsizei -> IO ()))
-> FunPtr (GLuint -> GLuint -> Ptr GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> GLuint -> Ptr GLsizei -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glGetProgramPipelineivEXT")

{-# NOINLINE glGetProgramPipelineivEXTFunPtr #-}

-- | Usage: @'glIsProgramPipelineEXT' pipeline@


glIsProgramPipelineEXT :: MonadIO m => GLuint -> m GLboolean
glIsProgramPipelineEXT :: forall (m :: * -> *). MonadIO m => GLuint -> m GLboolean
glIsProgramPipelineEXT = FunPtr (GLuint -> IO GLboolean) -> GLuint -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO GLboolean) -> GLuint -> m GLboolean
ffiuintIOboolean FunPtr (GLuint -> IO GLboolean)
glIsProgramPipelineEXTFunPtr

glIsProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramPipelineEXTFunPtr = IO (FunPtr (GLuint -> IO GLboolean))
-> FunPtr (GLuint -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> IO GLboolean))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glIsProgramPipelineEXT")

{-# NOINLINE glIsProgramPipelineEXTFunPtr #-}

-- | Usage: @'glUseProgramStagesEXT' pipeline stages program@


glUseProgramStagesEXT :: MonadIO m => GLuint -> GLbitfield -> GLuint -> m ()
glUseProgramStagesEXT :: forall (m :: * -> *).
MonadIO m =>
GLuint -> GLuint -> GLuint -> m ()
glUseProgramStagesEXT = FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
ffiuintbitfielduintIOV FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glUseProgramStagesEXTFunPtr

glUseProgramStagesEXTFunPtr :: FunPtr (GLuint -> GLbitfield -> GLuint -> IO ())
glUseProgramStagesEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glUseProgramStagesEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> GLuint -> GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glUseProgramStagesEXT")

{-# NOINLINE glUseProgramStagesEXTFunPtr #-}

-- | Usage: @'glUseShaderProgramEXT' type program@


glUseShaderProgramEXT :: MonadIO m => GLenum -> GLuint -> m ()
glUseShaderProgramEXT :: forall (m :: * -> *). MonadIO m => GLuint -> GLuint -> m ()
glUseShaderProgramEXT = FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
ffienumuintIOV FunPtr (GLuint -> GLuint -> IO ())
glUseShaderProgramEXTFunPtr

glUseShaderProgramEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glUseShaderProgramEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glUseShaderProgramEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glUseShaderProgramEXT")

{-# NOINLINE glUseShaderProgramEXTFunPtr #-}

-- | Usage: @'glValidateProgramPipelineEXT' pipeline@


glValidateProgramPipelineEXT :: MonadIO m => GLuint -> m ()
glValidateProgramPipelineEXT :: forall (m :: * -> *). MonadIO m => GLuint -> m ()
glValidateProgramPipelineEXT = FunPtr (GLuint -> IO ()) -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO ()) -> GLuint -> m ()
ffiuintIOV FunPtr (GLuint -> IO ())
glValidateProgramPipelineEXTFunPtr

glValidateProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO ())
glValidateProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO ())
glValidateProgramPipelineEXTFunPtr = IO (FunPtr (GLuint -> IO ())) -> FunPtr (GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glValidateProgramPipelineEXT")

{-# NOINLINE glValidateProgramPipelineEXTFunPtr #-}

pattern GL_ACTIVE_PROGRAM_EXT  :: (Eq a, Num a) => a

pattern $mGL_ACTIVE_PROGRAM_EXT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_ACTIVE_PROGRAM_EXT :: forall a. (Eq a, Num a) => a
GL_ACTIVE_PROGRAM_EXT = 0x8B8D

pattern GL_ALL_SHADER_BITS_EXT  :: (Eq a, Num a) => a

pattern $mGL_ALL_SHADER_BITS_EXT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_ALL_SHADER_BITS_EXT :: forall a. (Eq a, Num a) => a
GL_ALL_SHADER_BITS_EXT = 0xFFFFFFFF

pattern GL_FRAGMENT_SHADER_BIT_EXT  :: (Eq a, Num a) => a

pattern $mGL_FRAGMENT_SHADER_BIT_EXT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_FRAGMENT_SHADER_BIT_EXT :: forall a. (Eq a, Num a) => a
GL_FRAGMENT_SHADER_BIT_EXT = 0x00000002

pattern GL_PROGRAM_PIPELINE_BINDING_EXT  :: (Eq a, Num a) => a

pattern $mGL_PROGRAM_PIPELINE_BINDING_EXT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_PROGRAM_PIPELINE_BINDING_EXT :: forall a. (Eq a, Num a) => a
GL_PROGRAM_PIPELINE_BINDING_EXT = 0x825A

pattern GL_PROGRAM_SEPARABLE_EXT  :: (Eq a, Num a) => a

pattern $mGL_PROGRAM_SEPARABLE_EXT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_PROGRAM_SEPARABLE_EXT :: forall a. (Eq a, Num a) => a
GL_PROGRAM_SEPARABLE_EXT = 0x8258

pattern GL_VERTEX_SHADER_BIT_EXT  :: (Eq a, Num a) => a

pattern $mGL_VERTEX_SHADER_BIT_EXT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_VERTEX_SHADER_BIT_EXT :: forall a. (Eq a, Num a) => a
GL_VERTEX_SHADER_BIT_EXT = 0x00000001