diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.markdown
@@ -0,0 +1,3 @@
+0.1
+---
+* Initial release
diff --git a/Generator.hs b/Generator.hs
new file mode 100644
--- /dev/null
+++ b/Generator.hs
@@ -0,0 +1,540 @@
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2014 Edward Kmett and Gabríel Arthúr Pétursson
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+----------------------------------------------------------------------------
+module Generator (generateSource) where
+
+import Control.Arrow
+import Control.Monad
+import Control.Monad.Trans.State
+import Data.Char
+import qualified Data.Foldable as Foldable
+import Data.Functor
+import Data.List
+import qualified Data.Map as Map
+import Data.Map (Map)
+import qualified Data.Set as Set
+import Data.Set (Set)
+import Data.Tuple
+import System.FilePath 
+import Text.Printf
+import Module
+import Parser
+import Registry
+import Utils
+
+data Entry
+  = F String
+  | E String
+  deriving (Eq, Ord, Show)
+
+type Signature = String
+type Name = String
+type ModuleName = String
+type SectionName = String
+type ExtensionName = String
+type ExportItem = String
+
+data Category = C SectionName (Set ExportItem)
+  deriving (Eq, Ord, Show)
+
+saneEnum :: Name -> Name
+saneEnum = ("GL_"++) . joinOn "_" . tail . splitOn "_"
+
+saneModule :: Name -> Name
+saneModule "422Pixels" = "FourTwoTwoPixels"
+saneModule x = x
+
+sanePrefix :: Name -> Name
+sanePrefix "3DFX" = "ThreeDFX"
+sanePrefix x = x
+
+wrap :: Maybe String -> String -> String
+wrap (Just w) s 
+  | any isSpace s = printf "%s (%s)" w s
+  | otherwise = printf "%s %s" w s
+wrap Nothing s = s
+
+commandSignature :: Maybe Name -> Command -> Signature
+commandSignature monad command =
+  joinOn " -> " $
+    (parameterSignature $ commandParameters command) ++
+    [returnSignature $ commandType command]
+  where
+    parameterSignature :: [(Type, String)] -> [String]
+    parameterSignature params = map (typeSignature . fst) params
+
+    returnSignature :: Type -> String
+    returnSignature t = wrap monad . wrap (ptr t) $
+      case typeName t of
+        Nothing -> "()"
+        Just "GLvoid" -> "()"
+        Just x -> x
+
+    ptr :: Type -> Maybe String
+    ptr t = "Ptr" <$ guard (typePointer t)
+
+    typeSignature :: Type -> String
+    typeSignature t = wrap (ptr t) $
+      case typeName t of
+        Nothing -> "()"
+        Just "GLvoid" -> "()"
+        Just "struct _cl_context" -> "()"
+        Just "struct _cl_event" -> "()"
+        Just x -> x
+
+commonName :: Signature -> Name
+commonName
+  = joinOn ""
+  . splitOn "GL"
+  . joinOn ""
+  . map (filter isAlphaNum)
+  . map (replace "()" "V")
+  . splitOn " -> "
+  . ioish
+
+dynamicName :: Signature -> Name
+dynamicName xs = "dyn" ++ commonName xs
+
+invokerName :: Signature -> Name
+invokerName xs = "ffi" ++ commonName xs
+
+extensionModuleName :: ExtensionName -> ModuleName
+extensionModuleName name =
+  printf "Graphics.GL.Raw.Extension.%s.%s"
+    (sanePrefix prefix) (saneModule $ camelCase (joinOn "_" rest))
+  where
+    (gl:prefix:rest) = splitOn "_" name
+
+    camelCase :: String -> String
+    camelCase str = concat . map (\(x:xs) -> toUpper x : xs) $
+      splitOn "_" str
+
+profileModuleName :: String -> String -> (ModuleName, Maybe ModuleName)
+profileModuleName feature profile =
+  ( printf "Graphics.GL.Raw.Profile.%s" $ fst submodule
+  , snd submodule >>= return . printf "Graphics.GL.Raw.Profile.%s"
+  )
+  where
+    submodule = case (feature, profile) of
+      ("GL_VERSION_1_0", _) -> ("Standard10", Nothing)
+      ("GL_VERSION_1_1", _) -> ("Standard11", Nothing)
+      ("GL_VERSION_1_2", _) -> ("Standard12", Nothing)
+      ("GL_VERSION_1_3", _) -> ("Standard13", Nothing)
+      ("GL_VERSION_1_4", _) -> ("Standard14", Nothing)
+      ("GL_VERSION_1_5", _) -> ("Standard15", Nothing)
+      ("GL_VERSION_2_0", _) -> ("Standard20", Nothing)
+      ("GL_VERSION_2_1", _) -> ("Standard21", Nothing)
+      ("GL_VERSION_3_0", _) -> ("Standard30", Nothing)
+      ("GL_VERSION_3_1", _) -> ("Standard31", Nothing)
+
+      ("GL_VERSION_3_2", "core") -> ("Core32", Just "Compatibility32")
+      ("GL_VERSION_3_2", "compatibility") -> ("Compatibility32", Nothing)
+      ("GL_VERSION_3_2", _) -> ("Core32", Nothing)
+
+      ("GL_VERSION_3_3", "core") -> ("Core33", Just "Compatibility33")
+      ("GL_VERSION_3_3", "compatibility") -> ("Compatibility33", Nothing)
+      ("GL_VERSION_3_3", _) -> ("Core33", Nothing)
+
+      ("GL_VERSION_4_0", "core") -> ("Core40", Just "Compatibility40")
+      ("GL_VERSION_4_0", "compatibility") -> ("Compatibility40", Nothing)
+      ("GL_VERSION_4_0", _) -> ("Core40", Nothing)
+
+      ("GL_VERSION_4_1", "core") -> ("Core41", Just "Compatibility41")
+      ("GL_VERSION_4_1", "compatibility") -> ("Compatibility41", Nothing)
+      ("GL_VERSION_4_1", _) -> ("Core41", Nothing)
+
+      ("GL_VERSION_4_2", "core") -> ("Core42", Just "Compatibility42")
+      ("GL_VERSION_4_2", "compatibility") -> ("Compatibility42", Nothing)
+      ("GL_VERSION_4_2", _) -> ("Core42", Nothing)
+
+      ("GL_VERSION_4_3", "core") -> ("Core43", Just "Compatibility43")
+      ("GL_VERSION_4_3", "compatibility") -> ("Compatibility43", Nothing)
+      ("GL_VERSION_4_3", _) -> ("Core43", Nothing)
+
+      ("GL_VERSION_4_4", "core") -> ("Core44", Just "Compatibility44")
+      ("GL_VERSION_4_4", "compatibility") -> ("Compatibility44", Nothing)
+      ("GL_VERSION_4_4", _) -> ("Core44", Nothing)
+
+      ("GL_VERSION_4_5", "core") -> ("Core45", Just "Compatibility45")
+      ("GL_VERSION_4_5", "compatibility") -> ("Compatibility45", Nothing)
+      ("GL_VERSION_4_5", _) -> ("Core45", Nothing)
+
+      ("GL_VERSION_ES_CM_1_0", "common") -> ("EmbeddedCommon10", Nothing)
+      ("GL_VERSION_ES_CM_1_0", _) -> ("EmbeddedLite10", Nothing)
+
+      ("GL_ES_VERSION_2_0", _) -> ("Embedded20", Nothing)
+      ("GL_ES_VERSION_3_0", _) -> ("Embedded30", Nothing)
+      ("GL_ES_VERSION_3_1", _) -> ("Embedded31", Nothing)
+
+      a -> error $ show a
+
+implicitPrelude :: String -> ([String], [Body])
+implicitPrelude m = case m of
+  "Graphics.GL.Raw.Profile.Compatibility32" -> mk [
+      "Graphics.GL.Raw.Profile.Core32"
+    ]
+  "Graphics.GL.Raw.Profile.Compatibility33" -> mk [
+      "Graphics.GL.Raw.Profile.Compatibility32"
+    , "Graphics.GL.Raw.Profile.Core33"
+    ]
+  "Graphics.GL.Raw.Profile.Compatibility40" -> mk [
+      "Graphics.GL.Raw.Profile.Compatibility32"
+    , "Graphics.GL.Raw.Profile.Core40"
+    ]
+  "Graphics.GL.Raw.Profile.Compatibility41" -> mk [
+      "Graphics.GL.Raw.Profile.Compatibility40"
+    , "Graphics.GL.Raw.Profile.Core41"
+    ]
+  "Graphics.GL.Raw.Profile.Compatibility42" -> mk [
+      "Graphics.GL.Raw.Profile.Compatibility41"
+    , "Graphics.GL.Raw.Profile.Core42"
+    ]
+  "Graphics.GL.Raw.Profile.Compatibility43" -> mk [
+      "Graphics.GL.Raw.Profile.Compatibility42"
+    , "Graphics.GL.Raw.Profile.Core43"
+    ]
+  "Graphics.GL.Raw.Profile.Compatibility44" -> mk [
+      "Graphics.GL.Raw.Profile.Compatibility43"
+    , "Graphics.GL.Raw.Profile.Core44"
+    ]
+  "Graphics.GL.Raw.Profile.Compatibility45" -> mk [
+      "Graphics.GL.Raw.Profile.Compatibility44"
+    , "Graphics.GL.Raw.Profile.Core45"
+    ]
+  "Graphics.GL.Raw.Profile.Core33" -> mk [
+      "Graphics.GL.Raw.Profile.Core32"
+    ]
+  "Graphics.GL.Raw.Profile.Core40" -> mk [
+      "Graphics.GL.Raw.Profile.Core33"
+    ]
+  "Graphics.GL.Raw.Profile.Core41" -> mk [
+      "Graphics.GL.Raw.Profile.Core40"
+    ]
+  "Graphics.GL.Raw.Profile.Core42" -> mk [
+      "Graphics.GL.Raw.Profile.Core41"
+    ]
+  "Graphics.GL.Raw.Profile.Core43" -> mk [
+      "Graphics.GL.Raw.Profile.Core42"
+    ]
+  "Graphics.GL.Raw.Profile.Core44" -> mk [
+      "Graphics.GL.Raw.Profile.Core43"
+    ]
+  "Graphics.GL.Raw.Profile.Core45" -> mk [
+      "Graphics.GL.Raw.Profile.Core44"
+    ]
+  "Graphics.GL.Raw.Profile.EmbeddedCommon10" -> mk [
+      "Graphics.GL.Raw.Profile.EmbeddedLite10"
+    ]
+  "Graphics.GL.Raw.Profile.Embedded30" -> mk [
+      "Graphics.GL.Raw.Profile.Embedded20"
+    ]
+  "Graphics.GL.Raw.Profile.Embedded31" -> mk [
+      "Graphics.GL.Raw.Profile.Embedded30"
+    ]
+  "Graphics.GL.Raw.Profile.Standard11" -> mk [
+      "Graphics.GL.Raw.Profile.Standard10"
+    ]
+  "Graphics.GL.Raw.Profile.Standard12" -> mk [
+      "Graphics.GL.Raw.Profile.Standard11"
+    ]
+  "Graphics.GL.Raw.Profile.Standard13" -> mk [
+      "Graphics.GL.Raw.Profile.Standard12"
+    ]
+  "Graphics.GL.Raw.Profile.Standard14" -> mk [
+      "Graphics.GL.Raw.Profile.Standard13"
+    ]
+  "Graphics.GL.Raw.Profile.Standard15" -> mk [
+      "Graphics.GL.Raw.Profile.Standard14"
+    ]
+  "Graphics.GL.Raw.Profile.Standard20" -> mk [
+      "Graphics.GL.Raw.Profile.Standard15"
+    ]
+  "Graphics.GL.Raw.Profile.Standard21" -> mk [
+      "Graphics.GL.Raw.Profile.Standard20"
+    ]
+  "Graphics.GL.Raw.Profile.Standard30" -> mk [
+      "Graphics.GL.Raw.Profile.Standard21"
+    ]
+  "Graphics.GL.Raw.Profile.Standard31" -> mk [
+      "Graphics.GL.Raw.Profile.Standard30"
+    ]
+  _ -> ([], [])
+  where
+    mk names = (map ("module "++) names, [Import names])
+
+requires :: String -> Require -> State (Map Entry Category) ()
+requires name req = do
+  forM_ (requireEnums req) $ \e ->
+    modify $ Map.adjust (\(C v m) -> C v $ Set.insert name m) (E $ saneEnum e)
+
+  forM_ (requireCommands req) $ \f ->
+    modify $ Map.adjust (\(C v m) -> C v $ Set.insert name m) (F f)
+
+entries :: Registry -> State (Map Entry Category) ()
+entries registry = do
+  forM_ (registryCommands registry) $ \f ->
+    modify $ Map.insert
+      (F $ commandName f)
+      (C (commandSignature (Just "m") f) Set.empty)
+
+  forM_ (registryEnums registry) $ \e ->
+    modify $ Map.insert
+      (E . saneEnum $ enumName e)
+      (C (enumValue e) Set.empty)
+
+  forM_ (registryExtensions registry) $ \ext ->
+    forM_ (extensionRequires ext) $ \req ->
+      requires (extensionModuleName $ extensionName ext) req
+
+  forM_ (registryFeatures registry) $ \fe -> do
+    let feature = featureName fe
+
+    forM_ (featureRequires fe) $ \req -> do
+      let name = fst . profileModuleName feature $ requireProfile req
+      requires name req
+
+      when (isPrefixOf "Graphics.GL.Raw.Profile.Standard" name) $
+        requires "Graphics.GL.Raw.Profile.Core32" req
+
+    forM_ (featureRemoves fe) $ \rm -> do
+      let profile = removeProfile rm
+      let (name, removeName) = profileModuleName feature profile
+
+      forM_ (removeEnums rm) $ \e -> do
+        modify $ Map.adjust
+          (\(C v m) -> C v $ Set.delete name m)
+          (E $ saneEnum e)
+
+        case removeName of
+          Just name' -> modify $ Map.adjust
+            (\(C v m) -> C v $ Set.insert name' m) (E $ saneEnum e)
+          Nothing -> return ()
+
+      forM_ (removeCommands rm) $ \f -> do
+        modify $ Map.adjust
+          (\(C v m) -> C v $ Set.delete name m)
+          (F f)
+
+        case removeName of
+          Just name' -> modify $ Map.adjust
+            (\(C v m) -> C v $ Set.insert name' m) (F f)
+          Nothing -> return ()
+
+modules :: Registry
+        -> Map Entry Category
+        -> State (Map String [(Bool, Entry, String)]) ()
+modules registry entr = do
+  forM_ (registryExtensions registry) $ \ext ->
+    modify $ Map.insert (extensionModuleName $ extensionName ext) []
+
+  forM_ profiles $ \profile ->
+    modify $ Map.insert (printf "Graphics.GL.Raw.Profile.%s" profile) []
+
+  forM_ (Map.toList entr) $ \(k, C v ms) ->
+    forM_ (Set.toList ms) $ \m ->
+      modify $ Map.alter (f (Set.size ms > 1, k, v)) m
+  where
+    f r Nothing = Just [r]
+    f r (Just a) = Just $ a ++ [r]
+
+    profiles = [
+        "Compatibility32"
+      , "Compatibility33"
+      , "Compatibility40"
+      , "Compatibility41"
+      , "Compatibility42"
+      , "Compatibility43"
+      , "Compatibility44"
+      , "Compatibility45"
+      , "Core32"
+      , "Core33"
+      , "Core40"
+      , "Core41"
+      , "Core42"
+      , "Core43"
+      , "Core44"
+      , "Core45"
+      , "EmbeddedCommon11"
+      , "EmbeddedLite11"
+      , "Embedded20"
+      , "Embedded30"
+      , "Embedded31"
+      , "Standard10"
+      , "Standard11"
+      , "Standard12"
+      , "Standard13"
+      , "Standard14"
+      , "Standard15"
+      , "Standard20"
+      , "Standard21"
+      , "Standard30"
+      , "Standard31"
+      ]
+
+data FunMap = FunMap
+  { funSignatures   :: Map Name Signature           -- signatures by method name
+  , funExtensions :: Map ModuleName ExtensionName -- module name to extension name
+  } deriving (Eq, Show)
+
+ioish = replace "m (" "IO (" . replace "m GL" "IO GL"
+
+funMap :: Registry -> [(Bool, Entry, String)] -> FunMap
+funMap registry entries = FunMap
+  (Map.fromList [ (n, s) | (_, F n, s) <- entries ])
+  (Map.fromList $ map ((extensionModuleName&&&id).extensionName) $ registryExtensions registry)
+
+funMapSignature :: String -> FunMap -> String
+funMapSignature i (FunMap m _) = Map.findWithDefault undefined i m
+
+funBody :: FunMap -> Name -> Signature -> [Body]
+funBody fm n v =
+  [ Function n ("MonadIO m => " ++ v) $ strip $ printf "= %s %s" (invokerName v) np
+  , Function np ("FunPtr (" ++ v' ++ ")") $ strip $ printf "= unsafePerformIO (getProcAddress %s)" (show n)
+  , Code $ printf "{-# NOINLINE %s #-}" np
+  ] where
+  np = n ++ "FunPtr"
+  v' = ioish v
+
+mkFFI :: FunMap -> Module
+mkFFI fm = Module "Graphics.GL.Raw.Internal.FFI" export body where
+  export = [ Section "Invokers" (nub $ invokerName <$> Foldable.toList (funSignatures fm)) ]
+  body = 
+    [ Import
+      [ "Control.Monad.IO.Class"
+      , "Foreign.C.Types"
+      , "Foreign.Ptr"
+      , "Graphics.GL.Raw.Types"
+      ]
+    ] ++ nub (Foldable.concatMap invokers (funSignatures fm))
+
+invokers :: Signature -> [Body]
+invokers v =
+  [ Code $ printf "foreign import ccall \"dynamic\" %s :: FunPtr (%s) -> %s" nd v' v'
+  , Function ni (printf "MonadIO m => FunPtr (%s) -> %s" v' v) $
+      printf "fp %s = liftIO (%s fp %s)" params nd params
+  ] where
+  numArgs = subtract 2 . length $ splitOn " -> " v
+  params = joinOn " " $ map (\x -> "v" ++ show x) [0..numArgs]
+  v' = ioish v
+  nd = dynamicName v
+  ni = invokerName v
+  
+mkShared :: FunMap -> [(Bool, Entry, String)] -> Module
+mkShared fm entr = Module "Graphics.GL.Raw.Internal.Shared" [] body
+  where
+    imp =
+      [ Import
+        [ "Control.Monad.IO.Class"
+        , "Foreign.Ptr"
+        , "Graphics.GL.Raw.Types"
+        , "Graphics.GL.Raw.Internal.FFI"
+        , "Graphics.GL.Raw.Internal.Proc"
+        , "System.IO.Unsafe"
+        ]
+      ]
+
+    body = imp ++ (concat . map bodyF $ nub entr)
+    bodyF (False, _, _) = []
+    bodyF (_, E n, v) = [Pattern n "GLenum" ("= " ++ v)]
+    bodyF (_, F n, v) = funBody fm n v
+
+mkModule :: FunMap -> String -> [(Bool, Entry, String)] -> Module
+mkModule fm m entr = Module m export body
+  where
+    entryName (E n) = "pattern " ++ n
+    entryName (F n) = n
+
+    (ie, ib) = implicitPrelude m
+    hasUnshared = any (\(s, _, _) -> not s) entr
+    hasUnsharedFunctions = any (\(s, e, _) -> not s && case e of F _ -> True; _ -> False) entr
+    hasExt = Map.member m (funExtensions fm)
+
+    export = case Map.lookup m (funExtensions fm) of
+      Just en ->
+        [ Section "Extension Support" $
+          [ "gl_" ++ (joinOn "_" . tail $ splitOn "_" en)
+          ]
+        , Section en $ ie ++ map (\(s, e, _) -> entryName e) entr
+        ]
+      Nothing ->
+        [ Section m $ ie ++ map (\(s, e, _) -> entryName e) entr
+        ]
+
+    needsTypes (True, _, _) = False
+    needsTypes (_ , E _, _) = True
+    needsTypes (_ , F _, t) = isInfixOf "GL" t
+
+    body =
+      [ Import $ sort $ concat 
+        [ [ "Graphics.GL.Raw.Internal.Shared" | any (\(s, _, _) -> s) entr ]
+        , [ "Graphics.GL.Raw.Types"           | any needsTypes entr ]
+        , [ "Data.Set"                        | hasExt ]
+        , [ "Graphics.GL.Raw.Internal.Proc"   | hasExt || hasUnsharedFunctions ]
+        , guard hasUnsharedFunctions >> 
+          [ "Control.Monad.IO.Class"
+          , "Foreign.Ptr"
+          , "Graphics.GL.Raw.Internal.FFI"
+          , "System.IO.Unsafe"
+          ]
+        ]
+      ] ++
+      ib ++
+      extCheck ++
+      concatMap bodyF entr
+
+    extCheck = case Map.lookup m (funExtensions fm) of
+      Just en ->
+        [ Function
+          ("gl_" ++ (joinOn "_" . tail $ splitOn "_" en))
+          "Bool"
+          ("= member " ++ show en ++ " extensions")
+        ]
+      Nothing -> []
+
+    bodyF (True, _, _) = []
+    bodyF (_, E n, v) = [Pattern n "GLenum" ("= " ++ v)]
+    bodyF (_, F n, v) = funBody fm n v
+
+mkExtensionGather :: FunMap -> [Module]
+mkExtensionGather fm = flip map extensionGroups $
+  \x -> Module (printf "Graphics.GL.Raw.Extension.%s" $ sanePrefix x)
+    [Section (printf "%s Extensions" x) $ map ("module "++) $ extInGroup x]
+    [Import $ extInGroup x]
+  where
+  extInGroup grp
+    = map fst
+    . sort
+    . filter (\x -> grp == (head . tail . splitOn "_" $ snd x))
+    . Map.toList
+    $ funExtensions fm
+
+  extensionGroups
+    = sort
+    . nub
+    . map (head . tail . splitOn "_" . snd)
+    . Map.toList
+    $ funExtensions fm
+
+mkExtensionGroupGather :: [Module] -> Module
+mkExtensionGroupGather ms = Module "Graphics.GL.Raw.Extension"
+  [Section "Extensions" $ map (("module "++) . moduleName) ms]
+  [Import $ map moduleName ms]
+
+generateSource :: FilePath -> Registry -> IO ()
+generateSource fp registry = do
+  let s = execState (entries registry) Map.empty
+  let m = execState (modules registry s) Map.empty
+  let fm' = Foldable.concat m
+  let fm = funMap registry fm'
+  saveModule fp $ mkFFI fm
+  saveModule fp $ mkShared fm fm'
+  forM_ (Map.toList m) $ saveModule fp . uncurry (mkModule fm)
+  let exts = mkExtensionGather fm
+  forM_ exts $ saveModule fp
+  saveModule fp $ mkExtensionGroupGather exts
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,32 @@
+Copyright (c) 2014 Edward A. Kmett
+Copyright (c) 2014 Gabríel Arthúr Pétursson
+Copyright (c) 2013 Sven Panne
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Gabríel Arthúr Pétursson nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Module.hs b/Module.hs
new file mode 100644
--- /dev/null
+++ b/Module.hs
@@ -0,0 +1,93 @@
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2014 Edward Kmett and Gabríel Arthúr Pétursson
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+----------------------------------------------------------------------------
+module Module
+  ( Module(..)
+  , Export(..)
+  , Body(..)
+  , renderModule
+  , saveModule
+  ) where
+
+import Utils
+import System.Directory
+import System.FilePath
+import System.IO
+import Text.Printf
+
+data Module = Module
+  { moduleName :: String
+  , moduleExport :: [Export]
+  , moduleBody :: [Body]
+  } deriving (Eq, Show)
+
+data Export
+  = Section
+    { sectionHeading :: String
+    , sectionExport :: [String]
+    }
+  | Subsection
+    { sectionHeading :: String
+    , sectionExport :: [String]
+    } deriving (Eq, Show)
+
+data Body 
+  = Import [String]
+  | Function String String String
+  | Pattern String String String
+  | Code String
+  deriving (Eq, Show)
+
+renderModule :: Module -> String
+renderModule m =
+  printf 
+    ("-- This file was automatically generated.\n" ++
+    "{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}\n" ++
+    "module %s%s where\n\n%s")
+     (moduleName m) (renderExports $ moduleExport m) (joinOn "\n\n" . map renderBody $ moduleBody m)
+
+
+renderExports :: [Export] -> String
+renderExports [] = ""
+renderExports exports =
+    printf " (\n%s)"
+  . joinOn "\n" . map (uncurry renderExport)
+  . zip (True : repeat False)
+  $ filter nonEmpty exports
+  where
+    renderExport :: Bool -> Export -> String
+    renderExport first (Section heading export) =
+      printf "  -- * %s\n  %s %s"
+        heading
+        (if first then " " else ",")
+        ((++"\n") . joinOn "\n  , " $ export)
+    renderExport first (Subsection heading export) =
+      printf "  -- ** %s\n  %s %s"
+        heading
+        (if first then " " else ",")
+        ((++"\n") . joinOn "\n  , " $ export)
+    nonEmpty :: Export -> Bool
+    nonEmpty (Section _ []) = False
+    nonEmpty (Subsection _ []) = False
+    nonEmpty _ = True
+
+renderBody :: Body -> String
+renderBody body = case body of
+  Import m -> joinOn "\n" $ map (printf "import %s") m
+  Function name signature body -> printf "%s :: %s\n%s %s" name signature name body
+  Pattern name signature body -> printf "pattern %s %s :: %s" name body signature
+  Code code -> code
+
+saveModule :: FilePath -> Module -> IO ()
+saveModule fp m = do
+  createDirectoryIfMissing True folderPath
+  writeFile filePath $ renderModule m
+  where
+    filePath = fp </> replace "." [pathSeparator] (moduleName m) <.> "hs"
+    folderPath = (joinOn [pathSeparator] . init $ splitOn [pathSeparator] filePath)
diff --git a/Parser.hs b/Parser.hs
new file mode 100644
--- /dev/null
+++ b/Parser.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE Arrows #-}
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2014 Edward Kmett and Gabríel Arthúr Pétursson
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+----------------------------------------------------------------------------
+module Parser
+  ( parseFile
+  ) where
+
+import Control.Applicative
+import Registry
+import Text.XML.HXT.Core
+
+to :: ArrowXml a => String -> a XmlTree XmlTree
+to name = hasName name <<< isElem <<< getChildren
+
+perhaps :: ArrowIf a => a b c -> a b (Maybe c)
+perhaps x = (arr Just <<< x) `orElse` arr (const Nothing)
+
+parseCommand :: ArrowXml a => a XmlTree Command
+parseCommand = proc x -> do
+  command <- to "command" -< x
+  name <- getText <<< getChildren <<< to "name" <<< to "proto" -< command
+  typ <- parseType <<< to "proto" -< command
+  params <- listA $ to "param" >>>
+    parseType &&& (getText <<< getChildren <<< to "name") -< command
+  returnA -< Command name typ params
+
+parseEnum :: ArrowXml a => a XmlTree Enumeratee
+parseEnum = proc x -> do
+  enum <- to "enum" -< x
+  name <- getAttrValue0 "name" -< enum
+  value <- getAttrValue0 "value" -< enum
+  returnA -< Enumeratee name value
+
+parseExtension :: ArrowXml a => a XmlTree Extension
+parseExtension = proc x -> do
+  extension <- to "extension" -< x
+  name <- getAttrValue0 "name" -< extension
+  supported <- getAttrValue "supported" -< extension
+  require <- listA $ parseRequire <<< to "require" -< extension
+  returnA -< Extension name supported require
+
+parseFeature :: ArrowXml a => a XmlTree Feature
+parseFeature = proc x -> do
+  name <- getAttrValue0 "name" -< x
+  require <- listA $ parseRequire <<< to "require" -< x
+  remove <- listA $ parseRemove <<< to "remove" -< x
+  returnA -< Feature name require remove
+
+parseGroup :: ArrowXml a => a XmlTree Group
+parseGroup = proc x -> do
+  group <- to "group" -< x
+  name <- getAttrValue0 "name" -< group
+  enum <- listA $ getAttrValue0 "name" <<< to "enum" -< group
+  returnA -< Group name enum
+
+parseRemove :: ArrowXml a => a XmlTree Remove
+parseRemove = proc x -> do
+  profile <- getAttrValue "profile" -< x
+  comment <- getAttrValue "comment" -< x
+  enums <- listA $ getAttrValue0 "name" <<< to "enum" -< x
+  commands <- listA $ getAttrValue0 "name" <<< to "command" -< x
+  returnA -< Remove profile comment enums commands
+
+parseRequire :: ArrowXml a => a XmlTree Require
+parseRequire = proc x -> do
+  comment <- getAttrValue "comment" -< x
+  enums <- listA $ getAttrValue0 "name" <<< to "enum" -< x
+  commands <- listA $ getAttrValue0 "name" <<< to "command" -< x
+  profile <- getAttrValue "profile" -< x
+  returnA -< Require enums commands comment profile
+
+parseType :: ArrowXml a => a XmlTree Type
+parseType = proc x -> do
+  ptype <- perhaps $ getText <<< getChildren <<< to "ptype" -< x
+  pointer <- (getText <<< getChildren) >. elem '*' . concat -< x
+  returnA -< Type
+    { typeName = ptype
+    , typePointer = pointer
+    }
+
+parse = proc x -> do
+  registry <- to "registry" -< x
+  groups <- listA $ parseGroup <<< to "groups" -< registry
+  enums <- listA $ parseEnum <<< to "enums" -< registry
+  extensions <- listA $ parseExtension <<< to "extensions" -< registry
+  commands <- listA $ parseCommand <<< to "commands" -< registry
+  features <- listA $ parseFeature <<< to "feature" -< registry
+  returnA -< Registry
+    { registryCommands = commands
+    , registryEnums = enums
+    , registryExtensions = extensions
+    , registryFeatures = features
+    , registryGroups = groups
+    }
+
+parseFile :: String -> IO Registry
+parseFile file = return . head =<< runX (readDocument [withRemoveWS yes] file >>> parse)
diff --git a/README.markdown b/README.markdown
new file mode 100644
--- /dev/null
+++ b/README.markdown
@@ -0,0 +1,15 @@
+gl
+==
+
+[![Build Status](https://secure.travis-ci.org/ekmett/gl.png?branch=master)](http://travis-ci.org/ekmett/gl)
+
+This package supplies low level bindings to all of the OpenGL specification for Haskell.
+
+Contact Information
+-------------------
+
+Contributions and bug reports are welcome!
+
+Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.
+
+-Edward Kmett
diff --git a/Registry.hs b/Registry.hs
new file mode 100644
--- /dev/null
+++ b/Registry.hs
@@ -0,0 +1,142 @@
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2014 Edward Kmett and Gabríel Arthúr Pétursson
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+----------------------------------------------------------------------------
+module Registry
+  ( Registry(..)
+  , Command(..)
+  , Enumeratee(..)
+  , Extension(..)
+  , Feature(..)
+  , Group(..)
+  , Remove(..)
+  , Require(..)
+  , Type(..)
+  , lookupCommand
+  , lookupEnum
+  , deshenaniganize
+  ) where
+
+import Data.Functor
+
+data Registry = Registry
+  { registryCommands :: [Command]
+  , registryEnums :: [Enumeratee]
+  , registryExtensions :: [Extension]
+  , registryFeatures :: [Feature]
+  , registryGroups :: [Group]
+  } deriving (Eq, Show)
+
+data Command = Command
+  { commandName :: String
+  , commandType :: Type
+  , commandParameters :: [(Type, String)]
+  } deriving (Eq, Show)
+
+data Enumeratee = Enumeratee
+  { enumName :: String
+  , enumValue :: String
+  } deriving (Eq, Show)
+
+data Extension = Extension
+  { extensionName :: String
+  , extensionPlatform :: String
+  , extensionRequires :: [Require]
+  } deriving (Eq, Show)
+
+data Feature = Feature
+  { featureName :: String
+  , featureRequires :: [Require]
+  , featureRemoves :: [Remove]
+  } deriving (Eq, Show)
+
+data Group = Group
+  { groupName :: String
+  , groupEnum :: [String]
+  } deriving (Eq, Show)
+
+data Remove = Remove
+  { removeProfile :: String
+  , removeComment :: String
+  , removeEnums :: [String]
+  , removeCommands :: [String]
+  } deriving (Eq, Show)
+
+data Require = Require
+  { requireEnums :: [String]
+  , requireCommands :: [String]
+  , requireComment :: String
+  , requireProfile :: String
+  } deriving (Eq, Show)
+
+data Type = Type
+  { typeName :: Maybe String
+  , typePointer :: Bool
+  } deriving (Eq, Show)
+
+lookupCommand :: Registry -> String -> Command
+lookupCommand registry command =
+  head . filter ((== command) . commandName) $ registryCommands registry
+
+lookupEnum :: Registry -> String -> Enumeratee
+lookupEnum registry enum =
+  head . filter ((== enum) . enumName) $ registryEnums registry
+
+-- | Resolve shenanigans in the OpenGL Registry
+deshenaniganize :: Registry -> Registry
+deshenaniganize registry = registry
+  { registryFeatures = clean44feature . clean45feature <$> registryFeatures registry
+  }
+
+clean44feature :: Feature -> Feature
+clean44feature feature
+  | featureName feature == "GL_VERSION_4_4" = feature { featureRequires = clean44require <$> featureRequires feature }
+  | otherwise = feature
+
+clean44require :: Require -> Require
+clean44require require = require
+  { requireEnums = filter (\e -> not $ e `elem` removeEnums) $
+    requireEnums require
+  } where
+  removeEnums =
+    [ "GL_MAP_READ_BIT"
+    , "GL_MAP_WRITE_BIT"
+    , "GL_STENCIL_INDEX"
+    , "GL_STENCIL_INDEX8"
+    , "GL_TRANSFORM_FEEDBACK_BUFFER"
+    , "GL_UNSIGNED_INT_10F_11F_11F_REV"
+    ]
+
+clean45feature :: Feature -> Feature
+clean45feature feature 
+  | featureName feature == "GL_VERSION_4_5" = feature { featureRequires = clean45require <$> featureRequires feature }
+  | otherwise = feature
+
+clean45require :: Require -> Require
+clean45require require = require
+  { requireEnums = filter (\e -> not $ e `elem` removeEnums) $
+    requireEnums require
+  } where
+  removeEnums =
+    [ "GL_BACK"
+    , "GL_LOWER_LEFT"
+    , "GL_NONE"
+    , "GL_NO_ERROR"
+    , "GL_TEXTURE_BINDING_1D"
+    , "GL_TEXTURE_BINDING_1D_ARRAY"
+    , "GL_TEXTURE_BINDING_2D"
+    , "GL_TEXTURE_BINDING_2D_ARRAY"
+    , "GL_TEXTURE_BINDING_2D_MULTISAMPLE"
+    , "GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY"
+    , "GL_TEXTURE_BINDING_3D"
+    , "GL_TEXTURE_BINDING_BUFFER"
+    , "GL_TEXTURE_BINDING_CUBE_MAP"
+    , "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY"
+    , "GL_TEXTURE_BINDING_RECTANGLE"
+    , "GL_UPPER_LEFT"
+    ]
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,41 @@
+{-# OPTIONS_GHC -Wall #-}
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2014 Edward Kmett and Gabríel Arthúr Pétursson
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+--
+-- Loaded by cabal to configure the project.
+--
+-- Local hooks are provided to generate the API on build, producing haddocks and to enable @cabal sdist@
+----------------------------------------------------------------------------
+import Distribution.Simple
+import Distribution.Simple.LocalBuildInfo
+import Distribution.PackageDescription
+import System.FilePath
+import Generator (generateSource)
+import Parser (parseFile)
+import Registry (deshenaniganize)
+
+generateAPI :: LocalBuildInfo -> IO ()
+generateAPI l = do
+  registry <- parseFile "gl.xml"
+  putStr "Generating API..."
+  generateSource (buildDir l </> "autogen") (deshenaniganize registry)
+  putStrLn "done"
+
+main :: IO ()
+main = defaultMainWithHooks simpleUserHooks
+  { buildHook = \p l h f -> generateAPI l >> buildHook simpleUserHooks p l h f
+  , haddockHook = \p l h f -> generateAPI l >> haddockHook simpleUserHooks p l h f
+  , sDistHook = \p ml h f -> case ml of
+     Nothing -> fail "No local buildinfo available. configure first"
+     Just l -> do
+       let editlib lib = lib { libBuildInfo = editBuildInfo (libBuildInfo lib) }
+           editBuildInfo bi = bi { hsSourceDirs = (buildDir l </> "autogen") : hsSourceDirs bi }
+           p' = p { library = fmap editlib (library p) }
+       generateAPI l >> sDistHook simpleUserHooks p' ml h f
+  }
diff --git a/TODO.markdown b/TODO.markdown
new file mode 100644
--- /dev/null
+++ b/TODO.markdown
@@ -0,0 +1,5 @@
+Things that would be nice to have
+---------------------------------
+
+* Update the module builder to supply haddocks for commonly used OpenGL bindings
+* Add a class for things that can be converted to GLenum's and use it instead of GLenum in negative position in the bindings?
diff --git a/Utils.hs b/Utils.hs
new file mode 100644
--- /dev/null
+++ b/Utils.hs
@@ -0,0 +1,24 @@
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2014 Edward Kmett
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+-- Simple string munging utilities
+----------------------------------------------------------------------------
+module Utils (joinOn, splitOn, strip, replace) where
+
+import Data.Char (isSpace)
+import Data.List (intersperse)
+import Data.List.Split (splitOn)
+
+joinOn :: [a] -> [[a]] -> [a]
+joinOn x = concat . intersperse x
+
+strip :: String -> String
+strip = dropWhile isSpace . reverse . dropWhile isSpace . reverse
+
+replace :: Eq a => [a] -> [a] -> [a] -> [a]
+replace a b = joinOn b . splitOn a
diff --git a/cbits/gl.c b/cbits/gl.c
new file mode 100644
--- /dev/null
+++ b/cbits/gl.c
@@ -0,0 +1,153 @@
+/* -----------------------------------------------------------------------------
+ *
+ * Copyright   :  (c) Edward Kmett 2014, (c) Sven Panne 2013
+ * License     :  BSD3
+ *
+ * Maintainer  :  Edward Kmett <ekmett@gmail.com>
+ * Stability   :  stable
+ * Portability :  portable
+ *
+ * C support for Graphics.GL.Raw.Proc
+ * -------------------------------------------------------------------------- */
+
+#if defined(USE_WGLGETPROCADDRESS)
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+static void*
+getProcAddress(const char *name)
+{
+  static int firstTime = 1;
+  static HMODULE handle = NULL;
+
+  if (firstTime) {
+    firstTime = 0;
+    handle = LoadLibrary(TEXT("opengl32"));
+  }
+  return handle ? GetProcAddress(handle, name) : NULL;
+}
+
+
+void*
+hs_gl_getProcAddress(const char *name)
+{
+  void *apiEntry = wglGetProcAddress(name);
+  /* Sometimes core API entries are not returned via wglGetProcAddress, so
+     we fall back to GetProcAddress in these cases. */
+  return (apiEntry == NULL) ? getProcAddress(name) : apiEntry;
+}
+
+/* -------------------------------------------------------------------------- */
+#elif defined(USE_NSADDRESSOFSYMBOL)
+
+#include <mach-o/dyld.h>
+#include <stdlib.h>
+#include <string.h>
+
+void*
+hs_gl_getProcAddress(const char *name)
+{
+  NSSymbol symbol;
+
+  /* Prepend a '_' for the Unix C symbol mangling convention */
+  char* symbolName = (char*)malloc(strlen(name) + 2);
+  if (!symbolName) {
+    return NULL;
+  }
+  symbolName[0] = '_';
+  strcpy(symbolName + 1, name);
+
+  if (!NSIsSymbolNameDefined(symbolName)) {
+    free(symbolName);
+    return NULL;
+  }
+
+  symbol = NSLookupAndBindSymbol(symbolName);
+  free(symbolName);
+  if (!symbol) {
+    return NULL;
+  }
+
+  return NSAddressOfSymbol(symbol);
+}
+
+/* -------------------------------------------------------------------------- */
+#elif defined(USE_DLSYM)
+
+#include <stdlib.h>
+#include <dlfcn.h>
+
+/* Do not depend on <GL/gl.h> */
+typedef unsigned char GLubyte;
+
+/* Do not depend on <GL/glx.h> */
+typedef void (*genericFunctionPointer)(void);
+typedef genericFunctionPointer (*PFNGLXGETPROCADDRESSARB)(const GLubyte *);
+
+static const char* gpaNames[] = {
+  "glXGetProcAddress", "glXGetProcAddressARB", "glXGetProcAddressEXT",
+  "_glXGetProcAddress", "_glXGetProcAddressARB", "_glXGetProcAddressEXT"
+};
+
+void*
+hs_gl_getProcAddress(const char *name)
+{
+  static int firstTime = 1;
+  static void *handle = NULL;
+  static void *gpa = NULL;
+
+  if (firstTime) {
+    firstTime = 0;
+
+    /* Get a handle for our executable. */
+    handle = dlopen(NULL, RTLD_LAZY);
+    /* If fail this early, there's not much we can do about it. */
+    if (!handle) {
+      return NULL;
+    }
+
+    {
+      /* Let's see if our platform supports a glXGetProcAddress() variant. */
+      int numNames = (int)(sizeof(gpaNames) / sizeof(gpaNames[0]));
+      int i;
+      for (i = 0;   (!gpa) && (i < numNames);   ++i) {
+        gpa = dlsym(handle, gpaNames[i]);
+      }
+    }
+  }
+
+  if (gpa) {
+    /* Fine, we seem to have some kind of glXGetProcAddress(), so use it. */
+    return ((PFNGLXGETPROCADDRESSARB)gpa)((const GLubyte *)name);
+  } else if (handle) {
+    /* Fallback to dlsym() if we have no glXGetProcAddress(), although we then
+       ignore the fact that OpenGL entry points could be context dependent. */
+    return dlsym(handle, name);
+  } else {
+    return NULL;
+  }
+}
+
+/* -------------------------------------------------------------------------- */
+#elif defined(USE_GLXGETPROCADDRESS)
+
+/* Do not depend on <GL/gl.h> */
+typedef unsigned char GLubyte;
+
+/* Do not depend on <GL/glx.h> */
+typedef void (*genericFunctionPointer)(void);
+extern genericFunctionPointer glXGetProcAddressARB(const GLubyte *);
+
+void*
+hs_gl_getProcAddress(const char *name)
+{
+  return glXGetProcAddressARB((const GLubyte*)name);
+}
+
+/* -------------------------------------------------------------------------- */
+#else
+
+#error "Don't know how to retrieve OpenGL extension entries"
+
+#endif
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension.hs b/dist/build/autogen/Graphics/GL/Raw/Extension.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension.hs
@@ -0,0 +1,76 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension (
+  -- * Extensions
+    module Graphics.GL.Raw.Extension.ThreeDFX
+  , module Graphics.GL.Raw.Extension.AMD
+  , module Graphics.GL.Raw.Extension.ANDROID
+  , module Graphics.GL.Raw.Extension.ANGLE
+  , module Graphics.GL.Raw.Extension.APPLE
+  , module Graphics.GL.Raw.Extension.ARB
+  , module Graphics.GL.Raw.Extension.ARM
+  , module Graphics.GL.Raw.Extension.ATI
+  , module Graphics.GL.Raw.Extension.DMP
+  , module Graphics.GL.Raw.Extension.EXT
+  , module Graphics.GL.Raw.Extension.FJ
+  , module Graphics.GL.Raw.Extension.GREMEDY
+  , module Graphics.GL.Raw.Extension.HP
+  , module Graphics.GL.Raw.Extension.IBM
+  , module Graphics.GL.Raw.Extension.IMG
+  , module Graphics.GL.Raw.Extension.INGR
+  , module Graphics.GL.Raw.Extension.INTEL
+  , module Graphics.GL.Raw.Extension.KHR
+  , module Graphics.GL.Raw.Extension.MESA
+  , module Graphics.GL.Raw.Extension.MESAX
+  , module Graphics.GL.Raw.Extension.NV
+  , module Graphics.GL.Raw.Extension.NVX
+  , module Graphics.GL.Raw.Extension.OES
+  , module Graphics.GL.Raw.Extension.OML
+  , module Graphics.GL.Raw.Extension.PGI
+  , module Graphics.GL.Raw.Extension.QCOM
+  , module Graphics.GL.Raw.Extension.REND
+  , module Graphics.GL.Raw.Extension.S3
+  , module Graphics.GL.Raw.Extension.SGI
+  , module Graphics.GL.Raw.Extension.SGIS
+  , module Graphics.GL.Raw.Extension.SGIX
+  , module Graphics.GL.Raw.Extension.SUN
+  , module Graphics.GL.Raw.Extension.SUNX
+  , module Graphics.GL.Raw.Extension.VIV
+  , module Graphics.GL.Raw.Extension.WIN
+) where
+
+import Graphics.GL.Raw.Extension.ThreeDFX
+import Graphics.GL.Raw.Extension.AMD
+import Graphics.GL.Raw.Extension.ANDROID
+import Graphics.GL.Raw.Extension.ANGLE
+import Graphics.GL.Raw.Extension.APPLE
+import Graphics.GL.Raw.Extension.ARB
+import Graphics.GL.Raw.Extension.ARM
+import Graphics.GL.Raw.Extension.ATI
+import Graphics.GL.Raw.Extension.DMP
+import Graphics.GL.Raw.Extension.EXT
+import Graphics.GL.Raw.Extension.FJ
+import Graphics.GL.Raw.Extension.GREMEDY
+import Graphics.GL.Raw.Extension.HP
+import Graphics.GL.Raw.Extension.IBM
+import Graphics.GL.Raw.Extension.IMG
+import Graphics.GL.Raw.Extension.INGR
+import Graphics.GL.Raw.Extension.INTEL
+import Graphics.GL.Raw.Extension.KHR
+import Graphics.GL.Raw.Extension.MESA
+import Graphics.GL.Raw.Extension.MESAX
+import Graphics.GL.Raw.Extension.NV
+import Graphics.GL.Raw.Extension.NVX
+import Graphics.GL.Raw.Extension.OES
+import Graphics.GL.Raw.Extension.OML
+import Graphics.GL.Raw.Extension.PGI
+import Graphics.GL.Raw.Extension.QCOM
+import Graphics.GL.Raw.Extension.REND
+import Graphics.GL.Raw.Extension.S3
+import Graphics.GL.Raw.Extension.SGI
+import Graphics.GL.Raw.Extension.SGIS
+import Graphics.GL.Raw.Extension.SGIX
+import Graphics.GL.Raw.Extension.SUN
+import Graphics.GL.Raw.Extension.SUNX
+import Graphics.GL.Raw.Extension.VIV
+import Graphics.GL.Raw.Extension.WIN
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD.hs
@@ -0,0 +1,66 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD (
+  -- * AMD Extensions
+    module Graphics.GL.Raw.Extension.AMD.BlendMinmaxFactor
+  , module Graphics.GL.Raw.Extension.AMD.Compressed3DCTexture
+  , module Graphics.GL.Raw.Extension.AMD.CompressedATCTexture
+  , module Graphics.GL.Raw.Extension.AMD.ConservativeDepth
+  , module Graphics.GL.Raw.Extension.AMD.DebugOutput
+  , module Graphics.GL.Raw.Extension.AMD.DepthClampSeparate
+  , module Graphics.GL.Raw.Extension.AMD.DrawBuffersBlend
+  , module Graphics.GL.Raw.Extension.AMD.GcnShader
+  , module Graphics.GL.Raw.Extension.AMD.GpuShaderInt64
+  , module Graphics.GL.Raw.Extension.AMD.InterleavedElements
+  , module Graphics.GL.Raw.Extension.AMD.MultiDrawIndirect
+  , module Graphics.GL.Raw.Extension.AMD.NameGenDelete
+  , module Graphics.GL.Raw.Extension.AMD.OcclusionQueryEvent
+  , module Graphics.GL.Raw.Extension.AMD.PerformanceMonitor
+  , module Graphics.GL.Raw.Extension.AMD.PinnedMemory
+  , module Graphics.GL.Raw.Extension.AMD.ProgramBinaryZ400
+  , module Graphics.GL.Raw.Extension.AMD.QueryBufferObject
+  , module Graphics.GL.Raw.Extension.AMD.SamplePositions
+  , module Graphics.GL.Raw.Extension.AMD.SeamlessCubemapPerTexture
+  , module Graphics.GL.Raw.Extension.AMD.ShaderAtomicCounterOps
+  , module Graphics.GL.Raw.Extension.AMD.ShaderStencilExport
+  , module Graphics.GL.Raw.Extension.AMD.ShaderTrinaryMinmax
+  , module Graphics.GL.Raw.Extension.AMD.SparseTexture
+  , module Graphics.GL.Raw.Extension.AMD.StencilOperationExtended
+  , module Graphics.GL.Raw.Extension.AMD.TextureTexture4
+  , module Graphics.GL.Raw.Extension.AMD.TransformFeedback3LinesTriangles
+  , module Graphics.GL.Raw.Extension.AMD.TransformFeedback4
+  , module Graphics.GL.Raw.Extension.AMD.VertexShaderLayer
+  , module Graphics.GL.Raw.Extension.AMD.VertexShaderTessellator
+  , module Graphics.GL.Raw.Extension.AMD.VertexShaderViewportIndex
+) where
+
+import Graphics.GL.Raw.Extension.AMD.BlendMinmaxFactor
+import Graphics.GL.Raw.Extension.AMD.Compressed3DCTexture
+import Graphics.GL.Raw.Extension.AMD.CompressedATCTexture
+import Graphics.GL.Raw.Extension.AMD.ConservativeDepth
+import Graphics.GL.Raw.Extension.AMD.DebugOutput
+import Graphics.GL.Raw.Extension.AMD.DepthClampSeparate
+import Graphics.GL.Raw.Extension.AMD.DrawBuffersBlend
+import Graphics.GL.Raw.Extension.AMD.GcnShader
+import Graphics.GL.Raw.Extension.AMD.GpuShaderInt64
+import Graphics.GL.Raw.Extension.AMD.InterleavedElements
+import Graphics.GL.Raw.Extension.AMD.MultiDrawIndirect
+import Graphics.GL.Raw.Extension.AMD.NameGenDelete
+import Graphics.GL.Raw.Extension.AMD.OcclusionQueryEvent
+import Graphics.GL.Raw.Extension.AMD.PerformanceMonitor
+import Graphics.GL.Raw.Extension.AMD.PinnedMemory
+import Graphics.GL.Raw.Extension.AMD.ProgramBinaryZ400
+import Graphics.GL.Raw.Extension.AMD.QueryBufferObject
+import Graphics.GL.Raw.Extension.AMD.SamplePositions
+import Graphics.GL.Raw.Extension.AMD.SeamlessCubemapPerTexture
+import Graphics.GL.Raw.Extension.AMD.ShaderAtomicCounterOps
+import Graphics.GL.Raw.Extension.AMD.ShaderStencilExport
+import Graphics.GL.Raw.Extension.AMD.ShaderTrinaryMinmax
+import Graphics.GL.Raw.Extension.AMD.SparseTexture
+import Graphics.GL.Raw.Extension.AMD.StencilOperationExtended
+import Graphics.GL.Raw.Extension.AMD.TextureTexture4
+import Graphics.GL.Raw.Extension.AMD.TransformFeedback3LinesTriangles
+import Graphics.GL.Raw.Extension.AMD.TransformFeedback4
+import Graphics.GL.Raw.Extension.AMD.VertexShaderLayer
+import Graphics.GL.Raw.Extension.AMD.VertexShaderTessellator
+import Graphics.GL.Raw.Extension.AMD.VertexShaderViewportIndex
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/BlendMinmaxFactor.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/BlendMinmaxFactor.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/BlendMinmaxFactor.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.BlendMinmaxFactor (
+  -- * Extension Support
+    gl_AMD_blend_minmax_factor
+
+  -- * GL_AMD_blend_minmax_factor
+  , pattern GL_FACTOR_MAX_AMD
+  , pattern GL_FACTOR_MIN_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_blend_minmax_factor :: Bool
+gl_AMD_blend_minmax_factor = member "GL_AMD_blend_minmax_factor" extensions
+
+pattern GL_FACTOR_MAX_AMD = 0x901D :: GLenum
+
+pattern GL_FACTOR_MIN_AMD = 0x901C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/Compressed3DCTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/Compressed3DCTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/Compressed3DCTexture.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.Compressed3DCTexture (
+  -- * Extension Support
+    gl_AMD_compressed_3DC_texture
+
+  -- * GL_AMD_compressed_3DC_texture
+  , pattern GL_3DC_XY_AMD
+  , pattern GL_3DC_X_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_compressed_3DC_texture :: Bool
+gl_AMD_compressed_3DC_texture = member "GL_AMD_compressed_3DC_texture" extensions
+
+pattern GL_3DC_XY_AMD = 0x87FA :: GLenum
+
+pattern GL_3DC_X_AMD = 0x87F9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/CompressedATCTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/CompressedATCTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/CompressedATCTexture.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.CompressedATCTexture (
+  -- * Extension Support
+    gl_AMD_compressed_ATC_texture
+
+  -- * GL_AMD_compressed_ATC_texture
+  , pattern GL_ATC_RGBA_EXPLICIT_ALPHA_AMD
+  , pattern GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD
+  , pattern GL_ATC_RGB_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_compressed_ATC_texture :: Bool
+gl_AMD_compressed_ATC_texture = member "GL_AMD_compressed_ATC_texture" extensions
+
+pattern GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x8C93 :: GLenum
+
+pattern GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87EE :: GLenum
+
+pattern GL_ATC_RGB_AMD = 0x8C92 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ConservativeDepth.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ConservativeDepth.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ConservativeDepth.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.ConservativeDepth (
+  -- * Extension Support
+    gl_AMD_conservative_depth
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_conservative_depth :: Bool
+gl_AMD_conservative_depth = member "GL_AMD_conservative_depth" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DebugOutput.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DebugOutput.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DebugOutput.hs
@@ -0,0 +1,97 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.DebugOutput (
+  -- * Extension Support
+    gl_AMD_debug_output
+
+  -- * GL_AMD_debug_output
+  , glDebugMessageCallbackAMD
+  , glDebugMessageEnableAMD
+  , glDebugMessageInsertAMD
+  , glGetDebugMessageLogAMD
+  , pattern GL_DEBUG_CATEGORY_API_ERROR_AMD
+  , pattern GL_DEBUG_CATEGORY_APPLICATION_AMD
+  , pattern GL_DEBUG_CATEGORY_DEPRECATION_AMD
+  , pattern GL_DEBUG_CATEGORY_OTHER_AMD
+  , pattern GL_DEBUG_CATEGORY_PERFORMANCE_AMD
+  , pattern GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD
+  , pattern GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD
+  , pattern GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD
+  , pattern GL_DEBUG_LOGGED_MESSAGES_AMD
+  , pattern GL_DEBUG_SEVERITY_HIGH_AMD
+  , pattern GL_DEBUG_SEVERITY_LOW_AMD
+  , pattern GL_DEBUG_SEVERITY_MEDIUM_AMD
+  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES_AMD
+  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH_AMD
+) 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_AMD_debug_output :: Bool
+gl_AMD_debug_output = member "GL_AMD_debug_output" extensions
+
+glDebugMessageCallbackAMD :: MonadIO m => GLDEBUGPROCAMD -> Ptr () -> m ()
+glDebugMessageCallbackAMD = ffiDEBUGPROCAMDPtrVIOV glDebugMessageCallbackAMDFunPtr
+
+glDebugMessageCallbackAMDFunPtr :: FunPtr (GLDEBUGPROCAMD -> Ptr () -> IO ())
+glDebugMessageCallbackAMDFunPtr = unsafePerformIO (getProcAddress "glDebugMessageCallbackAMD")
+
+{-# NOINLINE glDebugMessageCallbackAMDFunPtr #-}
+
+glDebugMessageEnableAMD :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> m ()
+glDebugMessageEnableAMD = ffienumenumsizeiPtruintbooleanIOV glDebugMessageEnableAMDFunPtr
+
+glDebugMessageEnableAMDFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ())
+glDebugMessageEnableAMDFunPtr = unsafePerformIO (getProcAddress "glDebugMessageEnableAMD")
+
+{-# NOINLINE glDebugMessageEnableAMDFunPtr #-}
+
+glDebugMessageInsertAMD :: MonadIO m => GLenum -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
+glDebugMessageInsertAMD = ffienumenumuintsizeiPtrcharIOV glDebugMessageInsertAMDFunPtr
+
+glDebugMessageInsertAMDFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ())
+glDebugMessageInsertAMDFunPtr = unsafePerformIO (getProcAddress "glDebugMessageInsertAMD")
+
+{-# NOINLINE glDebugMessageInsertAMDFunPtr #-}
+
+glGetDebugMessageLogAMD :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> Ptr GLuint -> Ptr GLuint -> Ptr GLsizei -> Ptr GLchar -> m GLuint
+glGetDebugMessageLogAMD = ffiuintsizeiPtrenumPtruintPtruintPtrsizeiPtrcharIOuint glGetDebugMessageLogAMDFunPtr
+
+glGetDebugMessageLogAMDFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLuint -> Ptr GLuint -> Ptr GLsizei -> Ptr GLchar -> IO GLuint)
+glGetDebugMessageLogAMDFunPtr = unsafePerformIO (getProcAddress "glGetDebugMessageLogAMD")
+
+{-# NOINLINE glGetDebugMessageLogAMDFunPtr #-}
+
+pattern GL_DEBUG_CATEGORY_API_ERROR_AMD = 0x9149 :: GLenum
+
+pattern GL_DEBUG_CATEGORY_APPLICATION_AMD = 0x914F :: GLenum
+
+pattern GL_DEBUG_CATEGORY_DEPRECATION_AMD = 0x914B :: GLenum
+
+pattern GL_DEBUG_CATEGORY_OTHER_AMD = 0x9150 :: GLenum
+
+pattern GL_DEBUG_CATEGORY_PERFORMANCE_AMD = 0x914D :: GLenum
+
+pattern GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD = 0x914E :: GLenum
+
+pattern GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = 0x914C :: GLenum
+
+pattern GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = 0x914A :: GLenum
+
+pattern GL_DEBUG_LOGGED_MESSAGES_AMD = 0x9145 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_HIGH_AMD = 0x9146 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_LOW_AMD = 0x9148 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_MEDIUM_AMD = 0x9147 :: GLenum
+
+pattern GL_MAX_DEBUG_LOGGED_MESSAGES_AMD = 0x9144 :: GLenum
+
+pattern GL_MAX_DEBUG_MESSAGE_LENGTH_AMD = 0x9143 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DepthClampSeparate.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DepthClampSeparate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DepthClampSeparate.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.DepthClampSeparate (
+  -- * Extension Support
+    gl_AMD_depth_clamp_separate
+
+  -- * GL_AMD_depth_clamp_separate
+  , pattern GL_DEPTH_CLAMP_FAR_AMD
+  , pattern GL_DEPTH_CLAMP_NEAR_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_depth_clamp_separate :: Bool
+gl_AMD_depth_clamp_separate = member "GL_AMD_depth_clamp_separate" extensions
+
+pattern GL_DEPTH_CLAMP_FAR_AMD = 0x901F :: GLenum
+
+pattern GL_DEPTH_CLAMP_NEAR_AMD = 0x901E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DrawBuffersBlend.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DrawBuffersBlend.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/DrawBuffersBlend.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.DrawBuffersBlend (
+  -- * Extension Support
+    gl_AMD_draw_buffers_blend
+
+  -- * GL_AMD_draw_buffers_blend
+  , glBlendEquationIndexedAMD
+  , glBlendEquationSeparateIndexedAMD
+  , glBlendFuncIndexedAMD
+  , glBlendFuncSeparateIndexedAMD
+) 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_AMD_draw_buffers_blend :: Bool
+gl_AMD_draw_buffers_blend = member "GL_AMD_draw_buffers_blend" extensions
+
+glBlendEquationIndexedAMD :: MonadIO m => GLuint -> GLenum -> m ()
+glBlendEquationIndexedAMD = ffiuintenumIOV glBlendEquationIndexedAMDFunPtr
+
+glBlendEquationIndexedAMDFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glBlendEquationIndexedAMDFunPtr = unsafePerformIO (getProcAddress "glBlendEquationIndexedAMD")
+
+{-# NOINLINE glBlendEquationIndexedAMDFunPtr #-}
+
+glBlendEquationSeparateIndexedAMD :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendEquationSeparateIndexedAMD = ffiuintenumenumIOV glBlendEquationSeparateIndexedAMDFunPtr
+
+glBlendEquationSeparateIndexedAMDFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendEquationSeparateIndexedAMDFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparateIndexedAMD")
+
+{-# NOINLINE glBlendEquationSeparateIndexedAMDFunPtr #-}
+
+glBlendFuncIndexedAMD :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendFuncIndexedAMD = ffiuintenumenumIOV glBlendFuncIndexedAMDFunPtr
+
+glBlendFuncIndexedAMDFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendFuncIndexedAMDFunPtr = unsafePerformIO (getProcAddress "glBlendFuncIndexedAMD")
+
+{-# NOINLINE glBlendFuncIndexedAMDFunPtr #-}
+
+glBlendFuncSeparateIndexedAMD :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glBlendFuncSeparateIndexedAMD = ffiuintenumenumenumenumIOV glBlendFuncSeparateIndexedAMDFunPtr
+
+glBlendFuncSeparateIndexedAMDFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glBlendFuncSeparateIndexedAMDFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparateIndexedAMD")
+
+{-# NOINLINE glBlendFuncSeparateIndexedAMDFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/GcnShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/GcnShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/GcnShader.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.GcnShader (
+  -- * Extension Support
+    gl_AMD_gcn_shader
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_gcn_shader :: Bool
+gl_AMD_gcn_shader = member "GL_AMD_gcn_shader" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/GpuShaderInt64.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/GpuShaderInt64.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/GpuShaderInt64.hs
@@ -0,0 +1,77 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.GpuShaderInt64 (
+  -- * Extension Support
+    gl_AMD_gpu_shader_int64
+
+  -- * GL_AMD_gpu_shader_int64
+  , glGetUniformi64vNV
+  , glGetUniformui64vNV
+  , glProgramUniform1i64NV
+  , glProgramUniform1i64vNV
+  , glProgramUniform1ui64NV
+  , glProgramUniform1ui64vNV
+  , glProgramUniform2i64NV
+  , glProgramUniform2i64vNV
+  , glProgramUniform2ui64NV
+  , glProgramUniform2ui64vNV
+  , glProgramUniform3i64NV
+  , glProgramUniform3i64vNV
+  , glProgramUniform3ui64NV
+  , glProgramUniform3ui64vNV
+  , glProgramUniform4i64NV
+  , glProgramUniform4i64vNV
+  , glProgramUniform4ui64NV
+  , glProgramUniform4ui64vNV
+  , glUniform1i64NV
+  , glUniform1i64vNV
+  , glUniform1ui64NV
+  , glUniform1ui64vNV
+  , glUniform2i64NV
+  , glUniform2i64vNV
+  , glUniform2ui64NV
+  , glUniform2ui64vNV
+  , glUniform3i64NV
+  , glUniform3i64vNV
+  , glUniform3ui64NV
+  , glUniform3ui64vNV
+  , glUniform4i64NV
+  , glUniform4i64vNV
+  , glUniform4ui64NV
+  , glUniform4ui64vNV
+  , pattern GL_FLOAT16_NV
+  , pattern GL_FLOAT16_VEC2_NV
+  , pattern GL_FLOAT16_VEC3_NV
+  , pattern GL_FLOAT16_VEC4_NV
+  , pattern GL_INT16_NV
+  , pattern GL_INT16_VEC2_NV
+  , pattern GL_INT16_VEC3_NV
+  , pattern GL_INT16_VEC4_NV
+  , pattern GL_INT64_NV
+  , pattern GL_INT64_VEC2_NV
+  , pattern GL_INT64_VEC3_NV
+  , pattern GL_INT64_VEC4_NV
+  , pattern GL_INT8_NV
+  , pattern GL_INT8_VEC2_NV
+  , pattern GL_INT8_VEC3_NV
+  , pattern GL_INT8_VEC4_NV
+  , pattern GL_UNSIGNED_INT16_NV
+  , pattern GL_UNSIGNED_INT16_VEC2_NV
+  , pattern GL_UNSIGNED_INT16_VEC3_NV
+  , pattern GL_UNSIGNED_INT16_VEC4_NV
+  , pattern GL_UNSIGNED_INT64_NV
+  , pattern GL_UNSIGNED_INT64_VEC2_NV
+  , pattern GL_UNSIGNED_INT64_VEC3_NV
+  , pattern GL_UNSIGNED_INT64_VEC4_NV
+  , pattern GL_UNSIGNED_INT8_NV
+  , pattern GL_UNSIGNED_INT8_VEC2_NV
+  , pattern GL_UNSIGNED_INT8_VEC3_NV
+  , pattern GL_UNSIGNED_INT8_VEC4_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_AMD_gpu_shader_int64 :: Bool
+gl_AMD_gpu_shader_int64 = member "GL_AMD_gpu_shader_int64" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/InterleavedElements.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/InterleavedElements.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/InterleavedElements.hs
@@ -0,0 +1,42 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.InterleavedElements (
+  -- * Extension Support
+    gl_AMD_interleaved_elements
+
+  -- * GL_AMD_interleaved_elements
+  , glVertexAttribParameteriAMD
+  , pattern GL_ALPHA
+  , pattern GL_BLUE
+  , pattern GL_GREEN
+  , pattern GL_RED
+  , pattern GL_RG16UI
+  , pattern GL_RG8UI
+  , pattern GL_RGBA8UI
+  , pattern GL_VERTEX_ELEMENT_SWIZZLE_AMD
+  , pattern GL_VERTEX_ID_SWIZZLE_AMD
+) 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_AMD_interleaved_elements :: Bool
+gl_AMD_interleaved_elements = member "GL_AMD_interleaved_elements" extensions
+
+glVertexAttribParameteriAMD :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
+glVertexAttribParameteriAMD = ffiuintenumintIOV glVertexAttribParameteriAMDFunPtr
+
+glVertexAttribParameteriAMDFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
+glVertexAttribParameteriAMDFunPtr = unsafePerformIO (getProcAddress "glVertexAttribParameteriAMD")
+
+{-# NOINLINE glVertexAttribParameteriAMDFunPtr #-}
+
+pattern GL_VERTEX_ELEMENT_SWIZZLE_AMD = 0x91A4 :: GLenum
+
+pattern GL_VERTEX_ID_SWIZZLE_AMD = 0x91A5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/MultiDrawIndirect.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/MultiDrawIndirect.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/MultiDrawIndirect.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.MultiDrawIndirect (
+  -- * Extension Support
+    gl_AMD_multi_draw_indirect
+
+  -- * GL_AMD_multi_draw_indirect
+  , glMultiDrawArraysIndirectAMD
+  , glMultiDrawElementsIndirectAMD
+) 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_AMD_multi_draw_indirect :: Bool
+gl_AMD_multi_draw_indirect = member "GL_AMD_multi_draw_indirect" extensions
+
+glMultiDrawArraysIndirectAMD :: MonadIO m => GLenum -> Ptr () -> GLsizei -> GLsizei -> m ()
+glMultiDrawArraysIndirectAMD = ffienumPtrVsizeisizeiIOV glMultiDrawArraysIndirectAMDFunPtr
+
+glMultiDrawArraysIndirectAMDFunPtr :: FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ())
+glMultiDrawArraysIndirectAMDFunPtr = unsafePerformIO (getProcAddress "glMultiDrawArraysIndirectAMD")
+
+{-# NOINLINE glMultiDrawArraysIndirectAMDFunPtr #-}
+
+glMultiDrawElementsIndirectAMD :: MonadIO m => GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> m ()
+glMultiDrawElementsIndirectAMD = ffienumenumPtrVsizeisizeiIOV glMultiDrawElementsIndirectAMDFunPtr
+
+glMultiDrawElementsIndirectAMDFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ())
+glMultiDrawElementsIndirectAMDFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementsIndirectAMD")
+
+{-# NOINLINE glMultiDrawElementsIndirectAMDFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/NameGenDelete.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/NameGenDelete.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/NameGenDelete.hs
@@ -0,0 +1,61 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.NameGenDelete (
+  -- * Extension Support
+    gl_AMD_name_gen_delete
+
+  -- * GL_AMD_name_gen_delete
+  , glDeleteNamesAMD
+  , glGenNamesAMD
+  , glIsNameAMD
+  , pattern GL_DATA_BUFFER_AMD
+  , pattern GL_PERFORMANCE_MONITOR_AMD
+  , pattern GL_QUERY_OBJECT_AMD
+  , pattern GL_SAMPLER_OBJECT_AMD
+  , pattern GL_VERTEX_ARRAY_OBJECT_AMD
+) 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_AMD_name_gen_delete :: Bool
+gl_AMD_name_gen_delete = member "GL_AMD_name_gen_delete" extensions
+
+glDeleteNamesAMD :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
+glDeleteNamesAMD = ffienumuintPtruintIOV glDeleteNamesAMDFunPtr
+
+glDeleteNamesAMDFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
+glDeleteNamesAMDFunPtr = unsafePerformIO (getProcAddress "glDeleteNamesAMD")
+
+{-# NOINLINE glDeleteNamesAMDFunPtr #-}
+
+glGenNamesAMD :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
+glGenNamesAMD = ffienumuintPtruintIOV glGenNamesAMDFunPtr
+
+glGenNamesAMDFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
+glGenNamesAMDFunPtr = unsafePerformIO (getProcAddress "glGenNamesAMD")
+
+{-# NOINLINE glGenNamesAMDFunPtr #-}
+
+glIsNameAMD :: MonadIO m => GLenum -> GLuint -> m GLboolean
+glIsNameAMD = ffienumuintIOboolean glIsNameAMDFunPtr
+
+glIsNameAMDFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
+glIsNameAMDFunPtr = unsafePerformIO (getProcAddress "glIsNameAMD")
+
+{-# NOINLINE glIsNameAMDFunPtr #-}
+
+pattern GL_DATA_BUFFER_AMD = 0x9151 :: GLenum
+
+pattern GL_PERFORMANCE_MONITOR_AMD = 0x9152 :: GLenum
+
+pattern GL_QUERY_OBJECT_AMD = 0x9153 :: GLenum
+
+pattern GL_SAMPLER_OBJECT_AMD = 0x9155 :: GLenum
+
+pattern GL_VERTEX_ARRAY_OBJECT_AMD = 0x9154 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/OcclusionQueryEvent.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/OcclusionQueryEvent.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/OcclusionQueryEvent.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.OcclusionQueryEvent (
+  -- * Extension Support
+    gl_AMD_occlusion_query_event
+
+  -- * GL_AMD_occlusion_query_event
+  , glQueryObjectParameteruiAMD
+  , pattern GL_OCCLUSION_QUERY_EVENT_MASK_AMD
+  , pattern GL_QUERY_ALL_EVENT_BITS_AMD
+  , pattern GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD
+  , pattern GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD
+  , pattern GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD
+  , pattern GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD
+) 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_AMD_occlusion_query_event :: Bool
+gl_AMD_occlusion_query_event = member "GL_AMD_occlusion_query_event" extensions
+
+glQueryObjectParameteruiAMD :: MonadIO m => GLenum -> GLuint -> GLenum -> GLuint -> m ()
+glQueryObjectParameteruiAMD = ffienumuintenumuintIOV glQueryObjectParameteruiAMDFunPtr
+
+glQueryObjectParameteruiAMDFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> GLuint -> IO ())
+glQueryObjectParameteruiAMDFunPtr = unsafePerformIO (getProcAddress "glQueryObjectParameteruiAMD")
+
+{-# NOINLINE glQueryObjectParameteruiAMDFunPtr #-}
+
+pattern GL_OCCLUSION_QUERY_EVENT_MASK_AMD = 0x874F :: GLenum
+
+pattern GL_QUERY_ALL_EVENT_BITS_AMD = 0xFFFFFFFF :: GLenum
+
+pattern GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD = 0x00000008 :: GLenum
+
+pattern GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD = 0x00000002 :: GLenum
+
+pattern GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD = 0x00000001 :: GLenum
+
+pattern GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD = 0x00000004 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/PerformanceMonitor.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/PerformanceMonitor.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/PerformanceMonitor.hs
@@ -0,0 +1,139 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.PerformanceMonitor (
+  -- * Extension Support
+    gl_AMD_performance_monitor
+
+  -- * GL_AMD_performance_monitor
+  , glBeginPerfMonitorAMD
+  , glDeletePerfMonitorsAMD
+  , glEndPerfMonitorAMD
+  , glGenPerfMonitorsAMD
+  , glGetPerfMonitorCounterDataAMD
+  , glGetPerfMonitorCounterInfoAMD
+  , glGetPerfMonitorCounterStringAMD
+  , glGetPerfMonitorCountersAMD
+  , glGetPerfMonitorGroupStringAMD
+  , glGetPerfMonitorGroupsAMD
+  , glSelectPerfMonitorCountersAMD
+  , pattern GL_COUNTER_RANGE_AMD
+  , pattern GL_COUNTER_TYPE_AMD
+  , pattern GL_PERCENTAGE_AMD
+  , pattern GL_PERFMON_RESULT_AMD
+  , pattern GL_PERFMON_RESULT_AVAILABLE_AMD
+  , pattern GL_PERFMON_RESULT_SIZE_AMD
+  , pattern GL_UNSIGNED_INT64_AMD
+) 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_AMD_performance_monitor :: Bool
+gl_AMD_performance_monitor = member "GL_AMD_performance_monitor" extensions
+
+glBeginPerfMonitorAMD :: MonadIO m => GLuint -> m ()
+glBeginPerfMonitorAMD = ffiuintIOV glBeginPerfMonitorAMDFunPtr
+
+glBeginPerfMonitorAMDFunPtr :: FunPtr (GLuint -> IO ())
+glBeginPerfMonitorAMDFunPtr = unsafePerformIO (getProcAddress "glBeginPerfMonitorAMD")
+
+{-# NOINLINE glBeginPerfMonitorAMDFunPtr #-}
+
+glDeletePerfMonitorsAMD :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeletePerfMonitorsAMD = ffisizeiPtruintIOV glDeletePerfMonitorsAMDFunPtr
+
+glDeletePerfMonitorsAMDFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeletePerfMonitorsAMDFunPtr = unsafePerformIO (getProcAddress "glDeletePerfMonitorsAMD")
+
+{-# NOINLINE glDeletePerfMonitorsAMDFunPtr #-}
+
+glEndPerfMonitorAMD :: MonadIO m => GLuint -> m ()
+glEndPerfMonitorAMD = ffiuintIOV glEndPerfMonitorAMDFunPtr
+
+glEndPerfMonitorAMDFunPtr :: FunPtr (GLuint -> IO ())
+glEndPerfMonitorAMDFunPtr = unsafePerformIO (getProcAddress "glEndPerfMonitorAMD")
+
+{-# NOINLINE glEndPerfMonitorAMDFunPtr #-}
+
+glGenPerfMonitorsAMD :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenPerfMonitorsAMD = ffisizeiPtruintIOV glGenPerfMonitorsAMDFunPtr
+
+glGenPerfMonitorsAMDFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenPerfMonitorsAMDFunPtr = unsafePerformIO (getProcAddress "glGenPerfMonitorsAMD")
+
+{-# NOINLINE glGenPerfMonitorsAMDFunPtr #-}
+
+glGetPerfMonitorCounterDataAMD :: MonadIO m => GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> m ()
+glGetPerfMonitorCounterDataAMD = ffiuintenumsizeiPtruintPtrintIOV glGetPerfMonitorCounterDataAMDFunPtr
+
+glGetPerfMonitorCounterDataAMDFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> IO ())
+glGetPerfMonitorCounterDataAMDFunPtr = unsafePerformIO (getProcAddress "glGetPerfMonitorCounterDataAMD")
+
+{-# NOINLINE glGetPerfMonitorCounterDataAMDFunPtr #-}
+
+glGetPerfMonitorCounterInfoAMD :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr () -> m ()
+glGetPerfMonitorCounterInfoAMD = ffiuintuintenumPtrVIOV glGetPerfMonitorCounterInfoAMDFunPtr
+
+glGetPerfMonitorCounterInfoAMDFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr () -> IO ())
+glGetPerfMonitorCounterInfoAMDFunPtr = unsafePerformIO (getProcAddress "glGetPerfMonitorCounterInfoAMD")
+
+{-# NOINLINE glGetPerfMonitorCounterInfoAMDFunPtr #-}
+
+glGetPerfMonitorCounterStringAMD :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetPerfMonitorCounterStringAMD = ffiuintuintsizeiPtrsizeiPtrcharIOV glGetPerfMonitorCounterStringAMDFunPtr
+
+glGetPerfMonitorCounterStringAMDFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetPerfMonitorCounterStringAMDFunPtr = unsafePerformIO (getProcAddress "glGetPerfMonitorCounterStringAMD")
+
+{-# NOINLINE glGetPerfMonitorCounterStringAMDFunPtr #-}
+
+glGetPerfMonitorCountersAMD :: MonadIO m => GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> m ()
+glGetPerfMonitorCountersAMD = ffiuintPtrintPtrintsizeiPtruintIOV glGetPerfMonitorCountersAMDFunPtr
+
+glGetPerfMonitorCountersAMDFunPtr :: FunPtr (GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> IO ())
+glGetPerfMonitorCountersAMDFunPtr = unsafePerformIO (getProcAddress "glGetPerfMonitorCountersAMD")
+
+{-# NOINLINE glGetPerfMonitorCountersAMDFunPtr #-}
+
+glGetPerfMonitorGroupStringAMD :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetPerfMonitorGroupStringAMD = ffiuintsizeiPtrsizeiPtrcharIOV glGetPerfMonitorGroupStringAMDFunPtr
+
+glGetPerfMonitorGroupStringAMDFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetPerfMonitorGroupStringAMDFunPtr = unsafePerformIO (getProcAddress "glGetPerfMonitorGroupStringAMD")
+
+{-# NOINLINE glGetPerfMonitorGroupStringAMDFunPtr #-}
+
+glGetPerfMonitorGroupsAMD :: MonadIO m => Ptr GLint -> GLsizei -> Ptr GLuint -> m ()
+glGetPerfMonitorGroupsAMD = ffiPtrintsizeiPtruintIOV glGetPerfMonitorGroupsAMDFunPtr
+
+glGetPerfMonitorGroupsAMDFunPtr :: FunPtr (Ptr GLint -> GLsizei -> Ptr GLuint -> IO ())
+glGetPerfMonitorGroupsAMDFunPtr = unsafePerformIO (getProcAddress "glGetPerfMonitorGroupsAMD")
+
+{-# NOINLINE glGetPerfMonitorGroupsAMDFunPtr #-}
+
+glSelectPerfMonitorCountersAMD :: MonadIO m => GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> m ()
+glSelectPerfMonitorCountersAMD = ffiuintbooleanuintintPtruintIOV glSelectPerfMonitorCountersAMDFunPtr
+
+glSelectPerfMonitorCountersAMDFunPtr :: FunPtr (GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> IO ())
+glSelectPerfMonitorCountersAMDFunPtr = unsafePerformIO (getProcAddress "glSelectPerfMonitorCountersAMD")
+
+{-# NOINLINE glSelectPerfMonitorCountersAMDFunPtr #-}
+
+pattern GL_COUNTER_RANGE_AMD = 0x8BC1 :: GLenum
+
+pattern GL_COUNTER_TYPE_AMD = 0x8BC0 :: GLenum
+
+pattern GL_PERCENTAGE_AMD = 0x8BC3 :: GLenum
+
+pattern GL_PERFMON_RESULT_AMD = 0x8BC6 :: GLenum
+
+pattern GL_PERFMON_RESULT_AVAILABLE_AMD = 0x8BC4 :: GLenum
+
+pattern GL_PERFMON_RESULT_SIZE_AMD = 0x8BC5 :: GLenum
+
+pattern GL_UNSIGNED_INT64_AMD = 0x8BC2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/PinnedMemory.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/PinnedMemory.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/PinnedMemory.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.PinnedMemory (
+  -- * Extension Support
+    gl_AMD_pinned_memory
+
+  -- * GL_AMD_pinned_memory
+  , pattern GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_pinned_memory :: Bool
+gl_AMD_pinned_memory = member "GL_AMD_pinned_memory" extensions
+
+pattern GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD = 0x9160 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ProgramBinaryZ400.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ProgramBinaryZ400.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ProgramBinaryZ400.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.ProgramBinaryZ400 (
+  -- * Extension Support
+    gl_AMD_program_binary_Z400
+
+  -- * GL_AMD_program_binary_Z400
+  , pattern GL_Z400_BINARY_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_program_binary_Z400 :: Bool
+gl_AMD_program_binary_Z400 = member "GL_AMD_program_binary_Z400" extensions
+
+pattern GL_Z400_BINARY_AMD = 0x8740 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/QueryBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/QueryBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/QueryBufferObject.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.QueryBufferObject (
+  -- * Extension Support
+    gl_AMD_query_buffer_object
+
+  -- * GL_AMD_query_buffer_object
+  , pattern GL_QUERY_BUFFER_AMD
+  , pattern GL_QUERY_BUFFER_BINDING_AMD
+  , pattern GL_QUERY_RESULT_NO_WAIT_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_query_buffer_object :: Bool
+gl_AMD_query_buffer_object = member "GL_AMD_query_buffer_object" extensions
+
+pattern GL_QUERY_BUFFER_AMD = 0x9192 :: GLenum
+
+pattern GL_QUERY_BUFFER_BINDING_AMD = 0x9193 :: GLenum
+
+pattern GL_QUERY_RESULT_NO_WAIT_AMD = 0x9194 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SamplePositions.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SamplePositions.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SamplePositions.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.SamplePositions (
+  -- * Extension Support
+    gl_AMD_sample_positions
+
+  -- * GL_AMD_sample_positions
+  , glSetMultisamplefvAMD
+  , pattern GL_SUBSAMPLE_DISTANCE_AMD
+) 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_AMD_sample_positions :: Bool
+gl_AMD_sample_positions = member "GL_AMD_sample_positions" extensions
+
+glSetMultisamplefvAMD :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
+glSetMultisamplefvAMD = ffienumuintPtrfloatIOV glSetMultisamplefvAMDFunPtr
+
+glSetMultisamplefvAMDFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glSetMultisamplefvAMDFunPtr = unsafePerformIO (getProcAddress "glSetMultisamplefvAMD")
+
+{-# NOINLINE glSetMultisamplefvAMDFunPtr #-}
+
+pattern GL_SUBSAMPLE_DISTANCE_AMD = 0x883F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SeamlessCubemapPerTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SeamlessCubemapPerTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SeamlessCubemapPerTexture.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.SeamlessCubemapPerTexture (
+  -- * Extension Support
+    gl_AMD_seamless_cubemap_per_texture
+
+  -- * GL_AMD_seamless_cubemap_per_texture
+  , pattern GL_TEXTURE_CUBE_MAP_SEAMLESS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_AMD_seamless_cubemap_per_texture :: Bool
+gl_AMD_seamless_cubemap_per_texture = member "GL_AMD_seamless_cubemap_per_texture" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderAtomicCounterOps.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderAtomicCounterOps.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderAtomicCounterOps.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.ShaderAtomicCounterOps (
+  -- * Extension Support
+    gl_AMD_shader_atomic_counter_ops
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_shader_atomic_counter_ops :: Bool
+gl_AMD_shader_atomic_counter_ops = member "GL_AMD_shader_atomic_counter_ops" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderStencilExport.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderStencilExport.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderStencilExport.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.ShaderStencilExport (
+  -- * Extension Support
+    gl_AMD_shader_stencil_export
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_shader_stencil_export :: Bool
+gl_AMD_shader_stencil_export = member "GL_AMD_shader_stencil_export" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderTrinaryMinmax.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderTrinaryMinmax.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/ShaderTrinaryMinmax.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.ShaderTrinaryMinmax (
+  -- * Extension Support
+    gl_AMD_shader_trinary_minmax
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_shader_trinary_minmax :: Bool
+gl_AMD_shader_trinary_minmax = member "GL_AMD_shader_trinary_minmax" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SparseTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SparseTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/SparseTexture.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.SparseTexture (
+  -- * Extension Support
+    gl_AMD_sparse_texture
+
+  -- * GL_AMD_sparse_texture
+  , glTexStorageSparseAMD
+  , glTextureStorageSparseAMD
+  , pattern GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD
+  , pattern GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS
+  , pattern GL_MAX_SPARSE_TEXTURE_SIZE_AMD
+  , pattern GL_MIN_LOD_WARNING_AMD
+  , pattern GL_MIN_SPARSE_LEVEL_AMD
+  , pattern GL_TEXTURE_STORAGE_SPARSE_BIT_AMD
+  , pattern GL_VIRTUAL_PAGE_SIZE_X_AMD
+  , pattern GL_VIRTUAL_PAGE_SIZE_Y_AMD
+  , pattern GL_VIRTUAL_PAGE_SIZE_Z_AMD
+) 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_AMD_sparse_texture :: Bool
+gl_AMD_sparse_texture = member "GL_AMD_sparse_texture" extensions
+
+glTexStorageSparseAMD :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> m ()
+glTexStorageSparseAMD = ffienumenumsizeisizeisizeisizeibitfieldIOV glTexStorageSparseAMDFunPtr
+
+glTexStorageSparseAMDFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ())
+glTexStorageSparseAMDFunPtr = unsafePerformIO (getProcAddress "glTexStorageSparseAMD")
+
+{-# NOINLINE glTexStorageSparseAMDFunPtr #-}
+
+glTextureStorageSparseAMD :: MonadIO m => GLuint -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> m ()
+glTextureStorageSparseAMD = ffiuintenumenumsizeisizeisizeisizeibitfieldIOV glTextureStorageSparseAMDFunPtr
+
+glTextureStorageSparseAMDFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ())
+glTextureStorageSparseAMDFunPtr = unsafePerformIO (getProcAddress "glTextureStorageSparseAMD")
+
+{-# NOINLINE glTextureStorageSparseAMDFunPtr #-}
+
+pattern GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD = 0x9199 :: GLenum
+
+pattern GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS = 0x919A :: GLenum
+
+pattern GL_MAX_SPARSE_TEXTURE_SIZE_AMD = 0x9198 :: GLenum
+
+pattern GL_MIN_LOD_WARNING_AMD = 0x919C :: GLenum
+
+pattern GL_MIN_SPARSE_LEVEL_AMD = 0x919B :: GLenum
+
+pattern GL_TEXTURE_STORAGE_SPARSE_BIT_AMD = 0x00000001 :: GLenum
+
+pattern GL_VIRTUAL_PAGE_SIZE_X_AMD = 0x9195 :: GLenum
+
+pattern GL_VIRTUAL_PAGE_SIZE_Y_AMD = 0x9196 :: GLenum
+
+pattern GL_VIRTUAL_PAGE_SIZE_Z_AMD = 0x9197 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/StencilOperationExtended.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/StencilOperationExtended.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/StencilOperationExtended.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.StencilOperationExtended (
+  -- * Extension Support
+    gl_AMD_stencil_operation_extended
+
+  -- * GL_AMD_stencil_operation_extended
+  , glStencilOpValueAMD
+  , pattern GL_REPLACE_VALUE_AMD
+  , pattern GL_SET_AMD
+  , pattern GL_STENCIL_BACK_OP_VALUE_AMD
+  , pattern GL_STENCIL_OP_VALUE_AMD
+) 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_AMD_stencil_operation_extended :: Bool
+gl_AMD_stencil_operation_extended = member "GL_AMD_stencil_operation_extended" extensions
+
+glStencilOpValueAMD :: MonadIO m => GLenum -> GLuint -> m ()
+glStencilOpValueAMD = ffienumuintIOV glStencilOpValueAMDFunPtr
+
+glStencilOpValueAMDFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glStencilOpValueAMDFunPtr = unsafePerformIO (getProcAddress "glStencilOpValueAMD")
+
+{-# NOINLINE glStencilOpValueAMDFunPtr #-}
+
+pattern GL_REPLACE_VALUE_AMD = 0x874B :: GLenum
+
+pattern GL_SET_AMD = 0x874A :: GLenum
+
+pattern GL_STENCIL_BACK_OP_VALUE_AMD = 0x874D :: GLenum
+
+pattern GL_STENCIL_OP_VALUE_AMD = 0x874C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TextureTexture4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TextureTexture4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TextureTexture4.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.TextureTexture4 (
+  -- * Extension Support
+    gl_AMD_texture_texture4
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_texture_texture4 :: Bool
+gl_AMD_texture_texture4 = member "GL_AMD_texture_texture4" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TransformFeedback3LinesTriangles.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TransformFeedback3LinesTriangles.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TransformFeedback3LinesTriangles.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.TransformFeedback3LinesTriangles (
+  -- * Extension Support
+    gl_AMD_transform_feedback3_lines_triangles
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_transform_feedback3_lines_triangles :: Bool
+gl_AMD_transform_feedback3_lines_triangles = member "GL_AMD_transform_feedback3_lines_triangles" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TransformFeedback4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TransformFeedback4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/TransformFeedback4.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.TransformFeedback4 (
+  -- * Extension Support
+    gl_AMD_transform_feedback4
+
+  -- * GL_AMD_transform_feedback4
+  , pattern GL_STREAM_RASTERIZATION_AMD
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_AMD_transform_feedback4 :: Bool
+gl_AMD_transform_feedback4 = member "GL_AMD_transform_feedback4" extensions
+
+pattern GL_STREAM_RASTERIZATION_AMD = 0x91A0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderLayer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderLayer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderLayer.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.VertexShaderLayer (
+  -- * Extension Support
+    gl_AMD_vertex_shader_layer
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_vertex_shader_layer :: Bool
+gl_AMD_vertex_shader_layer = member "GL_AMD_vertex_shader_layer" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderTessellator.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderTessellator.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderTessellator.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.VertexShaderTessellator (
+  -- * Extension Support
+    gl_AMD_vertex_shader_tessellator
+
+  -- * GL_AMD_vertex_shader_tessellator
+  , glTessellationFactorAMD
+  , glTessellationModeAMD
+  , pattern GL_CONTINUOUS_AMD
+  , pattern GL_DISCRETE_AMD
+  , pattern GL_INT_SAMPLER_BUFFER_AMD
+  , pattern GL_SAMPLER_BUFFER_AMD
+  , pattern GL_TESSELLATION_FACTOR_AMD
+  , pattern GL_TESSELLATION_MODE_AMD
+  , pattern GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD
+) 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_AMD_vertex_shader_tessellator :: Bool
+gl_AMD_vertex_shader_tessellator = member "GL_AMD_vertex_shader_tessellator" extensions
+
+glTessellationFactorAMD :: MonadIO m => GLfloat -> m ()
+glTessellationFactorAMD = ffifloatIOV glTessellationFactorAMDFunPtr
+
+glTessellationFactorAMDFunPtr :: FunPtr (GLfloat -> IO ())
+glTessellationFactorAMDFunPtr = unsafePerformIO (getProcAddress "glTessellationFactorAMD")
+
+{-# NOINLINE glTessellationFactorAMDFunPtr #-}
+
+glTessellationModeAMD :: MonadIO m => GLenum -> m ()
+glTessellationModeAMD = ffienumIOV glTessellationModeAMDFunPtr
+
+glTessellationModeAMDFunPtr :: FunPtr (GLenum -> IO ())
+glTessellationModeAMDFunPtr = unsafePerformIO (getProcAddress "glTessellationModeAMD")
+
+{-# NOINLINE glTessellationModeAMDFunPtr #-}
+
+pattern GL_CONTINUOUS_AMD = 0x9007 :: GLenum
+
+pattern GL_DISCRETE_AMD = 0x9006 :: GLenum
+
+pattern GL_INT_SAMPLER_BUFFER_AMD = 0x9002 :: GLenum
+
+pattern GL_SAMPLER_BUFFER_AMD = 0x9001 :: GLenum
+
+pattern GL_TESSELLATION_FACTOR_AMD = 0x9005 :: GLenum
+
+pattern GL_TESSELLATION_MODE_AMD = 0x9004 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD = 0x9003 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderViewportIndex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderViewportIndex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/AMD/VertexShaderViewportIndex.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.AMD.VertexShaderViewportIndex (
+  -- * Extension Support
+    gl_AMD_vertex_shader_viewport_index
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_AMD_vertex_shader_viewport_index :: Bool
+gl_AMD_vertex_shader_viewport_index = member "GL_AMD_vertex_shader_viewport_index" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANDROID.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANDROID.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANDROID.hs
@@ -0,0 +1,8 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANDROID (
+  -- * ANDROID Extensions
+    module Graphics.GL.Raw.Extension.ANDROID.ExtensionPackEs31a
+) where
+
+import Graphics.GL.Raw.Extension.ANDROID.ExtensionPackEs31a
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANDROID/ExtensionPackEs31a.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANDROID/ExtensionPackEs31a.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANDROID/ExtensionPackEs31a.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANDROID.ExtensionPackEs31a (
+  -- * Extension Support
+    gl_ANDROID_extension_pack_es31a
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ANDROID_extension_pack_es31a :: Bool
+gl_ANDROID_extension_pack_es31a = member "GL_ANDROID_extension_pack_es31a" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE.hs
@@ -0,0 +1,26 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE (
+  -- * ANGLE Extensions
+    module Graphics.GL.Raw.Extension.ANGLE.DepthTexture
+  , module Graphics.GL.Raw.Extension.ANGLE.FramebufferBlit
+  , module Graphics.GL.Raw.Extension.ANGLE.FramebufferMultisample
+  , module Graphics.GL.Raw.Extension.ANGLE.InstancedArrays
+  , module Graphics.GL.Raw.Extension.ANGLE.PackReverseRowOrder
+  , module Graphics.GL.Raw.Extension.ANGLE.ProgramBinary
+  , module Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt3
+  , module Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt5
+  , module Graphics.GL.Raw.Extension.ANGLE.TextureUsage
+  , module Graphics.GL.Raw.Extension.ANGLE.TranslatedShaderSource
+) where
+
+import Graphics.GL.Raw.Extension.ANGLE.DepthTexture
+import Graphics.GL.Raw.Extension.ANGLE.FramebufferBlit
+import Graphics.GL.Raw.Extension.ANGLE.FramebufferMultisample
+import Graphics.GL.Raw.Extension.ANGLE.InstancedArrays
+import Graphics.GL.Raw.Extension.ANGLE.PackReverseRowOrder
+import Graphics.GL.Raw.Extension.ANGLE.ProgramBinary
+import Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt3
+import Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt5
+import Graphics.GL.Raw.Extension.ANGLE.TextureUsage
+import Graphics.GL.Raw.Extension.ANGLE.TranslatedShaderSource
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/DepthTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/DepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/DepthTexture.hs
@@ -0,0 +1,23 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.DepthTexture (
+  -- * Extension Support
+    gl_ANGLE_depth_texture
+
+  -- * GL_ANGLE_depth_texture
+  , pattern GL_DEPTH24_STENCIL8_OES
+  , pattern GL_DEPTH_COMPONENT
+  , pattern GL_DEPTH_COMPONENT16
+  , pattern GL_DEPTH_COMPONENT32_OES
+  , pattern GL_DEPTH_STENCIL_OES
+  , pattern GL_UNSIGNED_INT
+  , pattern GL_UNSIGNED_INT_24_8_OES
+  , pattern GL_UNSIGNED_SHORT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ANGLE_depth_texture :: Bool
+gl_ANGLE_depth_texture = member "GL_ANGLE_depth_texture" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/FramebufferBlit.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/FramebufferBlit.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/FramebufferBlit.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.FramebufferBlit (
+  -- * Extension Support
+    gl_ANGLE_framebuffer_blit
+
+  -- * GL_ANGLE_framebuffer_blit
+  , glBlitFramebufferANGLE
+  , pattern GL_DRAW_FRAMEBUFFER_ANGLE
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING_ANGLE
+  , pattern GL_READ_FRAMEBUFFER_ANGLE
+  , pattern GL_READ_FRAMEBUFFER_BINDING_ANGLE
+) 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_ANGLE_framebuffer_blit :: Bool
+gl_ANGLE_framebuffer_blit = member "GL_ANGLE_framebuffer_blit" extensions
+
+glBlitFramebufferANGLE :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
+glBlitFramebufferANGLE = ffiintintintintintintintintbitfieldenumIOV glBlitFramebufferANGLEFunPtr
+
+glBlitFramebufferANGLEFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ())
+glBlitFramebufferANGLEFunPtr = unsafePerformIO (getProcAddress "glBlitFramebufferANGLE")
+
+{-# NOINLINE glBlitFramebufferANGLEFunPtr #-}
+
+pattern GL_DRAW_FRAMEBUFFER_ANGLE = 0x8CA9 :: GLenum
+
+pattern GL_DRAW_FRAMEBUFFER_BINDING_ANGLE = 0x8CA6 :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_ANGLE = 0x8CA8 :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_BINDING_ANGLE = 0x8CAA :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/FramebufferMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/FramebufferMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/FramebufferMultisample.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.FramebufferMultisample (
+  -- * Extension Support
+    gl_ANGLE_framebuffer_multisample
+
+  -- * GL_ANGLE_framebuffer_multisample
+  , glRenderbufferStorageMultisampleANGLE
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE
+  , pattern GL_MAX_SAMPLES_ANGLE
+  , pattern GL_RENDERBUFFER_SAMPLES_ANGLE
+) 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_ANGLE_framebuffer_multisample :: Bool
+gl_ANGLE_framebuffer_multisample = member "GL_ANGLE_framebuffer_multisample" extensions
+
+glRenderbufferStorageMultisampleANGLE :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+glRenderbufferStorageMultisampleANGLE = ffienumsizeienumsizeisizeiIOV glRenderbufferStorageMultisampleANGLEFunPtr
+
+glRenderbufferStorageMultisampleANGLEFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+glRenderbufferStorageMultisampleANGLEFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageMultisampleANGLE")
+
+{-# NOINLINE glRenderbufferStorageMultisampleANGLEFunPtr #-}
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE = 0x8D56 :: GLenum
+
+pattern GL_MAX_SAMPLES_ANGLE = 0x8D57 :: GLenum
+
+pattern GL_RENDERBUFFER_SAMPLES_ANGLE = 0x8CAB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/InstancedArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/InstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/InstancedArrays.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.InstancedArrays (
+  -- * Extension Support
+    gl_ANGLE_instanced_arrays
+
+  -- * GL_ANGLE_instanced_arrays
+  , glDrawArraysInstancedANGLE
+  , glDrawElementsInstancedANGLE
+  , glVertexAttribDivisorANGLE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE
+) 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_ANGLE_instanced_arrays :: Bool
+gl_ANGLE_instanced_arrays = member "GL_ANGLE_instanced_arrays" extensions
+
+glDrawArraysInstancedANGLE :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
+glDrawArraysInstancedANGLE = ffienumintsizeisizeiIOV glDrawArraysInstancedANGLEFunPtr
+
+glDrawArraysInstancedANGLEFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
+glDrawArraysInstancedANGLEFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstancedANGLE")
+
+{-# NOINLINE glDrawArraysInstancedANGLEFunPtr #-}
+
+glDrawElementsInstancedANGLE :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
+glDrawElementsInstancedANGLE = ffienumsizeienumPtrVsizeiIOV glDrawElementsInstancedANGLEFunPtr
+
+glDrawElementsInstancedANGLEFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ())
+glDrawElementsInstancedANGLEFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstancedANGLE")
+
+{-# NOINLINE glDrawElementsInstancedANGLEFunPtr #-}
+
+glVertexAttribDivisorANGLE :: MonadIO m => GLuint -> GLuint -> m ()
+glVertexAttribDivisorANGLE = ffiuintuintIOV glVertexAttribDivisorANGLEFunPtr
+
+glVertexAttribDivisorANGLEFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glVertexAttribDivisorANGLEFunPtr = unsafePerformIO (getProcAddress "glVertexAttribDivisorANGLE")
+
+{-# NOINLINE glVertexAttribDivisorANGLEFunPtr #-}
+
+pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/PackReverseRowOrder.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/PackReverseRowOrder.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/PackReverseRowOrder.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.PackReverseRowOrder (
+  -- * Extension Support
+    gl_ANGLE_pack_reverse_row_order
+
+  -- * GL_ANGLE_pack_reverse_row_order
+  , pattern GL_PACK_REVERSE_ROW_ORDER_ANGLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ANGLE_pack_reverse_row_order :: Bool
+gl_ANGLE_pack_reverse_row_order = member "GL_ANGLE_pack_reverse_row_order" extensions
+
+pattern GL_PACK_REVERSE_ROW_ORDER_ANGLE = 0x93A4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/ProgramBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/ProgramBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/ProgramBinary.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.ProgramBinary (
+  -- * Extension Support
+    gl_ANGLE_program_binary
+
+  -- * GL_ANGLE_program_binary
+  , pattern GL_PROGRAM_BINARY_ANGLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ANGLE_program_binary :: Bool
+gl_ANGLE_program_binary = member "GL_ANGLE_program_binary" extensions
+
+pattern GL_PROGRAM_BINARY_ANGLE = 0x93A6 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureCompressionDxt3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureCompressionDxt3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureCompressionDxt3.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt3 (
+  -- * Extension Support
+    gl_ANGLE_texture_compression_dxt3
+
+  -- * GL_ANGLE_texture_compression_dxt3
+  , pattern GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ANGLE_texture_compression_dxt3 :: Bool
+gl_ANGLE_texture_compression_dxt3 = member "GL_ANGLE_texture_compression_dxt3" extensions
+
+pattern GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE = 0x83F2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureCompressionDxt5.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureCompressionDxt5.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureCompressionDxt5.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt5 (
+  -- * Extension Support
+    gl_ANGLE_texture_compression_dxt5
+
+  -- * GL_ANGLE_texture_compression_dxt5
+  , pattern GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ANGLE_texture_compression_dxt5 :: Bool
+gl_ANGLE_texture_compression_dxt5 = member "GL_ANGLE_texture_compression_dxt5" extensions
+
+pattern GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE = 0x83F3 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureUsage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureUsage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TextureUsage.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.TextureUsage (
+  -- * Extension Support
+    gl_ANGLE_texture_usage
+
+  -- * GL_ANGLE_texture_usage
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_ANGLE
+  , pattern GL_TEXTURE_USAGE_ANGLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ANGLE_texture_usage :: Bool
+gl_ANGLE_texture_usage = member "GL_ANGLE_texture_usage" extensions
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_ANGLE = 0x93A3 :: GLenum
+
+pattern GL_TEXTURE_USAGE_ANGLE = 0x93A2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TranslatedShaderSource.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TranslatedShaderSource.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ANGLE/TranslatedShaderSource.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ANGLE.TranslatedShaderSource (
+  -- * Extension Support
+    gl_ANGLE_translated_shader_source
+
+  -- * GL_ANGLE_translated_shader_source
+  , glGetTranslatedShaderSourceANGLE
+  , pattern GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE
+) 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_ANGLE_translated_shader_source :: Bool
+gl_ANGLE_translated_shader_source = member "GL_ANGLE_translated_shader_source" extensions
+
+glGetTranslatedShaderSourceANGLE :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetTranslatedShaderSourceANGLE = ffiuintsizeiPtrsizeiPtrcharIOV glGetTranslatedShaderSourceANGLEFunPtr
+
+glGetTranslatedShaderSourceANGLEFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetTranslatedShaderSourceANGLEFunPtr = unsafePerformIO (getProcAddress "glGetTranslatedShaderSourceANGLE")
+
+{-# NOINLINE glGetTranslatedShaderSourceANGLEFunPtr #-}
+
+pattern GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x93A0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE.hs
@@ -0,0 +1,56 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE (
+  -- * APPLE Extensions
+    module Graphics.GL.Raw.Extension.APPLE.AuxDepthStencil
+  , module Graphics.GL.Raw.Extension.APPLE.ClientStorage
+  , module Graphics.GL.Raw.Extension.APPLE.ClipDistance
+  , module Graphics.GL.Raw.Extension.APPLE.ColorBufferPackedFloat
+  , module Graphics.GL.Raw.Extension.APPLE.CopyTextureLevels
+  , module Graphics.GL.Raw.Extension.APPLE.ElementArray
+  , module Graphics.GL.Raw.Extension.APPLE.Fence
+  , module Graphics.GL.Raw.Extension.APPLE.FloatPixels
+  , module Graphics.GL.Raw.Extension.APPLE.FlushBufferRange
+  , module Graphics.GL.Raw.Extension.APPLE.FramebufferMultisample
+  , module Graphics.GL.Raw.Extension.APPLE.ObjectPurgeable
+  , module Graphics.GL.Raw.Extension.APPLE.Rgb422
+  , module Graphics.GL.Raw.Extension.APPLE.RowBytes
+  , module Graphics.GL.Raw.Extension.APPLE.SpecularVector
+  , module Graphics.GL.Raw.Extension.APPLE.Sync
+  , module Graphics.GL.Raw.Extension.APPLE.Texture2DLimitedNpot
+  , module Graphics.GL.Raw.Extension.APPLE.TextureFormatBGRA8888
+  , module Graphics.GL.Raw.Extension.APPLE.TextureMaxLevel
+  , module Graphics.GL.Raw.Extension.APPLE.TexturePackedFloat
+  , module Graphics.GL.Raw.Extension.APPLE.TextureRange
+  , module Graphics.GL.Raw.Extension.APPLE.TransformHint
+  , module Graphics.GL.Raw.Extension.APPLE.VertexArrayObject
+  , module Graphics.GL.Raw.Extension.APPLE.VertexArrayRange
+  , module Graphics.GL.Raw.Extension.APPLE.VertexProgramEvaluators
+  , module Graphics.GL.Raw.Extension.APPLE.Ycbcr422
+) where
+
+import Graphics.GL.Raw.Extension.APPLE.AuxDepthStencil
+import Graphics.GL.Raw.Extension.APPLE.ClientStorage
+import Graphics.GL.Raw.Extension.APPLE.ClipDistance
+import Graphics.GL.Raw.Extension.APPLE.ColorBufferPackedFloat
+import Graphics.GL.Raw.Extension.APPLE.CopyTextureLevels
+import Graphics.GL.Raw.Extension.APPLE.ElementArray
+import Graphics.GL.Raw.Extension.APPLE.Fence
+import Graphics.GL.Raw.Extension.APPLE.FloatPixels
+import Graphics.GL.Raw.Extension.APPLE.FlushBufferRange
+import Graphics.GL.Raw.Extension.APPLE.FramebufferMultisample
+import Graphics.GL.Raw.Extension.APPLE.ObjectPurgeable
+import Graphics.GL.Raw.Extension.APPLE.Rgb422
+import Graphics.GL.Raw.Extension.APPLE.RowBytes
+import Graphics.GL.Raw.Extension.APPLE.SpecularVector
+import Graphics.GL.Raw.Extension.APPLE.Sync
+import Graphics.GL.Raw.Extension.APPLE.Texture2DLimitedNpot
+import Graphics.GL.Raw.Extension.APPLE.TextureFormatBGRA8888
+import Graphics.GL.Raw.Extension.APPLE.TextureMaxLevel
+import Graphics.GL.Raw.Extension.APPLE.TexturePackedFloat
+import Graphics.GL.Raw.Extension.APPLE.TextureRange
+import Graphics.GL.Raw.Extension.APPLE.TransformHint
+import Graphics.GL.Raw.Extension.APPLE.VertexArrayObject
+import Graphics.GL.Raw.Extension.APPLE.VertexArrayRange
+import Graphics.GL.Raw.Extension.APPLE.VertexProgramEvaluators
+import Graphics.GL.Raw.Extension.APPLE.Ycbcr422
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/AuxDepthStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/AuxDepthStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/AuxDepthStencil.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.AuxDepthStencil (
+  -- * Extension Support
+    gl_APPLE_aux_depth_stencil
+
+  -- * GL_APPLE_aux_depth_stencil
+  , pattern GL_AUX_DEPTH_STENCIL_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_aux_depth_stencil :: Bool
+gl_APPLE_aux_depth_stencil = member "GL_APPLE_aux_depth_stencil" extensions
+
+pattern GL_AUX_DEPTH_STENCIL_APPLE = 0x8A14 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ClientStorage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ClientStorage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ClientStorage.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.ClientStorage (
+  -- * Extension Support
+    gl_APPLE_client_storage
+
+  -- * GL_APPLE_client_storage
+  , pattern GL_UNPACK_CLIENT_STORAGE_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_client_storage :: Bool
+gl_APPLE_client_storage = member "GL_APPLE_client_storage" extensions
+
+pattern GL_UNPACK_CLIENT_STORAGE_APPLE = 0x85B2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ClipDistance.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ClipDistance.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ClipDistance.hs
@@ -0,0 +1,42 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.ClipDistance (
+  -- * Extension Support
+    gl_APPLE_clip_distance
+
+  -- * GL_APPLE_clip_distance
+  , pattern GL_CLIP_DISTANCE0_APPLE
+  , pattern GL_CLIP_DISTANCE1_APPLE
+  , pattern GL_CLIP_DISTANCE2_APPLE
+  , pattern GL_CLIP_DISTANCE3_APPLE
+  , pattern GL_CLIP_DISTANCE4_APPLE
+  , pattern GL_CLIP_DISTANCE5_APPLE
+  , pattern GL_CLIP_DISTANCE6_APPLE
+  , pattern GL_CLIP_DISTANCE7_APPLE
+  , pattern GL_MAX_CLIP_DISTANCES_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_clip_distance :: Bool
+gl_APPLE_clip_distance = member "GL_APPLE_clip_distance" extensions
+
+pattern GL_CLIP_DISTANCE0_APPLE = 0x3000 :: GLenum
+
+pattern GL_CLIP_DISTANCE1_APPLE = 0x3001 :: GLenum
+
+pattern GL_CLIP_DISTANCE2_APPLE = 0x3002 :: GLenum
+
+pattern GL_CLIP_DISTANCE3_APPLE = 0x3003 :: GLenum
+
+pattern GL_CLIP_DISTANCE4_APPLE = 0x3004 :: GLenum
+
+pattern GL_CLIP_DISTANCE5_APPLE = 0x3005 :: GLenum
+
+pattern GL_CLIP_DISTANCE6_APPLE = 0x3006 :: GLenum
+
+pattern GL_CLIP_DISTANCE7_APPLE = 0x3007 :: GLenum
+
+pattern GL_MAX_CLIP_DISTANCES_APPLE = 0x0D32 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ColorBufferPackedFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ColorBufferPackedFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ColorBufferPackedFloat.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.ColorBufferPackedFloat (
+  -- * Extension Support
+    gl_APPLE_color_buffer_packed_float
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_APPLE_color_buffer_packed_float :: Bool
+gl_APPLE_color_buffer_packed_float = member "GL_APPLE_color_buffer_packed_float" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/CopyTextureLevels.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/CopyTextureLevels.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/CopyTextureLevels.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.CopyTextureLevels (
+  -- * Extension Support
+    gl_APPLE_copy_texture_levels
+
+  -- * GL_APPLE_copy_texture_levels
+  , glCopyTextureLevelsAPPLE
+) 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_APPLE_copy_texture_levels :: Bool
+gl_APPLE_copy_texture_levels = member "GL_APPLE_copy_texture_levels" extensions
+
+glCopyTextureLevelsAPPLE :: MonadIO m => GLuint -> GLuint -> GLint -> GLsizei -> m ()
+glCopyTextureLevelsAPPLE = ffiuintuintintsizeiIOV glCopyTextureLevelsAPPLEFunPtr
+
+glCopyTextureLevelsAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLsizei -> IO ())
+glCopyTextureLevelsAPPLEFunPtr = unsafePerformIO (getProcAddress "glCopyTextureLevelsAPPLE")
+
+{-# NOINLINE glCopyTextureLevelsAPPLEFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ElementArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ElementArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ElementArray.hs
@@ -0,0 +1,73 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.ElementArray (
+  -- * Extension Support
+    gl_APPLE_element_array
+
+  -- * GL_APPLE_element_array
+  , glDrawElementArrayAPPLE
+  , glDrawRangeElementArrayAPPLE
+  , glElementPointerAPPLE
+  , glMultiDrawElementArrayAPPLE
+  , glMultiDrawRangeElementArrayAPPLE
+  , pattern GL_ELEMENT_ARRAY_APPLE
+  , pattern GL_ELEMENT_ARRAY_POINTER_APPLE
+  , pattern GL_ELEMENT_ARRAY_TYPE_APPLE
+) 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_APPLE_element_array :: Bool
+gl_APPLE_element_array = member "GL_APPLE_element_array" extensions
+
+glDrawElementArrayAPPLE :: MonadIO m => GLenum -> GLint -> GLsizei -> m ()
+glDrawElementArrayAPPLE = ffienumintsizeiIOV glDrawElementArrayAPPLEFunPtr
+
+glDrawElementArrayAPPLEFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> IO ())
+glDrawElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glDrawElementArrayAPPLE")
+
+{-# NOINLINE glDrawElementArrayAPPLEFunPtr #-}
+
+glDrawRangeElementArrayAPPLE :: MonadIO m => GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> m ()
+glDrawRangeElementArrayAPPLE = ffienumuintuintintsizeiIOV glDrawRangeElementArrayAPPLEFunPtr
+
+glDrawRangeElementArrayAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> IO ())
+glDrawRangeElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glDrawRangeElementArrayAPPLE")
+
+{-# NOINLINE glDrawRangeElementArrayAPPLEFunPtr #-}
+
+glElementPointerAPPLE :: MonadIO m => GLenum -> Ptr () -> m ()
+glElementPointerAPPLE = ffienumPtrVIOV glElementPointerAPPLEFunPtr
+
+glElementPointerAPPLEFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
+glElementPointerAPPLEFunPtr = unsafePerformIO (getProcAddress "glElementPointerAPPLE")
+
+{-# NOINLINE glElementPointerAPPLEFunPtr #-}
+
+glMultiDrawElementArrayAPPLE :: MonadIO m => GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
+glMultiDrawElementArrayAPPLE = ffienumPtrintPtrsizeisizeiIOV glMultiDrawElementArrayAPPLEFunPtr
+
+glMultiDrawElementArrayAPPLEFunPtr :: FunPtr (GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ())
+glMultiDrawElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementArrayAPPLE")
+
+{-# NOINLINE glMultiDrawElementArrayAPPLEFunPtr #-}
+
+glMultiDrawRangeElementArrayAPPLE :: MonadIO m => GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
+glMultiDrawRangeElementArrayAPPLE = ffienumuintuintPtrintPtrsizeisizeiIOV glMultiDrawRangeElementArrayAPPLEFunPtr
+
+glMultiDrawRangeElementArrayAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ())
+glMultiDrawRangeElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glMultiDrawRangeElementArrayAPPLE")
+
+{-# NOINLINE glMultiDrawRangeElementArrayAPPLEFunPtr #-}
+
+pattern GL_ELEMENT_ARRAY_APPLE = 0x8A0C :: GLenum
+
+pattern GL_ELEMENT_ARRAY_POINTER_APPLE = 0x8A0E :: GLenum
+
+pattern GL_ELEMENT_ARRAY_TYPE_APPLE = 0x8A0D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Fence.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Fence.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Fence.hs
@@ -0,0 +1,97 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.Fence (
+  -- * Extension Support
+    gl_APPLE_fence
+
+  -- * GL_APPLE_fence
+  , glDeleteFencesAPPLE
+  , glFinishFenceAPPLE
+  , glFinishObjectAPPLE
+  , glGenFencesAPPLE
+  , glIsFenceAPPLE
+  , glSetFenceAPPLE
+  , glTestFenceAPPLE
+  , glTestObjectAPPLE
+  , pattern GL_DRAW_PIXELS_APPLE
+  , pattern GL_FENCE_APPLE
+) 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_APPLE_fence :: Bool
+gl_APPLE_fence = member "GL_APPLE_fence" extensions
+
+glDeleteFencesAPPLE :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteFencesAPPLE = ffisizeiPtruintIOV glDeleteFencesAPPLEFunPtr
+
+glDeleteFencesAPPLEFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteFencesAPPLEFunPtr = unsafePerformIO (getProcAddress "glDeleteFencesAPPLE")
+
+{-# NOINLINE glDeleteFencesAPPLEFunPtr #-}
+
+glFinishFenceAPPLE :: MonadIO m => GLuint -> m ()
+glFinishFenceAPPLE = ffiuintIOV glFinishFenceAPPLEFunPtr
+
+glFinishFenceAPPLEFunPtr :: FunPtr (GLuint -> IO ())
+glFinishFenceAPPLEFunPtr = unsafePerformIO (getProcAddress "glFinishFenceAPPLE")
+
+{-# NOINLINE glFinishFenceAPPLEFunPtr #-}
+
+glFinishObjectAPPLE :: MonadIO m => GLenum -> GLint -> m ()
+glFinishObjectAPPLE = ffienumintIOV glFinishObjectAPPLEFunPtr
+
+glFinishObjectAPPLEFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glFinishObjectAPPLEFunPtr = unsafePerformIO (getProcAddress "glFinishObjectAPPLE")
+
+{-# NOINLINE glFinishObjectAPPLEFunPtr #-}
+
+glGenFencesAPPLE :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenFencesAPPLE = ffisizeiPtruintIOV glGenFencesAPPLEFunPtr
+
+glGenFencesAPPLEFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenFencesAPPLEFunPtr = unsafePerformIO (getProcAddress "glGenFencesAPPLE")
+
+{-# NOINLINE glGenFencesAPPLEFunPtr #-}
+
+glIsFenceAPPLE :: MonadIO m => GLuint -> m GLboolean
+glIsFenceAPPLE = ffiuintIOboolean glIsFenceAPPLEFunPtr
+
+glIsFenceAPPLEFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsFenceAPPLEFunPtr = unsafePerformIO (getProcAddress "glIsFenceAPPLE")
+
+{-# NOINLINE glIsFenceAPPLEFunPtr #-}
+
+glSetFenceAPPLE :: MonadIO m => GLuint -> m ()
+glSetFenceAPPLE = ffiuintIOV glSetFenceAPPLEFunPtr
+
+glSetFenceAPPLEFunPtr :: FunPtr (GLuint -> IO ())
+glSetFenceAPPLEFunPtr = unsafePerformIO (getProcAddress "glSetFenceAPPLE")
+
+{-# NOINLINE glSetFenceAPPLEFunPtr #-}
+
+glTestFenceAPPLE :: MonadIO m => GLuint -> m GLboolean
+glTestFenceAPPLE = ffiuintIOboolean glTestFenceAPPLEFunPtr
+
+glTestFenceAPPLEFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glTestFenceAPPLEFunPtr = unsafePerformIO (getProcAddress "glTestFenceAPPLE")
+
+{-# NOINLINE glTestFenceAPPLEFunPtr #-}
+
+glTestObjectAPPLE :: MonadIO m => GLenum -> GLuint -> m GLboolean
+glTestObjectAPPLE = ffienumuintIOboolean glTestObjectAPPLEFunPtr
+
+glTestObjectAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
+glTestObjectAPPLEFunPtr = unsafePerformIO (getProcAddress "glTestObjectAPPLE")
+
+{-# NOINLINE glTestObjectAPPLEFunPtr #-}
+
+pattern GL_DRAW_PIXELS_APPLE = 0x8A0A :: GLenum
+
+pattern GL_FENCE_APPLE = 0x8A0B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FloatPixels.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FloatPixels.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FloatPixels.hs
@@ -0,0 +1,57 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.FloatPixels (
+  -- * Extension Support
+    gl_APPLE_float_pixels
+
+  -- * GL_APPLE_float_pixels
+  , pattern GL_ALPHA_FLOAT16_APPLE
+  , pattern GL_ALPHA_FLOAT32_APPLE
+  , pattern GL_COLOR_FLOAT_APPLE
+  , pattern GL_HALF_APPLE
+  , pattern GL_INTENSITY_FLOAT16_APPLE
+  , pattern GL_INTENSITY_FLOAT32_APPLE
+  , pattern GL_LUMINANCE_ALPHA_FLOAT16_APPLE
+  , pattern GL_LUMINANCE_ALPHA_FLOAT32_APPLE
+  , pattern GL_LUMINANCE_FLOAT16_APPLE
+  , pattern GL_LUMINANCE_FLOAT32_APPLE
+  , pattern GL_RGBA_FLOAT16_APPLE
+  , pattern GL_RGBA_FLOAT32_APPLE
+  , pattern GL_RGB_FLOAT16_APPLE
+  , pattern GL_RGB_FLOAT32_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_float_pixels :: Bool
+gl_APPLE_float_pixels = member "GL_APPLE_float_pixels" extensions
+
+pattern GL_ALPHA_FLOAT16_APPLE = 0x881C :: GLenum
+
+pattern GL_ALPHA_FLOAT32_APPLE = 0x8816 :: GLenum
+
+pattern GL_COLOR_FLOAT_APPLE = 0x8A0F :: GLenum
+
+pattern GL_HALF_APPLE = 0x140B :: GLenum
+
+pattern GL_INTENSITY_FLOAT16_APPLE = 0x881D :: GLenum
+
+pattern GL_INTENSITY_FLOAT32_APPLE = 0x8817 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA_FLOAT16_APPLE = 0x881F :: GLenum
+
+pattern GL_LUMINANCE_ALPHA_FLOAT32_APPLE = 0x8819 :: GLenum
+
+pattern GL_LUMINANCE_FLOAT16_APPLE = 0x881E :: GLenum
+
+pattern GL_LUMINANCE_FLOAT32_APPLE = 0x8818 :: GLenum
+
+pattern GL_RGBA_FLOAT16_APPLE = 0x881A :: GLenum
+
+pattern GL_RGBA_FLOAT32_APPLE = 0x8814 :: GLenum
+
+pattern GL_RGB_FLOAT16_APPLE = 0x881B :: GLenum
+
+pattern GL_RGB_FLOAT32_APPLE = 0x8815 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FlushBufferRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FlushBufferRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FlushBufferRange.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.FlushBufferRange (
+  -- * Extension Support
+    gl_APPLE_flush_buffer_range
+
+  -- * GL_APPLE_flush_buffer_range
+  , glBufferParameteriAPPLE
+  , glFlushMappedBufferRangeAPPLE
+  , pattern GL_BUFFER_FLUSHING_UNMAP_APPLE
+  , pattern GL_BUFFER_SERIALIZED_MODIFY_APPLE
+) 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_APPLE_flush_buffer_range :: Bool
+gl_APPLE_flush_buffer_range = member "GL_APPLE_flush_buffer_range" extensions
+
+glBufferParameteriAPPLE :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glBufferParameteriAPPLE = ffienumenumintIOV glBufferParameteriAPPLEFunPtr
+
+glBufferParameteriAPPLEFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glBufferParameteriAPPLEFunPtr = unsafePerformIO (getProcAddress "glBufferParameteriAPPLE")
+
+{-# NOINLINE glBufferParameteriAPPLEFunPtr #-}
+
+glFlushMappedBufferRangeAPPLE :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> m ()
+glFlushMappedBufferRangeAPPLE = ffienumintptrsizeiptrIOV glFlushMappedBufferRangeAPPLEFunPtr
+
+glFlushMappedBufferRangeAPPLEFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> IO ())
+glFlushMappedBufferRangeAPPLEFunPtr = unsafePerformIO (getProcAddress "glFlushMappedBufferRangeAPPLE")
+
+{-# NOINLINE glFlushMappedBufferRangeAPPLEFunPtr #-}
+
+pattern GL_BUFFER_FLUSHING_UNMAP_APPLE = 0x8A13 :: GLenum
+
+pattern GL_BUFFER_SERIALIZED_MODIFY_APPLE = 0x8A12 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FramebufferMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FramebufferMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/FramebufferMultisample.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.FramebufferMultisample (
+  -- * Extension Support
+    gl_APPLE_framebuffer_multisample
+
+  -- * GL_APPLE_framebuffer_multisample
+  , glRenderbufferStorageMultisampleAPPLE
+  , glResolveMultisampleFramebufferAPPLE
+  , pattern GL_DRAW_FRAMEBUFFER_APPLE
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING_APPLE
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE
+  , pattern GL_MAX_SAMPLES_APPLE
+  , pattern GL_READ_FRAMEBUFFER_APPLE
+  , pattern GL_READ_FRAMEBUFFER_BINDING_APPLE
+  , pattern GL_RENDERBUFFER_SAMPLES_APPLE
+) 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_APPLE_framebuffer_multisample :: Bool
+gl_APPLE_framebuffer_multisample = member "GL_APPLE_framebuffer_multisample" extensions
+
+glRenderbufferStorageMultisampleAPPLE :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+glRenderbufferStorageMultisampleAPPLE = ffienumsizeienumsizeisizeiIOV glRenderbufferStorageMultisampleAPPLEFunPtr
+
+glRenderbufferStorageMultisampleAPPLEFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+glRenderbufferStorageMultisampleAPPLEFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageMultisampleAPPLE")
+
+{-# NOINLINE glRenderbufferStorageMultisampleAPPLEFunPtr #-}
+
+glResolveMultisampleFramebufferAPPLE :: MonadIO m => m ()
+glResolveMultisampleFramebufferAPPLE = ffiIOV glResolveMultisampleFramebufferAPPLEFunPtr
+
+glResolveMultisampleFramebufferAPPLEFunPtr :: FunPtr (IO ())
+glResolveMultisampleFramebufferAPPLEFunPtr = unsafePerformIO (getProcAddress "glResolveMultisampleFramebufferAPPLE")
+
+{-# NOINLINE glResolveMultisampleFramebufferAPPLEFunPtr #-}
+
+pattern GL_DRAW_FRAMEBUFFER_APPLE = 0x8CA9 :: GLenum
+
+pattern GL_DRAW_FRAMEBUFFER_BINDING_APPLE = 0x8CA6 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE = 0x8D56 :: GLenum
+
+pattern GL_MAX_SAMPLES_APPLE = 0x8D57 :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_APPLE = 0x8CA8 :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_BINDING_APPLE = 0x8CAA :: GLenum
+
+pattern GL_RENDERBUFFER_SAMPLES_APPLE = 0x8CAB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ObjectPurgeable.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ObjectPurgeable.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/ObjectPurgeable.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.ObjectPurgeable (
+  -- * Extension Support
+    gl_APPLE_object_purgeable
+
+  -- * GL_APPLE_object_purgeable
+  , glGetObjectParameterivAPPLE
+  , glObjectPurgeableAPPLE
+  , glObjectUnpurgeableAPPLE
+  , pattern GL_BUFFER_OBJECT_APPLE
+  , pattern GL_PURGEABLE_APPLE
+  , pattern GL_RELEASED_APPLE
+  , pattern GL_RETAINED_APPLE
+  , pattern GL_UNDEFINED_APPLE
+  , pattern GL_VOLATILE_APPLE
+) 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_APPLE_object_purgeable :: Bool
+gl_APPLE_object_purgeable = member "GL_APPLE_object_purgeable" extensions
+
+glGetObjectParameterivAPPLE :: MonadIO m => GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
+glGetObjectParameterivAPPLE = ffienumuintenumPtrintIOV glGetObjectParameterivAPPLEFunPtr
+
+glGetObjectParameterivAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetObjectParameterivAPPLEFunPtr = unsafePerformIO (getProcAddress "glGetObjectParameterivAPPLE")
+
+{-# NOINLINE glGetObjectParameterivAPPLEFunPtr #-}
+
+glObjectPurgeableAPPLE :: MonadIO m => GLenum -> GLuint -> GLenum -> m GLenum
+glObjectPurgeableAPPLE = ffienumuintenumIOenum glObjectPurgeableAPPLEFunPtr
+
+glObjectPurgeableAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> IO GLenum)
+glObjectPurgeableAPPLEFunPtr = unsafePerformIO (getProcAddress "glObjectPurgeableAPPLE")
+
+{-# NOINLINE glObjectPurgeableAPPLEFunPtr #-}
+
+glObjectUnpurgeableAPPLE :: MonadIO m => GLenum -> GLuint -> GLenum -> m GLenum
+glObjectUnpurgeableAPPLE = ffienumuintenumIOenum glObjectUnpurgeableAPPLEFunPtr
+
+glObjectUnpurgeableAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> IO GLenum)
+glObjectUnpurgeableAPPLEFunPtr = unsafePerformIO (getProcAddress "glObjectUnpurgeableAPPLE")
+
+{-# NOINLINE glObjectUnpurgeableAPPLEFunPtr #-}
+
+pattern GL_BUFFER_OBJECT_APPLE = 0x85B3 :: GLenum
+
+pattern GL_PURGEABLE_APPLE = 0x8A1D :: GLenum
+
+pattern GL_RELEASED_APPLE = 0x8A19 :: GLenum
+
+pattern GL_RETAINED_APPLE = 0x8A1B :: GLenum
+
+pattern GL_UNDEFINED_APPLE = 0x8A1C :: GLenum
+
+pattern GL_VOLATILE_APPLE = 0x8A1A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Rgb422.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Rgb422.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Rgb422.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.Rgb422 (
+  -- * Extension Support
+    gl_APPLE_rgb_422
+
+  -- * GL_APPLE_rgb_422
+  , pattern GL_RGB_422_APPLE
+  , pattern GL_RGB_RAW_422_APPLE
+  , pattern GL_UNSIGNED_SHORT_8_8_APPLE
+  , pattern GL_UNSIGNED_SHORT_8_8_REV_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_APPLE_rgb_422 :: Bool
+gl_APPLE_rgb_422 = member "GL_APPLE_rgb_422" extensions
+
+pattern GL_RGB_422_APPLE = 0x8A1F :: GLenum
+
+pattern GL_RGB_RAW_422_APPLE = 0x8A51 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/RowBytes.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/RowBytes.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/RowBytes.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.RowBytes (
+  -- * Extension Support
+    gl_APPLE_row_bytes
+
+  -- * GL_APPLE_row_bytes
+  , pattern GL_PACK_ROW_BYTES_APPLE
+  , pattern GL_UNPACK_ROW_BYTES_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_row_bytes :: Bool
+gl_APPLE_row_bytes = member "GL_APPLE_row_bytes" extensions
+
+pattern GL_PACK_ROW_BYTES_APPLE = 0x8A15 :: GLenum
+
+pattern GL_UNPACK_ROW_BYTES_APPLE = 0x8A16 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/SpecularVector.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/SpecularVector.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/SpecularVector.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.SpecularVector (
+  -- * Extension Support
+    gl_APPLE_specular_vector
+
+  -- * GL_APPLE_specular_vector
+  , pattern GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_specular_vector :: Bool
+gl_APPLE_specular_vector = member "GL_APPLE_specular_vector" extensions
+
+pattern GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE = 0x85B0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Sync.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Sync.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Sync.hs
@@ -0,0 +1,130 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.Sync (
+  -- * Extension Support
+    gl_APPLE_sync
+
+  -- * GL_APPLE_sync
+  , glClientWaitSyncAPPLE
+  , glDeleteSyncAPPLE
+  , glFenceSyncAPPLE
+  , glGetInteger64vAPPLE
+  , glGetSyncivAPPLE
+  , glIsSyncAPPLE
+  , glWaitSyncAPPLE
+  , pattern GL_ALREADY_SIGNALED_APPLE
+  , pattern GL_CONDITION_SATISFIED_APPLE
+  , pattern GL_MAX_SERVER_WAIT_TIMEOUT_APPLE
+  , pattern GL_OBJECT_TYPE_APPLE
+  , pattern GL_SIGNALED_APPLE
+  , pattern GL_SYNC_CONDITION_APPLE
+  , pattern GL_SYNC_FENCE_APPLE
+  , pattern GL_SYNC_FLAGS_APPLE
+  , pattern GL_SYNC_FLUSH_COMMANDS_BIT_APPLE
+  , pattern GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE
+  , pattern GL_SYNC_OBJECT_APPLE
+  , pattern GL_SYNC_STATUS_APPLE
+  , pattern GL_TIMEOUT_EXPIRED_APPLE
+  , pattern GL_TIMEOUT_IGNORED_APPLE
+  , pattern GL_UNSIGNALED_APPLE
+  , pattern GL_WAIT_FAILED_APPLE
+) 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_APPLE_sync :: Bool
+gl_APPLE_sync = member "GL_APPLE_sync" extensions
+
+glClientWaitSyncAPPLE :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m GLenum
+glClientWaitSyncAPPLE = ffisyncbitfielduint64IOenum glClientWaitSyncAPPLEFunPtr
+
+glClientWaitSyncAPPLEFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLenum)
+glClientWaitSyncAPPLEFunPtr = unsafePerformIO (getProcAddress "glClientWaitSyncAPPLE")
+
+{-# NOINLINE glClientWaitSyncAPPLEFunPtr #-}
+
+glDeleteSyncAPPLE :: MonadIO m => GLsync -> m ()
+glDeleteSyncAPPLE = ffisyncIOV glDeleteSyncAPPLEFunPtr
+
+glDeleteSyncAPPLEFunPtr :: FunPtr (GLsync -> IO ())
+glDeleteSyncAPPLEFunPtr = unsafePerformIO (getProcAddress "glDeleteSyncAPPLE")
+
+{-# NOINLINE glDeleteSyncAPPLEFunPtr #-}
+
+glFenceSyncAPPLE :: MonadIO m => GLenum -> GLbitfield -> m GLsync
+glFenceSyncAPPLE = ffienumbitfieldIOsync glFenceSyncAPPLEFunPtr
+
+glFenceSyncAPPLEFunPtr :: FunPtr (GLenum -> GLbitfield -> IO GLsync)
+glFenceSyncAPPLEFunPtr = unsafePerformIO (getProcAddress "glFenceSyncAPPLE")
+
+{-# NOINLINE glFenceSyncAPPLEFunPtr #-}
+
+glGetInteger64vAPPLE :: MonadIO m => GLenum -> Ptr GLint64 -> m ()
+glGetInteger64vAPPLE = ffienumPtrint64IOV glGetInteger64vAPPLEFunPtr
+
+glGetInteger64vAPPLEFunPtr :: FunPtr (GLenum -> Ptr GLint64 -> IO ())
+glGetInteger64vAPPLEFunPtr = unsafePerformIO (getProcAddress "glGetInteger64vAPPLE")
+
+{-# NOINLINE glGetInteger64vAPPLEFunPtr #-}
+
+glGetSyncivAPPLE :: MonadIO m => GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
+glGetSyncivAPPLE = ffisyncenumsizeiPtrsizeiPtrintIOV glGetSyncivAPPLEFunPtr
+
+glGetSyncivAPPLEFunPtr :: FunPtr (GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ())
+glGetSyncivAPPLEFunPtr = unsafePerformIO (getProcAddress "glGetSyncivAPPLE")
+
+{-# NOINLINE glGetSyncivAPPLEFunPtr #-}
+
+glIsSyncAPPLE :: MonadIO m => GLsync -> m GLboolean
+glIsSyncAPPLE = ffisyncIOboolean glIsSyncAPPLEFunPtr
+
+glIsSyncAPPLEFunPtr :: FunPtr (GLsync -> IO GLboolean)
+glIsSyncAPPLEFunPtr = unsafePerformIO (getProcAddress "glIsSyncAPPLE")
+
+{-# NOINLINE glIsSyncAPPLEFunPtr #-}
+
+glWaitSyncAPPLE :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m ()
+glWaitSyncAPPLE = ffisyncbitfielduint64IOV glWaitSyncAPPLEFunPtr
+
+glWaitSyncAPPLEFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
+glWaitSyncAPPLEFunPtr = unsafePerformIO (getProcAddress "glWaitSyncAPPLE")
+
+{-# NOINLINE glWaitSyncAPPLEFunPtr #-}
+
+pattern GL_ALREADY_SIGNALED_APPLE = 0x911A :: GLenum
+
+pattern GL_CONDITION_SATISFIED_APPLE = 0x911C :: GLenum
+
+pattern GL_MAX_SERVER_WAIT_TIMEOUT_APPLE = 0x9111 :: GLenum
+
+pattern GL_OBJECT_TYPE_APPLE = 0x9112 :: GLenum
+
+pattern GL_SIGNALED_APPLE = 0x9119 :: GLenum
+
+pattern GL_SYNC_CONDITION_APPLE = 0x9113 :: GLenum
+
+pattern GL_SYNC_FENCE_APPLE = 0x9116 :: GLenum
+
+pattern GL_SYNC_FLAGS_APPLE = 0x9115 :: GLenum
+
+pattern GL_SYNC_FLUSH_COMMANDS_BIT_APPLE = 0x00000001 :: GLenum
+
+pattern GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE = 0x9117 :: GLenum
+
+pattern GL_SYNC_OBJECT_APPLE = 0x8A53 :: GLenum
+
+pattern GL_SYNC_STATUS_APPLE = 0x9114 :: GLenum
+
+pattern GL_TIMEOUT_EXPIRED_APPLE = 0x911B :: GLenum
+
+pattern GL_TIMEOUT_IGNORED_APPLE = 0xFFFFFFFFFFFFFFFF :: GLenum
+
+pattern GL_UNSIGNALED_APPLE = 0x9118 :: GLenum
+
+pattern GL_WAIT_FAILED_APPLE = 0x911D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Texture2DLimitedNpot.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Texture2DLimitedNpot.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Texture2DLimitedNpot.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.Texture2DLimitedNpot (
+  -- * Extension Support
+    gl_APPLE_texture_2D_limited_npot
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_APPLE_texture_2D_limited_npot :: Bool
+gl_APPLE_texture_2D_limited_npot = member "GL_APPLE_texture_2D_limited_npot" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureFormatBGRA8888.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureFormatBGRA8888.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureFormatBGRA8888.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.TextureFormatBGRA8888 (
+  -- * Extension Support
+    gl_APPLE_texture_format_BGRA8888
+
+  -- * GL_APPLE_texture_format_BGRA8888
+  , pattern GL_BGRA8_EXT
+  , pattern GL_BGRA_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_APPLE_texture_format_BGRA8888 :: Bool
+gl_APPLE_texture_format_BGRA8888 = member "GL_APPLE_texture_format_BGRA8888" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureMaxLevel.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureMaxLevel.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureMaxLevel.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.TextureMaxLevel (
+  -- * Extension Support
+    gl_APPLE_texture_max_level
+
+  -- * GL_APPLE_texture_max_level
+  , pattern GL_TEXTURE_MAX_LEVEL_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_texture_max_level :: Bool
+gl_APPLE_texture_max_level = member "GL_APPLE_texture_max_level" extensions
+
+pattern GL_TEXTURE_MAX_LEVEL_APPLE = 0x813D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TexturePackedFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TexturePackedFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TexturePackedFloat.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.TexturePackedFloat (
+  -- * Extension Support
+    gl_APPLE_texture_packed_float
+
+  -- * GL_APPLE_texture_packed_float
+  , pattern GL_R11F_G11F_B10F_APPLE
+  , pattern GL_RGB9_E5_APPLE
+  , pattern GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE
+  , pattern GL_UNSIGNED_INT_5_9_9_9_REV_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_texture_packed_float :: Bool
+gl_APPLE_texture_packed_float = member "GL_APPLE_texture_packed_float" extensions
+
+pattern GL_R11F_G11F_B10F_APPLE = 0x8C3A :: GLenum
+
+pattern GL_RGB9_E5_APPLE = 0x8C3D :: GLenum
+
+pattern GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE = 0x8C3B :: GLenum
+
+pattern GL_UNSIGNED_INT_5_9_9_9_REV_APPLE = 0x8C3E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TextureRange.hs
@@ -0,0 +1,52 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.TextureRange (
+  -- * Extension Support
+    gl_APPLE_texture_range
+
+  -- * GL_APPLE_texture_range
+  , glGetTexParameterPointervAPPLE
+  , glTextureRangeAPPLE
+  , pattern GL_STORAGE_CACHED_APPLE
+  , pattern GL_STORAGE_PRIVATE_APPLE
+  , pattern GL_STORAGE_SHARED_APPLE
+  , pattern GL_TEXTURE_RANGE_LENGTH_APPLE
+  , pattern GL_TEXTURE_RANGE_POINTER_APPLE
+  , pattern GL_TEXTURE_STORAGE_HINT_APPLE
+) 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_APPLE_texture_range :: Bool
+gl_APPLE_texture_range = member "GL_APPLE_texture_range" extensions
+
+glGetTexParameterPointervAPPLE :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
+glGetTexParameterPointervAPPLE = ffienumenumPtrVIOV glGetTexParameterPointervAPPLEFunPtr
+
+glGetTexParameterPointervAPPLEFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
+glGetTexParameterPointervAPPLEFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterPointervAPPLE")
+
+{-# NOINLINE glGetTexParameterPointervAPPLEFunPtr #-}
+
+glTextureRangeAPPLE :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
+glTextureRangeAPPLE = ffienumsizeiPtrVIOV glTextureRangeAPPLEFunPtr
+
+glTextureRangeAPPLEFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
+glTextureRangeAPPLEFunPtr = unsafePerformIO (getProcAddress "glTextureRangeAPPLE")
+
+{-# NOINLINE glTextureRangeAPPLEFunPtr #-}
+
+pattern GL_STORAGE_PRIVATE_APPLE = 0x85BD :: GLenum
+
+pattern GL_TEXTURE_RANGE_LENGTH_APPLE = 0x85B7 :: GLenum
+
+pattern GL_TEXTURE_RANGE_POINTER_APPLE = 0x85B8 :: GLenum
+
+pattern GL_TEXTURE_STORAGE_HINT_APPLE = 0x85BC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TransformHint.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TransformHint.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/TransformHint.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.TransformHint (
+  -- * Extension Support
+    gl_APPLE_transform_hint
+
+  -- * GL_APPLE_transform_hint
+  , pattern GL_TRANSFORM_HINT_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_APPLE_transform_hint :: Bool
+gl_APPLE_transform_hint = member "GL_APPLE_transform_hint" extensions
+
+pattern GL_TRANSFORM_HINT_APPLE = 0x85B1 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexArrayObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexArrayObject.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.VertexArrayObject (
+  -- * Extension Support
+    gl_APPLE_vertex_array_object
+
+  -- * GL_APPLE_vertex_array_object
+  , glBindVertexArrayAPPLE
+  , glDeleteVertexArraysAPPLE
+  , glGenVertexArraysAPPLE
+  , glIsVertexArrayAPPLE
+  , pattern GL_VERTEX_ARRAY_BINDING_APPLE
+) 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_APPLE_vertex_array_object :: Bool
+gl_APPLE_vertex_array_object = member "GL_APPLE_vertex_array_object" extensions
+
+glBindVertexArrayAPPLE :: MonadIO m => GLuint -> m ()
+glBindVertexArrayAPPLE = ffiuintIOV glBindVertexArrayAPPLEFunPtr
+
+glBindVertexArrayAPPLEFunPtr :: FunPtr (GLuint -> IO ())
+glBindVertexArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glBindVertexArrayAPPLE")
+
+{-# NOINLINE glBindVertexArrayAPPLEFunPtr #-}
+
+glDeleteVertexArraysAPPLE :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteVertexArraysAPPLE = ffisizeiPtruintIOV glDeleteVertexArraysAPPLEFunPtr
+
+glDeleteVertexArraysAPPLEFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteVertexArraysAPPLEFunPtr = unsafePerformIO (getProcAddress "glDeleteVertexArraysAPPLE")
+
+{-# NOINLINE glDeleteVertexArraysAPPLEFunPtr #-}
+
+glGenVertexArraysAPPLE :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenVertexArraysAPPLE = ffisizeiPtruintIOV glGenVertexArraysAPPLEFunPtr
+
+glGenVertexArraysAPPLEFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenVertexArraysAPPLEFunPtr = unsafePerformIO (getProcAddress "glGenVertexArraysAPPLE")
+
+{-# NOINLINE glGenVertexArraysAPPLEFunPtr #-}
+
+glIsVertexArrayAPPLE :: MonadIO m => GLuint -> m GLboolean
+glIsVertexArrayAPPLE = ffiuintIOboolean glIsVertexArrayAPPLEFunPtr
+
+glIsVertexArrayAPPLEFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsVertexArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glIsVertexArrayAPPLE")
+
+{-# NOINLINE glIsVertexArrayAPPLEFunPtr #-}
+
+pattern GL_VERTEX_ARRAY_BINDING_APPLE = 0x85B5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexArrayRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexArrayRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexArrayRange.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.VertexArrayRange (
+  -- * Extension Support
+    gl_APPLE_vertex_array_range
+
+  -- * GL_APPLE_vertex_array_range
+  , glFlushVertexArrayRangeAPPLE
+  , glVertexArrayParameteriAPPLE
+  , glVertexArrayRangeAPPLE
+  , pattern GL_STORAGE_CACHED_APPLE
+  , pattern GL_STORAGE_CLIENT_APPLE
+  , pattern GL_STORAGE_SHARED_APPLE
+  , pattern GL_VERTEX_ARRAY_RANGE_APPLE
+  , pattern GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE
+  , pattern GL_VERTEX_ARRAY_RANGE_POINTER_APPLE
+  , pattern GL_VERTEX_ARRAY_STORAGE_HINT_APPLE
+) 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_APPLE_vertex_array_range :: Bool
+gl_APPLE_vertex_array_range = member "GL_APPLE_vertex_array_range" extensions
+
+glFlushVertexArrayRangeAPPLE :: MonadIO m => GLsizei -> Ptr () -> m ()
+glFlushVertexArrayRangeAPPLE = ffisizeiPtrVIOV glFlushVertexArrayRangeAPPLEFunPtr
+
+glFlushVertexArrayRangeAPPLEFunPtr :: FunPtr (GLsizei -> Ptr () -> IO ())
+glFlushVertexArrayRangeAPPLEFunPtr = unsafePerformIO (getProcAddress "glFlushVertexArrayRangeAPPLE")
+
+{-# NOINLINE glFlushVertexArrayRangeAPPLEFunPtr #-}
+
+glVertexArrayParameteriAPPLE :: MonadIO m => GLenum -> GLint -> m ()
+glVertexArrayParameteriAPPLE = ffienumintIOV glVertexArrayParameteriAPPLEFunPtr
+
+glVertexArrayParameteriAPPLEFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glVertexArrayParameteriAPPLEFunPtr = unsafePerformIO (getProcAddress "glVertexArrayParameteriAPPLE")
+
+{-# NOINLINE glVertexArrayParameteriAPPLEFunPtr #-}
+
+glVertexArrayRangeAPPLE :: MonadIO m => GLsizei -> Ptr () -> m ()
+glVertexArrayRangeAPPLE = ffisizeiPtrVIOV glVertexArrayRangeAPPLEFunPtr
+
+glVertexArrayRangeAPPLEFunPtr :: FunPtr (GLsizei -> Ptr () -> IO ())
+glVertexArrayRangeAPPLEFunPtr = unsafePerformIO (getProcAddress "glVertexArrayRangeAPPLE")
+
+{-# NOINLINE glVertexArrayRangeAPPLEFunPtr #-}
+
+pattern GL_STORAGE_CLIENT_APPLE = 0x85B4 :: GLenum
+
+pattern GL_VERTEX_ARRAY_RANGE_APPLE = 0x851D :: GLenum
+
+pattern GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x851E :: GLenum
+
+pattern GL_VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x8521 :: GLenum
+
+pattern GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexProgramEvaluators.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexProgramEvaluators.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/VertexProgramEvaluators.hs
@@ -0,0 +1,112 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.VertexProgramEvaluators (
+  -- * Extension Support
+    gl_APPLE_vertex_program_evaluators
+
+  -- * GL_APPLE_vertex_program_evaluators
+  , glDisableVertexAttribAPPLE
+  , glEnableVertexAttribAPPLE
+  , glIsVertexAttribEnabledAPPLE
+  , glMapVertexAttrib1dAPPLE
+  , glMapVertexAttrib1fAPPLE
+  , glMapVertexAttrib2dAPPLE
+  , glMapVertexAttrib2fAPPLE
+  , pattern GL_VERTEX_ATTRIB_MAP1_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP2_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE
+  , pattern GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE
+) 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_APPLE_vertex_program_evaluators :: Bool
+gl_APPLE_vertex_program_evaluators = member "GL_APPLE_vertex_program_evaluators" extensions
+
+glDisableVertexAttribAPPLE :: MonadIO m => GLuint -> GLenum -> m ()
+glDisableVertexAttribAPPLE = ffiuintenumIOV glDisableVertexAttribAPPLEFunPtr
+
+glDisableVertexAttribAPPLEFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glDisableVertexAttribAPPLEFunPtr = unsafePerformIO (getProcAddress "glDisableVertexAttribAPPLE")
+
+{-# NOINLINE glDisableVertexAttribAPPLEFunPtr #-}
+
+glEnableVertexAttribAPPLE :: MonadIO m => GLuint -> GLenum -> m ()
+glEnableVertexAttribAPPLE = ffiuintenumIOV glEnableVertexAttribAPPLEFunPtr
+
+glEnableVertexAttribAPPLEFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glEnableVertexAttribAPPLEFunPtr = unsafePerformIO (getProcAddress "glEnableVertexAttribAPPLE")
+
+{-# NOINLINE glEnableVertexAttribAPPLEFunPtr #-}
+
+glIsVertexAttribEnabledAPPLE :: MonadIO m => GLuint -> GLenum -> m GLboolean
+glIsVertexAttribEnabledAPPLE = ffiuintenumIOboolean glIsVertexAttribEnabledAPPLEFunPtr
+
+glIsVertexAttribEnabledAPPLEFunPtr :: FunPtr (GLuint -> GLenum -> IO GLboolean)
+glIsVertexAttribEnabledAPPLEFunPtr = unsafePerformIO (getProcAddress "glIsVertexAttribEnabledAPPLE")
+
+{-# NOINLINE glIsVertexAttribEnabledAPPLEFunPtr #-}
+
+glMapVertexAttrib1dAPPLE :: MonadIO m => GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+glMapVertexAttrib1dAPPLE = ffiuintuintdoubledoubleintintPtrdoubleIOV glMapVertexAttrib1dAPPLEFunPtr
+
+glMapVertexAttrib1dAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
+glMapVertexAttrib1dAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib1dAPPLE")
+
+{-# NOINLINE glMapVertexAttrib1dAPPLEFunPtr #-}
+
+glMapVertexAttrib1fAPPLE :: MonadIO m => GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+glMapVertexAttrib1fAPPLE = ffiuintuintfloatfloatintintPtrfloatIOV glMapVertexAttrib1fAPPLEFunPtr
+
+glMapVertexAttrib1fAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
+glMapVertexAttrib1fAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib1fAPPLE")
+
+{-# NOINLINE glMapVertexAttrib1fAPPLEFunPtr #-}
+
+glMapVertexAttrib2dAPPLE :: MonadIO m => GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+glMapVertexAttrib2dAPPLE = ffiuintuintdoubledoubleintintdoubledoubleintintPtrdoubleIOV glMapVertexAttrib2dAPPLEFunPtr
+
+glMapVertexAttrib2dAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
+glMapVertexAttrib2dAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib2dAPPLE")
+
+{-# NOINLINE glMapVertexAttrib2dAPPLEFunPtr #-}
+
+glMapVertexAttrib2fAPPLE :: MonadIO m => GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+glMapVertexAttrib2fAPPLE = ffiuintuintfloatfloatintintfloatfloatintintPtrfloatIOV glMapVertexAttrib2fAPPLEFunPtr
+
+glMapVertexAttrib2fAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
+glMapVertexAttrib2fAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib2fAPPLE")
+
+{-# NOINLINE glMapVertexAttrib2fAPPLEFunPtr #-}
+
+pattern GL_VERTEX_ATTRIB_MAP1_APPLE = 0x8A00 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x8A03 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x8A05 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x8A04 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x8A02 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP2_APPLE = 0x8A01 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x8A07 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x8A09 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x8A08 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x8A06 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Ycbcr422.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Ycbcr422.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/APPLE/Ycbcr422.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.APPLE.Ycbcr422 (
+  -- * Extension Support
+    gl_APPLE_ycbcr_422
+
+  -- * GL_APPLE_ycbcr_422
+  , pattern GL_UNSIGNED_SHORT_8_8_APPLE
+  , pattern GL_UNSIGNED_SHORT_8_8_REV_APPLE
+  , pattern GL_YCBCR_422_APPLE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_APPLE_ycbcr_422 :: Bool
+gl_APPLE_ycbcr_422 = member "GL_APPLE_ycbcr_422" extensions
+
+pattern GL_YCBCR_422_APPLE = 0x85B9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB.hs
@@ -0,0 +1,314 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB (
+  -- * ARB Extensions
+    module Graphics.GL.Raw.Extension.ARB.ArraysOfArrays
+  , module Graphics.GL.Raw.Extension.ARB.BaseInstance
+  , module Graphics.GL.Raw.Extension.ARB.BindlessTexture
+  , module Graphics.GL.Raw.Extension.ARB.BlendFuncExtended
+  , module Graphics.GL.Raw.Extension.ARB.BufferStorage
+  , module Graphics.GL.Raw.Extension.ARB.ClEvent
+  , module Graphics.GL.Raw.Extension.ARB.ClearBufferObject
+  , module Graphics.GL.Raw.Extension.ARB.ClearTexture
+  , module Graphics.GL.Raw.Extension.ARB.ClipControl
+  , module Graphics.GL.Raw.Extension.ARB.ColorBufferFloat
+  , module Graphics.GL.Raw.Extension.ARB.Compatibility
+  , module Graphics.GL.Raw.Extension.ARB.CompressedTexturePixelStorage
+  , module Graphics.GL.Raw.Extension.ARB.ComputeShader
+  , module Graphics.GL.Raw.Extension.ARB.ComputeVariableGroupSize
+  , module Graphics.GL.Raw.Extension.ARB.ConditionalRenderInverted
+  , module Graphics.GL.Raw.Extension.ARB.ConservativeDepth
+  , module Graphics.GL.Raw.Extension.ARB.CopyBuffer
+  , module Graphics.GL.Raw.Extension.ARB.CopyImage
+  , module Graphics.GL.Raw.Extension.ARB.CullDistance
+  , module Graphics.GL.Raw.Extension.ARB.DebugOutput
+  , module Graphics.GL.Raw.Extension.ARB.DepthBufferFloat
+  , module Graphics.GL.Raw.Extension.ARB.DepthClamp
+  , module Graphics.GL.Raw.Extension.ARB.DepthTexture
+  , module Graphics.GL.Raw.Extension.ARB.DerivativeControl
+  , module Graphics.GL.Raw.Extension.ARB.DirectStateAccess
+  , module Graphics.GL.Raw.Extension.ARB.DrawBuffers
+  , module Graphics.GL.Raw.Extension.ARB.DrawBuffersBlend
+  , module Graphics.GL.Raw.Extension.ARB.DrawElementsBaseVertex
+  , module Graphics.GL.Raw.Extension.ARB.DrawIndirect
+  , module Graphics.GL.Raw.Extension.ARB.DrawInstanced
+  , module Graphics.GL.Raw.Extension.ARB.ES2Compatibility
+  , module Graphics.GL.Raw.Extension.ARB.ES31Compatibility
+  , module Graphics.GL.Raw.Extension.ARB.ES3Compatibility
+  , module Graphics.GL.Raw.Extension.ARB.EnhancedLayouts
+  , module Graphics.GL.Raw.Extension.ARB.ExplicitAttribLocation
+  , module Graphics.GL.Raw.Extension.ARB.ExplicitUniformLocation
+  , module Graphics.GL.Raw.Extension.ARB.FragmentCoordConventions
+  , module Graphics.GL.Raw.Extension.ARB.FragmentLayerViewport
+  , module Graphics.GL.Raw.Extension.ARB.FragmentProgram
+  , module Graphics.GL.Raw.Extension.ARB.FragmentProgramShadow
+  , module Graphics.GL.Raw.Extension.ARB.FragmentShader
+  , module Graphics.GL.Raw.Extension.ARB.FramebufferNoAttachments
+  , module Graphics.GL.Raw.Extension.ARB.FramebufferObject
+  , module Graphics.GL.Raw.Extension.ARB.FramebufferSRGB
+  , module Graphics.GL.Raw.Extension.ARB.GeometryShader4
+  , module Graphics.GL.Raw.Extension.ARB.GetProgramBinary
+  , module Graphics.GL.Raw.Extension.ARB.GetTextureSubImage
+  , module Graphics.GL.Raw.Extension.ARB.GpuShader5
+  , module Graphics.GL.Raw.Extension.ARB.GpuShaderFp64
+  , module Graphics.GL.Raw.Extension.ARB.HalfFloatPixel
+  , module Graphics.GL.Raw.Extension.ARB.HalfFloatVertex
+  , module Graphics.GL.Raw.Extension.ARB.Imaging
+  , module Graphics.GL.Raw.Extension.ARB.IndirectParameters
+  , module Graphics.GL.Raw.Extension.ARB.InstancedArrays
+  , module Graphics.GL.Raw.Extension.ARB.InternalformatQuery
+  , module Graphics.GL.Raw.Extension.ARB.InternalformatQuery2
+  , module Graphics.GL.Raw.Extension.ARB.InvalidateSubdata
+  , module Graphics.GL.Raw.Extension.ARB.MapBufferAlignment
+  , module Graphics.GL.Raw.Extension.ARB.MapBufferRange
+  , module Graphics.GL.Raw.Extension.ARB.MatrixPalette
+  , module Graphics.GL.Raw.Extension.ARB.MultiBind
+  , module Graphics.GL.Raw.Extension.ARB.MultiDrawIndirect
+  , module Graphics.GL.Raw.Extension.ARB.Multisample
+  , module Graphics.GL.Raw.Extension.ARB.Multitexture
+  , module Graphics.GL.Raw.Extension.ARB.OcclusionQuery
+  , module Graphics.GL.Raw.Extension.ARB.OcclusionQuery2
+  , module Graphics.GL.Raw.Extension.ARB.PipelineStatisticsQuery
+  , module Graphics.GL.Raw.Extension.ARB.PixelBufferObject
+  , module Graphics.GL.Raw.Extension.ARB.PointParameters
+  , module Graphics.GL.Raw.Extension.ARB.PointSprite
+  , module Graphics.GL.Raw.Extension.ARB.ProgramInterfaceQuery
+  , module Graphics.GL.Raw.Extension.ARB.ProvokingVertex
+  , module Graphics.GL.Raw.Extension.ARB.QueryBufferObject
+  , module Graphics.GL.Raw.Extension.ARB.RobustBufferAccessBehavior
+  , module Graphics.GL.Raw.Extension.ARB.Robustness
+  , module Graphics.GL.Raw.Extension.ARB.RobustnessIsolation
+  , module Graphics.GL.Raw.Extension.ARB.SampleShading
+  , module Graphics.GL.Raw.Extension.ARB.SamplerObjects
+  , module Graphics.GL.Raw.Extension.ARB.SeamlessCubeMap
+  , module Graphics.GL.Raw.Extension.ARB.SeamlessCubemapPerTexture
+  , module Graphics.GL.Raw.Extension.ARB.SeparateShaderObjects
+  , module Graphics.GL.Raw.Extension.ARB.ShaderAtomicCounters
+  , module Graphics.GL.Raw.Extension.ARB.ShaderBitEncoding
+  , module Graphics.GL.Raw.Extension.ARB.ShaderDrawParameters
+  , module Graphics.GL.Raw.Extension.ARB.ShaderGroupVote
+  , module Graphics.GL.Raw.Extension.ARB.ShaderImageLoadStore
+  , module Graphics.GL.Raw.Extension.ARB.ShaderImageSize
+  , module Graphics.GL.Raw.Extension.ARB.ShaderObjects
+  , module Graphics.GL.Raw.Extension.ARB.ShaderPrecision
+  , module Graphics.GL.Raw.Extension.ARB.ShaderStencilExport
+  , module Graphics.GL.Raw.Extension.ARB.ShaderStorageBufferObject
+  , module Graphics.GL.Raw.Extension.ARB.ShaderSubroutine
+  , module Graphics.GL.Raw.Extension.ARB.ShaderTextureImageSamples
+  , module Graphics.GL.Raw.Extension.ARB.ShaderTextureLod
+  , module Graphics.GL.Raw.Extension.ARB.ShadingLanguage100
+  , module Graphics.GL.Raw.Extension.ARB.ShadingLanguage420pack
+  , module Graphics.GL.Raw.Extension.ARB.ShadingLanguageInclude
+  , module Graphics.GL.Raw.Extension.ARB.ShadingLanguagePacking
+  , module Graphics.GL.Raw.Extension.ARB.Shadow
+  , module Graphics.GL.Raw.Extension.ARB.ShadowAmbient
+  , module Graphics.GL.Raw.Extension.ARB.SparseBuffer
+  , module Graphics.GL.Raw.Extension.ARB.SparseTexture
+  , module Graphics.GL.Raw.Extension.ARB.StencilTexturing
+  , module Graphics.GL.Raw.Extension.ARB.Sync
+  , module Graphics.GL.Raw.Extension.ARB.TessellationShader
+  , module Graphics.GL.Raw.Extension.ARB.TextureBarrier
+  , module Graphics.GL.Raw.Extension.ARB.TextureBorderClamp
+  , module Graphics.GL.Raw.Extension.ARB.TextureBufferObject
+  , module Graphics.GL.Raw.Extension.ARB.TextureBufferObjectRgb32
+  , module Graphics.GL.Raw.Extension.ARB.TextureBufferRange
+  , module Graphics.GL.Raw.Extension.ARB.TextureCompression
+  , module Graphics.GL.Raw.Extension.ARB.TextureCompressionBptc
+  , module Graphics.GL.Raw.Extension.ARB.TextureCompressionRgtc
+  , module Graphics.GL.Raw.Extension.ARB.TextureCubeMap
+  , module Graphics.GL.Raw.Extension.ARB.TextureCubeMapArray
+  , module Graphics.GL.Raw.Extension.ARB.TextureEnvAdd
+  , module Graphics.GL.Raw.Extension.ARB.TextureEnvCombine
+  , module Graphics.GL.Raw.Extension.ARB.TextureEnvCrossbar
+  , module Graphics.GL.Raw.Extension.ARB.TextureEnvDot3
+  , module Graphics.GL.Raw.Extension.ARB.TextureFloat
+  , module Graphics.GL.Raw.Extension.ARB.TextureGather
+  , module Graphics.GL.Raw.Extension.ARB.TextureMirrorClampToEdge
+  , module Graphics.GL.Raw.Extension.ARB.TextureMirroredRepeat
+  , module Graphics.GL.Raw.Extension.ARB.TextureMultisample
+  , module Graphics.GL.Raw.Extension.ARB.TextureNonPowerOfTwo
+  , module Graphics.GL.Raw.Extension.ARB.TextureQueryLevels
+  , module Graphics.GL.Raw.Extension.ARB.TextureQueryLod
+  , module Graphics.GL.Raw.Extension.ARB.TextureRectangle
+  , module Graphics.GL.Raw.Extension.ARB.TextureRg
+  , module Graphics.GL.Raw.Extension.ARB.TextureRgb10A2ui
+  , module Graphics.GL.Raw.Extension.ARB.TextureStencil8
+  , module Graphics.GL.Raw.Extension.ARB.TextureStorage
+  , module Graphics.GL.Raw.Extension.ARB.TextureStorageMultisample
+  , module Graphics.GL.Raw.Extension.ARB.TextureSwizzle
+  , module Graphics.GL.Raw.Extension.ARB.TextureView
+  , module Graphics.GL.Raw.Extension.ARB.TimerQuery
+  , module Graphics.GL.Raw.Extension.ARB.TransformFeedback2
+  , module Graphics.GL.Raw.Extension.ARB.TransformFeedback3
+  , module Graphics.GL.Raw.Extension.ARB.TransformFeedbackInstanced
+  , module Graphics.GL.Raw.Extension.ARB.TransformFeedbackOverflowQuery
+  , module Graphics.GL.Raw.Extension.ARB.TransposeMatrix
+  , module Graphics.GL.Raw.Extension.ARB.UniformBufferObject
+  , module Graphics.GL.Raw.Extension.ARB.VertexArrayBgra
+  , module Graphics.GL.Raw.Extension.ARB.VertexArrayObject
+  , module Graphics.GL.Raw.Extension.ARB.VertexAttrib64bit
+  , module Graphics.GL.Raw.Extension.ARB.VertexAttribBinding
+  , module Graphics.GL.Raw.Extension.ARB.VertexBlend
+  , module Graphics.GL.Raw.Extension.ARB.VertexBufferObject
+  , module Graphics.GL.Raw.Extension.ARB.VertexProgram
+  , module Graphics.GL.Raw.Extension.ARB.VertexShader
+  , module Graphics.GL.Raw.Extension.ARB.VertexType10f11f11fRev
+  , module Graphics.GL.Raw.Extension.ARB.VertexType2101010Rev
+  , module Graphics.GL.Raw.Extension.ARB.ViewportArray
+  , module Graphics.GL.Raw.Extension.ARB.WindowPos
+) where
+
+import Graphics.GL.Raw.Extension.ARB.ArraysOfArrays
+import Graphics.GL.Raw.Extension.ARB.BaseInstance
+import Graphics.GL.Raw.Extension.ARB.BindlessTexture
+import Graphics.GL.Raw.Extension.ARB.BlendFuncExtended
+import Graphics.GL.Raw.Extension.ARB.BufferStorage
+import Graphics.GL.Raw.Extension.ARB.ClEvent
+import Graphics.GL.Raw.Extension.ARB.ClearBufferObject
+import Graphics.GL.Raw.Extension.ARB.ClearTexture
+import Graphics.GL.Raw.Extension.ARB.ClipControl
+import Graphics.GL.Raw.Extension.ARB.ColorBufferFloat
+import Graphics.GL.Raw.Extension.ARB.Compatibility
+import Graphics.GL.Raw.Extension.ARB.CompressedTexturePixelStorage
+import Graphics.GL.Raw.Extension.ARB.ComputeShader
+import Graphics.GL.Raw.Extension.ARB.ComputeVariableGroupSize
+import Graphics.GL.Raw.Extension.ARB.ConditionalRenderInverted
+import Graphics.GL.Raw.Extension.ARB.ConservativeDepth
+import Graphics.GL.Raw.Extension.ARB.CopyBuffer
+import Graphics.GL.Raw.Extension.ARB.CopyImage
+import Graphics.GL.Raw.Extension.ARB.CullDistance
+import Graphics.GL.Raw.Extension.ARB.DebugOutput
+import Graphics.GL.Raw.Extension.ARB.DepthBufferFloat
+import Graphics.GL.Raw.Extension.ARB.DepthClamp
+import Graphics.GL.Raw.Extension.ARB.DepthTexture
+import Graphics.GL.Raw.Extension.ARB.DerivativeControl
+import Graphics.GL.Raw.Extension.ARB.DirectStateAccess
+import Graphics.GL.Raw.Extension.ARB.DrawBuffers
+import Graphics.GL.Raw.Extension.ARB.DrawBuffersBlend
+import Graphics.GL.Raw.Extension.ARB.DrawElementsBaseVertex
+import Graphics.GL.Raw.Extension.ARB.DrawIndirect
+import Graphics.GL.Raw.Extension.ARB.DrawInstanced
+import Graphics.GL.Raw.Extension.ARB.ES2Compatibility
+import Graphics.GL.Raw.Extension.ARB.ES31Compatibility
+import Graphics.GL.Raw.Extension.ARB.ES3Compatibility
+import Graphics.GL.Raw.Extension.ARB.EnhancedLayouts
+import Graphics.GL.Raw.Extension.ARB.ExplicitAttribLocation
+import Graphics.GL.Raw.Extension.ARB.ExplicitUniformLocation
+import Graphics.GL.Raw.Extension.ARB.FragmentCoordConventions
+import Graphics.GL.Raw.Extension.ARB.FragmentLayerViewport
+import Graphics.GL.Raw.Extension.ARB.FragmentProgram
+import Graphics.GL.Raw.Extension.ARB.FragmentProgramShadow
+import Graphics.GL.Raw.Extension.ARB.FragmentShader
+import Graphics.GL.Raw.Extension.ARB.FramebufferNoAttachments
+import Graphics.GL.Raw.Extension.ARB.FramebufferObject
+import Graphics.GL.Raw.Extension.ARB.FramebufferSRGB
+import Graphics.GL.Raw.Extension.ARB.GeometryShader4
+import Graphics.GL.Raw.Extension.ARB.GetProgramBinary
+import Graphics.GL.Raw.Extension.ARB.GetTextureSubImage
+import Graphics.GL.Raw.Extension.ARB.GpuShader5
+import Graphics.GL.Raw.Extension.ARB.GpuShaderFp64
+import Graphics.GL.Raw.Extension.ARB.HalfFloatPixel
+import Graphics.GL.Raw.Extension.ARB.HalfFloatVertex
+import Graphics.GL.Raw.Extension.ARB.Imaging
+import Graphics.GL.Raw.Extension.ARB.IndirectParameters
+import Graphics.GL.Raw.Extension.ARB.InstancedArrays
+import Graphics.GL.Raw.Extension.ARB.InternalformatQuery
+import Graphics.GL.Raw.Extension.ARB.InternalformatQuery2
+import Graphics.GL.Raw.Extension.ARB.InvalidateSubdata
+import Graphics.GL.Raw.Extension.ARB.MapBufferAlignment
+import Graphics.GL.Raw.Extension.ARB.MapBufferRange
+import Graphics.GL.Raw.Extension.ARB.MatrixPalette
+import Graphics.GL.Raw.Extension.ARB.MultiBind
+import Graphics.GL.Raw.Extension.ARB.MultiDrawIndirect
+import Graphics.GL.Raw.Extension.ARB.Multisample
+import Graphics.GL.Raw.Extension.ARB.Multitexture
+import Graphics.GL.Raw.Extension.ARB.OcclusionQuery
+import Graphics.GL.Raw.Extension.ARB.OcclusionQuery2
+import Graphics.GL.Raw.Extension.ARB.PipelineStatisticsQuery
+import Graphics.GL.Raw.Extension.ARB.PixelBufferObject
+import Graphics.GL.Raw.Extension.ARB.PointParameters
+import Graphics.GL.Raw.Extension.ARB.PointSprite
+import Graphics.GL.Raw.Extension.ARB.ProgramInterfaceQuery
+import Graphics.GL.Raw.Extension.ARB.ProvokingVertex
+import Graphics.GL.Raw.Extension.ARB.QueryBufferObject
+import Graphics.GL.Raw.Extension.ARB.RobustBufferAccessBehavior
+import Graphics.GL.Raw.Extension.ARB.Robustness
+import Graphics.GL.Raw.Extension.ARB.RobustnessIsolation
+import Graphics.GL.Raw.Extension.ARB.SampleShading
+import Graphics.GL.Raw.Extension.ARB.SamplerObjects
+import Graphics.GL.Raw.Extension.ARB.SeamlessCubeMap
+import Graphics.GL.Raw.Extension.ARB.SeamlessCubemapPerTexture
+import Graphics.GL.Raw.Extension.ARB.SeparateShaderObjects
+import Graphics.GL.Raw.Extension.ARB.ShaderAtomicCounters
+import Graphics.GL.Raw.Extension.ARB.ShaderBitEncoding
+import Graphics.GL.Raw.Extension.ARB.ShaderDrawParameters
+import Graphics.GL.Raw.Extension.ARB.ShaderGroupVote
+import Graphics.GL.Raw.Extension.ARB.ShaderImageLoadStore
+import Graphics.GL.Raw.Extension.ARB.ShaderImageSize
+import Graphics.GL.Raw.Extension.ARB.ShaderObjects
+import Graphics.GL.Raw.Extension.ARB.ShaderPrecision
+import Graphics.GL.Raw.Extension.ARB.ShaderStencilExport
+import Graphics.GL.Raw.Extension.ARB.ShaderStorageBufferObject
+import Graphics.GL.Raw.Extension.ARB.ShaderSubroutine
+import Graphics.GL.Raw.Extension.ARB.ShaderTextureImageSamples
+import Graphics.GL.Raw.Extension.ARB.ShaderTextureLod
+import Graphics.GL.Raw.Extension.ARB.ShadingLanguage100
+import Graphics.GL.Raw.Extension.ARB.ShadingLanguage420pack
+import Graphics.GL.Raw.Extension.ARB.ShadingLanguageInclude
+import Graphics.GL.Raw.Extension.ARB.ShadingLanguagePacking
+import Graphics.GL.Raw.Extension.ARB.Shadow
+import Graphics.GL.Raw.Extension.ARB.ShadowAmbient
+import Graphics.GL.Raw.Extension.ARB.SparseBuffer
+import Graphics.GL.Raw.Extension.ARB.SparseTexture
+import Graphics.GL.Raw.Extension.ARB.StencilTexturing
+import Graphics.GL.Raw.Extension.ARB.Sync
+import Graphics.GL.Raw.Extension.ARB.TessellationShader
+import Graphics.GL.Raw.Extension.ARB.TextureBarrier
+import Graphics.GL.Raw.Extension.ARB.TextureBorderClamp
+import Graphics.GL.Raw.Extension.ARB.TextureBufferObject
+import Graphics.GL.Raw.Extension.ARB.TextureBufferObjectRgb32
+import Graphics.GL.Raw.Extension.ARB.TextureBufferRange
+import Graphics.GL.Raw.Extension.ARB.TextureCompression
+import Graphics.GL.Raw.Extension.ARB.TextureCompressionBptc
+import Graphics.GL.Raw.Extension.ARB.TextureCompressionRgtc
+import Graphics.GL.Raw.Extension.ARB.TextureCubeMap
+import Graphics.GL.Raw.Extension.ARB.TextureCubeMapArray
+import Graphics.GL.Raw.Extension.ARB.TextureEnvAdd
+import Graphics.GL.Raw.Extension.ARB.TextureEnvCombine
+import Graphics.GL.Raw.Extension.ARB.TextureEnvCrossbar
+import Graphics.GL.Raw.Extension.ARB.TextureEnvDot3
+import Graphics.GL.Raw.Extension.ARB.TextureFloat
+import Graphics.GL.Raw.Extension.ARB.TextureGather
+import Graphics.GL.Raw.Extension.ARB.TextureMirrorClampToEdge
+import Graphics.GL.Raw.Extension.ARB.TextureMirroredRepeat
+import Graphics.GL.Raw.Extension.ARB.TextureMultisample
+import Graphics.GL.Raw.Extension.ARB.TextureNonPowerOfTwo
+import Graphics.GL.Raw.Extension.ARB.TextureQueryLevels
+import Graphics.GL.Raw.Extension.ARB.TextureQueryLod
+import Graphics.GL.Raw.Extension.ARB.TextureRectangle
+import Graphics.GL.Raw.Extension.ARB.TextureRg
+import Graphics.GL.Raw.Extension.ARB.TextureRgb10A2ui
+import Graphics.GL.Raw.Extension.ARB.TextureStencil8
+import Graphics.GL.Raw.Extension.ARB.TextureStorage
+import Graphics.GL.Raw.Extension.ARB.TextureStorageMultisample
+import Graphics.GL.Raw.Extension.ARB.TextureSwizzle
+import Graphics.GL.Raw.Extension.ARB.TextureView
+import Graphics.GL.Raw.Extension.ARB.TimerQuery
+import Graphics.GL.Raw.Extension.ARB.TransformFeedback2
+import Graphics.GL.Raw.Extension.ARB.TransformFeedback3
+import Graphics.GL.Raw.Extension.ARB.TransformFeedbackInstanced
+import Graphics.GL.Raw.Extension.ARB.TransformFeedbackOverflowQuery
+import Graphics.GL.Raw.Extension.ARB.TransposeMatrix
+import Graphics.GL.Raw.Extension.ARB.UniformBufferObject
+import Graphics.GL.Raw.Extension.ARB.VertexArrayBgra
+import Graphics.GL.Raw.Extension.ARB.VertexArrayObject
+import Graphics.GL.Raw.Extension.ARB.VertexAttrib64bit
+import Graphics.GL.Raw.Extension.ARB.VertexAttribBinding
+import Graphics.GL.Raw.Extension.ARB.VertexBlend
+import Graphics.GL.Raw.Extension.ARB.VertexBufferObject
+import Graphics.GL.Raw.Extension.ARB.VertexProgram
+import Graphics.GL.Raw.Extension.ARB.VertexShader
+import Graphics.GL.Raw.Extension.ARB.VertexType10f11f11fRev
+import Graphics.GL.Raw.Extension.ARB.VertexType2101010Rev
+import Graphics.GL.Raw.Extension.ARB.ViewportArray
+import Graphics.GL.Raw.Extension.ARB.WindowPos
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ArraysOfArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ArraysOfArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ArraysOfArrays.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ArraysOfArrays (
+  -- * Extension Support
+    gl_ARB_arrays_of_arrays
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_arrays_of_arrays :: Bool
+gl_ARB_arrays_of_arrays = member "GL_ARB_arrays_of_arrays" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BaseInstance.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BaseInstance.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BaseInstance.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.BaseInstance (
+  -- * Extension Support
+    gl_ARB_base_instance
+
+  -- * GL_ARB_base_instance
+  , glDrawArraysInstancedBaseInstance
+  , glDrawElementsInstancedBaseInstance
+  , glDrawElementsInstancedBaseVertexBaseInstance
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_base_instance :: Bool
+gl_ARB_base_instance = member "GL_ARB_base_instance" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BindlessTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BindlessTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BindlessTexture.hs
@@ -0,0 +1,166 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.BindlessTexture (
+  -- * Extension Support
+    gl_ARB_bindless_texture
+
+  -- * GL_ARB_bindless_texture
+  , glGetImageHandleARB
+  , glGetTextureHandleARB
+  , glGetTextureSamplerHandleARB
+  , glGetVertexAttribLui64vARB
+  , glIsImageHandleResidentARB
+  , glIsTextureHandleResidentARB
+  , glMakeImageHandleNonResidentARB
+  , glMakeImageHandleResidentARB
+  , glMakeTextureHandleNonResidentARB
+  , glMakeTextureHandleResidentARB
+  , glProgramUniformHandleui64ARB
+  , glProgramUniformHandleui64vARB
+  , glUniformHandleui64ARB
+  , glUniformHandleui64vARB
+  , glVertexAttribL1ui64ARB
+  , glVertexAttribL1ui64vARB
+  , pattern GL_UNSIGNED_INT64_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_bindless_texture :: Bool
+gl_ARB_bindless_texture = member "GL_ARB_bindless_texture" extensions
+
+glGetImageHandleARB :: MonadIO m => GLuint -> GLint -> GLboolean -> GLint -> GLenum -> m GLuint64
+glGetImageHandleARB = ffiuintintbooleanintenumIOuint64 glGetImageHandleARBFunPtr
+
+glGetImageHandleARBFunPtr :: FunPtr (GLuint -> GLint -> GLboolean -> GLint -> GLenum -> IO GLuint64)
+glGetImageHandleARBFunPtr = unsafePerformIO (getProcAddress "glGetImageHandleARB")
+
+{-# NOINLINE glGetImageHandleARBFunPtr #-}
+
+glGetTextureHandleARB :: MonadIO m => GLuint -> m GLuint64
+glGetTextureHandleARB = ffiuintIOuint64 glGetTextureHandleARBFunPtr
+
+glGetTextureHandleARBFunPtr :: FunPtr (GLuint -> IO GLuint64)
+glGetTextureHandleARBFunPtr = unsafePerformIO (getProcAddress "glGetTextureHandleARB")
+
+{-# NOINLINE glGetTextureHandleARBFunPtr #-}
+
+glGetTextureSamplerHandleARB :: MonadIO m => GLuint -> GLuint -> m GLuint64
+glGetTextureSamplerHandleARB = ffiuintuintIOuint64 glGetTextureSamplerHandleARBFunPtr
+
+glGetTextureSamplerHandleARBFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
+glGetTextureSamplerHandleARBFunPtr = unsafePerformIO (getProcAddress "glGetTextureSamplerHandleARB")
+
+{-# NOINLINE glGetTextureSamplerHandleARBFunPtr #-}
+
+glGetVertexAttribLui64vARB :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
+glGetVertexAttribLui64vARB = ffiuintenumPtruint64EXTIOV glGetVertexAttribLui64vARBFunPtr
+
+glGetVertexAttribLui64vARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ())
+glGetVertexAttribLui64vARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribLui64vARB")
+
+{-# NOINLINE glGetVertexAttribLui64vARBFunPtr #-}
+
+glIsImageHandleResidentARB :: MonadIO m => GLuint64 -> m GLboolean
+glIsImageHandleResidentARB = ffiuint64IOboolean glIsImageHandleResidentARBFunPtr
+
+glIsImageHandleResidentARBFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
+glIsImageHandleResidentARBFunPtr = unsafePerformIO (getProcAddress "glIsImageHandleResidentARB")
+
+{-# NOINLINE glIsImageHandleResidentARBFunPtr #-}
+
+glIsTextureHandleResidentARB :: MonadIO m => GLuint64 -> m GLboolean
+glIsTextureHandleResidentARB = ffiuint64IOboolean glIsTextureHandleResidentARBFunPtr
+
+glIsTextureHandleResidentARBFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
+glIsTextureHandleResidentARBFunPtr = unsafePerformIO (getProcAddress "glIsTextureHandleResidentARB")
+
+{-# NOINLINE glIsTextureHandleResidentARBFunPtr #-}
+
+glMakeImageHandleNonResidentARB :: MonadIO m => GLuint64 -> m ()
+glMakeImageHandleNonResidentARB = ffiuint64IOV glMakeImageHandleNonResidentARBFunPtr
+
+glMakeImageHandleNonResidentARBFunPtr :: FunPtr (GLuint64 -> IO ())
+glMakeImageHandleNonResidentARBFunPtr = unsafePerformIO (getProcAddress "glMakeImageHandleNonResidentARB")
+
+{-# NOINLINE glMakeImageHandleNonResidentARBFunPtr #-}
+
+glMakeImageHandleResidentARB :: MonadIO m => GLuint64 -> GLenum -> m ()
+glMakeImageHandleResidentARB = ffiuint64enumIOV glMakeImageHandleResidentARBFunPtr
+
+glMakeImageHandleResidentARBFunPtr :: FunPtr (GLuint64 -> GLenum -> IO ())
+glMakeImageHandleResidentARBFunPtr = unsafePerformIO (getProcAddress "glMakeImageHandleResidentARB")
+
+{-# NOINLINE glMakeImageHandleResidentARBFunPtr #-}
+
+glMakeTextureHandleNonResidentARB :: MonadIO m => GLuint64 -> m ()
+glMakeTextureHandleNonResidentARB = ffiuint64IOV glMakeTextureHandleNonResidentARBFunPtr
+
+glMakeTextureHandleNonResidentARBFunPtr :: FunPtr (GLuint64 -> IO ())
+glMakeTextureHandleNonResidentARBFunPtr = unsafePerformIO (getProcAddress "glMakeTextureHandleNonResidentARB")
+
+{-# NOINLINE glMakeTextureHandleNonResidentARBFunPtr #-}
+
+glMakeTextureHandleResidentARB :: MonadIO m => GLuint64 -> m ()
+glMakeTextureHandleResidentARB = ffiuint64IOV glMakeTextureHandleResidentARBFunPtr
+
+glMakeTextureHandleResidentARBFunPtr :: FunPtr (GLuint64 -> IO ())
+glMakeTextureHandleResidentARBFunPtr = unsafePerformIO (getProcAddress "glMakeTextureHandleResidentARB")
+
+{-# NOINLINE glMakeTextureHandleResidentARBFunPtr #-}
+
+glProgramUniformHandleui64ARB :: MonadIO m => GLuint -> GLint -> GLuint64 -> m ()
+glProgramUniformHandleui64ARB = ffiuintintuint64IOV glProgramUniformHandleui64ARBFunPtr
+
+glProgramUniformHandleui64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
+glProgramUniformHandleui64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64ARB")
+
+{-# NOINLINE glProgramUniformHandleui64ARBFunPtr #-}
+
+glProgramUniformHandleui64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glProgramUniformHandleui64vARB = ffiuintintsizeiPtruint64IOV glProgramUniformHandleui64vARBFunPtr
+
+glProgramUniformHandleui64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glProgramUniformHandleui64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64vARB")
+
+{-# NOINLINE glProgramUniformHandleui64vARBFunPtr #-}
+
+glUniformHandleui64ARB :: MonadIO m => GLint -> GLuint64 -> m ()
+glUniformHandleui64ARB = ffiintuint64IOV glUniformHandleui64ARBFunPtr
+
+glUniformHandleui64ARBFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
+glUniformHandleui64ARBFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64ARB")
+
+{-# NOINLINE glUniformHandleui64ARBFunPtr #-}
+
+glUniformHandleui64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glUniformHandleui64vARB = ffiintsizeiPtruint64IOV glUniformHandleui64vARBFunPtr
+
+glUniformHandleui64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glUniformHandleui64vARBFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64vARB")
+
+{-# NOINLINE glUniformHandleui64vARBFunPtr #-}
+
+glVertexAttribL1ui64ARB :: MonadIO m => GLuint -> GLuint64EXT -> m ()
+glVertexAttribL1ui64ARB = ffiuintuint64EXTIOV glVertexAttribL1ui64ARBFunPtr
+
+glVertexAttribL1ui64ARBFunPtr :: FunPtr (GLuint -> GLuint64EXT -> IO ())
+glVertexAttribL1ui64ARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1ui64ARB")
+
+{-# NOINLINE glVertexAttribL1ui64ARBFunPtr #-}
+
+glVertexAttribL1ui64vARB :: MonadIO m => GLuint -> Ptr GLuint64EXT -> m ()
+glVertexAttribL1ui64vARB = ffiuintPtruint64EXTIOV glVertexAttribL1ui64vARBFunPtr
+
+glVertexAttribL1ui64vARBFunPtr :: FunPtr (GLuint -> Ptr GLuint64EXT -> IO ())
+glVertexAttribL1ui64vARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1ui64vARB")
+
+{-# NOINLINE glVertexAttribL1ui64vARBFunPtr #-}
+
+pattern GL_UNSIGNED_INT64_ARB = 0x140F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BlendFuncExtended.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BlendFuncExtended.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BlendFuncExtended.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.BlendFuncExtended (
+  -- * Extension Support
+    gl_ARB_blend_func_extended
+
+  -- * GL_ARB_blend_func_extended
+  , glBindFragDataLocationIndexed
+  , glGetFragDataIndex
+  , pattern GL_MAX_DUAL_SOURCE_DRAW_BUFFERS
+  , pattern GL_ONE_MINUS_SRC1_ALPHA
+  , pattern GL_ONE_MINUS_SRC1_COLOR
+  , pattern GL_SRC1_ALPHA
+  , pattern GL_SRC1_COLOR
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_blend_func_extended :: Bool
+gl_ARB_blend_func_extended = member "GL_ARB_blend_func_extended" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BufferStorage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BufferStorage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/BufferStorage.hs
@@ -0,0 +1,25 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.BufferStorage (
+  -- * Extension Support
+    gl_ARB_buffer_storage
+
+  -- * GL_ARB_buffer_storage
+  , glBufferStorage
+  , pattern GL_BUFFER_IMMUTABLE_STORAGE
+  , pattern GL_BUFFER_STORAGE_FLAGS
+  , pattern GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT
+  , pattern GL_CLIENT_STORAGE_BIT
+  , pattern GL_DYNAMIC_STORAGE_BIT
+  , pattern GL_MAP_COHERENT_BIT
+  , pattern GL_MAP_PERSISTENT_BIT
+  , pattern GL_MAP_READ_BIT
+  , pattern GL_MAP_WRITE_BIT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_buffer_storage :: Bool
+gl_ARB_buffer_storage = member "GL_ARB_buffer_storage" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClEvent.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClEvent.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClEvent.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ClEvent (
+  -- * Extension Support
+    gl_ARB_cl_event
+
+  -- * GL_ARB_cl_event
+  , glCreateSyncFromCLeventARB
+  , pattern GL_SYNC_CL_EVENT_ARB
+  , pattern GL_SYNC_CL_EVENT_COMPLETE_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_cl_event :: Bool
+gl_ARB_cl_event = member "GL_ARB_cl_event" extensions
+
+glCreateSyncFromCLeventARB :: MonadIO m => Ptr () -> Ptr () -> GLbitfield -> m GLsync
+glCreateSyncFromCLeventARB = ffiPtrVPtrVbitfieldIOsync glCreateSyncFromCLeventARBFunPtr
+
+glCreateSyncFromCLeventARBFunPtr :: FunPtr (Ptr () -> Ptr () -> GLbitfield -> IO GLsync)
+glCreateSyncFromCLeventARBFunPtr = unsafePerformIO (getProcAddress "glCreateSyncFromCLeventARB")
+
+{-# NOINLINE glCreateSyncFromCLeventARBFunPtr #-}
+
+pattern GL_SYNC_CL_EVENT_ARB = 0x8240 :: GLenum
+
+pattern GL_SYNC_CL_EVENT_COMPLETE_ARB = 0x8241 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClearBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClearBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClearBufferObject.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ClearBufferObject (
+  -- * Extension Support
+    gl_ARB_clear_buffer_object
+
+  -- * GL_ARB_clear_buffer_object
+  , glClearBufferData
+  , glClearBufferSubData
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_clear_buffer_object :: Bool
+gl_ARB_clear_buffer_object = member "GL_ARB_clear_buffer_object" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClearTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClearTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClearTexture.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ClearTexture (
+  -- * Extension Support
+    gl_ARB_clear_texture
+
+  -- * GL_ARB_clear_texture
+  , glClearTexImage
+  , glClearTexSubImage
+  , pattern GL_CLEAR_TEXTURE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_clear_texture :: Bool
+gl_ARB_clear_texture = member "GL_ARB_clear_texture" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClipControl.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClipControl.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ClipControl.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ClipControl (
+  -- * Extension Support
+    gl_ARB_clip_control
+
+  -- * GL_ARB_clip_control
+  , glClipControl
+  , pattern GL_CLIP_DEPTH_MODE
+  , pattern GL_CLIP_ORIGIN
+  , pattern GL_LOWER_LEFT
+  , pattern GL_NEGATIVE_ONE_TO_ONE
+  , pattern GL_UPPER_LEFT
+  , pattern GL_ZERO_TO_ONE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_clip_control :: Bool
+gl_ARB_clip_control = member "GL_ARB_clip_control" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ColorBufferFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ColorBufferFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ColorBufferFloat.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ColorBufferFloat (
+  -- * Extension Support
+    gl_ARB_color_buffer_float
+
+  -- * GL_ARB_color_buffer_float
+  , glClampColorARB
+  , pattern GL_CLAMP_FRAGMENT_COLOR_ARB
+  , pattern GL_CLAMP_READ_COLOR_ARB
+  , pattern GL_CLAMP_VERTEX_COLOR_ARB
+  , pattern GL_FIXED_ONLY_ARB
+  , pattern GL_RGBA_FLOAT_MODE_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_color_buffer_float :: Bool
+gl_ARB_color_buffer_float = member "GL_ARB_color_buffer_float" extensions
+
+glClampColorARB :: MonadIO m => GLenum -> GLenum -> m ()
+glClampColorARB = ffienumenumIOV glClampColorARBFunPtr
+
+glClampColorARBFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glClampColorARBFunPtr = unsafePerformIO (getProcAddress "glClampColorARB")
+
+{-# NOINLINE glClampColorARBFunPtr #-}
+
+pattern GL_CLAMP_FRAGMENT_COLOR_ARB = 0x891B :: GLenum
+
+pattern GL_CLAMP_READ_COLOR_ARB = 0x891C :: GLenum
+
+pattern GL_CLAMP_VERTEX_COLOR_ARB = 0x891A :: GLenum
+
+pattern GL_FIXED_ONLY_ARB = 0x891D :: GLenum
+
+pattern GL_RGBA_FLOAT_MODE_ARB = 0x8820 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Compatibility.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Compatibility.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Compatibility.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.Compatibility (
+  -- * Extension Support
+    gl_ARB_compatibility
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_compatibility :: Bool
+gl_ARB_compatibility = member "GL_ARB_compatibility" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CompressedTexturePixelStorage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CompressedTexturePixelStorage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CompressedTexturePixelStorage.hs
@@ -0,0 +1,23 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.CompressedTexturePixelStorage (
+  -- * Extension Support
+    gl_ARB_compressed_texture_pixel_storage
+
+  -- * GL_ARB_compressed_texture_pixel_storage
+  , pattern GL_PACK_COMPRESSED_BLOCK_DEPTH
+  , pattern GL_PACK_COMPRESSED_BLOCK_HEIGHT
+  , pattern GL_PACK_COMPRESSED_BLOCK_SIZE
+  , pattern GL_PACK_COMPRESSED_BLOCK_WIDTH
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_DEPTH
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_HEIGHT
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_SIZE
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_WIDTH
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_compressed_texture_pixel_storage :: Bool
+gl_ARB_compressed_texture_pixel_storage = member "GL_ARB_compressed_texture_pixel_storage" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ComputeShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ComputeShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ComputeShader.hs
@@ -0,0 +1,35 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ComputeShader (
+  -- * Extension Support
+    gl_ARB_compute_shader
+
+  -- * GL_ARB_compute_shader
+  , glDispatchCompute
+  , glDispatchComputeIndirect
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER
+  , pattern GL_COMPUTE_SHADER
+  , pattern GL_COMPUTE_SHADER_BIT
+  , pattern GL_COMPUTE_WORK_GROUP_SIZE
+  , pattern GL_DISPATCH_INDIRECT_BUFFER
+  , pattern GL_DISPATCH_INDIRECT_BUFFER_BINDING
+  , pattern GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMPUTE_ATOMIC_COUNTERS
+  , pattern GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_COMPUTE_IMAGE_UNIFORMS
+  , pattern GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
+  , pattern GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_COMPUTE_UNIFORM_BLOCKS
+  , pattern GL_MAX_COMPUTE_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_COUNT
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_SIZE
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_compute_shader :: Bool
+gl_ARB_compute_shader = member "GL_ARB_compute_shader" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ComputeVariableGroupSize.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ComputeVariableGroupSize.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ComputeVariableGroupSize.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ComputeVariableGroupSize (
+  -- * Extension Support
+    gl_ARB_compute_variable_group_size
+
+  -- * GL_ARB_compute_variable_group_size
+  , glDispatchComputeGroupSizeARB
+  , pattern GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB
+  , pattern GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB
+  , pattern GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB
+  , pattern GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_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_compute_variable_group_size :: Bool
+gl_ARB_compute_variable_group_size = member "GL_ARB_compute_variable_group_size" extensions
+
+glDispatchComputeGroupSizeARB :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glDispatchComputeGroupSizeARB = ffiuintuintuintuintuintuintIOV glDispatchComputeGroupSizeARBFunPtr
+
+glDispatchComputeGroupSizeARBFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glDispatchComputeGroupSizeARBFunPtr = unsafePerformIO (getProcAddress "glDispatchComputeGroupSizeARB")
+
+{-# NOINLINE glDispatchComputeGroupSizeARBFunPtr #-}
+
+pattern GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = 0x90EB :: GLenum
+
+pattern GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = 0x91BF :: GLenum
+
+pattern GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = 0x9344 :: GLenum
+
+pattern GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = 0x9345 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ConditionalRenderInverted.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ConditionalRenderInverted.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ConditionalRenderInverted.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ConditionalRenderInverted (
+  -- * Extension Support
+    gl_ARB_conditional_render_inverted
+
+  -- * GL_ARB_conditional_render_inverted
+  , pattern GL_QUERY_BY_REGION_NO_WAIT_INVERTED
+  , pattern GL_QUERY_BY_REGION_WAIT_INVERTED
+  , pattern GL_QUERY_NO_WAIT_INVERTED
+  , pattern GL_QUERY_WAIT_INVERTED
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_conditional_render_inverted :: Bool
+gl_ARB_conditional_render_inverted = member "GL_ARB_conditional_render_inverted" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ConservativeDepth.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ConservativeDepth.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ConservativeDepth.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ConservativeDepth (
+  -- * Extension Support
+    gl_ARB_conservative_depth
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_conservative_depth :: Bool
+gl_ARB_conservative_depth = member "GL_ARB_conservative_depth" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CopyBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CopyBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CopyBuffer.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.CopyBuffer (
+  -- * Extension Support
+    gl_ARB_copy_buffer
+
+  -- * GL_ARB_copy_buffer
+  , glCopyBufferSubData
+  , pattern GL_COPY_READ_BUFFER
+  , pattern GL_COPY_WRITE_BUFFER
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_copy_buffer :: Bool
+gl_ARB_copy_buffer = member "GL_ARB_copy_buffer" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CopyImage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CopyImage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CopyImage.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.CopyImage (
+  -- * Extension Support
+    gl_ARB_copy_image
+
+  -- * GL_ARB_copy_image
+  , glCopyImageSubData
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_copy_image :: Bool
+gl_ARB_copy_image = member "GL_ARB_copy_image" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CullDistance.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CullDistance.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/CullDistance.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.CullDistance (
+  -- * Extension Support
+    gl_ARB_cull_distance
+
+  -- * GL_ARB_cull_distance
+  , pattern GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES
+  , pattern GL_MAX_CULL_DISTANCES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_cull_distance :: Bool
+gl_ARB_cull_distance = member "GL_ARB_cull_distance" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DebugOutput.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DebugOutput.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DebugOutput.hs
@@ -0,0 +1,121 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DebugOutput (
+  -- * Extension Support
+    gl_ARB_debug_output
+
+  -- * GL_ARB_debug_output
+  , glDebugMessageCallbackARB
+  , glDebugMessageControlARB
+  , glDebugMessageInsertARB
+  , glGetDebugMessageLogARB
+  , pattern GL_DEBUG_CALLBACK_FUNCTION_ARB
+  , pattern GL_DEBUG_CALLBACK_USER_PARAM_ARB
+  , pattern GL_DEBUG_LOGGED_MESSAGES_ARB
+  , pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB
+  , pattern GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB
+  , pattern GL_DEBUG_SEVERITY_HIGH_ARB
+  , pattern GL_DEBUG_SEVERITY_LOW_ARB
+  , pattern GL_DEBUG_SEVERITY_MEDIUM_ARB
+  , pattern GL_DEBUG_SOURCE_API_ARB
+  , pattern GL_DEBUG_SOURCE_APPLICATION_ARB
+  , pattern GL_DEBUG_SOURCE_OTHER_ARB
+  , pattern GL_DEBUG_SOURCE_SHADER_COMPILER_ARB
+  , pattern GL_DEBUG_SOURCE_THIRD_PARTY_ARB
+  , pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB
+  , pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB
+  , pattern GL_DEBUG_TYPE_ERROR_ARB
+  , pattern GL_DEBUG_TYPE_OTHER_ARB
+  , pattern GL_DEBUG_TYPE_PERFORMANCE_ARB
+  , pattern GL_DEBUG_TYPE_PORTABILITY_ARB
+  , pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB
+  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES_ARB
+  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH_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_debug_output :: Bool
+gl_ARB_debug_output = member "GL_ARB_debug_output" extensions
+
+glDebugMessageCallbackARB :: MonadIO m => GLDEBUGPROCARB -> Ptr () -> m ()
+glDebugMessageCallbackARB = ffiDEBUGPROCARBPtrVIOV glDebugMessageCallbackARBFunPtr
+
+glDebugMessageCallbackARBFunPtr :: FunPtr (GLDEBUGPROCARB -> Ptr () -> IO ())
+glDebugMessageCallbackARBFunPtr = unsafePerformIO (getProcAddress "glDebugMessageCallbackARB")
+
+{-# NOINLINE glDebugMessageCallbackARBFunPtr #-}
+
+glDebugMessageControlARB :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> m ()
+glDebugMessageControlARB = ffienumenumenumsizeiPtruintbooleanIOV glDebugMessageControlARBFunPtr
+
+glDebugMessageControlARBFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ())
+glDebugMessageControlARBFunPtr = unsafePerformIO (getProcAddress "glDebugMessageControlARB")
+
+{-# NOINLINE glDebugMessageControlARBFunPtr #-}
+
+glDebugMessageInsertARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> m ()
+glDebugMessageInsertARB = ffienumenumuintenumsizeiPtrcharIOV glDebugMessageInsertARBFunPtr
+
+glDebugMessageInsertARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> IO ())
+glDebugMessageInsertARBFunPtr = unsafePerformIO (getProcAddress "glDebugMessageInsertARB")
+
+{-# NOINLINE glDebugMessageInsertARBFunPtr #-}
+
+glGetDebugMessageLogARB :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> m GLuint
+glGetDebugMessageLogARB = ffiuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint glGetDebugMessageLogARBFunPtr
+
+glGetDebugMessageLogARBFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> IO GLuint)
+glGetDebugMessageLogARBFunPtr = unsafePerformIO (getProcAddress "glGetDebugMessageLogARB")
+
+{-# NOINLINE glGetDebugMessageLogARBFunPtr #-}
+
+pattern GL_DEBUG_CALLBACK_FUNCTION_ARB = 0x8244 :: GLenum
+
+pattern GL_DEBUG_CALLBACK_USER_PARAM_ARB = 0x8245 :: GLenum
+
+pattern GL_DEBUG_LOGGED_MESSAGES_ARB = 0x9145 :: GLenum
+
+pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x8243 :: GLenum
+
+pattern GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x8242 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_HIGH_ARB = 0x9146 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_LOW_ARB = 0x9148 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_MEDIUM_ARB = 0x9147 :: GLenum
+
+pattern GL_DEBUG_SOURCE_API_ARB = 0x8246 :: GLenum
+
+pattern GL_DEBUG_SOURCE_APPLICATION_ARB = 0x824A :: GLenum
+
+pattern GL_DEBUG_SOURCE_OTHER_ARB = 0x824B :: GLenum
+
+pattern GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248 :: GLenum
+
+pattern GL_DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249 :: GLenum
+
+pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247 :: GLenum
+
+pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D :: GLenum
+
+pattern GL_DEBUG_TYPE_ERROR_ARB = 0x824C :: GLenum
+
+pattern GL_DEBUG_TYPE_OTHER_ARB = 0x8251 :: GLenum
+
+pattern GL_DEBUG_TYPE_PERFORMANCE_ARB = 0x8250 :: GLenum
+
+pattern GL_DEBUG_TYPE_PORTABILITY_ARB = 0x824F :: GLenum
+
+pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E :: GLenum
+
+pattern GL_MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x9144 :: GLenum
+
+pattern GL_MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x9143 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthBufferFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthBufferFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthBufferFloat.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DepthBufferFloat (
+  -- * Extension Support
+    gl_ARB_depth_buffer_float
+
+  -- * GL_ARB_depth_buffer_float
+  , pattern GL_DEPTH32F_STENCIL8
+  , pattern GL_DEPTH_COMPONENT32F
+  , pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_depth_buffer_float :: Bool
+gl_ARB_depth_buffer_float = member "GL_ARB_depth_buffer_float" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthClamp.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DepthClamp (
+  -- * Extension Support
+    gl_ARB_depth_clamp
+
+  -- * GL_ARB_depth_clamp
+  , pattern GL_DEPTH_CLAMP
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_depth_clamp :: Bool
+gl_ARB_depth_clamp = member "GL_ARB_depth_clamp" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DepthTexture.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DepthTexture (
+  -- * Extension Support
+    gl_ARB_depth_texture
+
+  -- * GL_ARB_depth_texture
+  , pattern GL_DEPTH_COMPONENT16_ARB
+  , pattern GL_DEPTH_COMPONENT24_ARB
+  , pattern GL_DEPTH_COMPONENT32_ARB
+  , pattern GL_DEPTH_TEXTURE_MODE_ARB
+  , pattern GL_TEXTURE_DEPTH_SIZE_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_depth_texture :: Bool
+gl_ARB_depth_texture = member "GL_ARB_depth_texture" extensions
+
+pattern GL_DEPTH_COMPONENT16_ARB = 0x81A5 :: GLenum
+
+pattern GL_DEPTH_COMPONENT24_ARB = 0x81A6 :: GLenum
+
+pattern GL_DEPTH_COMPONENT32_ARB = 0x81A7 :: GLenum
+
+pattern GL_DEPTH_TEXTURE_MODE_ARB = 0x884B :: GLenum
+
+pattern GL_TEXTURE_DEPTH_SIZE_ARB = 0x884A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DerivativeControl.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DerivativeControl.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DerivativeControl.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DerivativeControl (
+  -- * Extension Support
+    gl_ARB_derivative_control
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_derivative_control :: Bool
+gl_ARB_derivative_control = member "GL_ARB_derivative_control" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DirectStateAccess.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DirectStateAccess.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DirectStateAccess.hs
@@ -0,0 +1,126 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DirectStateAccess (
+  -- * Extension Support
+    gl_ARB_direct_state_access
+
+  -- * GL_ARB_direct_state_access
+  , glBindTextureUnit
+  , glBlitNamedFramebuffer
+  , glCheckNamedFramebufferStatus
+  , glClearNamedBufferData
+  , glClearNamedBufferSubData
+  , glClearNamedFramebufferfi
+  , glClearNamedFramebufferfv
+  , glClearNamedFramebufferiv
+  , glClearNamedFramebufferuiv
+  , glCompressedTextureSubImage1D
+  , glCompressedTextureSubImage2D
+  , glCompressedTextureSubImage3D
+  , glCopyNamedBufferSubData
+  , glCopyTextureSubImage1D
+  , glCopyTextureSubImage2D
+  , glCopyTextureSubImage3D
+  , glCreateBuffers
+  , glCreateFramebuffers
+  , glCreateProgramPipelines
+  , glCreateQueries
+  , glCreateRenderbuffers
+  , glCreateSamplers
+  , glCreateTextures
+  , glCreateTransformFeedbacks
+  , glCreateVertexArrays
+  , glDisableVertexArrayAttrib
+  , glEnableVertexArrayAttrib
+  , glFlushMappedNamedBufferRange
+  , glGenerateTextureMipmap
+  , glGetCompressedTextureImage
+  , glGetNamedBufferParameteri64v
+  , glGetNamedBufferParameteriv
+  , glGetNamedBufferPointerv
+  , glGetNamedBufferSubData
+  , glGetNamedFramebufferAttachmentParameteriv
+  , glGetNamedFramebufferParameteriv
+  , glGetNamedRenderbufferParameteriv
+  , glGetQueryBufferObjecti64v
+  , glGetQueryBufferObjectiv
+  , glGetQueryBufferObjectui64v
+  , glGetQueryBufferObjectuiv
+  , glGetTextureImage
+  , glGetTextureLevelParameterfv
+  , glGetTextureLevelParameteriv
+  , glGetTextureParameterIiv
+  , glGetTextureParameterIuiv
+  , glGetTextureParameterfv
+  , glGetTextureParameteriv
+  , glGetTransformFeedbacki64_v
+  , glGetTransformFeedbacki_v
+  , glGetTransformFeedbackiv
+  , glGetVertexArrayIndexed64iv
+  , glGetVertexArrayIndexediv
+  , glGetVertexArrayiv
+  , glInvalidateNamedFramebufferData
+  , glInvalidateNamedFramebufferSubData
+  , glMapNamedBuffer
+  , glMapNamedBufferRange
+  , glNamedBufferData
+  , glNamedBufferStorage
+  , glNamedBufferSubData
+  , glNamedFramebufferDrawBuffer
+  , glNamedFramebufferDrawBuffers
+  , glNamedFramebufferParameteri
+  , glNamedFramebufferReadBuffer
+  , glNamedFramebufferRenderbuffer
+  , glNamedFramebufferTexture
+  , glNamedFramebufferTextureLayer
+  , glNamedRenderbufferStorage
+  , glNamedRenderbufferStorageMultisample
+  , glTextureBuffer
+  , glTextureBufferRange
+  , glTextureParameterIiv
+  , glTextureParameterIuiv
+  , glTextureParameterf
+  , glTextureParameterfv
+  , glTextureParameteri
+  , glTextureParameteriv
+  , glTextureStorage1D
+  , glTextureStorage2D
+  , glTextureStorage2DMultisample
+  , glTextureStorage3D
+  , glTextureStorage3DMultisample
+  , glTextureSubImage1D
+  , glTextureSubImage2D
+  , glTextureSubImage3D
+  , glTransformFeedbackBufferBase
+  , glTransformFeedbackBufferRange
+  , glUnmapNamedBuffer
+  , glVertexArrayAttribBinding
+  , glVertexArrayAttribFormat
+  , glVertexArrayAttribIFormat
+  , glVertexArrayAttribLFormat
+  , glVertexArrayBindingDivisor
+  , glVertexArrayElementBuffer
+  , glVertexArrayVertexBuffer
+  , glVertexArrayVertexBuffers
+  , pattern GL_QUERY_TARGET
+  , pattern GL_TEXTURE_BINDING
+  , pattern GL_TEXTURE_BINDING_1D
+  , pattern GL_TEXTURE_BINDING_1D_ARRAY
+  , pattern GL_TEXTURE_BINDING_2D
+  , pattern GL_TEXTURE_BINDING_2D_ARRAY
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_BINDING_3D
+  , pattern GL_TEXTURE_BINDING_BUFFER
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY
+  , pattern GL_TEXTURE_BINDING_RECTANGLE
+  , pattern GL_TEXTURE_TARGET
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_direct_state_access :: Bool
+gl_ARB_direct_state_access = member "GL_ARB_direct_state_access" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawBuffers.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawBuffers.hs
@@ -0,0 +1,79 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DrawBuffers (
+  -- * Extension Support
+    gl_ARB_draw_buffers
+
+  -- * GL_ARB_draw_buffers
+  , glDrawBuffersARB
+  , pattern GL_DRAW_BUFFER0_ARB
+  , pattern GL_DRAW_BUFFER10_ARB
+  , pattern GL_DRAW_BUFFER11_ARB
+  , pattern GL_DRAW_BUFFER12_ARB
+  , pattern GL_DRAW_BUFFER13_ARB
+  , pattern GL_DRAW_BUFFER14_ARB
+  , pattern GL_DRAW_BUFFER15_ARB
+  , pattern GL_DRAW_BUFFER1_ARB
+  , pattern GL_DRAW_BUFFER2_ARB
+  , pattern GL_DRAW_BUFFER3_ARB
+  , pattern GL_DRAW_BUFFER4_ARB
+  , pattern GL_DRAW_BUFFER5_ARB
+  , pattern GL_DRAW_BUFFER6_ARB
+  , pattern GL_DRAW_BUFFER7_ARB
+  , pattern GL_DRAW_BUFFER8_ARB
+  , pattern GL_DRAW_BUFFER9_ARB
+  , pattern GL_MAX_DRAW_BUFFERS_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_draw_buffers :: Bool
+gl_ARB_draw_buffers = member "GL_ARB_draw_buffers" extensions
+
+glDrawBuffersARB :: MonadIO m => GLsizei -> Ptr GLenum -> m ()
+glDrawBuffersARB = ffisizeiPtrenumIOV glDrawBuffersARBFunPtr
+
+glDrawBuffersARBFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
+glDrawBuffersARBFunPtr = unsafePerformIO (getProcAddress "glDrawBuffersARB")
+
+{-# NOINLINE glDrawBuffersARBFunPtr #-}
+
+pattern GL_DRAW_BUFFER0_ARB = 0x8825 :: GLenum
+
+pattern GL_DRAW_BUFFER10_ARB = 0x882F :: GLenum
+
+pattern GL_DRAW_BUFFER11_ARB = 0x8830 :: GLenum
+
+pattern GL_DRAW_BUFFER12_ARB = 0x8831 :: GLenum
+
+pattern GL_DRAW_BUFFER13_ARB = 0x8832 :: GLenum
+
+pattern GL_DRAW_BUFFER14_ARB = 0x8833 :: GLenum
+
+pattern GL_DRAW_BUFFER15_ARB = 0x8834 :: GLenum
+
+pattern GL_DRAW_BUFFER1_ARB = 0x8826 :: GLenum
+
+pattern GL_DRAW_BUFFER2_ARB = 0x8827 :: GLenum
+
+pattern GL_DRAW_BUFFER3_ARB = 0x8828 :: GLenum
+
+pattern GL_DRAW_BUFFER4_ARB = 0x8829 :: GLenum
+
+pattern GL_DRAW_BUFFER5_ARB = 0x882A :: GLenum
+
+pattern GL_DRAW_BUFFER6_ARB = 0x882B :: GLenum
+
+pattern GL_DRAW_BUFFER7_ARB = 0x882C :: GLenum
+
+pattern GL_DRAW_BUFFER8_ARB = 0x882D :: GLenum
+
+pattern GL_DRAW_BUFFER9_ARB = 0x882E :: GLenum
+
+pattern GL_MAX_DRAW_BUFFERS_ARB = 0x8824 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawBuffersBlend.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawBuffersBlend.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawBuffersBlend.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DrawBuffersBlend (
+  -- * Extension Support
+    gl_ARB_draw_buffers_blend
+
+  -- * GL_ARB_draw_buffers_blend
+  , glBlendEquationSeparateiARB
+  , glBlendEquationiARB
+  , glBlendFuncSeparateiARB
+  , glBlendFunciARB
+) 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_draw_buffers_blend :: Bool
+gl_ARB_draw_buffers_blend = member "GL_ARB_draw_buffers_blend" extensions
+
+glBlendEquationSeparateiARB :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendEquationSeparateiARB = ffiuintenumenumIOV glBlendEquationSeparateiARBFunPtr
+
+glBlendEquationSeparateiARBFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendEquationSeparateiARBFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparateiARB")
+
+{-# NOINLINE glBlendEquationSeparateiARBFunPtr #-}
+
+glBlendEquationiARB :: MonadIO m => GLuint -> GLenum -> m ()
+glBlendEquationiARB = ffiuintenumIOV glBlendEquationiARBFunPtr
+
+glBlendEquationiARBFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glBlendEquationiARBFunPtr = unsafePerformIO (getProcAddress "glBlendEquationiARB")
+
+{-# NOINLINE glBlendEquationiARBFunPtr #-}
+
+glBlendFuncSeparateiARB :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glBlendFuncSeparateiARB = ffiuintenumenumenumenumIOV glBlendFuncSeparateiARBFunPtr
+
+glBlendFuncSeparateiARBFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glBlendFuncSeparateiARBFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparateiARB")
+
+{-# NOINLINE glBlendFuncSeparateiARBFunPtr #-}
+
+glBlendFunciARB :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendFunciARB = ffiuintenumenumIOV glBlendFunciARBFunPtr
+
+glBlendFunciARBFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendFunciARBFunPtr = unsafePerformIO (getProcAddress "glBlendFunciARB")
+
+{-# NOINLINE glBlendFunciARBFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawElementsBaseVertex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawElementsBaseVertex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawElementsBaseVertex.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DrawElementsBaseVertex (
+  -- * Extension Support
+    gl_ARB_draw_elements_base_vertex
+
+  -- * GL_ARB_draw_elements_base_vertex
+  , glDrawElementsBaseVertex
+  , glDrawElementsInstancedBaseVertex
+  , glDrawRangeElementsBaseVertex
+  , glMultiDrawElementsBaseVertex
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_draw_elements_base_vertex :: Bool
+gl_ARB_draw_elements_base_vertex = member "GL_ARB_draw_elements_base_vertex" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawIndirect.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawIndirect.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawIndirect.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DrawIndirect (
+  -- * Extension Support
+    gl_ARB_draw_indirect
+
+  -- * GL_ARB_draw_indirect
+  , glDrawArraysIndirect
+  , glDrawElementsIndirect
+  , pattern GL_DRAW_INDIRECT_BUFFER
+  , pattern GL_DRAW_INDIRECT_BUFFER_BINDING
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_draw_indirect :: Bool
+gl_ARB_draw_indirect = member "GL_ARB_draw_indirect" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawInstanced.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawInstanced.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/DrawInstanced.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.DrawInstanced (
+  -- * Extension Support
+    gl_ARB_draw_instanced
+
+  -- * GL_ARB_draw_instanced
+  , glDrawArraysInstancedARB
+  , glDrawElementsInstancedARB
+) 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_draw_instanced :: Bool
+gl_ARB_draw_instanced = member "GL_ARB_draw_instanced" extensions
+
+glDrawArraysInstancedARB :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
+glDrawArraysInstancedARB = ffienumintsizeisizeiIOV glDrawArraysInstancedARBFunPtr
+
+glDrawArraysInstancedARBFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
+glDrawArraysInstancedARBFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstancedARB")
+
+{-# NOINLINE glDrawArraysInstancedARBFunPtr #-}
+
+glDrawElementsInstancedARB :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
+glDrawElementsInstancedARB = ffienumsizeienumPtrVsizeiIOV glDrawElementsInstancedARBFunPtr
+
+glDrawElementsInstancedARBFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ())
+glDrawElementsInstancedARBFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstancedARB")
+
+{-# NOINLINE glDrawElementsInstancedARBFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES2Compatibility.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES2Compatibility.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES2Compatibility.hs
@@ -0,0 +1,36 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ES2Compatibility (
+  -- * Extension Support
+    gl_ARB_ES2_compatibility
+
+  -- * GL_ARB_ES2_compatibility
+  , glClearDepthf
+  , glDepthRangef
+  , glGetShaderPrecisionFormat
+  , glReleaseShaderCompiler
+  , glShaderBinary
+  , pattern GL_FIXED
+  , pattern GL_HIGH_FLOAT
+  , pattern GL_HIGH_INT
+  , pattern GL_IMPLEMENTATION_COLOR_READ_FORMAT
+  , pattern GL_IMPLEMENTATION_COLOR_READ_TYPE
+  , pattern GL_LOW_FLOAT
+  , pattern GL_LOW_INT
+  , pattern GL_MAX_FRAGMENT_UNIFORM_VECTORS
+  , pattern GL_MAX_VARYING_VECTORS
+  , pattern GL_MAX_VERTEX_UNIFORM_VECTORS
+  , pattern GL_MEDIUM_FLOAT
+  , pattern GL_MEDIUM_INT
+  , pattern GL_NUM_SHADER_BINARY_FORMATS
+  , pattern GL_RGB565
+  , pattern GL_SHADER_BINARY_FORMATS
+  , pattern GL_SHADER_COMPILER
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_ES2_compatibility :: Bool
+gl_ARB_ES2_compatibility = member "GL_ARB_ES2_compatibility" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES31Compatibility.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES31Compatibility.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES31Compatibility.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ES31Compatibility (
+  -- * Extension Support
+    gl_ARB_ES3_1_compatibility
+
+  -- * GL_ARB_ES3_1_compatibility
+  , glMemoryBarrierByRegion
+  , pattern GL_BACK
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_ES3_1_compatibility :: Bool
+gl_ARB_ES3_1_compatibility = member "GL_ARB_ES3_1_compatibility" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES3Compatibility.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES3Compatibility.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ES3Compatibility.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ES3Compatibility (
+  -- * Extension Support
+    gl_ARB_ES3_compatibility
+
+  -- * GL_ARB_ES3_compatibility
+  , pattern GL_ANY_SAMPLES_PASSED_CONSERVATIVE
+  , pattern GL_COMPRESSED_R11_EAC
+  , pattern GL_COMPRESSED_RG11_EAC
+  , pattern GL_COMPRESSED_RGB8_ETC2
+  , pattern GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
+  , pattern GL_COMPRESSED_RGBA8_ETC2_EAC
+  , pattern GL_COMPRESSED_SIGNED_R11_EAC
+  , pattern GL_COMPRESSED_SIGNED_RG11_EAC
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
+  , pattern GL_COMPRESSED_SRGB8_ETC2
+  , pattern GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
+  , pattern GL_MAX_ELEMENT_INDEX
+  , pattern GL_PRIMITIVE_RESTART_FIXED_INDEX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_ES3_compatibility :: Bool
+gl_ARB_ES3_compatibility = member "GL_ARB_ES3_compatibility" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/EnhancedLayouts.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/EnhancedLayouts.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/EnhancedLayouts.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.EnhancedLayouts (
+  -- * Extension Support
+    gl_ARB_enhanced_layouts
+
+  -- * GL_ARB_enhanced_layouts
+  , pattern GL_LOCATION_COMPONENT
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_INDEX
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_enhanced_layouts :: Bool
+gl_ARB_enhanced_layouts = member "GL_ARB_enhanced_layouts" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ExplicitAttribLocation.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ExplicitAttribLocation.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ExplicitAttribLocation.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ExplicitAttribLocation (
+  -- * Extension Support
+    gl_ARB_explicit_attrib_location
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_explicit_attrib_location :: Bool
+gl_ARB_explicit_attrib_location = member "GL_ARB_explicit_attrib_location" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ExplicitUniformLocation.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ExplicitUniformLocation.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ExplicitUniformLocation.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ExplicitUniformLocation (
+  -- * Extension Support
+    gl_ARB_explicit_uniform_location
+
+  -- * GL_ARB_explicit_uniform_location
+  , pattern GL_MAX_UNIFORM_LOCATIONS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_explicit_uniform_location :: Bool
+gl_ARB_explicit_uniform_location = member "GL_ARB_explicit_uniform_location" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentCoordConventions.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentCoordConventions.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentCoordConventions.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FragmentCoordConventions (
+  -- * Extension Support
+    gl_ARB_fragment_coord_conventions
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_fragment_coord_conventions :: Bool
+gl_ARB_fragment_coord_conventions = member "GL_ARB_fragment_coord_conventions" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentLayerViewport.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentLayerViewport.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentLayerViewport.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FragmentLayerViewport (
+  -- * Extension Support
+    gl_ARB_fragment_layer_viewport
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_fragment_layer_viewport :: Bool
+gl_ARB_fragment_layer_viewport = member "GL_ARB_fragment_layer_viewport" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentProgram.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentProgram.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentProgram.hs
@@ -0,0 +1,139 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FragmentProgram (
+  -- * Extension Support
+    gl_ARB_fragment_program
+
+  -- * GL_ARB_fragment_program
+  , glBindProgramARB
+  , glDeleteProgramsARB
+  , glGenProgramsARB
+  , glGetProgramEnvParameterdvARB
+  , glGetProgramEnvParameterfvARB
+  , glGetProgramLocalParameterdvARB
+  , glGetProgramLocalParameterfvARB
+  , glGetProgramStringARB
+  , glGetProgramivARB
+  , glIsProgramARB
+  , glProgramEnvParameter4dARB
+  , glProgramEnvParameter4dvARB
+  , glProgramEnvParameter4fARB
+  , glProgramEnvParameter4fvARB
+  , glProgramLocalParameter4dARB
+  , glProgramLocalParameter4dvARB
+  , glProgramLocalParameter4fARB
+  , glProgramLocalParameter4fvARB
+  , glProgramStringARB
+  , pattern GL_CURRENT_MATRIX_ARB
+  , pattern GL_CURRENT_MATRIX_STACK_DEPTH_ARB
+  , pattern GL_FRAGMENT_PROGRAM_ARB
+  , pattern GL_MATRIX0_ARB
+  , pattern GL_MATRIX10_ARB
+  , pattern GL_MATRIX11_ARB
+  , pattern GL_MATRIX12_ARB
+  , pattern GL_MATRIX13_ARB
+  , pattern GL_MATRIX14_ARB
+  , pattern GL_MATRIX15_ARB
+  , pattern GL_MATRIX16_ARB
+  , pattern GL_MATRIX17_ARB
+  , pattern GL_MATRIX18_ARB
+  , pattern GL_MATRIX19_ARB
+  , pattern GL_MATRIX1_ARB
+  , pattern GL_MATRIX20_ARB
+  , pattern GL_MATRIX21_ARB
+  , pattern GL_MATRIX22_ARB
+  , pattern GL_MATRIX23_ARB
+  , pattern GL_MATRIX24_ARB
+  , pattern GL_MATRIX25_ARB
+  , pattern GL_MATRIX26_ARB
+  , pattern GL_MATRIX27_ARB
+  , pattern GL_MATRIX28_ARB
+  , pattern GL_MATRIX29_ARB
+  , pattern GL_MATRIX2_ARB
+  , pattern GL_MATRIX30_ARB
+  , pattern GL_MATRIX31_ARB
+  , pattern GL_MATRIX3_ARB
+  , pattern GL_MATRIX4_ARB
+  , pattern GL_MATRIX5_ARB
+  , pattern GL_MATRIX6_ARB
+  , pattern GL_MATRIX7_ARB
+  , pattern GL_MATRIX8_ARB
+  , pattern GL_MATRIX9_ARB
+  , pattern GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB
+  , pattern GL_MAX_PROGRAM_ATTRIBS_ARB
+  , pattern GL_MAX_PROGRAM_ENV_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_INSTRUCTIONS_ARB
+  , pattern GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_MATRICES_ARB
+  , pattern GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB
+  , pattern GL_MAX_PROGRAM_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_TEMPORARIES_ARB
+  , pattern GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB
+  , pattern GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB
+  , pattern GL_MAX_TEXTURE_COORDS_ARB
+  , pattern GL_MAX_TEXTURE_IMAGE_UNITS_ARB
+  , pattern GL_PROGRAM_ALU_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_ATTRIBS_ARB
+  , pattern GL_PROGRAM_BINDING_ARB
+  , pattern GL_PROGRAM_ERROR_POSITION_ARB
+  , pattern GL_PROGRAM_ERROR_STRING_ARB
+  , pattern GL_PROGRAM_FORMAT_ARB
+  , pattern GL_PROGRAM_FORMAT_ASCII_ARB
+  , pattern GL_PROGRAM_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_LENGTH_ARB
+  , pattern GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_NATIVE_ATTRIBS_ARB
+  , pattern GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_NATIVE_PARAMETERS_ARB
+  , pattern GL_PROGRAM_NATIVE_TEMPORARIES_ARB
+  , pattern GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB
+  , pattern GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_PARAMETERS_ARB
+  , pattern GL_PROGRAM_STRING_ARB
+  , pattern GL_PROGRAM_TEMPORARIES_ARB
+  , pattern GL_PROGRAM_TEX_INDIRECTIONS_ARB
+  , pattern GL_PROGRAM_TEX_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB
+  , pattern GL_TRANSPOSE_CURRENT_MATRIX_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_ARB_fragment_program :: Bool
+gl_ARB_fragment_program = member "GL_ARB_fragment_program" extensions
+
+pattern GL_FRAGMENT_PROGRAM_ARB = 0x8804 :: GLenum
+
+pattern GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x880B :: GLenum
+
+pattern GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x880E :: GLenum
+
+pattern GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x8810 :: GLenum
+
+pattern GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x880F :: GLenum
+
+pattern GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 0x880D :: GLenum
+
+pattern GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x880C :: GLenum
+
+pattern GL_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x8805 :: GLenum
+
+pattern GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x8808 :: GLenum
+
+pattern GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x880A :: GLenum
+
+pattern GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x8809 :: GLenum
+
+pattern GL_PROGRAM_TEX_INDIRECTIONS_ARB = 0x8807 :: GLenum
+
+pattern GL_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x8806 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentProgramShadow.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentProgramShadow.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentProgramShadow.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FragmentProgramShadow (
+  -- * Extension Support
+    gl_ARB_fragment_program_shadow
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_fragment_program_shadow :: Bool
+gl_ARB_fragment_program_shadow = member "GL_ARB_fragment_program_shadow" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FragmentShader.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FragmentShader (
+  -- * Extension Support
+    gl_ARB_fragment_shader
+
+  -- * GL_ARB_fragment_shader
+  , pattern GL_FRAGMENT_SHADER_ARB
+  , pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
+  , pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_fragment_shader :: Bool
+gl_ARB_fragment_shader = member "GL_ARB_fragment_shader" extensions
+
+pattern GL_FRAGMENT_SHADER_ARB = 0x8B30 :: GLenum
+
+pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B :: GLenum
+
+pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x8B49 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferNoAttachments.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferNoAttachments.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferNoAttachments.hs
@@ -0,0 +1,26 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FramebufferNoAttachments (
+  -- * Extension Support
+    gl_ARB_framebuffer_no_attachments
+
+  -- * GL_ARB_framebuffer_no_attachments
+  , glFramebufferParameteri
+  , glGetFramebufferParameteriv
+  , pattern GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS
+  , pattern GL_FRAMEBUFFER_DEFAULT_HEIGHT
+  , pattern GL_FRAMEBUFFER_DEFAULT_LAYERS
+  , pattern GL_FRAMEBUFFER_DEFAULT_SAMPLES
+  , pattern GL_FRAMEBUFFER_DEFAULT_WIDTH
+  , pattern GL_MAX_FRAMEBUFFER_HEIGHT
+  , pattern GL_MAX_FRAMEBUFFER_LAYERS
+  , pattern GL_MAX_FRAMEBUFFER_SAMPLES
+  , pattern GL_MAX_FRAMEBUFFER_WIDTH
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_framebuffer_no_attachments :: Bool
+gl_ARB_framebuffer_no_attachments = member "GL_ARB_framebuffer_no_attachments" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferObject.hs
@@ -0,0 +1,108 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FramebufferObject (
+  -- * Extension Support
+    gl_ARB_framebuffer_object
+
+  -- * GL_ARB_framebuffer_object
+  , glBindFramebuffer
+  , glBindRenderbuffer
+  , glBlitFramebuffer
+  , glCheckFramebufferStatus
+  , glDeleteFramebuffers
+  , glDeleteRenderbuffers
+  , glFramebufferRenderbuffer
+  , glFramebufferTexture1D
+  , glFramebufferTexture2D
+  , glFramebufferTexture3D
+  , glFramebufferTextureLayer
+  , glGenFramebuffers
+  , glGenRenderbuffers
+  , glGenerateMipmap
+  , glGetFramebufferAttachmentParameteriv
+  , glGetRenderbufferParameteriv
+  , glIsFramebuffer
+  , glIsRenderbuffer
+  , glRenderbufferStorage
+  , glRenderbufferStorageMultisample
+  , pattern GL_COLOR_ATTACHMENT0
+  , pattern GL_COLOR_ATTACHMENT1
+  , pattern GL_COLOR_ATTACHMENT10
+  , pattern GL_COLOR_ATTACHMENT11
+  , pattern GL_COLOR_ATTACHMENT12
+  , pattern GL_COLOR_ATTACHMENT13
+  , pattern GL_COLOR_ATTACHMENT14
+  , pattern GL_COLOR_ATTACHMENT15
+  , pattern GL_COLOR_ATTACHMENT2
+  , pattern GL_COLOR_ATTACHMENT3
+  , pattern GL_COLOR_ATTACHMENT4
+  , pattern GL_COLOR_ATTACHMENT5
+  , pattern GL_COLOR_ATTACHMENT6
+  , pattern GL_COLOR_ATTACHMENT7
+  , pattern GL_COLOR_ATTACHMENT8
+  , pattern GL_COLOR_ATTACHMENT9
+  , pattern GL_DEPTH24_STENCIL8
+  , pattern GL_DEPTH_ATTACHMENT
+  , pattern GL_DEPTH_STENCIL
+  , pattern GL_DEPTH_STENCIL_ATTACHMENT
+  , pattern GL_DRAW_FRAMEBUFFER
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING
+  , pattern GL_FRAMEBUFFER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
+  , pattern GL_FRAMEBUFFER_BINDING
+  , pattern GL_FRAMEBUFFER_COMPLETE
+  , pattern GL_FRAMEBUFFER_DEFAULT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
+  , pattern GL_FRAMEBUFFER_UNDEFINED
+  , pattern GL_FRAMEBUFFER_UNSUPPORTED
+  , pattern GL_INDEX
+  , pattern GL_INVALID_FRAMEBUFFER_OPERATION
+  , pattern GL_MAX_COLOR_ATTACHMENTS
+  , pattern GL_MAX_RENDERBUFFER_SIZE
+  , pattern GL_MAX_SAMPLES
+  , pattern GL_READ_FRAMEBUFFER
+  , pattern GL_READ_FRAMEBUFFER_BINDING
+  , pattern GL_RENDERBUFFER
+  , pattern GL_RENDERBUFFER_ALPHA_SIZE
+  , pattern GL_RENDERBUFFER_BINDING
+  , pattern GL_RENDERBUFFER_BLUE_SIZE
+  , pattern GL_RENDERBUFFER_DEPTH_SIZE
+  , pattern GL_RENDERBUFFER_GREEN_SIZE
+  , pattern GL_RENDERBUFFER_HEIGHT
+  , pattern GL_RENDERBUFFER_INTERNAL_FORMAT
+  , pattern GL_RENDERBUFFER_RED_SIZE
+  , pattern GL_RENDERBUFFER_SAMPLES
+  , pattern GL_RENDERBUFFER_STENCIL_SIZE
+  , pattern GL_RENDERBUFFER_WIDTH
+  , pattern GL_STENCIL_ATTACHMENT
+  , pattern GL_STENCIL_INDEX1
+  , pattern GL_STENCIL_INDEX16
+  , pattern GL_STENCIL_INDEX4
+  , pattern GL_STENCIL_INDEX8
+  , pattern GL_TEXTURE_STENCIL_SIZE
+  , pattern GL_UNSIGNED_INT_24_8
+  , pattern GL_UNSIGNED_NORMALIZED
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_framebuffer_object :: Bool
+gl_ARB_framebuffer_object = member "GL_ARB_framebuffer_object" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferSRGB.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferSRGB.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/FramebufferSRGB.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.FramebufferSRGB (
+  -- * Extension Support
+    gl_ARB_framebuffer_sRGB
+
+  -- * GL_ARB_framebuffer_sRGB
+  , pattern GL_FRAMEBUFFER_SRGB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_framebuffer_sRGB :: Bool
+gl_ARB_framebuffer_sRGB = member "GL_ARB_framebuffer_sRGB" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GeometryShader4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GeometryShader4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GeometryShader4.hs
@@ -0,0 +1,112 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.GeometryShader4 (
+  -- * Extension Support
+    gl_ARB_geometry_shader4
+
+  -- * GL_ARB_geometry_shader4
+  , glFramebufferTextureARB
+  , glFramebufferTextureFaceARB
+  , glFramebufferTextureLayerARB
+  , glProgramParameteriARB
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB
+  , pattern GL_GEOMETRY_INPUT_TYPE_ARB
+  , pattern GL_GEOMETRY_OUTPUT_TYPE_ARB
+  , pattern GL_GEOMETRY_SHADER_ARB
+  , pattern GL_GEOMETRY_VERTICES_OUT_ARB
+  , pattern GL_LINES_ADJACENCY_ARB
+  , pattern GL_LINE_STRIP_ADJACENCY_ARB
+  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB
+  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB
+  , pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB
+  , pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB
+  , pattern GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB
+  , pattern GL_MAX_VARYING_COMPONENTS
+  , pattern GL_MAX_VERTEX_VARYING_COMPONENTS_ARB
+  , pattern GL_PROGRAM_POINT_SIZE_ARB
+  , pattern GL_TRIANGLES_ADJACENCY_ARB
+  , pattern GL_TRIANGLE_STRIP_ADJACENCY_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.Internal.Shared
+import Graphics.GL.Raw.Types
+import System.IO.Unsafe
+
+gl_ARB_geometry_shader4 :: Bool
+gl_ARB_geometry_shader4 = member "GL_ARB_geometry_shader4" extensions
+
+glFramebufferTextureARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
+glFramebufferTextureARB = ffienumenumuintintIOV glFramebufferTextureARBFunPtr
+
+glFramebufferTextureARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glFramebufferTextureARBFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureARB")
+
+{-# NOINLINE glFramebufferTextureARBFunPtr #-}
+
+glFramebufferTextureFaceARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLenum -> m ()
+glFramebufferTextureFaceARB = ffienumenumuintintenumIOV glFramebufferTextureFaceARBFunPtr
+
+glFramebufferTextureFaceARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ())
+glFramebufferTextureFaceARBFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureFaceARB")
+
+{-# NOINLINE glFramebufferTextureFaceARBFunPtr #-}
+
+glFramebufferTextureLayerARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+glFramebufferTextureLayerARB = ffienumenumuintintintIOV glFramebufferTextureLayerARBFunPtr
+
+glFramebufferTextureLayerARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
+glFramebufferTextureLayerARBFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureLayerARB")
+
+{-# NOINLINE glFramebufferTextureLayerARBFunPtr #-}
+
+glProgramParameteriARB :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
+glProgramParameteriARB = ffiuintenumintIOV glProgramParameteriARBFunPtr
+
+glProgramParameteriARBFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
+glProgramParameteriARBFunPtr = unsafePerformIO (getProcAddress "glProgramParameteriARB")
+
+{-# NOINLINE glProgramParameteriARBFunPtr #-}
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8 :: GLenum
+
+pattern GL_GEOMETRY_INPUT_TYPE_ARB = 0x8DDB :: GLenum
+
+pattern GL_GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC :: GLenum
+
+pattern GL_GEOMETRY_SHADER_ARB = 0x8DD9 :: GLenum
+
+pattern GL_GEOMETRY_VERTICES_OUT_ARB = 0x8DDA :: GLenum
+
+pattern GL_LINES_ADJACENCY_ARB = 0x000A :: GLenum
+
+pattern GL_LINE_STRIP_ADJACENCY_ARB = 0x000B :: GLenum
+
+pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0 :: GLenum
+
+pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29 :: GLenum
+
+pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1 :: GLenum
+
+pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF :: GLenum
+
+pattern GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD :: GLenum
+
+pattern GL_MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE :: GLenum
+
+pattern GL_PROGRAM_POINT_SIZE_ARB = 0x8642 :: GLenum
+
+pattern GL_TRIANGLES_ADJACENCY_ARB = 0x000C :: GLenum
+
+pattern GL_TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GetProgramBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GetProgramBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GetProgramBinary.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.GetProgramBinary (
+  -- * Extension Support
+    gl_ARB_get_program_binary
+
+  -- * GL_ARB_get_program_binary
+  , glGetProgramBinary
+  , glProgramBinary
+  , glProgramParameteri
+  , pattern GL_NUM_PROGRAM_BINARY_FORMATS
+  , pattern GL_PROGRAM_BINARY_FORMATS
+  , pattern GL_PROGRAM_BINARY_LENGTH
+  , pattern GL_PROGRAM_BINARY_RETRIEVABLE_HINT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_get_program_binary :: Bool
+gl_ARB_get_program_binary = member "GL_ARB_get_program_binary" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GetTextureSubImage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GetTextureSubImage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GetTextureSubImage.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.GetTextureSubImage (
+  -- * Extension Support
+    gl_ARB_get_texture_sub_image
+
+  -- * GL_ARB_get_texture_sub_image
+  , glGetCompressedTextureSubImage
+  , glGetTextureSubImage
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_get_texture_sub_image :: Bool
+gl_ARB_get_texture_sub_image = member "GL_ARB_get_texture_sub_image" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GpuShader5.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GpuShader5.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GpuShader5.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.GpuShader5 (
+  -- * Extension Support
+    gl_ARB_gpu_shader5
+
+  -- * GL_ARB_gpu_shader5
+  , pattern GL_FRAGMENT_INTERPOLATION_OFFSET_BITS
+  , pattern GL_GEOMETRY_SHADER_INVOCATIONS
+  , pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET
+  , pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS
+  , pattern GL_MAX_VERTEX_STREAMS
+  , pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_gpu_shader5 :: Bool
+gl_ARB_gpu_shader5 = member "GL_ARB_gpu_shader5" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GpuShaderFp64.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GpuShaderFp64.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/GpuShaderFp64.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.GpuShaderFp64 (
+  -- * Extension Support
+    gl_ARB_gpu_shader_fp64
+
+  -- * GL_ARB_gpu_shader_fp64
+  , glGetUniformdv
+  , glUniform1d
+  , glUniform1dv
+  , glUniform2d
+  , glUniform2dv
+  , glUniform3d
+  , glUniform3dv
+  , glUniform4d
+  , glUniform4dv
+  , glUniformMatrix2dv
+  , glUniformMatrix2x3dv
+  , glUniformMatrix2x4dv
+  , glUniformMatrix3dv
+  , glUniformMatrix3x2dv
+  , glUniformMatrix3x4dv
+  , glUniformMatrix4dv
+  , glUniformMatrix4x2dv
+  , glUniformMatrix4x3dv
+  , pattern GL_DOUBLE
+  , pattern GL_DOUBLE_MAT2
+  , pattern GL_DOUBLE_MAT2x3
+  , pattern GL_DOUBLE_MAT2x4
+  , pattern GL_DOUBLE_MAT3
+  , pattern GL_DOUBLE_MAT3x2
+  , pattern GL_DOUBLE_MAT3x4
+  , pattern GL_DOUBLE_MAT4
+  , pattern GL_DOUBLE_MAT4x2
+  , pattern GL_DOUBLE_MAT4x3
+  , pattern GL_DOUBLE_VEC2
+  , pattern GL_DOUBLE_VEC3
+  , pattern GL_DOUBLE_VEC4
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_gpu_shader_fp64 :: Bool
+gl_ARB_gpu_shader_fp64 = member "GL_ARB_gpu_shader_fp64" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/HalfFloatPixel.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/HalfFloatPixel.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/HalfFloatPixel.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.HalfFloatPixel (
+  -- * Extension Support
+    gl_ARB_half_float_pixel
+
+  -- * GL_ARB_half_float_pixel
+  , pattern GL_HALF_FLOAT_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_half_float_pixel :: Bool
+gl_ARB_half_float_pixel = member "GL_ARB_half_float_pixel" extensions
+
+pattern GL_HALF_FLOAT_ARB = 0x140B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/HalfFloatVertex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/HalfFloatVertex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/HalfFloatVertex.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.HalfFloatVertex (
+  -- * Extension Support
+    gl_ARB_half_float_vertex
+
+  -- * GL_ARB_half_float_vertex
+  , pattern GL_HALF_FLOAT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_half_float_vertex :: Bool
+gl_ARB_half_float_vertex = member "GL_ARB_half_float_vertex" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Imaging.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Imaging.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Imaging.hs
@@ -0,0 +1,513 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.Imaging (
+  -- * Extension Support
+    gl_ARB_imaging
+
+  -- * GL_ARB_imaging
+  , glBlendColor
+  , glBlendEquation
+  , glColorSubTable
+  , glColorTable
+  , glColorTableParameterfv
+  , glColorTableParameteriv
+  , glConvolutionFilter1D
+  , glConvolutionFilter2D
+  , glConvolutionParameterf
+  , glConvolutionParameterfv
+  , glConvolutionParameteri
+  , glConvolutionParameteriv
+  , glCopyColorSubTable
+  , glCopyColorTable
+  , glCopyConvolutionFilter1D
+  , glCopyConvolutionFilter2D
+  , glGetColorTable
+  , glGetColorTableParameterfv
+  , glGetColorTableParameteriv
+  , glGetConvolutionFilter
+  , glGetConvolutionParameterfv
+  , glGetConvolutionParameteriv
+  , glGetHistogram
+  , glGetHistogramParameterfv
+  , glGetHistogramParameteriv
+  , glGetMinmax
+  , glGetMinmaxParameterfv
+  , glGetMinmaxParameteriv
+  , glGetSeparableFilter
+  , glHistogram
+  , glMinmax
+  , glResetHistogram
+  , glResetMinmax
+  , glSeparableFilter2D
+  , pattern GL_BLEND_COLOR
+  , pattern GL_BLEND_EQUATION
+  , pattern GL_COLOR_MATRIX
+  , pattern GL_COLOR_MATRIX_STACK_DEPTH
+  , pattern GL_COLOR_TABLE
+  , pattern GL_COLOR_TABLE_ALPHA_SIZE
+  , pattern GL_COLOR_TABLE_BIAS
+  , pattern GL_COLOR_TABLE_BLUE_SIZE
+  , pattern GL_COLOR_TABLE_FORMAT
+  , pattern GL_COLOR_TABLE_GREEN_SIZE
+  , pattern GL_COLOR_TABLE_INTENSITY_SIZE
+  , pattern GL_COLOR_TABLE_LUMINANCE_SIZE
+  , pattern GL_COLOR_TABLE_RED_SIZE
+  , pattern GL_COLOR_TABLE_SCALE
+  , pattern GL_COLOR_TABLE_WIDTH
+  , pattern GL_CONSTANT_ALPHA
+  , pattern GL_CONSTANT_BORDER
+  , pattern GL_CONSTANT_COLOR
+  , pattern GL_CONVOLUTION_1D
+  , pattern GL_CONVOLUTION_2D
+  , pattern GL_CONVOLUTION_BORDER_COLOR
+  , pattern GL_CONVOLUTION_BORDER_MODE
+  , pattern GL_CONVOLUTION_FILTER_BIAS
+  , pattern GL_CONVOLUTION_FILTER_SCALE
+  , pattern GL_CONVOLUTION_FORMAT
+  , pattern GL_CONVOLUTION_HEIGHT
+  , pattern GL_CONVOLUTION_WIDTH
+  , pattern GL_FUNC_ADD
+  , pattern GL_FUNC_REVERSE_SUBTRACT
+  , pattern GL_FUNC_SUBTRACT
+  , pattern GL_HISTOGRAM
+  , pattern GL_HISTOGRAM_ALPHA_SIZE
+  , pattern GL_HISTOGRAM_BLUE_SIZE
+  , pattern GL_HISTOGRAM_FORMAT
+  , pattern GL_HISTOGRAM_GREEN_SIZE
+  , pattern GL_HISTOGRAM_LUMINANCE_SIZE
+  , pattern GL_HISTOGRAM_RED_SIZE
+  , pattern GL_HISTOGRAM_SINK
+  , pattern GL_HISTOGRAM_WIDTH
+  , pattern GL_MAX
+  , pattern GL_MAX_COLOR_MATRIX_STACK_DEPTH
+  , pattern GL_MAX_CONVOLUTION_HEIGHT
+  , pattern GL_MAX_CONVOLUTION_WIDTH
+  , pattern GL_MIN
+  , pattern GL_MINMAX
+  , pattern GL_MINMAX_FORMAT
+  , pattern GL_MINMAX_SINK
+  , pattern GL_ONE_MINUS_CONSTANT_ALPHA
+  , pattern GL_ONE_MINUS_CONSTANT_COLOR
+  , pattern GL_POST_COLOR_MATRIX_ALPHA_BIAS
+  , pattern GL_POST_COLOR_MATRIX_ALPHA_SCALE
+  , pattern GL_POST_COLOR_MATRIX_BLUE_BIAS
+  , pattern GL_POST_COLOR_MATRIX_BLUE_SCALE
+  , pattern GL_POST_COLOR_MATRIX_COLOR_TABLE
+  , pattern GL_POST_COLOR_MATRIX_GREEN_BIAS
+  , pattern GL_POST_COLOR_MATRIX_GREEN_SCALE
+  , pattern GL_POST_COLOR_MATRIX_RED_BIAS
+  , pattern GL_POST_COLOR_MATRIX_RED_SCALE
+  , pattern GL_POST_CONVOLUTION_ALPHA_BIAS
+  , pattern GL_POST_CONVOLUTION_ALPHA_SCALE
+  , pattern GL_POST_CONVOLUTION_BLUE_BIAS
+  , pattern GL_POST_CONVOLUTION_BLUE_SCALE
+  , pattern GL_POST_CONVOLUTION_COLOR_TABLE
+  , pattern GL_POST_CONVOLUTION_GREEN_BIAS
+  , pattern GL_POST_CONVOLUTION_GREEN_SCALE
+  , pattern GL_POST_CONVOLUTION_RED_BIAS
+  , pattern GL_POST_CONVOLUTION_RED_SCALE
+  , pattern GL_PROXY_COLOR_TABLE
+  , pattern GL_PROXY_HISTOGRAM
+  , pattern GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE
+  , pattern GL_PROXY_POST_CONVOLUTION_COLOR_TABLE
+  , pattern GL_REDUCE
+  , pattern GL_REPLICATE_BORDER
+  , pattern GL_SEPARABLE_2D
+  , pattern GL_TABLE_TOO_LARGE
+) 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_ARB_imaging :: Bool
+gl_ARB_imaging = member "GL_ARB_imaging" extensions
+
+glColorSubTable :: MonadIO m => GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glColorSubTable = ffienumsizeisizeienumenumPtrVIOV glColorSubTableFunPtr
+
+glColorSubTableFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glColorSubTableFunPtr = unsafePerformIO (getProcAddress "glColorSubTable")
+
+{-# NOINLINE glColorSubTableFunPtr #-}
+
+glColorTable :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glColorTable = ffienumenumsizeienumenumPtrVIOV glColorTableFunPtr
+
+glColorTableFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glColorTableFunPtr = unsafePerformIO (getProcAddress "glColorTable")
+
+{-# NOINLINE glColorTableFunPtr #-}
+
+glColorTableParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glColorTableParameterfv = ffienumenumPtrfloatIOV glColorTableParameterfvFunPtr
+
+glColorTableParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glColorTableParameterfvFunPtr = unsafePerformIO (getProcAddress "glColorTableParameterfv")
+
+{-# NOINLINE glColorTableParameterfvFunPtr #-}
+
+glColorTableParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glColorTableParameteriv = ffienumenumPtrintIOV glColorTableParameterivFunPtr
+
+glColorTableParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glColorTableParameterivFunPtr = unsafePerformIO (getProcAddress "glColorTableParameteriv")
+
+{-# NOINLINE glColorTableParameterivFunPtr #-}
+
+glConvolutionFilter1D :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glConvolutionFilter1D = ffienumenumsizeienumenumPtrVIOV glConvolutionFilter1DFunPtr
+
+glConvolutionFilter1DFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glConvolutionFilter1DFunPtr = unsafePerformIO (getProcAddress "glConvolutionFilter1D")
+
+{-# NOINLINE glConvolutionFilter1DFunPtr #-}
+
+glConvolutionFilter2D :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glConvolutionFilter2D = ffienumenumsizeisizeienumenumPtrVIOV glConvolutionFilter2DFunPtr
+
+glConvolutionFilter2DFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glConvolutionFilter2DFunPtr = unsafePerformIO (getProcAddress "glConvolutionFilter2D")
+
+{-# NOINLINE glConvolutionFilter2DFunPtr #-}
+
+glConvolutionParameterf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
+glConvolutionParameterf = ffienumenumfloatIOV glConvolutionParameterfFunPtr
+
+glConvolutionParameterfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
+glConvolutionParameterfFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameterf")
+
+{-# NOINLINE glConvolutionParameterfFunPtr #-}
+
+glConvolutionParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glConvolutionParameterfv = ffienumenumPtrfloatIOV glConvolutionParameterfvFunPtr
+
+glConvolutionParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glConvolutionParameterfvFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameterfv")
+
+{-# NOINLINE glConvolutionParameterfvFunPtr #-}
+
+glConvolutionParameteri :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glConvolutionParameteri = ffienumenumintIOV glConvolutionParameteriFunPtr
+
+glConvolutionParameteriFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glConvolutionParameteriFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameteri")
+
+{-# NOINLINE glConvolutionParameteriFunPtr #-}
+
+glConvolutionParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glConvolutionParameteriv = ffienumenumPtrintIOV glConvolutionParameterivFunPtr
+
+glConvolutionParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glConvolutionParameterivFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameteriv")
+
+{-# NOINLINE glConvolutionParameterivFunPtr #-}
+
+glCopyColorSubTable :: MonadIO m => GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> m ()
+glCopyColorSubTable = ffienumsizeiintintsizeiIOV glCopyColorSubTableFunPtr
+
+glCopyColorSubTableFunPtr :: FunPtr (GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> IO ())
+glCopyColorSubTableFunPtr = unsafePerformIO (getProcAddress "glCopyColorSubTable")
+
+{-# NOINLINE glCopyColorSubTableFunPtr #-}
+
+glCopyColorTable :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> m ()
+glCopyColorTable = ffienumenumintintsizeiIOV glCopyColorTableFunPtr
+
+glCopyColorTableFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> IO ())
+glCopyColorTableFunPtr = unsafePerformIO (getProcAddress "glCopyColorTable")
+
+{-# NOINLINE glCopyColorTableFunPtr #-}
+
+glCopyConvolutionFilter1D :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> m ()
+glCopyConvolutionFilter1D = ffienumenumintintsizeiIOV glCopyConvolutionFilter1DFunPtr
+
+glCopyConvolutionFilter1DFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> IO ())
+glCopyConvolutionFilter1DFunPtr = unsafePerformIO (getProcAddress "glCopyConvolutionFilter1D")
+
+{-# NOINLINE glCopyConvolutionFilter1DFunPtr #-}
+
+glCopyConvolutionFilter2D :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyConvolutionFilter2D = ffienumenumintintsizeisizeiIOV glCopyConvolutionFilter2DFunPtr
+
+glCopyConvolutionFilter2DFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyConvolutionFilter2DFunPtr = unsafePerformIO (getProcAddress "glCopyConvolutionFilter2D")
+
+{-# NOINLINE glCopyConvolutionFilter2DFunPtr #-}
+
+glGetColorTable :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+glGetColorTable = ffienumenumenumPtrVIOV glGetColorTableFunPtr
+
+glGetColorTableFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetColorTableFunPtr = unsafePerformIO (getProcAddress "glGetColorTable")
+
+{-# NOINLINE glGetColorTableFunPtr #-}
+
+glGetColorTableParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetColorTableParameterfv = ffienumenumPtrfloatIOV glGetColorTableParameterfvFunPtr
+
+glGetColorTableParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetColorTableParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetColorTableParameterfv")
+
+{-# NOINLINE glGetColorTableParameterfvFunPtr #-}
+
+glGetColorTableParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetColorTableParameteriv = ffienumenumPtrintIOV glGetColorTableParameterivFunPtr
+
+glGetColorTableParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetColorTableParameterivFunPtr = unsafePerformIO (getProcAddress "glGetColorTableParameteriv")
+
+{-# NOINLINE glGetColorTableParameterivFunPtr #-}
+
+glGetConvolutionFilter :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+glGetConvolutionFilter = ffienumenumenumPtrVIOV glGetConvolutionFilterFunPtr
+
+glGetConvolutionFilterFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetConvolutionFilterFunPtr = unsafePerformIO (getProcAddress "glGetConvolutionFilter")
+
+{-# NOINLINE glGetConvolutionFilterFunPtr #-}
+
+glGetConvolutionParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetConvolutionParameterfv = ffienumenumPtrfloatIOV glGetConvolutionParameterfvFunPtr
+
+glGetConvolutionParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetConvolutionParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetConvolutionParameterfv")
+
+{-# NOINLINE glGetConvolutionParameterfvFunPtr #-}
+
+glGetConvolutionParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetConvolutionParameteriv = ffienumenumPtrintIOV glGetConvolutionParameterivFunPtr
+
+glGetConvolutionParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetConvolutionParameterivFunPtr = unsafePerformIO (getProcAddress "glGetConvolutionParameteriv")
+
+{-# NOINLINE glGetConvolutionParameterivFunPtr #-}
+
+glGetHistogram :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> m ()
+glGetHistogram = ffienumbooleanenumenumPtrVIOV glGetHistogramFunPtr
+
+glGetHistogramFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetHistogramFunPtr = unsafePerformIO (getProcAddress "glGetHistogram")
+
+{-# NOINLINE glGetHistogramFunPtr #-}
+
+glGetHistogramParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetHistogramParameterfv = ffienumenumPtrfloatIOV glGetHistogramParameterfvFunPtr
+
+glGetHistogramParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetHistogramParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetHistogramParameterfv")
+
+{-# NOINLINE glGetHistogramParameterfvFunPtr #-}
+
+glGetHistogramParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetHistogramParameteriv = ffienumenumPtrintIOV glGetHistogramParameterivFunPtr
+
+glGetHistogramParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetHistogramParameterivFunPtr = unsafePerformIO (getProcAddress "glGetHistogramParameteriv")
+
+{-# NOINLINE glGetHistogramParameterivFunPtr #-}
+
+glGetMinmax :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> m ()
+glGetMinmax = ffienumbooleanenumenumPtrVIOV glGetMinmaxFunPtr
+
+glGetMinmaxFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetMinmaxFunPtr = unsafePerformIO (getProcAddress "glGetMinmax")
+
+{-# NOINLINE glGetMinmaxFunPtr #-}
+
+glGetMinmaxParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetMinmaxParameterfv = ffienumenumPtrfloatIOV glGetMinmaxParameterfvFunPtr
+
+glGetMinmaxParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetMinmaxParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxParameterfv")
+
+{-# NOINLINE glGetMinmaxParameterfvFunPtr #-}
+
+glGetMinmaxParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetMinmaxParameteriv = ffienumenumPtrintIOV glGetMinmaxParameterivFunPtr
+
+glGetMinmaxParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetMinmaxParameterivFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxParameteriv")
+
+{-# NOINLINE glGetMinmaxParameterivFunPtr #-}
+
+glGetSeparableFilter :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> m ()
+glGetSeparableFilter = ffienumenumenumPtrVPtrVPtrVIOV glGetSeparableFilterFunPtr
+
+glGetSeparableFilterFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> IO ())
+glGetSeparableFilterFunPtr = unsafePerformIO (getProcAddress "glGetSeparableFilter")
+
+{-# NOINLINE glGetSeparableFilterFunPtr #-}
+
+glHistogram :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLboolean -> m ()
+glHistogram = ffienumsizeienumbooleanIOV glHistogramFunPtr
+
+glHistogramFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLboolean -> IO ())
+glHistogramFunPtr = unsafePerformIO (getProcAddress "glHistogram")
+
+{-# NOINLINE glHistogramFunPtr #-}
+
+glMinmax :: MonadIO m => GLenum -> GLenum -> GLboolean -> m ()
+glMinmax = ffienumenumbooleanIOV glMinmaxFunPtr
+
+glMinmaxFunPtr :: FunPtr (GLenum -> GLenum -> GLboolean -> IO ())
+glMinmaxFunPtr = unsafePerformIO (getProcAddress "glMinmax")
+
+{-# NOINLINE glMinmaxFunPtr #-}
+
+glResetHistogram :: MonadIO m => GLenum -> m ()
+glResetHistogram = ffienumIOV glResetHistogramFunPtr
+
+glResetHistogramFunPtr :: FunPtr (GLenum -> IO ())
+glResetHistogramFunPtr = unsafePerformIO (getProcAddress "glResetHistogram")
+
+{-# NOINLINE glResetHistogramFunPtr #-}
+
+glResetMinmax :: MonadIO m => GLenum -> m ()
+glResetMinmax = ffienumIOV glResetMinmaxFunPtr
+
+glResetMinmaxFunPtr :: FunPtr (GLenum -> IO ())
+glResetMinmaxFunPtr = unsafePerformIO (getProcAddress "glResetMinmax")
+
+{-# NOINLINE glResetMinmaxFunPtr #-}
+
+glSeparableFilter2D :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> m ()
+glSeparableFilter2D = ffienumenumsizeisizeienumenumPtrVPtrVIOV glSeparableFilter2DFunPtr
+
+glSeparableFilter2DFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> IO ())
+glSeparableFilter2DFunPtr = unsafePerformIO (getProcAddress "glSeparableFilter2D")
+
+{-# NOINLINE glSeparableFilter2DFunPtr #-}
+
+pattern GL_COLOR_MATRIX = 0x80B1 :: GLenum
+
+pattern GL_COLOR_MATRIX_STACK_DEPTH = 0x80B2 :: GLenum
+
+pattern GL_COLOR_TABLE = 0x80D0 :: GLenum
+
+pattern GL_COLOR_TABLE_ALPHA_SIZE = 0x80DD :: GLenum
+
+pattern GL_COLOR_TABLE_BIAS = 0x80D7 :: GLenum
+
+pattern GL_COLOR_TABLE_BLUE_SIZE = 0x80DC :: GLenum
+
+pattern GL_COLOR_TABLE_FORMAT = 0x80D8 :: GLenum
+
+pattern GL_COLOR_TABLE_GREEN_SIZE = 0x80DB :: GLenum
+
+pattern GL_COLOR_TABLE_INTENSITY_SIZE = 0x80DF :: GLenum
+
+pattern GL_COLOR_TABLE_LUMINANCE_SIZE = 0x80DE :: GLenum
+
+pattern GL_COLOR_TABLE_RED_SIZE = 0x80DA :: GLenum
+
+pattern GL_COLOR_TABLE_SCALE = 0x80D6 :: GLenum
+
+pattern GL_COLOR_TABLE_WIDTH = 0x80D9 :: GLenum
+
+pattern GL_CONSTANT_BORDER = 0x8151 :: GLenum
+
+pattern GL_CONVOLUTION_1D = 0x8010 :: GLenum
+
+pattern GL_CONVOLUTION_2D = 0x8011 :: GLenum
+
+pattern GL_CONVOLUTION_BORDER_COLOR = 0x8154 :: GLenum
+
+pattern GL_CONVOLUTION_BORDER_MODE = 0x8013 :: GLenum
+
+pattern GL_CONVOLUTION_FILTER_BIAS = 0x8015 :: GLenum
+
+pattern GL_CONVOLUTION_FILTER_SCALE = 0x8014 :: GLenum
+
+pattern GL_CONVOLUTION_FORMAT = 0x8017 :: GLenum
+
+pattern GL_CONVOLUTION_HEIGHT = 0x8019 :: GLenum
+
+pattern GL_CONVOLUTION_WIDTH = 0x8018 :: GLenum
+
+pattern GL_HISTOGRAM = 0x8024 :: GLenum
+
+pattern GL_HISTOGRAM_ALPHA_SIZE = 0x802B :: GLenum
+
+pattern GL_HISTOGRAM_BLUE_SIZE = 0x802A :: GLenum
+
+pattern GL_HISTOGRAM_FORMAT = 0x8027 :: GLenum
+
+pattern GL_HISTOGRAM_GREEN_SIZE = 0x8029 :: GLenum
+
+pattern GL_HISTOGRAM_LUMINANCE_SIZE = 0x802C :: GLenum
+
+pattern GL_HISTOGRAM_RED_SIZE = 0x8028 :: GLenum
+
+pattern GL_HISTOGRAM_SINK = 0x802D :: GLenum
+
+pattern GL_HISTOGRAM_WIDTH = 0x8026 :: GLenum
+
+pattern GL_MAX_COLOR_MATRIX_STACK_DEPTH = 0x80B3 :: GLenum
+
+pattern GL_MAX_CONVOLUTION_HEIGHT = 0x801B :: GLenum
+
+pattern GL_MAX_CONVOLUTION_WIDTH = 0x801A :: GLenum
+
+pattern GL_MINMAX = 0x802E :: GLenum
+
+pattern GL_MINMAX_FORMAT = 0x802F :: GLenum
+
+pattern GL_MINMAX_SINK = 0x8030 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_ALPHA_BIAS = 0x80BB :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_ALPHA_SCALE = 0x80B7 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_BLUE_BIAS = 0x80BA :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_BLUE_SCALE = 0x80B6 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_COLOR_TABLE = 0x80D2 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_GREEN_BIAS = 0x80B9 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_GREEN_SCALE = 0x80B5 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_RED_BIAS = 0x80B8 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_RED_SCALE = 0x80B4 :: GLenum
+
+pattern GL_POST_CONVOLUTION_ALPHA_BIAS = 0x8023 :: GLenum
+
+pattern GL_POST_CONVOLUTION_ALPHA_SCALE = 0x801F :: GLenum
+
+pattern GL_POST_CONVOLUTION_BLUE_BIAS = 0x8022 :: GLenum
+
+pattern GL_POST_CONVOLUTION_BLUE_SCALE = 0x801E :: GLenum
+
+pattern GL_POST_CONVOLUTION_COLOR_TABLE = 0x80D1 :: GLenum
+
+pattern GL_POST_CONVOLUTION_GREEN_BIAS = 0x8021 :: GLenum
+
+pattern GL_POST_CONVOLUTION_GREEN_SCALE = 0x801D :: GLenum
+
+pattern GL_POST_CONVOLUTION_RED_BIAS = 0x8020 :: GLenum
+
+pattern GL_POST_CONVOLUTION_RED_SCALE = 0x801C :: GLenum
+
+pattern GL_PROXY_COLOR_TABLE = 0x80D3 :: GLenum
+
+pattern GL_PROXY_HISTOGRAM = 0x8025 :: GLenum
+
+pattern GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = 0x80D5 :: GLenum
+
+pattern GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = 0x80D4 :: GLenum
+
+pattern GL_REDUCE = 0x8016 :: GLenum
+
+pattern GL_REPLICATE_BORDER = 0x8153 :: GLenum
+
+pattern GL_SEPARABLE_2D = 0x8012 :: GLenum
+
+pattern GL_TABLE_TOO_LARGE = 0x8031 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/IndirectParameters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/IndirectParameters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/IndirectParameters.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.IndirectParameters (
+  -- * Extension Support
+    gl_ARB_indirect_parameters
+
+  -- * GL_ARB_indirect_parameters
+  , glMultiDrawArraysIndirectCountARB
+  , glMultiDrawElementsIndirectCountARB
+  , pattern GL_PARAMETER_BUFFER_ARB
+  , pattern GL_PARAMETER_BUFFER_BINDING_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_indirect_parameters :: Bool
+gl_ARB_indirect_parameters = member "GL_ARB_indirect_parameters" extensions
+
+glMultiDrawArraysIndirectCountARB :: MonadIO m => GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> m ()
+glMultiDrawArraysIndirectCountARB = ffienumintptrintptrsizeisizeiIOV glMultiDrawArraysIndirectCountARBFunPtr
+
+glMultiDrawArraysIndirectCountARBFunPtr :: FunPtr (GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ())
+glMultiDrawArraysIndirectCountARBFunPtr = unsafePerformIO (getProcAddress "glMultiDrawArraysIndirectCountARB")
+
+{-# NOINLINE glMultiDrawArraysIndirectCountARBFunPtr #-}
+
+glMultiDrawElementsIndirectCountARB :: MonadIO m => GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> m ()
+glMultiDrawElementsIndirectCountARB = ffienumenumintptrintptrsizeisizeiIOV glMultiDrawElementsIndirectCountARBFunPtr
+
+glMultiDrawElementsIndirectCountARBFunPtr :: FunPtr (GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ())
+glMultiDrawElementsIndirectCountARBFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementsIndirectCountARB")
+
+{-# NOINLINE glMultiDrawElementsIndirectCountARBFunPtr #-}
+
+pattern GL_PARAMETER_BUFFER_ARB = 0x80EE :: GLenum
+
+pattern GL_PARAMETER_BUFFER_BINDING_ARB = 0x80EF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InstancedArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InstancedArrays.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.InstancedArrays (
+  -- * Extension Support
+    gl_ARB_instanced_arrays
+
+  -- * GL_ARB_instanced_arrays
+  , glVertexAttribDivisorARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_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_instanced_arrays :: Bool
+gl_ARB_instanced_arrays = member "GL_ARB_instanced_arrays" extensions
+
+glVertexAttribDivisorARB :: MonadIO m => GLuint -> GLuint -> m ()
+glVertexAttribDivisorARB = ffiuintuintIOV glVertexAttribDivisorARBFunPtr
+
+glVertexAttribDivisorARBFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glVertexAttribDivisorARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttribDivisorARB")
+
+{-# NOINLINE glVertexAttribDivisorARBFunPtr #-}
+
+pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InternalformatQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InternalformatQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InternalformatQuery.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.InternalformatQuery (
+  -- * Extension Support
+    gl_ARB_internalformat_query
+
+  -- * GL_ARB_internalformat_query
+  , glGetInternalformativ
+  , pattern GL_NUM_SAMPLE_COUNTS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_internalformat_query :: Bool
+gl_ARB_internalformat_query = member "GL_ARB_internalformat_query" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InternalformatQuery2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InternalformatQuery2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InternalformatQuery2.hs
@@ -0,0 +1,134 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.InternalformatQuery2 (
+  -- * Extension Support
+    gl_ARB_internalformat_query2
+
+  -- * GL_ARB_internalformat_query2
+  , glGetInternalformati64v
+  , pattern GL_AUTO_GENERATE_MIPMAP
+  , pattern GL_CAVEAT_SUPPORT
+  , pattern GL_CLEAR_BUFFER
+  , pattern GL_COLOR_COMPONENTS
+  , pattern GL_COLOR_ENCODING
+  , pattern GL_COLOR_RENDERABLE
+  , pattern GL_COMPUTE_TEXTURE
+  , pattern GL_DEPTH_COMPONENTS
+  , pattern GL_DEPTH_RENDERABLE
+  , pattern GL_FILTER
+  , pattern GL_FRAGMENT_TEXTURE
+  , pattern GL_FRAMEBUFFER_BLEND
+  , pattern GL_FRAMEBUFFER_RENDERABLE
+  , pattern GL_FRAMEBUFFER_RENDERABLE_LAYERED
+  , pattern GL_FULL_SUPPORT
+  , pattern GL_GEOMETRY_TEXTURE
+  , pattern GL_GET_TEXTURE_IMAGE_FORMAT
+  , pattern GL_GET_TEXTURE_IMAGE_TYPE
+  , pattern GL_IMAGE_CLASS_10_10_10_2
+  , pattern GL_IMAGE_CLASS_11_11_10
+  , pattern GL_IMAGE_CLASS_1_X_16
+  , pattern GL_IMAGE_CLASS_1_X_32
+  , pattern GL_IMAGE_CLASS_1_X_8
+  , pattern GL_IMAGE_CLASS_2_X_16
+  , pattern GL_IMAGE_CLASS_2_X_32
+  , pattern GL_IMAGE_CLASS_2_X_8
+  , pattern GL_IMAGE_CLASS_4_X_16
+  , pattern GL_IMAGE_CLASS_4_X_32
+  , pattern GL_IMAGE_CLASS_4_X_8
+  , pattern GL_IMAGE_COMPATIBILITY_CLASS
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_TYPE
+  , pattern GL_IMAGE_PIXEL_FORMAT
+  , pattern GL_IMAGE_PIXEL_TYPE
+  , pattern GL_IMAGE_TEXEL_SIZE
+  , pattern GL_INTERNALFORMAT_ALPHA_SIZE
+  , pattern GL_INTERNALFORMAT_ALPHA_TYPE
+  , pattern GL_INTERNALFORMAT_BLUE_SIZE
+  , pattern GL_INTERNALFORMAT_BLUE_TYPE
+  , pattern GL_INTERNALFORMAT_DEPTH_SIZE
+  , pattern GL_INTERNALFORMAT_DEPTH_TYPE
+  , pattern GL_INTERNALFORMAT_GREEN_SIZE
+  , pattern GL_INTERNALFORMAT_GREEN_TYPE
+  , pattern GL_INTERNALFORMAT_PREFERRED
+  , pattern GL_INTERNALFORMAT_RED_SIZE
+  , pattern GL_INTERNALFORMAT_RED_TYPE
+  , pattern GL_INTERNALFORMAT_SHARED_SIZE
+  , pattern GL_INTERNALFORMAT_STENCIL_SIZE
+  , pattern GL_INTERNALFORMAT_STENCIL_TYPE
+  , pattern GL_INTERNALFORMAT_SUPPORTED
+  , pattern GL_MANUAL_GENERATE_MIPMAP
+  , pattern GL_MAX_COMBINED_DIMENSIONS
+  , pattern GL_MAX_DEPTH
+  , pattern GL_MAX_HEIGHT
+  , pattern GL_MAX_LAYERS
+  , pattern GL_MAX_WIDTH
+  , pattern GL_MIPMAP
+  , pattern GL_NUM_SAMPLE_COUNTS
+  , pattern GL_READ_PIXELS
+  , pattern GL_READ_PIXELS_FORMAT
+  , pattern GL_READ_PIXELS_TYPE
+  , pattern GL_RENDERBUFFER
+  , pattern GL_SAMPLES
+  , pattern GL_SHADER_IMAGE_ATOMIC
+  , pattern GL_SHADER_IMAGE_LOAD
+  , pattern GL_SHADER_IMAGE_STORE
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE
+  , pattern GL_SRGB_DECODE_ARB
+  , pattern GL_SRGB_READ
+  , pattern GL_SRGB_WRITE
+  , pattern GL_STENCIL_COMPONENTS
+  , pattern GL_STENCIL_RENDERABLE
+  , pattern GL_TESS_CONTROL_TEXTURE
+  , pattern GL_TESS_EVALUATION_TEXTURE
+  , pattern GL_TEXTURE_1D
+  , pattern GL_TEXTURE_1D_ARRAY
+  , pattern GL_TEXTURE_2D
+  , pattern GL_TEXTURE_2D_ARRAY
+  , pattern GL_TEXTURE_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_3D
+  , pattern GL_TEXTURE_BUFFER
+  , pattern GL_TEXTURE_COMPRESSED
+  , pattern GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT
+  , pattern GL_TEXTURE_COMPRESSED_BLOCK_SIZE
+  , pattern GL_TEXTURE_COMPRESSED_BLOCK_WIDTH
+  , pattern GL_TEXTURE_CUBE_MAP
+  , pattern GL_TEXTURE_CUBE_MAP_ARRAY
+  , pattern GL_TEXTURE_GATHER
+  , pattern GL_TEXTURE_GATHER_SHADOW
+  , pattern GL_TEXTURE_IMAGE_FORMAT
+  , pattern GL_TEXTURE_IMAGE_TYPE
+  , pattern GL_TEXTURE_RECTANGLE
+  , pattern GL_TEXTURE_SHADOW
+  , pattern GL_TEXTURE_VIEW
+  , pattern GL_VERTEX_TEXTURE
+  , pattern GL_VIEW_CLASS_128_BITS
+  , pattern GL_VIEW_CLASS_16_BITS
+  , pattern GL_VIEW_CLASS_24_BITS
+  , pattern GL_VIEW_CLASS_32_BITS
+  , pattern GL_VIEW_CLASS_48_BITS
+  , pattern GL_VIEW_CLASS_64_BITS
+  , pattern GL_VIEW_CLASS_8_BITS
+  , pattern GL_VIEW_CLASS_96_BITS
+  , pattern GL_VIEW_CLASS_BPTC_FLOAT
+  , pattern GL_VIEW_CLASS_BPTC_UNORM
+  , pattern GL_VIEW_CLASS_RGTC1_RED
+  , pattern GL_VIEW_CLASS_RGTC2_RG
+  , pattern GL_VIEW_CLASS_S3TC_DXT1_RGB
+  , pattern GL_VIEW_CLASS_S3TC_DXT1_RGBA
+  , pattern GL_VIEW_CLASS_S3TC_DXT3_RGBA
+  , pattern GL_VIEW_CLASS_S3TC_DXT5_RGBA
+  , pattern GL_VIEW_COMPATIBILITY_CLASS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_ARB_internalformat_query2 :: Bool
+gl_ARB_internalformat_query2 = member "GL_ARB_internalformat_query2" extensions
+
+pattern GL_SRGB_DECODE_ARB = 0x8299 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InvalidateSubdata.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InvalidateSubdata.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/InvalidateSubdata.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.InvalidateSubdata (
+  -- * Extension Support
+    gl_ARB_invalidate_subdata
+
+  -- * GL_ARB_invalidate_subdata
+  , glInvalidateBufferData
+  , glInvalidateBufferSubData
+  , glInvalidateFramebuffer
+  , glInvalidateSubFramebuffer
+  , glInvalidateTexImage
+  , glInvalidateTexSubImage
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_invalidate_subdata :: Bool
+gl_ARB_invalidate_subdata = member "GL_ARB_invalidate_subdata" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MapBufferAlignment.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MapBufferAlignment.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MapBufferAlignment.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.MapBufferAlignment (
+  -- * Extension Support
+    gl_ARB_map_buffer_alignment
+
+  -- * GL_ARB_map_buffer_alignment
+  , pattern GL_MIN_MAP_BUFFER_ALIGNMENT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_map_buffer_alignment :: Bool
+gl_ARB_map_buffer_alignment = member "GL_ARB_map_buffer_alignment" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MapBufferRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MapBufferRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MapBufferRange.hs
@@ -0,0 +1,23 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.MapBufferRange (
+  -- * Extension Support
+    gl_ARB_map_buffer_range
+
+  -- * GL_ARB_map_buffer_range
+  , glFlushMappedBufferRange
+  , glMapBufferRange
+  , pattern GL_MAP_FLUSH_EXPLICIT_BIT
+  , pattern GL_MAP_INVALIDATE_BUFFER_BIT
+  , pattern GL_MAP_INVALIDATE_RANGE_BIT
+  , pattern GL_MAP_READ_BIT
+  , pattern GL_MAP_UNSYNCHRONIZED_BIT
+  , pattern GL_MAP_WRITE_BIT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_map_buffer_range :: Bool
+gl_ARB_map_buffer_range = member "GL_ARB_map_buffer_range" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MatrixPalette.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MatrixPalette.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MatrixPalette.hs
@@ -0,0 +1,94 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.MatrixPalette (
+  -- * Extension Support
+    gl_ARB_matrix_palette
+
+  -- * GL_ARB_matrix_palette
+  , glCurrentPaletteMatrixARB
+  , glMatrixIndexPointerARB
+  , glMatrixIndexubvARB
+  , glMatrixIndexuivARB
+  , glMatrixIndexusvARB
+  , pattern GL_CURRENT_MATRIX_INDEX_ARB
+  , pattern GL_CURRENT_PALETTE_MATRIX_ARB
+  , pattern GL_MATRIX_INDEX_ARRAY_ARB
+  , pattern GL_MATRIX_INDEX_ARRAY_POINTER_ARB
+  , pattern GL_MATRIX_INDEX_ARRAY_SIZE_ARB
+  , pattern GL_MATRIX_INDEX_ARRAY_STRIDE_ARB
+  , pattern GL_MATRIX_INDEX_ARRAY_TYPE_ARB
+  , pattern GL_MATRIX_PALETTE_ARB
+  , pattern GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB
+  , pattern GL_MAX_PALETTE_MATRICES_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_matrix_palette :: Bool
+gl_ARB_matrix_palette = member "GL_ARB_matrix_palette" extensions
+
+glCurrentPaletteMatrixARB :: MonadIO m => GLint -> m ()
+glCurrentPaletteMatrixARB = ffiintIOV glCurrentPaletteMatrixARBFunPtr
+
+glCurrentPaletteMatrixARBFunPtr :: FunPtr (GLint -> IO ())
+glCurrentPaletteMatrixARBFunPtr = unsafePerformIO (getProcAddress "glCurrentPaletteMatrixARB")
+
+{-# NOINLINE glCurrentPaletteMatrixARBFunPtr #-}
+
+glMatrixIndexPointerARB :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glMatrixIndexPointerARB = ffiintenumsizeiPtrVIOV glMatrixIndexPointerARBFunPtr
+
+glMatrixIndexPointerARBFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glMatrixIndexPointerARBFunPtr = unsafePerformIO (getProcAddress "glMatrixIndexPointerARB")
+
+{-# NOINLINE glMatrixIndexPointerARBFunPtr #-}
+
+glMatrixIndexubvARB :: MonadIO m => GLint -> Ptr GLubyte -> m ()
+glMatrixIndexubvARB = ffiintPtrubyteIOV glMatrixIndexubvARBFunPtr
+
+glMatrixIndexubvARBFunPtr :: FunPtr (GLint -> Ptr GLubyte -> IO ())
+glMatrixIndexubvARBFunPtr = unsafePerformIO (getProcAddress "glMatrixIndexubvARB")
+
+{-# NOINLINE glMatrixIndexubvARBFunPtr #-}
+
+glMatrixIndexuivARB :: MonadIO m => GLint -> Ptr GLuint -> m ()
+glMatrixIndexuivARB = ffiintPtruintIOV glMatrixIndexuivARBFunPtr
+
+glMatrixIndexuivARBFunPtr :: FunPtr (GLint -> Ptr GLuint -> IO ())
+glMatrixIndexuivARBFunPtr = unsafePerformIO (getProcAddress "glMatrixIndexuivARB")
+
+{-# NOINLINE glMatrixIndexuivARBFunPtr #-}
+
+glMatrixIndexusvARB :: MonadIO m => GLint -> Ptr GLushort -> m ()
+glMatrixIndexusvARB = ffiintPtrushortIOV glMatrixIndexusvARBFunPtr
+
+glMatrixIndexusvARBFunPtr :: FunPtr (GLint -> Ptr GLushort -> IO ())
+glMatrixIndexusvARBFunPtr = unsafePerformIO (getProcAddress "glMatrixIndexusvARB")
+
+{-# NOINLINE glMatrixIndexusvARBFunPtr #-}
+
+pattern GL_CURRENT_MATRIX_INDEX_ARB = 0x8845 :: GLenum
+
+pattern GL_CURRENT_PALETTE_MATRIX_ARB = 0x8843 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_ARB = 0x8844 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_POINTER_ARB = 0x8849 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_SIZE_ARB = 0x8846 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x8848 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_TYPE_ARB = 0x8847 :: GLenum
+
+pattern GL_MATRIX_PALETTE_ARB = 0x8840 :: GLenum
+
+pattern GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x8841 :: GLenum
+
+pattern GL_MAX_PALETTE_MATRICES_ARB = 0x8842 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MultiBind.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MultiBind.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MultiBind.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.MultiBind (
+  -- * Extension Support
+    gl_ARB_multi_bind
+
+  -- * GL_ARB_multi_bind
+  , glBindBuffersBase
+  , glBindBuffersRange
+  , glBindImageTextures
+  , glBindSamplers
+  , glBindTextures
+  , glBindVertexBuffers
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_multi_bind :: Bool
+gl_ARB_multi_bind = member "GL_ARB_multi_bind" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MultiDrawIndirect.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MultiDrawIndirect.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/MultiDrawIndirect.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.MultiDrawIndirect (
+  -- * Extension Support
+    gl_ARB_multi_draw_indirect
+
+  -- * GL_ARB_multi_draw_indirect
+  , glMultiDrawArraysIndirect
+  , glMultiDrawElementsIndirect
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_multi_draw_indirect :: Bool
+gl_ARB_multi_draw_indirect = member "GL_ARB_multi_draw_indirect" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Multisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Multisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Multisample.hs
@@ -0,0 +1,54 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.Multisample (
+  -- * Extension Support
+    gl_ARB_multisample
+
+  -- * GL_ARB_multisample
+  , glSampleCoverageARB
+  , pattern GL_MULTISAMPLE_ARB
+  , pattern GL_MULTISAMPLE_BIT_ARB
+  , pattern GL_SAMPLES_ARB
+  , pattern GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
+  , pattern GL_SAMPLE_ALPHA_TO_ONE_ARB
+  , pattern GL_SAMPLE_BUFFERS_ARB
+  , pattern GL_SAMPLE_COVERAGE_ARB
+  , pattern GL_SAMPLE_COVERAGE_INVERT_ARB
+  , pattern GL_SAMPLE_COVERAGE_VALUE_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.Internal.Shared
+import Graphics.GL.Raw.Types
+import System.IO.Unsafe
+
+gl_ARB_multisample :: Bool
+gl_ARB_multisample = member "GL_ARB_multisample" extensions
+
+glSampleCoverageARB :: MonadIO m => GLfloat -> GLboolean -> m ()
+glSampleCoverageARB = ffifloatbooleanIOV glSampleCoverageARBFunPtr
+
+glSampleCoverageARBFunPtr :: FunPtr (GLfloat -> GLboolean -> IO ())
+glSampleCoverageARBFunPtr = unsafePerformIO (getProcAddress "glSampleCoverageARB")
+
+{-# NOINLINE glSampleCoverageARBFunPtr #-}
+
+pattern GL_MULTISAMPLE_ARB = 0x809D :: GLenum
+
+pattern GL_MULTISAMPLE_BIT_ARB = 0x20000000 :: GLenum
+
+pattern GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x809E :: GLenum
+
+pattern GL_SAMPLE_ALPHA_TO_ONE_ARB = 0x809F :: GLenum
+
+pattern GL_SAMPLE_BUFFERS_ARB = 0x80A8 :: GLenum
+
+pattern GL_SAMPLE_COVERAGE_ARB = 0x80A0 :: GLenum
+
+pattern GL_SAMPLE_COVERAGE_INVERT_ARB = 0x80AB :: GLenum
+
+pattern GL_SAMPLE_COVERAGE_VALUE_ARB = 0x80AA :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Multitexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Multitexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Multitexture.hs
@@ -0,0 +1,427 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.Multitexture (
+  -- * Extension Support
+    gl_ARB_multitexture
+
+  -- * GL_ARB_multitexture
+  , glActiveTextureARB
+  , glClientActiveTextureARB
+  , glMultiTexCoord1dARB
+  , glMultiTexCoord1dvARB
+  , glMultiTexCoord1fARB
+  , glMultiTexCoord1fvARB
+  , glMultiTexCoord1iARB
+  , glMultiTexCoord1ivARB
+  , glMultiTexCoord1sARB
+  , glMultiTexCoord1svARB
+  , glMultiTexCoord2dARB
+  , glMultiTexCoord2dvARB
+  , glMultiTexCoord2fARB
+  , glMultiTexCoord2fvARB
+  , glMultiTexCoord2iARB
+  , glMultiTexCoord2ivARB
+  , glMultiTexCoord2sARB
+  , glMultiTexCoord2svARB
+  , glMultiTexCoord3dARB
+  , glMultiTexCoord3dvARB
+  , glMultiTexCoord3fARB
+  , glMultiTexCoord3fvARB
+  , glMultiTexCoord3iARB
+  , glMultiTexCoord3ivARB
+  , glMultiTexCoord3sARB
+  , glMultiTexCoord3svARB
+  , glMultiTexCoord4dARB
+  , glMultiTexCoord4dvARB
+  , glMultiTexCoord4fARB
+  , glMultiTexCoord4fvARB
+  , glMultiTexCoord4iARB
+  , glMultiTexCoord4ivARB
+  , glMultiTexCoord4sARB
+  , glMultiTexCoord4svARB
+  , pattern GL_ACTIVE_TEXTURE_ARB
+  , pattern GL_CLIENT_ACTIVE_TEXTURE_ARB
+  , pattern GL_MAX_TEXTURE_UNITS_ARB
+  , pattern GL_TEXTURE0_ARB
+  , pattern GL_TEXTURE10_ARB
+  , pattern GL_TEXTURE11_ARB
+  , pattern GL_TEXTURE12_ARB
+  , pattern GL_TEXTURE13_ARB
+  , pattern GL_TEXTURE14_ARB
+  , pattern GL_TEXTURE15_ARB
+  , pattern GL_TEXTURE16_ARB
+  , pattern GL_TEXTURE17_ARB
+  , pattern GL_TEXTURE18_ARB
+  , pattern GL_TEXTURE19_ARB
+  , pattern GL_TEXTURE1_ARB
+  , pattern GL_TEXTURE20_ARB
+  , pattern GL_TEXTURE21_ARB
+  , pattern GL_TEXTURE22_ARB
+  , pattern GL_TEXTURE23_ARB
+  , pattern GL_TEXTURE24_ARB
+  , pattern GL_TEXTURE25_ARB
+  , pattern GL_TEXTURE26_ARB
+  , pattern GL_TEXTURE27_ARB
+  , pattern GL_TEXTURE28_ARB
+  , pattern GL_TEXTURE29_ARB
+  , pattern GL_TEXTURE2_ARB
+  , pattern GL_TEXTURE30_ARB
+  , pattern GL_TEXTURE31_ARB
+  , pattern GL_TEXTURE3_ARB
+  , pattern GL_TEXTURE4_ARB
+  , pattern GL_TEXTURE5_ARB
+  , pattern GL_TEXTURE6_ARB
+  , pattern GL_TEXTURE7_ARB
+  , pattern GL_TEXTURE8_ARB
+  , pattern GL_TEXTURE9_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.Internal.Shared
+import Graphics.GL.Raw.Types
+import System.IO.Unsafe
+
+gl_ARB_multitexture :: Bool
+gl_ARB_multitexture = member "GL_ARB_multitexture" extensions
+
+glActiveTextureARB :: MonadIO m => GLenum -> m ()
+glActiveTextureARB = ffienumIOV glActiveTextureARBFunPtr
+
+glActiveTextureARBFunPtr :: FunPtr (GLenum -> IO ())
+glActiveTextureARBFunPtr = unsafePerformIO (getProcAddress "glActiveTextureARB")
+
+{-# NOINLINE glActiveTextureARBFunPtr #-}
+
+glClientActiveTextureARB :: MonadIO m => GLenum -> m ()
+glClientActiveTextureARB = ffienumIOV glClientActiveTextureARBFunPtr
+
+glClientActiveTextureARBFunPtr :: FunPtr (GLenum -> IO ())
+glClientActiveTextureARBFunPtr = unsafePerformIO (getProcAddress "glClientActiveTextureARB")
+
+{-# NOINLINE glClientActiveTextureARBFunPtr #-}
+
+glMultiTexCoord1dARB :: MonadIO m => GLenum -> GLdouble -> m ()
+glMultiTexCoord1dARB = ffienumdoubleIOV glMultiTexCoord1dARBFunPtr
+
+glMultiTexCoord1dARBFunPtr :: FunPtr (GLenum -> GLdouble -> IO ())
+glMultiTexCoord1dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1dARB")
+
+{-# NOINLINE glMultiTexCoord1dARBFunPtr #-}
+
+glMultiTexCoord1dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMultiTexCoord1dvARB = ffienumPtrdoubleIOV glMultiTexCoord1dvARBFunPtr
+
+glMultiTexCoord1dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMultiTexCoord1dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1dvARB")
+
+{-# NOINLINE glMultiTexCoord1dvARBFunPtr #-}
+
+glMultiTexCoord1fARB :: MonadIO m => GLenum -> GLfloat -> m ()
+glMultiTexCoord1fARB = ffienumfloatIOV glMultiTexCoord1fARBFunPtr
+
+glMultiTexCoord1fARBFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glMultiTexCoord1fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1fARB")
+
+{-# NOINLINE glMultiTexCoord1fARBFunPtr #-}
+
+glMultiTexCoord1fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMultiTexCoord1fvARB = ffienumPtrfloatIOV glMultiTexCoord1fvARBFunPtr
+
+glMultiTexCoord1fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMultiTexCoord1fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1fvARB")
+
+{-# NOINLINE glMultiTexCoord1fvARBFunPtr #-}
+
+glMultiTexCoord1iARB :: MonadIO m => GLenum -> GLint -> m ()
+glMultiTexCoord1iARB = ffienumintIOV glMultiTexCoord1iARBFunPtr
+
+glMultiTexCoord1iARBFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glMultiTexCoord1iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1iARB")
+
+{-# NOINLINE glMultiTexCoord1iARBFunPtr #-}
+
+glMultiTexCoord1ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glMultiTexCoord1ivARB = ffienumPtrintIOV glMultiTexCoord1ivARBFunPtr
+
+glMultiTexCoord1ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glMultiTexCoord1ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1ivARB")
+
+{-# NOINLINE glMultiTexCoord1ivARBFunPtr #-}
+
+glMultiTexCoord1sARB :: MonadIO m => GLenum -> GLshort -> m ()
+glMultiTexCoord1sARB = ffienumshortIOV glMultiTexCoord1sARBFunPtr
+
+glMultiTexCoord1sARBFunPtr :: FunPtr (GLenum -> GLshort -> IO ())
+glMultiTexCoord1sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1sARB")
+
+{-# NOINLINE glMultiTexCoord1sARBFunPtr #-}
+
+glMultiTexCoord1svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glMultiTexCoord1svARB = ffienumPtrshortIOV glMultiTexCoord1svARBFunPtr
+
+glMultiTexCoord1svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glMultiTexCoord1svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1svARB")
+
+{-# NOINLINE glMultiTexCoord1svARBFunPtr #-}
+
+glMultiTexCoord2dARB :: MonadIO m => GLenum -> GLdouble -> GLdouble -> m ()
+glMultiTexCoord2dARB = ffienumdoubledoubleIOV glMultiTexCoord2dARBFunPtr
+
+glMultiTexCoord2dARBFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> IO ())
+glMultiTexCoord2dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2dARB")
+
+{-# NOINLINE glMultiTexCoord2dARBFunPtr #-}
+
+glMultiTexCoord2dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMultiTexCoord2dvARB = ffienumPtrdoubleIOV glMultiTexCoord2dvARBFunPtr
+
+glMultiTexCoord2dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMultiTexCoord2dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2dvARB")
+
+{-# NOINLINE glMultiTexCoord2dvARBFunPtr #-}
+
+glMultiTexCoord2fARB :: MonadIO m => GLenum -> GLfloat -> GLfloat -> m ()
+glMultiTexCoord2fARB = ffienumfloatfloatIOV glMultiTexCoord2fARBFunPtr
+
+glMultiTexCoord2fARBFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> IO ())
+glMultiTexCoord2fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2fARB")
+
+{-# NOINLINE glMultiTexCoord2fARBFunPtr #-}
+
+glMultiTexCoord2fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMultiTexCoord2fvARB = ffienumPtrfloatIOV glMultiTexCoord2fvARBFunPtr
+
+glMultiTexCoord2fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMultiTexCoord2fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2fvARB")
+
+{-# NOINLINE glMultiTexCoord2fvARBFunPtr #-}
+
+glMultiTexCoord2iARB :: MonadIO m => GLenum -> GLint -> GLint -> m ()
+glMultiTexCoord2iARB = ffienumintintIOV glMultiTexCoord2iARBFunPtr
+
+glMultiTexCoord2iARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> IO ())
+glMultiTexCoord2iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2iARB")
+
+{-# NOINLINE glMultiTexCoord2iARBFunPtr #-}
+
+glMultiTexCoord2ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glMultiTexCoord2ivARB = ffienumPtrintIOV glMultiTexCoord2ivARBFunPtr
+
+glMultiTexCoord2ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glMultiTexCoord2ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2ivARB")
+
+{-# NOINLINE glMultiTexCoord2ivARBFunPtr #-}
+
+glMultiTexCoord2sARB :: MonadIO m => GLenum -> GLshort -> GLshort -> m ()
+glMultiTexCoord2sARB = ffienumshortshortIOV glMultiTexCoord2sARBFunPtr
+
+glMultiTexCoord2sARBFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> IO ())
+glMultiTexCoord2sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2sARB")
+
+{-# NOINLINE glMultiTexCoord2sARBFunPtr #-}
+
+glMultiTexCoord2svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glMultiTexCoord2svARB = ffienumPtrshortIOV glMultiTexCoord2svARBFunPtr
+
+glMultiTexCoord2svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glMultiTexCoord2svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2svARB")
+
+{-# NOINLINE glMultiTexCoord2svARBFunPtr #-}
+
+glMultiTexCoord3dARB :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
+glMultiTexCoord3dARB = ffienumdoubledoubledoubleIOV glMultiTexCoord3dARBFunPtr
+
+glMultiTexCoord3dARBFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glMultiTexCoord3dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3dARB")
+
+{-# NOINLINE glMultiTexCoord3dARBFunPtr #-}
+
+glMultiTexCoord3dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMultiTexCoord3dvARB = ffienumPtrdoubleIOV glMultiTexCoord3dvARBFunPtr
+
+glMultiTexCoord3dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMultiTexCoord3dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3dvARB")
+
+{-# NOINLINE glMultiTexCoord3dvARBFunPtr #-}
+
+glMultiTexCoord3fARB :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
+glMultiTexCoord3fARB = ffienumfloatfloatfloatIOV glMultiTexCoord3fARBFunPtr
+
+glMultiTexCoord3fARBFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glMultiTexCoord3fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3fARB")
+
+{-# NOINLINE glMultiTexCoord3fARBFunPtr #-}
+
+glMultiTexCoord3fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMultiTexCoord3fvARB = ffienumPtrfloatIOV glMultiTexCoord3fvARBFunPtr
+
+glMultiTexCoord3fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMultiTexCoord3fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3fvARB")
+
+{-# NOINLINE glMultiTexCoord3fvARBFunPtr #-}
+
+glMultiTexCoord3iARB :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> m ()
+glMultiTexCoord3iARB = ffienumintintintIOV glMultiTexCoord3iARBFunPtr
+
+glMultiTexCoord3iARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ())
+glMultiTexCoord3iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3iARB")
+
+{-# NOINLINE glMultiTexCoord3iARBFunPtr #-}
+
+glMultiTexCoord3ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glMultiTexCoord3ivARB = ffienumPtrintIOV glMultiTexCoord3ivARBFunPtr
+
+glMultiTexCoord3ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glMultiTexCoord3ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3ivARB")
+
+{-# NOINLINE glMultiTexCoord3ivARBFunPtr #-}
+
+glMultiTexCoord3sARB :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> m ()
+glMultiTexCoord3sARB = ffienumshortshortshortIOV glMultiTexCoord3sARBFunPtr
+
+glMultiTexCoord3sARBFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ())
+glMultiTexCoord3sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3sARB")
+
+{-# NOINLINE glMultiTexCoord3sARBFunPtr #-}
+
+glMultiTexCoord3svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glMultiTexCoord3svARB = ffienumPtrshortIOV glMultiTexCoord3svARBFunPtr
+
+glMultiTexCoord3svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glMultiTexCoord3svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3svARB")
+
+{-# NOINLINE glMultiTexCoord3svARBFunPtr #-}
+
+glMultiTexCoord4dARB :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glMultiTexCoord4dARB = ffienumdoubledoubledoubledoubleIOV glMultiTexCoord4dARBFunPtr
+
+glMultiTexCoord4dARBFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glMultiTexCoord4dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4dARB")
+
+{-# NOINLINE glMultiTexCoord4dARBFunPtr #-}
+
+glMultiTexCoord4dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMultiTexCoord4dvARB = ffienumPtrdoubleIOV glMultiTexCoord4dvARBFunPtr
+
+glMultiTexCoord4dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMultiTexCoord4dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4dvARB")
+
+{-# NOINLINE glMultiTexCoord4dvARBFunPtr #-}
+
+glMultiTexCoord4fARB :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glMultiTexCoord4fARB = ffienumfloatfloatfloatfloatIOV glMultiTexCoord4fARBFunPtr
+
+glMultiTexCoord4fARBFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glMultiTexCoord4fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4fARB")
+
+{-# NOINLINE glMultiTexCoord4fARBFunPtr #-}
+
+glMultiTexCoord4fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMultiTexCoord4fvARB = ffienumPtrfloatIOV glMultiTexCoord4fvARBFunPtr
+
+glMultiTexCoord4fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMultiTexCoord4fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4fvARB")
+
+{-# NOINLINE glMultiTexCoord4fvARBFunPtr #-}
+
+glMultiTexCoord4iARB :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> m ()
+glMultiTexCoord4iARB = ffienumintintintintIOV glMultiTexCoord4iARBFunPtr
+
+glMultiTexCoord4iARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> IO ())
+glMultiTexCoord4iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4iARB")
+
+{-# NOINLINE glMultiTexCoord4iARBFunPtr #-}
+
+glMultiTexCoord4ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glMultiTexCoord4ivARB = ffienumPtrintIOV glMultiTexCoord4ivARBFunPtr
+
+glMultiTexCoord4ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glMultiTexCoord4ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4ivARB")
+
+{-# NOINLINE glMultiTexCoord4ivARBFunPtr #-}
+
+glMultiTexCoord4sARB :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+glMultiTexCoord4sARB = ffienumshortshortshortshortIOV glMultiTexCoord4sARBFunPtr
+
+glMultiTexCoord4sARBFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
+glMultiTexCoord4sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4sARB")
+
+{-# NOINLINE glMultiTexCoord4sARBFunPtr #-}
+
+glMultiTexCoord4svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glMultiTexCoord4svARB = ffienumPtrshortIOV glMultiTexCoord4svARBFunPtr
+
+glMultiTexCoord4svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glMultiTexCoord4svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4svARB")
+
+{-# NOINLINE glMultiTexCoord4svARBFunPtr #-}
+
+pattern GL_ACTIVE_TEXTURE_ARB = 0x84E0 :: GLenum
+
+pattern GL_CLIENT_ACTIVE_TEXTURE_ARB = 0x84E1 :: GLenum
+
+pattern GL_MAX_TEXTURE_UNITS_ARB = 0x84E2 :: GLenum
+
+pattern GL_TEXTURE10_ARB = 0x84CA :: GLenum
+
+pattern GL_TEXTURE11_ARB = 0x84CB :: GLenum
+
+pattern GL_TEXTURE12_ARB = 0x84CC :: GLenum
+
+pattern GL_TEXTURE13_ARB = 0x84CD :: GLenum
+
+pattern GL_TEXTURE14_ARB = 0x84CE :: GLenum
+
+pattern GL_TEXTURE15_ARB = 0x84CF :: GLenum
+
+pattern GL_TEXTURE16_ARB = 0x84D0 :: GLenum
+
+pattern GL_TEXTURE17_ARB = 0x84D1 :: GLenum
+
+pattern GL_TEXTURE18_ARB = 0x84D2 :: GLenum
+
+pattern GL_TEXTURE19_ARB = 0x84D3 :: GLenum
+
+pattern GL_TEXTURE20_ARB = 0x84D4 :: GLenum
+
+pattern GL_TEXTURE21_ARB = 0x84D5 :: GLenum
+
+pattern GL_TEXTURE22_ARB = 0x84D6 :: GLenum
+
+pattern GL_TEXTURE23_ARB = 0x84D7 :: GLenum
+
+pattern GL_TEXTURE24_ARB = 0x84D8 :: GLenum
+
+pattern GL_TEXTURE25_ARB = 0x84D9 :: GLenum
+
+pattern GL_TEXTURE26_ARB = 0x84DA :: GLenum
+
+pattern GL_TEXTURE27_ARB = 0x84DB :: GLenum
+
+pattern GL_TEXTURE28_ARB = 0x84DC :: GLenum
+
+pattern GL_TEXTURE29_ARB = 0x84DD :: GLenum
+
+pattern GL_TEXTURE2_ARB = 0x84C2 :: GLenum
+
+pattern GL_TEXTURE30_ARB = 0x84DE :: GLenum
+
+pattern GL_TEXTURE31_ARB = 0x84DF :: GLenum
+
+pattern GL_TEXTURE3_ARB = 0x84C3 :: GLenum
+
+pattern GL_TEXTURE4_ARB = 0x84C4 :: GLenum
+
+pattern GL_TEXTURE5_ARB = 0x84C5 :: GLenum
+
+pattern GL_TEXTURE6_ARB = 0x84C6 :: GLenum
+
+pattern GL_TEXTURE7_ARB = 0x84C7 :: GLenum
+
+pattern GL_TEXTURE8_ARB = 0x84C8 :: GLenum
+
+pattern GL_TEXTURE9_ARB = 0x84C9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/OcclusionQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/OcclusionQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/OcclusionQuery.hs
@@ -0,0 +1,106 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.OcclusionQuery (
+  -- * Extension Support
+    gl_ARB_occlusion_query
+
+  -- * GL_ARB_occlusion_query
+  , glBeginQueryARB
+  , glDeleteQueriesARB
+  , glEndQueryARB
+  , glGenQueriesARB
+  , glGetQueryObjectivARB
+  , glGetQueryObjectuivARB
+  , glGetQueryivARB
+  , glIsQueryARB
+  , pattern GL_CURRENT_QUERY_ARB
+  , pattern GL_QUERY_COUNTER_BITS_ARB
+  , pattern GL_QUERY_RESULT_ARB
+  , pattern GL_QUERY_RESULT_AVAILABLE_ARB
+  , pattern GL_SAMPLES_PASSED_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_occlusion_query :: Bool
+gl_ARB_occlusion_query = member "GL_ARB_occlusion_query" extensions
+
+glBeginQueryARB :: MonadIO m => GLenum -> GLuint -> m ()
+glBeginQueryARB = ffienumuintIOV glBeginQueryARBFunPtr
+
+glBeginQueryARBFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBeginQueryARBFunPtr = unsafePerformIO (getProcAddress "glBeginQueryARB")
+
+{-# NOINLINE glBeginQueryARBFunPtr #-}
+
+glDeleteQueriesARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteQueriesARB = ffisizeiPtruintIOV glDeleteQueriesARBFunPtr
+
+glDeleteQueriesARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteQueriesARBFunPtr = unsafePerformIO (getProcAddress "glDeleteQueriesARB")
+
+{-# NOINLINE glDeleteQueriesARBFunPtr #-}
+
+glEndQueryARB :: MonadIO m => GLenum -> m ()
+glEndQueryARB = ffienumIOV glEndQueryARBFunPtr
+
+glEndQueryARBFunPtr :: FunPtr (GLenum -> IO ())
+glEndQueryARBFunPtr = unsafePerformIO (getProcAddress "glEndQueryARB")
+
+{-# NOINLINE glEndQueryARBFunPtr #-}
+
+glGenQueriesARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenQueriesARB = ffisizeiPtruintIOV glGenQueriesARBFunPtr
+
+glGenQueriesARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenQueriesARBFunPtr = unsafePerformIO (getProcAddress "glGenQueriesARB")
+
+{-# NOINLINE glGenQueriesARBFunPtr #-}
+
+glGetQueryObjectivARB :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetQueryObjectivARB = ffiuintenumPtrintIOV glGetQueryObjectivARBFunPtr
+
+glGetQueryObjectivARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetQueryObjectivARBFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectivARB")
+
+{-# NOINLINE glGetQueryObjectivARBFunPtr #-}
+
+glGetQueryObjectuivARB :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
+glGetQueryObjectuivARB = ffiuintenumPtruintIOV glGetQueryObjectuivARBFunPtr
+
+glGetQueryObjectuivARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
+glGetQueryObjectuivARBFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectuivARB")
+
+{-# NOINLINE glGetQueryObjectuivARBFunPtr #-}
+
+glGetQueryivARB :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetQueryivARB = ffienumenumPtrintIOV glGetQueryivARBFunPtr
+
+glGetQueryivARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetQueryivARBFunPtr = unsafePerformIO (getProcAddress "glGetQueryivARB")
+
+{-# NOINLINE glGetQueryivARBFunPtr #-}
+
+glIsQueryARB :: MonadIO m => GLuint -> m GLboolean
+glIsQueryARB = ffiuintIOboolean glIsQueryARBFunPtr
+
+glIsQueryARBFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsQueryARBFunPtr = unsafePerformIO (getProcAddress "glIsQueryARB")
+
+{-# NOINLINE glIsQueryARBFunPtr #-}
+
+pattern GL_CURRENT_QUERY_ARB = 0x8865 :: GLenum
+
+pattern GL_QUERY_COUNTER_BITS_ARB = 0x8864 :: GLenum
+
+pattern GL_QUERY_RESULT_ARB = 0x8866 :: GLenum
+
+pattern GL_QUERY_RESULT_AVAILABLE_ARB = 0x8867 :: GLenum
+
+pattern GL_SAMPLES_PASSED_ARB = 0x8914 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/OcclusionQuery2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/OcclusionQuery2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/OcclusionQuery2.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.OcclusionQuery2 (
+  -- * Extension Support
+    gl_ARB_occlusion_query2
+
+  -- * GL_ARB_occlusion_query2
+  , pattern GL_ANY_SAMPLES_PASSED
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_occlusion_query2 :: Bool
+gl_ARB_occlusion_query2 = member "GL_ARB_occlusion_query2" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PipelineStatisticsQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PipelineStatisticsQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PipelineStatisticsQuery.hs
@@ -0,0 +1,47 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.PipelineStatisticsQuery (
+  -- * Extension Support
+    gl_ARB_pipeline_statistics_query
+
+  -- * GL_ARB_pipeline_statistics_query
+  , pattern GL_CLIPPING_INPUT_PRIMITIVES_ARB
+  , pattern GL_CLIPPING_OUTPUT_PRIMITIVES_ARB
+  , pattern GL_COMPUTE_SHADER_INVOCATIONS_ARB
+  , pattern GL_FRAGMENT_SHADER_INVOCATIONS_ARB
+  , pattern GL_GEOMETRY_SHADER_INVOCATIONS
+  , pattern GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB
+  , pattern GL_PRIMITIVES_SUBMITTED_ARB
+  , pattern GL_TESS_CONTROL_SHADER_PATCHES_ARB
+  , pattern GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB
+  , pattern GL_VERTEX_SHADER_INVOCATIONS_ARB
+  , pattern GL_VERTICES_SUBMITTED_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_ARB_pipeline_statistics_query :: Bool
+gl_ARB_pipeline_statistics_query = member "GL_ARB_pipeline_statistics_query" extensions
+
+pattern GL_CLIPPING_INPUT_PRIMITIVES_ARB = 0x82F6 :: GLenum
+
+pattern GL_CLIPPING_OUTPUT_PRIMITIVES_ARB = 0x82F7 :: GLenum
+
+pattern GL_COMPUTE_SHADER_INVOCATIONS_ARB = 0x82F5 :: GLenum
+
+pattern GL_FRAGMENT_SHADER_INVOCATIONS_ARB = 0x82F4 :: GLenum
+
+pattern GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB = 0x82F3 :: GLenum
+
+pattern GL_PRIMITIVES_SUBMITTED_ARB = 0x82EF :: GLenum
+
+pattern GL_TESS_CONTROL_SHADER_PATCHES_ARB = 0x82F1 :: GLenum
+
+pattern GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB = 0x82F2 :: GLenum
+
+pattern GL_VERTEX_SHADER_INVOCATIONS_ARB = 0x82F0 :: GLenum
+
+pattern GL_VERTICES_SUBMITTED_ARB = 0x82EE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PixelBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PixelBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PixelBufferObject.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.PixelBufferObject (
+  -- * Extension Support
+    gl_ARB_pixel_buffer_object
+
+  -- * GL_ARB_pixel_buffer_object
+  , pattern GL_PIXEL_PACK_BUFFER_ARB
+  , pattern GL_PIXEL_PACK_BUFFER_BINDING_ARB
+  , pattern GL_PIXEL_UNPACK_BUFFER_ARB
+  , pattern GL_PIXEL_UNPACK_BUFFER_BINDING_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_pixel_buffer_object :: Bool
+gl_ARB_pixel_buffer_object = member "GL_ARB_pixel_buffer_object" extensions
+
+pattern GL_PIXEL_PACK_BUFFER_ARB = 0x88EB :: GLenum
+
+pattern GL_PIXEL_PACK_BUFFER_BINDING_ARB = 0x88ED :: GLenum
+
+pattern GL_PIXEL_UNPACK_BUFFER_ARB = 0x88EC :: GLenum
+
+pattern GL_PIXEL_UNPACK_BUFFER_BINDING_ARB = 0x88EF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PointParameters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PointParameters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PointParameters.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.PointParameters (
+  -- * Extension Support
+    gl_ARB_point_parameters
+
+  -- * GL_ARB_point_parameters
+  , glPointParameterfARB
+  , glPointParameterfvARB
+  , pattern GL_POINT_DISTANCE_ATTENUATION_ARB
+  , pattern GL_POINT_FADE_THRESHOLD_SIZE_ARB
+  , pattern GL_POINT_SIZE_MAX_ARB
+  , pattern GL_POINT_SIZE_MIN_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_point_parameters :: Bool
+gl_ARB_point_parameters = member "GL_ARB_point_parameters" extensions
+
+glPointParameterfARB :: MonadIO m => GLenum -> GLfloat -> m ()
+glPointParameterfARB = ffienumfloatIOV glPointParameterfARBFunPtr
+
+glPointParameterfARBFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glPointParameterfARBFunPtr = unsafePerformIO (getProcAddress "glPointParameterfARB")
+
+{-# NOINLINE glPointParameterfARBFunPtr #-}
+
+glPointParameterfvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glPointParameterfvARB = ffienumPtrfloatIOV glPointParameterfvARBFunPtr
+
+glPointParameterfvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glPointParameterfvARBFunPtr = unsafePerformIO (getProcAddress "glPointParameterfvARB")
+
+{-# NOINLINE glPointParameterfvARBFunPtr #-}
+
+pattern GL_POINT_DISTANCE_ATTENUATION_ARB = 0x8129 :: GLenum
+
+pattern GL_POINT_FADE_THRESHOLD_SIZE_ARB = 0x8128 :: GLenum
+
+pattern GL_POINT_SIZE_MAX_ARB = 0x8127 :: GLenum
+
+pattern GL_POINT_SIZE_MIN_ARB = 0x8126 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PointSprite.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PointSprite.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/PointSprite.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.PointSprite (
+  -- * Extension Support
+    gl_ARB_point_sprite
+
+  -- * GL_ARB_point_sprite
+  , pattern GL_COORD_REPLACE_ARB
+  , pattern GL_POINT_SPRITE_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_point_sprite :: Bool
+gl_ARB_point_sprite = member "GL_ARB_point_sprite" extensions
+
+pattern GL_COORD_REPLACE_ARB = 0x8862 :: GLenum
+
+pattern GL_POINT_SPRITE_ARB = 0x8861 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ProgramInterfaceQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ProgramInterfaceQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ProgramInterfaceQuery.hs
@@ -0,0 +1,71 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ProgramInterfaceQuery (
+  -- * Extension Support
+    gl_ARB_program_interface_query
+
+  -- * GL_ARB_program_interface_query
+  , glGetProgramInterfaceiv
+  , glGetProgramResourceIndex
+  , glGetProgramResourceLocation
+  , glGetProgramResourceLocationIndex
+  , glGetProgramResourceName
+  , glGetProgramResourceiv
+  , pattern GL_ACTIVE_RESOURCES
+  , pattern GL_ACTIVE_VARIABLES
+  , pattern GL_ARRAY_SIZE
+  , pattern GL_ARRAY_STRIDE
+  , pattern GL_ATOMIC_COUNTER_BUFFER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_INDEX
+  , pattern GL_BLOCK_INDEX
+  , pattern GL_BUFFER_BINDING
+  , pattern GL_BUFFER_DATA_SIZE
+  , pattern GL_BUFFER_VARIABLE
+  , pattern GL_COMPATIBLE_SUBROUTINES
+  , pattern GL_COMPUTE_SUBROUTINE
+  , pattern GL_COMPUTE_SUBROUTINE_UNIFORM
+  , pattern GL_FRAGMENT_SUBROUTINE
+  , pattern GL_FRAGMENT_SUBROUTINE_UNIFORM
+  , pattern GL_GEOMETRY_SUBROUTINE
+  , pattern GL_GEOMETRY_SUBROUTINE_UNIFORM
+  , pattern GL_IS_PER_PATCH
+  , pattern GL_IS_ROW_MAJOR
+  , pattern GL_LOCATION
+  , pattern GL_LOCATION_INDEX
+  , pattern GL_MATRIX_STRIDE
+  , pattern GL_MAX_NAME_LENGTH
+  , pattern GL_MAX_NUM_ACTIVE_VARIABLES
+  , pattern GL_MAX_NUM_COMPATIBLE_SUBROUTINES
+  , pattern GL_NAME_LENGTH
+  , pattern GL_NUM_ACTIVE_VARIABLES
+  , pattern GL_NUM_COMPATIBLE_SUBROUTINES
+  , pattern GL_OFFSET
+  , pattern GL_PROGRAM_INPUT
+  , pattern GL_PROGRAM_OUTPUT
+  , pattern GL_REFERENCED_BY_COMPUTE_SHADER
+  , pattern GL_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_REFERENCED_BY_TESS_CONTROL_SHADER
+  , pattern GL_REFERENCED_BY_TESS_EVALUATION_SHADER
+  , pattern GL_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_SHADER_STORAGE_BLOCK
+  , pattern GL_TESS_CONTROL_SUBROUTINE
+  , pattern GL_TESS_CONTROL_SUBROUTINE_UNIFORM
+  , pattern GL_TESS_EVALUATION_SUBROUTINE
+  , pattern GL_TESS_EVALUATION_SUBROUTINE_UNIFORM
+  , pattern GL_TOP_LEVEL_ARRAY_SIZE
+  , pattern GL_TOP_LEVEL_ARRAY_STRIDE
+  , pattern GL_TRANSFORM_FEEDBACK_VARYING
+  , pattern GL_TYPE
+  , pattern GL_UNIFORM
+  , pattern GL_UNIFORM_BLOCK
+  , pattern GL_VERTEX_SUBROUTINE
+  , pattern GL_VERTEX_SUBROUTINE_UNIFORM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_program_interface_query :: Bool
+gl_ARB_program_interface_query = member "GL_ARB_program_interface_query" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ProvokingVertex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ProvokingVertex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ProvokingVertex.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ProvokingVertex (
+  -- * Extension Support
+    gl_ARB_provoking_vertex
+
+  -- * GL_ARB_provoking_vertex
+  , glProvokingVertex
+  , pattern GL_FIRST_VERTEX_CONVENTION
+  , pattern GL_LAST_VERTEX_CONVENTION
+  , pattern GL_PROVOKING_VERTEX
+  , pattern GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_provoking_vertex :: Bool
+gl_ARB_provoking_vertex = member "GL_ARB_provoking_vertex" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/QueryBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/QueryBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/QueryBufferObject.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.QueryBufferObject (
+  -- * Extension Support
+    gl_ARB_query_buffer_object
+
+  -- * GL_ARB_query_buffer_object
+  , pattern GL_QUERY_BUFFER
+  , pattern GL_QUERY_BUFFER_BARRIER_BIT
+  , pattern GL_QUERY_BUFFER_BINDING
+  , pattern GL_QUERY_RESULT_NO_WAIT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_query_buffer_object :: Bool
+gl_ARB_query_buffer_object = member "GL_ARB_query_buffer_object" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/RobustBufferAccessBehavior.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/RobustBufferAccessBehavior.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/RobustBufferAccessBehavior.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.RobustBufferAccessBehavior (
+  -- * Extension Support
+    gl_ARB_robust_buffer_access_behavior
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_robust_buffer_access_behavior :: Bool
+gl_ARB_robust_buffer_access_behavior = member "GL_ARB_robust_buffer_access_behavior" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Robustness.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Robustness.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Robustness.hs
@@ -0,0 +1,222 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.Robustness (
+  -- * Extension Support
+    gl_ARB_robustness
+
+  -- * GL_ARB_robustness
+  , glGetGraphicsResetStatusARB
+  , glGetnColorTableARB
+  , glGetnCompressedTexImageARB
+  , glGetnConvolutionFilterARB
+  , glGetnHistogramARB
+  , glGetnMapdvARB
+  , glGetnMapfvARB
+  , glGetnMapivARB
+  , glGetnMinmaxARB
+  , glGetnPixelMapfvARB
+  , glGetnPixelMapuivARB
+  , glGetnPixelMapusvARB
+  , glGetnPolygonStippleARB
+  , glGetnSeparableFilterARB
+  , glGetnTexImageARB
+  , glGetnUniformdvARB
+  , glGetnUniformfvARB
+  , glGetnUniformivARB
+  , glGetnUniformuivARB
+  , glReadnPixelsARB
+  , pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB
+  , pattern GL_GUILTY_CONTEXT_RESET_ARB
+  , pattern GL_INNOCENT_CONTEXT_RESET_ARB
+  , pattern GL_LOSE_CONTEXT_ON_RESET_ARB
+  , pattern GL_NO_ERROR
+  , pattern GL_NO_RESET_NOTIFICATION_ARB
+  , pattern GL_RESET_NOTIFICATION_STRATEGY_ARB
+  , pattern GL_UNKNOWN_CONTEXT_RESET_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.Internal.Shared
+import Graphics.GL.Raw.Types
+import System.IO.Unsafe
+
+gl_ARB_robustness :: Bool
+gl_ARB_robustness = member "GL_ARB_robustness" extensions
+
+glGetGraphicsResetStatusARB :: MonadIO m => m GLenum
+glGetGraphicsResetStatusARB = ffiIOenum glGetGraphicsResetStatusARBFunPtr
+
+glGetGraphicsResetStatusARBFunPtr :: FunPtr (IO GLenum)
+glGetGraphicsResetStatusARBFunPtr = unsafePerformIO (getProcAddress "glGetGraphicsResetStatusARB")
+
+{-# NOINLINE glGetGraphicsResetStatusARBFunPtr #-}
+
+glGetnColorTableARB :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnColorTableARB = ffienumenumenumsizeiPtrVIOV glGetnColorTableARBFunPtr
+
+glGetnColorTableARBFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnColorTableARBFunPtr = unsafePerformIO (getProcAddress "glGetnColorTableARB")
+
+{-# NOINLINE glGetnColorTableARBFunPtr #-}
+
+glGetnCompressedTexImageARB :: MonadIO m => GLenum -> GLint -> GLsizei -> Ptr () -> m ()
+glGetnCompressedTexImageARB = ffienumintsizeiPtrVIOV glGetnCompressedTexImageARBFunPtr
+
+glGetnCompressedTexImageARBFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> Ptr () -> IO ())
+glGetnCompressedTexImageARBFunPtr = unsafePerformIO (getProcAddress "glGetnCompressedTexImageARB")
+
+{-# NOINLINE glGetnCompressedTexImageARBFunPtr #-}
+
+glGetnConvolutionFilterARB :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnConvolutionFilterARB = ffienumenumenumsizeiPtrVIOV glGetnConvolutionFilterARBFunPtr
+
+glGetnConvolutionFilterARBFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnConvolutionFilterARBFunPtr = unsafePerformIO (getProcAddress "glGetnConvolutionFilterARB")
+
+{-# NOINLINE glGetnConvolutionFilterARBFunPtr #-}
+
+glGetnHistogramARB :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnHistogramARB = ffienumbooleanenumenumsizeiPtrVIOV glGetnHistogramARBFunPtr
+
+glGetnHistogramARBFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnHistogramARBFunPtr = unsafePerformIO (getProcAddress "glGetnHistogramARB")
+
+{-# NOINLINE glGetnHistogramARBFunPtr #-}
+
+glGetnMapdvARB :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> m ()
+glGetnMapdvARB = ffienumenumsizeiPtrdoubleIOV glGetnMapdvARBFunPtr
+
+glGetnMapdvARBFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> IO ())
+glGetnMapdvARBFunPtr = unsafePerformIO (getProcAddress "glGetnMapdvARB")
+
+{-# NOINLINE glGetnMapdvARBFunPtr #-}
+
+glGetnMapfvARB :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> m ()
+glGetnMapfvARB = ffienumenumsizeiPtrfloatIOV glGetnMapfvARBFunPtr
+
+glGetnMapfvARBFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+glGetnMapfvARBFunPtr = unsafePerformIO (getProcAddress "glGetnMapfvARB")
+
+{-# NOINLINE glGetnMapfvARBFunPtr #-}
+
+glGetnMapivARB :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLint -> m ()
+glGetnMapivARB = ffienumenumsizeiPtrintIOV glGetnMapivARBFunPtr
+
+glGetnMapivARBFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ())
+glGetnMapivARBFunPtr = unsafePerformIO (getProcAddress "glGetnMapivARB")
+
+{-# NOINLINE glGetnMapivARBFunPtr #-}
+
+glGetnMinmaxARB :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnMinmaxARB = ffienumbooleanenumenumsizeiPtrVIOV glGetnMinmaxARBFunPtr
+
+glGetnMinmaxARBFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnMinmaxARBFunPtr = unsafePerformIO (getProcAddress "glGetnMinmaxARB")
+
+{-# NOINLINE glGetnMinmaxARBFunPtr #-}
+
+glGetnPixelMapfvARB :: MonadIO m => GLenum -> GLsizei -> Ptr GLfloat -> m ()
+glGetnPixelMapfvARB = ffienumsizeiPtrfloatIOV glGetnPixelMapfvARBFunPtr
+
+glGetnPixelMapfvARBFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+glGetnPixelMapfvARBFunPtr = unsafePerformIO (getProcAddress "glGetnPixelMapfvARB")
+
+{-# NOINLINE glGetnPixelMapfvARBFunPtr #-}
+
+glGetnPixelMapuivARB :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
+glGetnPixelMapuivARB = ffienumsizeiPtruintIOV glGetnPixelMapuivARBFunPtr
+
+glGetnPixelMapuivARBFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
+glGetnPixelMapuivARBFunPtr = unsafePerformIO (getProcAddress "glGetnPixelMapuivARB")
+
+{-# NOINLINE glGetnPixelMapuivARBFunPtr #-}
+
+glGetnPixelMapusvARB :: MonadIO m => GLenum -> GLsizei -> Ptr GLushort -> m ()
+glGetnPixelMapusvARB = ffienumsizeiPtrushortIOV glGetnPixelMapusvARBFunPtr
+
+glGetnPixelMapusvARBFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLushort -> IO ())
+glGetnPixelMapusvARBFunPtr = unsafePerformIO (getProcAddress "glGetnPixelMapusvARB")
+
+{-# NOINLINE glGetnPixelMapusvARBFunPtr #-}
+
+glGetnPolygonStippleARB :: MonadIO m => GLsizei -> Ptr GLubyte -> m ()
+glGetnPolygonStippleARB = ffisizeiPtrubyteIOV glGetnPolygonStippleARBFunPtr
+
+glGetnPolygonStippleARBFunPtr :: FunPtr (GLsizei -> Ptr GLubyte -> IO ())
+glGetnPolygonStippleARBFunPtr = unsafePerformIO (getProcAddress "glGetnPolygonStippleARB")
+
+{-# NOINLINE glGetnPolygonStippleARBFunPtr #-}
+
+glGetnSeparableFilterARB :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> m ()
+glGetnSeparableFilterARB = ffienumenumenumsizeiPtrVsizeiPtrVPtrVIOV glGetnSeparableFilterARBFunPtr
+
+glGetnSeparableFilterARBFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> IO ())
+glGetnSeparableFilterARBFunPtr = unsafePerformIO (getProcAddress "glGetnSeparableFilterARB")
+
+{-# NOINLINE glGetnSeparableFilterARBFunPtr #-}
+
+glGetnTexImageARB :: MonadIO m => GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnTexImageARB = ffienumintenumenumsizeiPtrVIOV glGetnTexImageARBFunPtr
+
+glGetnTexImageARBFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnTexImageARBFunPtr = unsafePerformIO (getProcAddress "glGetnTexImageARB")
+
+{-# NOINLINE glGetnTexImageARBFunPtr #-}
+
+glGetnUniformdvARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+glGetnUniformdvARB = ffiuintintsizeiPtrdoubleIOV glGetnUniformdvARBFunPtr
+
+glGetnUniformdvARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
+glGetnUniformdvARBFunPtr = unsafePerformIO (getProcAddress "glGetnUniformdvARB")
+
+{-# NOINLINE glGetnUniformdvARBFunPtr #-}
+
+glGetnUniformfvARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
+glGetnUniformfvARB = ffiuintintsizeiPtrfloatIOV glGetnUniformfvARBFunPtr
+
+glGetnUniformfvARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
+glGetnUniformfvARBFunPtr = unsafePerformIO (getProcAddress "glGetnUniformfvARB")
+
+{-# NOINLINE glGetnUniformfvARBFunPtr #-}
+
+glGetnUniformivARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
+glGetnUniformivARB = ffiuintintsizeiPtrintIOV glGetnUniformivARBFunPtr
+
+glGetnUniformivARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
+glGetnUniformivARBFunPtr = unsafePerformIO (getProcAddress "glGetnUniformivARB")
+
+{-# NOINLINE glGetnUniformivARBFunPtr #-}
+
+glGetnUniformuivARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
+glGetnUniformuivARB = ffiuintintsizeiPtruintIOV glGetnUniformuivARBFunPtr
+
+glGetnUniformuivARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
+glGetnUniformuivARBFunPtr = unsafePerformIO (getProcAddress "glGetnUniformuivARB")
+
+{-# NOINLINE glGetnUniformuivARBFunPtr #-}
+
+glReadnPixelsARB :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glReadnPixelsARB = ffiintintsizeisizeienumenumsizeiPtrVIOV glReadnPixelsARBFunPtr
+
+glReadnPixelsARBFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glReadnPixelsARBFunPtr = unsafePerformIO (getProcAddress "glReadnPixelsARB")
+
+{-# NOINLINE glReadnPixelsARBFunPtr #-}
+
+pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004 :: GLenum
+
+pattern GL_GUILTY_CONTEXT_RESET_ARB = 0x8253 :: GLenum
+
+pattern GL_INNOCENT_CONTEXT_RESET_ARB = 0x8254 :: GLenum
+
+pattern GL_LOSE_CONTEXT_ON_RESET_ARB = 0x8252 :: GLenum
+
+pattern GL_NO_RESET_NOTIFICATION_ARB = 0x8261 :: GLenum
+
+pattern GL_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256 :: GLenum
+
+pattern GL_UNKNOWN_CONTEXT_RESET_ARB = 0x8255 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/RobustnessIsolation.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/RobustnessIsolation.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/RobustnessIsolation.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.RobustnessIsolation (
+  -- * Extension Support
+    gl_ARB_robustness_isolation
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_robustness_isolation :: Bool
+gl_ARB_robustness_isolation = member "GL_ARB_robustness_isolation" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SampleShading.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SampleShading.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SampleShading.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.SampleShading (
+  -- * Extension Support
+    gl_ARB_sample_shading
+
+  -- * GL_ARB_sample_shading
+  , glMinSampleShadingARB
+  , pattern GL_MIN_SAMPLE_SHADING_VALUE_ARB
+  , pattern GL_SAMPLE_SHADING_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_sample_shading :: Bool
+gl_ARB_sample_shading = member "GL_ARB_sample_shading" extensions
+
+glMinSampleShadingARB :: MonadIO m => GLfloat -> m ()
+glMinSampleShadingARB = ffifloatIOV glMinSampleShadingARBFunPtr
+
+glMinSampleShadingARBFunPtr :: FunPtr (GLfloat -> IO ())
+glMinSampleShadingARBFunPtr = unsafePerformIO (getProcAddress "glMinSampleShadingARB")
+
+{-# NOINLINE glMinSampleShadingARBFunPtr #-}
+
+pattern GL_MIN_SAMPLE_SHADING_VALUE_ARB = 0x8C37 :: GLenum
+
+pattern GL_SAMPLE_SHADING_ARB = 0x8C36 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SamplerObjects.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SamplerObjects.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SamplerObjects.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.SamplerObjects (
+  -- * Extension Support
+    gl_ARB_sampler_objects
+
+  -- * GL_ARB_sampler_objects
+  , glBindSampler
+  , glDeleteSamplers
+  , glGenSamplers
+  , glGetSamplerParameterIiv
+  , glGetSamplerParameterIuiv
+  , glGetSamplerParameterfv
+  , glGetSamplerParameteriv
+  , glIsSampler
+  , glSamplerParameterIiv
+  , glSamplerParameterIuiv
+  , glSamplerParameterf
+  , glSamplerParameterfv
+  , glSamplerParameteri
+  , glSamplerParameteriv
+  , pattern GL_SAMPLER_BINDING
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_sampler_objects :: Bool
+gl_ARB_sampler_objects = member "GL_ARB_sampler_objects" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeamlessCubeMap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeamlessCubeMap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeamlessCubeMap.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.SeamlessCubeMap (
+  -- * Extension Support
+    gl_ARB_seamless_cube_map
+
+  -- * GL_ARB_seamless_cube_map
+  , pattern GL_TEXTURE_CUBE_MAP_SEAMLESS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_seamless_cube_map :: Bool
+gl_ARB_seamless_cube_map = member "GL_ARB_seamless_cube_map" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeamlessCubemapPerTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeamlessCubemapPerTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeamlessCubemapPerTexture.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.SeamlessCubemapPerTexture (
+  -- * Extension Support
+    gl_ARB_seamless_cubemap_per_texture
+
+  -- * GL_ARB_seamless_cubemap_per_texture
+  , pattern GL_TEXTURE_CUBE_MAP_SEAMLESS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_seamless_cubemap_per_texture :: Bool
+gl_ARB_seamless_cubemap_per_texture = member "GL_ARB_seamless_cubemap_per_texture" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeparateShaderObjects.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeparateShaderObjects.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SeparateShaderObjects.hs
@@ -0,0 +1,84 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.SeparateShaderObjects (
+  -- * Extension Support
+    gl_ARB_separate_shader_objects
+
+  -- * GL_ARB_separate_shader_objects
+  , glActiveShaderProgram
+  , glBindProgramPipeline
+  , glCreateShaderProgramv
+  , glDeleteProgramPipelines
+  , glGenProgramPipelines
+  , glGetProgramPipelineInfoLog
+  , glGetProgramPipelineiv
+  , glIsProgramPipeline
+  , glProgramUniform1d
+  , glProgramUniform1dv
+  , glProgramUniform1f
+  , glProgramUniform1fv
+  , glProgramUniform1i
+  , glProgramUniform1iv
+  , glProgramUniform1ui
+  , glProgramUniform1uiv
+  , glProgramUniform2d
+  , glProgramUniform2dv
+  , glProgramUniform2f
+  , glProgramUniform2fv
+  , glProgramUniform2i
+  , glProgramUniform2iv
+  , glProgramUniform2ui
+  , glProgramUniform2uiv
+  , glProgramUniform3d
+  , glProgramUniform3dv
+  , glProgramUniform3f
+  , glProgramUniform3fv
+  , glProgramUniform3i
+  , glProgramUniform3iv
+  , glProgramUniform3ui
+  , glProgramUniform3uiv
+  , glProgramUniform4d
+  , glProgramUniform4dv
+  , glProgramUniform4f
+  , glProgramUniform4fv
+  , glProgramUniform4i
+  , glProgramUniform4iv
+  , glProgramUniform4ui
+  , glProgramUniform4uiv
+  , glProgramUniformMatrix2dv
+  , glProgramUniformMatrix2fv
+  , glProgramUniformMatrix2x3dv
+  , glProgramUniformMatrix2x3fv
+  , glProgramUniformMatrix2x4dv
+  , glProgramUniformMatrix2x4fv
+  , glProgramUniformMatrix3dv
+  , glProgramUniformMatrix3fv
+  , glProgramUniformMatrix3x2dv
+  , glProgramUniformMatrix3x2fv
+  , glProgramUniformMatrix3x4dv
+  , glProgramUniformMatrix3x4fv
+  , glProgramUniformMatrix4dv
+  , glProgramUniformMatrix4fv
+  , glProgramUniformMatrix4x2dv
+  , glProgramUniformMatrix4x2fv
+  , glProgramUniformMatrix4x3dv
+  , glProgramUniformMatrix4x3fv
+  , glUseProgramStages
+  , glValidateProgramPipeline
+  , pattern GL_ACTIVE_PROGRAM
+  , pattern GL_ALL_SHADER_BITS
+  , pattern GL_FRAGMENT_SHADER_BIT
+  , pattern GL_GEOMETRY_SHADER_BIT
+  , pattern GL_PROGRAM_PIPELINE_BINDING
+  , pattern GL_PROGRAM_SEPARABLE
+  , pattern GL_TESS_CONTROL_SHADER_BIT
+  , pattern GL_TESS_EVALUATION_SHADER_BIT
+  , pattern GL_VERTEX_SHADER_BIT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_separate_shader_objects :: Bool
+gl_ARB_separate_shader_objects = member "GL_ARB_separate_shader_objects" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderAtomicCounters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderAtomicCounters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderAtomicCounters.hs
@@ -0,0 +1,45 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderAtomicCounters (
+  -- * Extension Support
+    gl_ARB_shader_atomic_counters
+
+  -- * GL_ARB_shader_atomic_counters
+  , glGetActiveAtomicCounterBufferiv
+  , pattern GL_ACTIVE_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_ATOMIC_COUNTER_BUFFER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS
+  , pattern GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES
+  , pattern GL_ATOMIC_COUNTER_BUFFER_BINDING
+  , pattern GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_SIZE
+  , pattern GL_ATOMIC_COUNTER_BUFFER_START
+  , pattern GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS
+  , pattern GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE
+  , pattern GL_MAX_COMBINED_ATOMIC_COUNTERS
+  , pattern GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_FRAGMENT_ATOMIC_COUNTERS
+  , pattern GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS
+  , pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS
+  , pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_VERTEX_ATOMIC_COUNTERS
+  , pattern GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX
+  , pattern GL_UNSIGNED_INT_ATOMIC_COUNTER
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_shader_atomic_counters :: Bool
+gl_ARB_shader_atomic_counters = member "GL_ARB_shader_atomic_counters" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderBitEncoding.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderBitEncoding.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderBitEncoding.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderBitEncoding (
+  -- * Extension Support
+    gl_ARB_shader_bit_encoding
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_bit_encoding :: Bool
+gl_ARB_shader_bit_encoding = member "GL_ARB_shader_bit_encoding" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderDrawParameters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderDrawParameters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderDrawParameters.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderDrawParameters (
+  -- * Extension Support
+    gl_ARB_shader_draw_parameters
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_draw_parameters :: Bool
+gl_ARB_shader_draw_parameters = member "GL_ARB_shader_draw_parameters" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderGroupVote.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderGroupVote.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderGroupVote.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderGroupVote (
+  -- * Extension Support
+    gl_ARB_shader_group_vote
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_group_vote :: Bool
+gl_ARB_shader_group_vote = member "GL_ARB_shader_group_vote" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderImageLoadStore.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderImageLoadStore.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderImageLoadStore.hs
@@ -0,0 +1,81 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderImageLoadStore (
+  -- * Extension Support
+    gl_ARB_shader_image_load_store
+
+  -- * GL_ARB_shader_image_load_store
+  , glBindImageTexture
+  , glMemoryBarrier
+  , pattern GL_ALL_BARRIER_BITS
+  , pattern GL_ATOMIC_COUNTER_BARRIER_BIT
+  , pattern GL_BUFFER_UPDATE_BARRIER_BIT
+  , pattern GL_COMMAND_BARRIER_BIT
+  , pattern GL_ELEMENT_ARRAY_BARRIER_BIT
+  , pattern GL_FRAMEBUFFER_BARRIER_BIT
+  , pattern GL_IMAGE_1D
+  , pattern GL_IMAGE_1D_ARRAY
+  , pattern GL_IMAGE_2D
+  , pattern GL_IMAGE_2D_ARRAY
+  , pattern GL_IMAGE_2D_MULTISAMPLE
+  , pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_IMAGE_2D_RECT
+  , pattern GL_IMAGE_3D
+  , pattern GL_IMAGE_BINDING_ACCESS
+  , pattern GL_IMAGE_BINDING_FORMAT
+  , pattern GL_IMAGE_BINDING_LAYER
+  , pattern GL_IMAGE_BINDING_LAYERED
+  , pattern GL_IMAGE_BINDING_LEVEL
+  , pattern GL_IMAGE_BINDING_NAME
+  , pattern GL_IMAGE_BUFFER
+  , pattern GL_IMAGE_CUBE
+  , pattern GL_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_TYPE
+  , pattern GL_INT_IMAGE_1D
+  , pattern GL_INT_IMAGE_1D_ARRAY
+  , pattern GL_INT_IMAGE_2D
+  , pattern GL_INT_IMAGE_2D_ARRAY
+  , pattern GL_INT_IMAGE_2D_MULTISAMPLE
+  , pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_INT_IMAGE_2D_RECT
+  , pattern GL_INT_IMAGE_3D
+  , pattern GL_INT_IMAGE_BUFFER
+  , pattern GL_INT_IMAGE_CUBE
+  , pattern GL_INT_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_MAX_COMBINED_IMAGE_UNIFORMS
+  , pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS
+  , pattern GL_MAX_FRAGMENT_IMAGE_UNIFORMS
+  , pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS
+  , pattern GL_MAX_IMAGE_SAMPLES
+  , pattern GL_MAX_IMAGE_UNITS
+  , pattern GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS
+  , pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS
+  , pattern GL_MAX_VERTEX_IMAGE_UNIFORMS
+  , pattern GL_PIXEL_BUFFER_BARRIER_BIT
+  , pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT
+  , pattern GL_TEXTURE_FETCH_BARRIER_BIT
+  , pattern GL_TEXTURE_UPDATE_BARRIER_BIT
+  , pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT
+  , pattern GL_UNIFORM_BARRIER_BIT
+  , pattern GL_UNSIGNED_INT_IMAGE_1D
+  , pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY
+  , pattern GL_UNSIGNED_INT_IMAGE_2D
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_RECT
+  , pattern GL_UNSIGNED_INT_IMAGE_3D
+  , pattern GL_UNSIGNED_INT_IMAGE_BUFFER
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_shader_image_load_store :: Bool
+gl_ARB_shader_image_load_store = member "GL_ARB_shader_image_load_store" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderImageSize.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderImageSize.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderImageSize.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderImageSize (
+  -- * Extension Support
+    gl_ARB_shader_image_size
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_image_size :: Bool
+gl_ARB_shader_image_size = member "GL_ARB_shader_image_size" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderObjects.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderObjects.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderObjects.hs
@@ -0,0 +1,461 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderObjects (
+  -- * Extension Support
+    gl_ARB_shader_objects
+
+  -- * GL_ARB_shader_objects
+  , glAttachObjectARB
+  , glCompileShaderARB
+  , glCreateProgramObjectARB
+  , glCreateShaderObjectARB
+  , glDeleteObjectARB
+  , glDetachObjectARB
+  , glGetActiveUniformARB
+  , glGetAttachedObjectsARB
+  , glGetHandleARB
+  , glGetInfoLogARB
+  , glGetObjectParameterfvARB
+  , glGetObjectParameterivARB
+  , glGetShaderSourceARB
+  , glGetUniformLocationARB
+  , glGetUniformfvARB
+  , glGetUniformivARB
+  , glLinkProgramARB
+  , glShaderSourceARB
+  , glUniform1fARB
+  , glUniform1fvARB
+  , glUniform1iARB
+  , glUniform1ivARB
+  , glUniform2fARB
+  , glUniform2fvARB
+  , glUniform2iARB
+  , glUniform2ivARB
+  , glUniform3fARB
+  , glUniform3fvARB
+  , glUniform3iARB
+  , glUniform3ivARB
+  , glUniform4fARB
+  , glUniform4fvARB
+  , glUniform4iARB
+  , glUniform4ivARB
+  , glUniformMatrix2fvARB
+  , glUniformMatrix3fvARB
+  , glUniformMatrix4fvARB
+  , glUseProgramObjectARB
+  , glValidateProgramARB
+  , pattern GL_BOOL_ARB
+  , pattern GL_BOOL_VEC2_ARB
+  , pattern GL_BOOL_VEC3_ARB
+  , pattern GL_BOOL_VEC4_ARB
+  , pattern GL_FLOAT_MAT2_ARB
+  , pattern GL_FLOAT_MAT3_ARB
+  , pattern GL_FLOAT_MAT4_ARB
+  , pattern GL_FLOAT_VEC2_ARB
+  , pattern GL_FLOAT_VEC3_ARB
+  , pattern GL_FLOAT_VEC4_ARB
+  , pattern GL_INT_VEC2_ARB
+  , pattern GL_INT_VEC3_ARB
+  , pattern GL_INT_VEC4_ARB
+  , pattern GL_OBJECT_ACTIVE_UNIFORMS_ARB
+  , pattern GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB
+  , pattern GL_OBJECT_ATTACHED_OBJECTS_ARB
+  , pattern GL_OBJECT_COMPILE_STATUS_ARB
+  , pattern GL_OBJECT_DELETE_STATUS_ARB
+  , pattern GL_OBJECT_INFO_LOG_LENGTH_ARB
+  , pattern GL_OBJECT_LINK_STATUS_ARB
+  , pattern GL_OBJECT_SHADER_SOURCE_LENGTH_ARB
+  , pattern GL_OBJECT_SUBTYPE_ARB
+  , pattern GL_OBJECT_TYPE_ARB
+  , pattern GL_OBJECT_VALIDATE_STATUS_ARB
+  , pattern GL_PROGRAM_OBJECT_ARB
+  , pattern GL_SAMPLER_1D_ARB
+  , pattern GL_SAMPLER_1D_SHADOW_ARB
+  , pattern GL_SAMPLER_2D_ARB
+  , pattern GL_SAMPLER_2D_RECT_ARB
+  , pattern GL_SAMPLER_2D_RECT_SHADOW_ARB
+  , pattern GL_SAMPLER_2D_SHADOW_ARB
+  , pattern GL_SAMPLER_3D_ARB
+  , pattern GL_SAMPLER_CUBE_ARB
+  , pattern GL_SHADER_OBJECT_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.Internal.Shared
+import Graphics.GL.Raw.Types
+import System.IO.Unsafe
+
+gl_ARB_shader_objects :: Bool
+gl_ARB_shader_objects = member "GL_ARB_shader_objects" extensions
+
+glAttachObjectARB :: MonadIO m => GLhandleARB -> GLhandleARB -> m ()
+glAttachObjectARB = ffihandleARBhandleARBIOV glAttachObjectARBFunPtr
+
+glAttachObjectARBFunPtr :: FunPtr (GLhandleARB -> GLhandleARB -> IO ())
+glAttachObjectARBFunPtr = unsafePerformIO (getProcAddress "glAttachObjectARB")
+
+{-# NOINLINE glAttachObjectARBFunPtr #-}
+
+glCompileShaderARB :: MonadIO m => GLhandleARB -> m ()
+glCompileShaderARB = ffihandleARBIOV glCompileShaderARBFunPtr
+
+glCompileShaderARBFunPtr :: FunPtr (GLhandleARB -> IO ())
+glCompileShaderARBFunPtr = unsafePerformIO (getProcAddress "glCompileShaderARB")
+
+{-# NOINLINE glCompileShaderARBFunPtr #-}
+
+glCreateProgramObjectARB :: MonadIO m => m GLhandleARB
+glCreateProgramObjectARB = ffiIOhandleARB glCreateProgramObjectARBFunPtr
+
+glCreateProgramObjectARBFunPtr :: FunPtr (IO GLhandleARB)
+glCreateProgramObjectARBFunPtr = unsafePerformIO (getProcAddress "glCreateProgramObjectARB")
+
+{-# NOINLINE glCreateProgramObjectARBFunPtr #-}
+
+glCreateShaderObjectARB :: MonadIO m => GLenum -> m GLhandleARB
+glCreateShaderObjectARB = ffienumIOhandleARB glCreateShaderObjectARBFunPtr
+
+glCreateShaderObjectARBFunPtr :: FunPtr (GLenum -> IO GLhandleARB)
+glCreateShaderObjectARBFunPtr = unsafePerformIO (getProcAddress "glCreateShaderObjectARB")
+
+{-# NOINLINE glCreateShaderObjectARBFunPtr #-}
+
+glDeleteObjectARB :: MonadIO m => GLhandleARB -> m ()
+glDeleteObjectARB = ffihandleARBIOV glDeleteObjectARBFunPtr
+
+glDeleteObjectARBFunPtr :: FunPtr (GLhandleARB -> IO ())
+glDeleteObjectARBFunPtr = unsafePerformIO (getProcAddress "glDeleteObjectARB")
+
+{-# NOINLINE glDeleteObjectARBFunPtr #-}
+
+glDetachObjectARB :: MonadIO m => GLhandleARB -> GLhandleARB -> m ()
+glDetachObjectARB = ffihandleARBhandleARBIOV glDetachObjectARBFunPtr
+
+glDetachObjectARBFunPtr :: FunPtr (GLhandleARB -> GLhandleARB -> IO ())
+glDetachObjectARBFunPtr = unsafePerformIO (getProcAddress "glDetachObjectARB")
+
+{-# NOINLINE glDetachObjectARBFunPtr #-}
+
+glGetActiveUniformARB :: MonadIO m => GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> m ()
+glGetActiveUniformARB = ffihandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV glGetActiveUniformARBFunPtr
+
+glGetActiveUniformARBFunPtr :: FunPtr (GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> IO ())
+glGetActiveUniformARBFunPtr = unsafePerformIO (getProcAddress "glGetActiveUniformARB")
+
+{-# NOINLINE glGetActiveUniformARBFunPtr #-}
+
+glGetAttachedObjectsARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> m ()
+glGetAttachedObjectsARB = ffihandleARBsizeiPtrsizeiPtrhandleARBIOV glGetAttachedObjectsARBFunPtr
+
+glGetAttachedObjectsARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> IO ())
+glGetAttachedObjectsARBFunPtr = unsafePerformIO (getProcAddress "glGetAttachedObjectsARB")
+
+{-# NOINLINE glGetAttachedObjectsARBFunPtr #-}
+
+glGetHandleARB :: MonadIO m => GLenum -> m GLhandleARB
+glGetHandleARB = ffienumIOhandleARB glGetHandleARBFunPtr
+
+glGetHandleARBFunPtr :: FunPtr (GLenum -> IO GLhandleARB)
+glGetHandleARBFunPtr = unsafePerformIO (getProcAddress "glGetHandleARB")
+
+{-# NOINLINE glGetHandleARBFunPtr #-}
+
+glGetInfoLogARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> m ()
+glGetInfoLogARB = ffihandleARBsizeiPtrsizeiPtrcharARBIOV glGetInfoLogARBFunPtr
+
+glGetInfoLogARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> IO ())
+glGetInfoLogARBFunPtr = unsafePerformIO (getProcAddress "glGetInfoLogARB")
+
+{-# NOINLINE glGetInfoLogARBFunPtr #-}
+
+glGetObjectParameterfvARB :: MonadIO m => GLhandleARB -> GLenum -> Ptr GLfloat -> m ()
+glGetObjectParameterfvARB = ffihandleARBenumPtrfloatIOV glGetObjectParameterfvARBFunPtr
+
+glGetObjectParameterfvARBFunPtr :: FunPtr (GLhandleARB -> GLenum -> Ptr GLfloat -> IO ())
+glGetObjectParameterfvARBFunPtr = unsafePerformIO (getProcAddress "glGetObjectParameterfvARB")
+
+{-# NOINLINE glGetObjectParameterfvARBFunPtr #-}
+
+glGetObjectParameterivARB :: MonadIO m => GLhandleARB -> GLenum -> Ptr GLint -> m ()
+glGetObjectParameterivARB = ffihandleARBenumPtrintIOV glGetObjectParameterivARBFunPtr
+
+glGetObjectParameterivARBFunPtr :: FunPtr (GLhandleARB -> GLenum -> Ptr GLint -> IO ())
+glGetObjectParameterivARBFunPtr = unsafePerformIO (getProcAddress "glGetObjectParameterivARB")
+
+{-# NOINLINE glGetObjectParameterivARBFunPtr #-}
+
+glGetShaderSourceARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> m ()
+glGetShaderSourceARB = ffihandleARBsizeiPtrsizeiPtrcharARBIOV glGetShaderSourceARBFunPtr
+
+glGetShaderSourceARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> IO ())
+glGetShaderSourceARBFunPtr = unsafePerformIO (getProcAddress "glGetShaderSourceARB")
+
+{-# NOINLINE glGetShaderSourceARBFunPtr #-}
+
+glGetUniformLocationARB :: MonadIO m => GLhandleARB -> Ptr GLcharARB -> m GLint
+glGetUniformLocationARB = ffihandleARBPtrcharARBIOint glGetUniformLocationARBFunPtr
+
+glGetUniformLocationARBFunPtr :: FunPtr (GLhandleARB -> Ptr GLcharARB -> IO GLint)
+glGetUniformLocationARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformLocationARB")
+
+{-# NOINLINE glGetUniformLocationARBFunPtr #-}
+
+glGetUniformfvARB :: MonadIO m => GLhandleARB -> GLint -> Ptr GLfloat -> m ()
+glGetUniformfvARB = ffihandleARBintPtrfloatIOV glGetUniformfvARBFunPtr
+
+glGetUniformfvARBFunPtr :: FunPtr (GLhandleARB -> GLint -> Ptr GLfloat -> IO ())
+glGetUniformfvARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformfvARB")
+
+{-# NOINLINE glGetUniformfvARBFunPtr #-}
+
+glGetUniformivARB :: MonadIO m => GLhandleARB -> GLint -> Ptr GLint -> m ()
+glGetUniformivARB = ffihandleARBintPtrintIOV glGetUniformivARBFunPtr
+
+glGetUniformivARBFunPtr :: FunPtr (GLhandleARB -> GLint -> Ptr GLint -> IO ())
+glGetUniformivARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformivARB")
+
+{-# NOINLINE glGetUniformivARBFunPtr #-}
+
+glLinkProgramARB :: MonadIO m => GLhandleARB -> m ()
+glLinkProgramARB = ffihandleARBIOV glLinkProgramARBFunPtr
+
+glLinkProgramARBFunPtr :: FunPtr (GLhandleARB -> IO ())
+glLinkProgramARBFunPtr = unsafePerformIO (getProcAddress "glLinkProgramARB")
+
+{-# NOINLINE glLinkProgramARBFunPtr #-}
+
+glShaderSourceARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> m ()
+glShaderSourceARB = ffihandleARBsizeiPtrcharARBPtrintIOV glShaderSourceARBFunPtr
+
+glShaderSourceARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> IO ())
+glShaderSourceARBFunPtr = unsafePerformIO (getProcAddress "glShaderSourceARB")
+
+{-# NOINLINE glShaderSourceARBFunPtr #-}
+
+glUniform1fARB :: MonadIO m => GLint -> GLfloat -> m ()
+glUniform1fARB = ffiintfloatIOV glUniform1fARBFunPtr
+
+glUniform1fARBFunPtr :: FunPtr (GLint -> GLfloat -> IO ())
+glUniform1fARBFunPtr = unsafePerformIO (getProcAddress "glUniform1fARB")
+
+{-# NOINLINE glUniform1fARBFunPtr #-}
+
+glUniform1fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
+glUniform1fvARB = ffiintsizeiPtrfloatIOV glUniform1fvARBFunPtr
+
+glUniform1fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
+glUniform1fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform1fvARB")
+
+{-# NOINLINE glUniform1fvARBFunPtr #-}
+
+glUniform1iARB :: MonadIO m => GLint -> GLint -> m ()
+glUniform1iARB = ffiintintIOV glUniform1iARBFunPtr
+
+glUniform1iARBFunPtr :: FunPtr (GLint -> GLint -> IO ())
+glUniform1iARBFunPtr = unsafePerformIO (getProcAddress "glUniform1iARB")
+
+{-# NOINLINE glUniform1iARBFunPtr #-}
+
+glUniform1ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
+glUniform1ivARB = ffiintsizeiPtrintIOV glUniform1ivARBFunPtr
+
+glUniform1ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
+glUniform1ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform1ivARB")
+
+{-# NOINLINE glUniform1ivARBFunPtr #-}
+
+glUniform2fARB :: MonadIO m => GLint -> GLfloat -> GLfloat -> m ()
+glUniform2fARB = ffiintfloatfloatIOV glUniform2fARBFunPtr
+
+glUniform2fARBFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> IO ())
+glUniform2fARBFunPtr = unsafePerformIO (getProcAddress "glUniform2fARB")
+
+{-# NOINLINE glUniform2fARBFunPtr #-}
+
+glUniform2fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
+glUniform2fvARB = ffiintsizeiPtrfloatIOV glUniform2fvARBFunPtr
+
+glUniform2fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
+glUniform2fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform2fvARB")
+
+{-# NOINLINE glUniform2fvARBFunPtr #-}
+
+glUniform2iARB :: MonadIO m => GLint -> GLint -> GLint -> m ()
+glUniform2iARB = ffiintintintIOV glUniform2iARBFunPtr
+
+glUniform2iARBFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
+glUniform2iARBFunPtr = unsafePerformIO (getProcAddress "glUniform2iARB")
+
+{-# NOINLINE glUniform2iARBFunPtr #-}
+
+glUniform2ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
+glUniform2ivARB = ffiintsizeiPtrintIOV glUniform2ivARBFunPtr
+
+glUniform2ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
+glUniform2ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform2ivARB")
+
+{-# NOINLINE glUniform2ivARBFunPtr #-}
+
+glUniform3fARB :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
+glUniform3fARB = ffiintfloatfloatfloatIOV glUniform3fARBFunPtr
+
+glUniform3fARBFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glUniform3fARBFunPtr = unsafePerformIO (getProcAddress "glUniform3fARB")
+
+{-# NOINLINE glUniform3fARBFunPtr #-}
+
+glUniform3fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
+glUniform3fvARB = ffiintsizeiPtrfloatIOV glUniform3fvARBFunPtr
+
+glUniform3fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
+glUniform3fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform3fvARB")
+
+{-# NOINLINE glUniform3fvARBFunPtr #-}
+
+glUniform3iARB :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
+glUniform3iARB = ffiintintintintIOV glUniform3iARBFunPtr
+
+glUniform3iARBFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
+glUniform3iARBFunPtr = unsafePerformIO (getProcAddress "glUniform3iARB")
+
+{-# NOINLINE glUniform3iARBFunPtr #-}
+
+glUniform3ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
+glUniform3ivARB = ffiintsizeiPtrintIOV glUniform3ivARBFunPtr
+
+glUniform3ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
+glUniform3ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform3ivARB")
+
+{-# NOINLINE glUniform3ivARBFunPtr #-}
+
+glUniform4fARB :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glUniform4fARB = ffiintfloatfloatfloatfloatIOV glUniform4fARBFunPtr
+
+glUniform4fARBFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glUniform4fARBFunPtr = unsafePerformIO (getProcAddress "glUniform4fARB")
+
+{-# NOINLINE glUniform4fARBFunPtr #-}
+
+glUniform4fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
+glUniform4fvARB = ffiintsizeiPtrfloatIOV glUniform4fvARBFunPtr
+
+glUniform4fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
+glUniform4fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform4fvARB")
+
+{-# NOINLINE glUniform4fvARBFunPtr #-}
+
+glUniform4iARB :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> m ()
+glUniform4iARB = ffiintintintintintIOV glUniform4iARBFunPtr
+
+glUniform4iARBFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> IO ())
+glUniform4iARBFunPtr = unsafePerformIO (getProcAddress "glUniform4iARB")
+
+{-# NOINLINE glUniform4iARBFunPtr #-}
+
+glUniform4ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
+glUniform4ivARB = ffiintsizeiPtrintIOV glUniform4ivARBFunPtr
+
+glUniform4ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
+glUniform4ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform4ivARB")
+
+{-# NOINLINE glUniform4ivARBFunPtr #-}
+
+glUniformMatrix2fvARB :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix2fvARB = ffiintsizeibooleanPtrfloatIOV glUniformMatrix2fvARBFunPtr
+
+glUniformMatrix2fvARBFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix2fvARBFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2fvARB")
+
+{-# NOINLINE glUniformMatrix2fvARBFunPtr #-}
+
+glUniformMatrix3fvARB :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix3fvARB = ffiintsizeibooleanPtrfloatIOV glUniformMatrix3fvARBFunPtr
+
+glUniformMatrix3fvARBFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix3fvARBFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3fvARB")
+
+{-# NOINLINE glUniformMatrix3fvARBFunPtr #-}
+
+glUniformMatrix4fvARB :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix4fvARB = ffiintsizeibooleanPtrfloatIOV glUniformMatrix4fvARBFunPtr
+
+glUniformMatrix4fvARBFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix4fvARBFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4fvARB")
+
+{-# NOINLINE glUniformMatrix4fvARBFunPtr #-}
+
+glUseProgramObjectARB :: MonadIO m => GLhandleARB -> m ()
+glUseProgramObjectARB = ffihandleARBIOV glUseProgramObjectARBFunPtr
+
+glUseProgramObjectARBFunPtr :: FunPtr (GLhandleARB -> IO ())
+glUseProgramObjectARBFunPtr = unsafePerformIO (getProcAddress "glUseProgramObjectARB")
+
+{-# NOINLINE glUseProgramObjectARBFunPtr #-}
+
+glValidateProgramARB :: MonadIO m => GLhandleARB -> m ()
+glValidateProgramARB = ffihandleARBIOV glValidateProgramARBFunPtr
+
+glValidateProgramARBFunPtr :: FunPtr (GLhandleARB -> IO ())
+glValidateProgramARBFunPtr = unsafePerformIO (getProcAddress "glValidateProgramARB")
+
+{-# NOINLINE glValidateProgramARBFunPtr #-}
+
+pattern GL_BOOL_ARB = 0x8B56 :: GLenum
+
+pattern GL_BOOL_VEC2_ARB = 0x8B57 :: GLenum
+
+pattern GL_BOOL_VEC3_ARB = 0x8B58 :: GLenum
+
+pattern GL_BOOL_VEC4_ARB = 0x8B59 :: GLenum
+
+pattern GL_INT_VEC2_ARB = 0x8B53 :: GLenum
+
+pattern GL_INT_VEC3_ARB = 0x8B54 :: GLenum
+
+pattern GL_INT_VEC4_ARB = 0x8B55 :: GLenum
+
+pattern GL_OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86 :: GLenum
+
+pattern GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87 :: GLenum
+
+pattern GL_OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85 :: GLenum
+
+pattern GL_OBJECT_COMPILE_STATUS_ARB = 0x8B81 :: GLenum
+
+pattern GL_OBJECT_DELETE_STATUS_ARB = 0x8B80 :: GLenum
+
+pattern GL_OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84 :: GLenum
+
+pattern GL_OBJECT_LINK_STATUS_ARB = 0x8B82 :: GLenum
+
+pattern GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88 :: GLenum
+
+pattern GL_OBJECT_SUBTYPE_ARB = 0x8B4F :: GLenum
+
+pattern GL_OBJECT_TYPE_ARB = 0x8B4E :: GLenum
+
+pattern GL_OBJECT_VALIDATE_STATUS_ARB = 0x8B83 :: GLenum
+
+pattern GL_PROGRAM_OBJECT_ARB = 0x8B40 :: GLenum
+
+pattern GL_SAMPLER_1D_ARB = 0x8B5D :: GLenum
+
+pattern GL_SAMPLER_1D_SHADOW_ARB = 0x8B61 :: GLenum
+
+pattern GL_SAMPLER_2D_ARB = 0x8B5E :: GLenum
+
+pattern GL_SAMPLER_2D_RECT_ARB = 0x8B63 :: GLenum
+
+pattern GL_SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64 :: GLenum
+
+pattern GL_SAMPLER_2D_SHADOW_ARB = 0x8B62 :: GLenum
+
+pattern GL_SAMPLER_3D_ARB = 0x8B5F :: GLenum
+
+pattern GL_SAMPLER_CUBE_ARB = 0x8B60 :: GLenum
+
+pattern GL_SHADER_OBJECT_ARB = 0x8B48 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderPrecision.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderPrecision.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderPrecision.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderPrecision (
+  -- * Extension Support
+    gl_ARB_shader_precision
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_precision :: Bool
+gl_ARB_shader_precision = member "GL_ARB_shader_precision" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderStencilExport.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderStencilExport.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderStencilExport.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderStencilExport (
+  -- * Extension Support
+    gl_ARB_shader_stencil_export
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_stencil_export :: Bool
+gl_ARB_shader_stencil_export = member "GL_ARB_shader_stencil_export" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderStorageBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderStorageBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderStorageBufferObject.hs
@@ -0,0 +1,33 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderStorageBufferObject (
+  -- * Extension Support
+    gl_ARB_shader_storage_buffer_object
+
+  -- * GL_ARB_shader_storage_buffer_object
+  , glShaderStorageBlockBinding
+  , pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS
+  , pattern GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES
+  , pattern GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_SHADER_STORAGE_BLOCK_SIZE
+  , pattern GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
+  , pattern GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS
+  , pattern GL_SHADER_STORAGE_BARRIER_BIT
+  , pattern GL_SHADER_STORAGE_BUFFER
+  , pattern GL_SHADER_STORAGE_BUFFER_BINDING
+  , pattern GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_SHADER_STORAGE_BUFFER_SIZE
+  , pattern GL_SHADER_STORAGE_BUFFER_START
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_shader_storage_buffer_object :: Bool
+gl_ARB_shader_storage_buffer_object = member "GL_ARB_shader_storage_buffer_object" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderSubroutine.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderSubroutine.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderSubroutine.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderSubroutine (
+  -- * Extension Support
+    gl_ARB_shader_subroutine
+
+  -- * GL_ARB_shader_subroutine
+  , glGetActiveSubroutineName
+  , glGetActiveSubroutineUniformName
+  , glGetActiveSubroutineUniformiv
+  , glGetProgramStageiv
+  , glGetSubroutineIndex
+  , glGetSubroutineUniformLocation
+  , glGetUniformSubroutineuiv
+  , glUniformSubroutinesuiv
+  , pattern GL_ACTIVE_SUBROUTINES
+  , pattern GL_ACTIVE_SUBROUTINE_MAX_LENGTH
+  , pattern GL_ACTIVE_SUBROUTINE_UNIFORMS
+  , pattern GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
+  , pattern GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH
+  , pattern GL_COMPATIBLE_SUBROUTINES
+  , pattern GL_MAX_SUBROUTINES
+  , pattern GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS
+  , pattern GL_NUM_COMPATIBLE_SUBROUTINES
+  , pattern GL_UNIFORM_NAME_LENGTH
+  , pattern GL_UNIFORM_SIZE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_shader_subroutine :: Bool
+gl_ARB_shader_subroutine = member "GL_ARB_shader_subroutine" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderTextureImageSamples.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderTextureImageSamples.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderTextureImageSamples.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderTextureImageSamples (
+  -- * Extension Support
+    gl_ARB_shader_texture_image_samples
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_texture_image_samples :: Bool
+gl_ARB_shader_texture_image_samples = member "GL_ARB_shader_texture_image_samples" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderTextureLod.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderTextureLod.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShaderTextureLod.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShaderTextureLod (
+  -- * Extension Support
+    gl_ARB_shader_texture_lod
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shader_texture_lod :: Bool
+gl_ARB_shader_texture_lod = member "GL_ARB_shader_texture_lod" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguage100.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguage100.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguage100.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShadingLanguage100 (
+  -- * Extension Support
+    gl_ARB_shading_language_100
+
+  -- * GL_ARB_shading_language_100
+  , pattern GL_SHADING_LANGUAGE_VERSION_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_shading_language_100 :: Bool
+gl_ARB_shading_language_100 = member "GL_ARB_shading_language_100" extensions
+
+pattern GL_SHADING_LANGUAGE_VERSION_ARB = 0x8B8C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguage420pack.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguage420pack.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguage420pack.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShadingLanguage420pack (
+  -- * Extension Support
+    gl_ARB_shading_language_420pack
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shading_language_420pack :: Bool
+gl_ARB_shading_language_420pack = member "GL_ARB_shading_language_420pack" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguageInclude.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguageInclude.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguageInclude.hs
@@ -0,0 +1,82 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShadingLanguageInclude (
+  -- * Extension Support
+    gl_ARB_shading_language_include
+
+  -- * GL_ARB_shading_language_include
+  , glCompileShaderIncludeARB
+  , glDeleteNamedStringARB
+  , glGetNamedStringARB
+  , glGetNamedStringivARB
+  , glIsNamedStringARB
+  , glNamedStringARB
+  , pattern GL_NAMED_STRING_LENGTH_ARB
+  , pattern GL_NAMED_STRING_TYPE_ARB
+  , pattern GL_SHADER_INCLUDE_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_shading_language_include :: Bool
+gl_ARB_shading_language_include = member "GL_ARB_shading_language_include" extensions
+
+glCompileShaderIncludeARB :: MonadIO m => GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> m ()
+glCompileShaderIncludeARB = ffiuintsizeiPtrcharPtrintIOV glCompileShaderIncludeARBFunPtr
+
+glCompileShaderIncludeARBFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> IO ())
+glCompileShaderIncludeARBFunPtr = unsafePerformIO (getProcAddress "glCompileShaderIncludeARB")
+
+{-# NOINLINE glCompileShaderIncludeARBFunPtr #-}
+
+glDeleteNamedStringARB :: MonadIO m => GLint -> Ptr GLchar -> m ()
+glDeleteNamedStringARB = ffiintPtrcharIOV glDeleteNamedStringARBFunPtr
+
+glDeleteNamedStringARBFunPtr :: FunPtr (GLint -> Ptr GLchar -> IO ())
+glDeleteNamedStringARBFunPtr = unsafePerformIO (getProcAddress "glDeleteNamedStringARB")
+
+{-# NOINLINE glDeleteNamedStringARBFunPtr #-}
+
+glGetNamedStringARB :: MonadIO m => GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> m ()
+glGetNamedStringARB = ffiintPtrcharsizeiPtrintPtrcharIOV glGetNamedStringARBFunPtr
+
+glGetNamedStringARBFunPtr :: FunPtr (GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> IO ())
+glGetNamedStringARBFunPtr = unsafePerformIO (getProcAddress "glGetNamedStringARB")
+
+{-# NOINLINE glGetNamedStringARBFunPtr #-}
+
+glGetNamedStringivARB :: MonadIO m => GLint -> Ptr GLchar -> GLenum -> Ptr GLint -> m ()
+glGetNamedStringivARB = ffiintPtrcharenumPtrintIOV glGetNamedStringivARBFunPtr
+
+glGetNamedStringivARBFunPtr :: FunPtr (GLint -> Ptr GLchar -> GLenum -> Ptr GLint -> IO ())
+glGetNamedStringivARBFunPtr = unsafePerformIO (getProcAddress "glGetNamedStringivARB")
+
+{-# NOINLINE glGetNamedStringivARBFunPtr #-}
+
+glIsNamedStringARB :: MonadIO m => GLint -> Ptr GLchar -> m GLboolean
+glIsNamedStringARB = ffiintPtrcharIOboolean glIsNamedStringARBFunPtr
+
+glIsNamedStringARBFunPtr :: FunPtr (GLint -> Ptr GLchar -> IO GLboolean)
+glIsNamedStringARBFunPtr = unsafePerformIO (getProcAddress "glIsNamedStringARB")
+
+{-# NOINLINE glIsNamedStringARBFunPtr #-}
+
+glNamedStringARB :: MonadIO m => GLenum -> GLint -> Ptr GLchar -> GLint -> Ptr GLchar -> m ()
+glNamedStringARB = ffienumintPtrcharintPtrcharIOV glNamedStringARBFunPtr
+
+glNamedStringARBFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLchar -> GLint -> Ptr GLchar -> IO ())
+glNamedStringARBFunPtr = unsafePerformIO (getProcAddress "glNamedStringARB")
+
+{-# NOINLINE glNamedStringARBFunPtr #-}
+
+pattern GL_NAMED_STRING_LENGTH_ARB = 0x8DE9 :: GLenum
+
+pattern GL_NAMED_STRING_TYPE_ARB = 0x8DEA :: GLenum
+
+pattern GL_SHADER_INCLUDE_ARB = 0x8DAE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguagePacking.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguagePacking.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadingLanguagePacking.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShadingLanguagePacking (
+  -- * Extension Support
+    gl_ARB_shading_language_packing
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_shading_language_packing :: Bool
+gl_ARB_shading_language_packing = member "GL_ARB_shading_language_packing" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Shadow.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Shadow.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Shadow.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.Shadow (
+  -- * Extension Support
+    gl_ARB_shadow
+
+  -- * GL_ARB_shadow
+  , pattern GL_COMPARE_R_TO_TEXTURE_ARB
+  , pattern GL_TEXTURE_COMPARE_FUNC_ARB
+  , pattern GL_TEXTURE_COMPARE_MODE_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_shadow :: Bool
+gl_ARB_shadow = member "GL_ARB_shadow" extensions
+
+pattern GL_COMPARE_R_TO_TEXTURE_ARB = 0x884E :: GLenum
+
+pattern GL_TEXTURE_COMPARE_FUNC_ARB = 0x884D :: GLenum
+
+pattern GL_TEXTURE_COMPARE_MODE_ARB = 0x884C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadowAmbient.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadowAmbient.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ShadowAmbient.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ShadowAmbient (
+  -- * Extension Support
+    gl_ARB_shadow_ambient
+
+  -- * GL_ARB_shadow_ambient
+  , pattern GL_TEXTURE_COMPARE_FAIL_VALUE_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_shadow_ambient :: Bool
+gl_ARB_shadow_ambient = member "GL_ARB_shadow_ambient" extensions
+
+pattern GL_TEXTURE_COMPARE_FAIL_VALUE_ARB = 0x80BF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SparseBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SparseBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SparseBuffer.hs
@@ -0,0 +1,52 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.SparseBuffer (
+  -- * Extension Support
+    gl_ARB_sparse_buffer
+
+  -- * GL_ARB_sparse_buffer
+  , glBufferPageCommitmentARB
+  , glNamedBufferPageCommitmentARB
+  , glNamedBufferPageCommitmentEXT
+  , pattern GL_SPARSE_BUFFER_PAGE_SIZE_ARB
+  , pattern GL_SPARSE_STORAGE_BIT_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_sparse_buffer :: Bool
+gl_ARB_sparse_buffer = member "GL_ARB_sparse_buffer" extensions
+
+glBufferPageCommitmentARB :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> GLboolean -> m ()
+glBufferPageCommitmentARB = ffienumintptrsizeiptrbooleanIOV glBufferPageCommitmentARBFunPtr
+
+glBufferPageCommitmentARBFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> GLboolean -> IO ())
+glBufferPageCommitmentARBFunPtr = unsafePerformIO (getProcAddress "glBufferPageCommitmentARB")
+
+{-# NOINLINE glBufferPageCommitmentARBFunPtr #-}
+
+glNamedBufferPageCommitmentARB :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> m ()
+glNamedBufferPageCommitmentARB = ffiuintintptrsizeiptrbooleanIOV glNamedBufferPageCommitmentARBFunPtr
+
+glNamedBufferPageCommitmentARBFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> IO ())
+glNamedBufferPageCommitmentARBFunPtr = unsafePerformIO (getProcAddress "glNamedBufferPageCommitmentARB")
+
+{-# NOINLINE glNamedBufferPageCommitmentARBFunPtr #-}
+
+glNamedBufferPageCommitmentEXT :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> m ()
+glNamedBufferPageCommitmentEXT = ffiuintintptrsizeiptrbooleanIOV glNamedBufferPageCommitmentEXTFunPtr
+
+glNamedBufferPageCommitmentEXTFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> IO ())
+glNamedBufferPageCommitmentEXTFunPtr = unsafePerformIO (getProcAddress "glNamedBufferPageCommitmentEXT")
+
+{-# NOINLINE glNamedBufferPageCommitmentEXTFunPtr #-}
+
+pattern GL_SPARSE_BUFFER_PAGE_SIZE_ARB = 0x82F8 :: GLenum
+
+pattern GL_SPARSE_STORAGE_BIT_ARB = 0x0400 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SparseTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SparseTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/SparseTexture.hs
@@ -0,0 +1,61 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.SparseTexture (
+  -- * Extension Support
+    gl_ARB_sparse_texture
+
+  -- * GL_ARB_sparse_texture
+  , glTexPageCommitmentARB
+  , pattern GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB
+  , pattern GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB
+  , pattern GL_MAX_SPARSE_TEXTURE_SIZE_ARB
+  , pattern GL_NUM_SPARSE_LEVELS_ARB
+  , pattern GL_NUM_VIRTUAL_PAGE_SIZES_ARB
+  , pattern GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB
+  , pattern GL_TEXTURE_SPARSE_ARB
+  , pattern GL_VIRTUAL_PAGE_SIZE_INDEX_ARB
+  , pattern GL_VIRTUAL_PAGE_SIZE_X_ARB
+  , pattern GL_VIRTUAL_PAGE_SIZE_Y_ARB
+  , pattern GL_VIRTUAL_PAGE_SIZE_Z_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_sparse_texture :: Bool
+gl_ARB_sparse_texture = member "GL_ARB_sparse_texture" extensions
+
+glTexPageCommitmentARB :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTexPageCommitmentARB = ffienumintintintintsizeisizeisizeibooleanIOV glTexPageCommitmentARBFunPtr
+
+glTexPageCommitmentARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTexPageCommitmentARBFunPtr = unsafePerformIO (getProcAddress "glTexPageCommitmentARB")
+
+{-# NOINLINE glTexPageCommitmentARBFunPtr #-}
+
+pattern GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB = 0x9199 :: GLenum
+
+pattern GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB = 0x919A :: GLenum
+
+pattern GL_MAX_SPARSE_TEXTURE_SIZE_ARB = 0x9198 :: GLenum
+
+pattern GL_NUM_SPARSE_LEVELS_ARB = 0x91AA :: GLenum
+
+pattern GL_NUM_VIRTUAL_PAGE_SIZES_ARB = 0x91A8 :: GLenum
+
+pattern GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB = 0x91A9 :: GLenum
+
+pattern GL_TEXTURE_SPARSE_ARB = 0x91A6 :: GLenum
+
+pattern GL_VIRTUAL_PAGE_SIZE_INDEX_ARB = 0x91A7 :: GLenum
+
+pattern GL_VIRTUAL_PAGE_SIZE_X_ARB = 0x9195 :: GLenum
+
+pattern GL_VIRTUAL_PAGE_SIZE_Y_ARB = 0x9196 :: GLenum
+
+pattern GL_VIRTUAL_PAGE_SIZE_Z_ARB = 0x9197 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/StencilTexturing.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/StencilTexturing.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/StencilTexturing.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.StencilTexturing (
+  -- * Extension Support
+    gl_ARB_stencil_texturing
+
+  -- * GL_ARB_stencil_texturing
+  , pattern GL_DEPTH_STENCIL_TEXTURE_MODE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_stencil_texturing :: Bool
+gl_ARB_stencil_texturing = member "GL_ARB_stencil_texturing" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Sync.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Sync.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/Sync.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.Sync (
+  -- * Extension Support
+    gl_ARB_sync
+
+  -- * GL_ARB_sync
+  , glClientWaitSync
+  , glDeleteSync
+  , glFenceSync
+  , glGetInteger64v
+  , glGetSynciv
+  , glIsSync
+  , glWaitSync
+  , pattern GL_ALREADY_SIGNALED
+  , pattern GL_CONDITION_SATISFIED
+  , pattern GL_MAX_SERVER_WAIT_TIMEOUT
+  , pattern GL_OBJECT_TYPE
+  , pattern GL_SIGNALED
+  , pattern GL_SYNC_CONDITION
+  , pattern GL_SYNC_FENCE
+  , pattern GL_SYNC_FLAGS
+  , pattern GL_SYNC_FLUSH_COMMANDS_BIT
+  , pattern GL_SYNC_GPU_COMMANDS_COMPLETE
+  , pattern GL_SYNC_STATUS
+  , pattern GL_TIMEOUT_EXPIRED
+  , pattern GL_TIMEOUT_IGNORED
+  , pattern GL_UNSIGNALED
+  , pattern GL_WAIT_FAILED
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_sync :: Bool
+gl_ARB_sync = member "GL_ARB_sync" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TessellationShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TessellationShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TessellationShader.hs
@@ -0,0 +1,54 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TessellationShader (
+  -- * Extension Support
+    gl_ARB_tessellation_shader
+
+  -- * GL_ARB_tessellation_shader
+  , glPatchParameterfv
+  , glPatchParameteri
+  , pattern GL_CCW
+  , pattern GL_CW
+  , pattern GL_EQUAL
+  , pattern GL_FRACTIONAL_EVEN
+  , pattern GL_FRACTIONAL_ODD
+  , pattern GL_ISOLINES
+  , pattern GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS
+  , pattern GL_MAX_PATCH_VERTICES
+  , pattern GL_MAX_TESS_CONTROL_INPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS
+  , pattern GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS
+  , pattern GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS
+  , pattern GL_MAX_TESS_GEN_LEVEL
+  , pattern GL_MAX_TESS_PATCH_COMPONENTS
+  , pattern GL_PATCHES
+  , pattern GL_PATCH_DEFAULT_INNER_LEVEL
+  , pattern GL_PATCH_DEFAULT_OUTER_LEVEL
+  , pattern GL_PATCH_VERTICES
+  , pattern GL_QUADS
+  , pattern GL_TESS_CONTROL_OUTPUT_VERTICES
+  , pattern GL_TESS_CONTROL_SHADER
+  , pattern GL_TESS_EVALUATION_SHADER
+  , pattern GL_TESS_GEN_MODE
+  , pattern GL_TESS_GEN_POINT_MODE
+  , pattern GL_TESS_GEN_SPACING
+  , pattern GL_TESS_GEN_VERTEX_ORDER
+  , pattern GL_TRIANGLES
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_tessellation_shader :: Bool
+gl_ARB_tessellation_shader = member "GL_ARB_tessellation_shader" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBarrier.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBarrier.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBarrier.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureBarrier (
+  -- * Extension Support
+    gl_ARB_texture_barrier
+
+  -- * GL_ARB_texture_barrier
+  , glTextureBarrier
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_barrier :: Bool
+gl_ARB_texture_barrier = member "GL_ARB_texture_barrier" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBorderClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBorderClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBorderClamp.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureBorderClamp (
+  -- * Extension Support
+    gl_ARB_texture_border_clamp
+
+  -- * GL_ARB_texture_border_clamp
+  , pattern GL_CLAMP_TO_BORDER_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_border_clamp :: Bool
+gl_ARB_texture_border_clamp = member "GL_ARB_texture_border_clamp" extensions
+
+pattern GL_CLAMP_TO_BORDER_ARB = 0x812D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferObject.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureBufferObject (
+  -- * Extension Support
+    gl_ARB_texture_buffer_object
+
+  -- * GL_ARB_texture_buffer_object
+  , glTexBufferARB
+  , pattern GL_MAX_TEXTURE_BUFFER_SIZE_ARB
+  , pattern GL_TEXTURE_BINDING_BUFFER_ARB
+  , pattern GL_TEXTURE_BUFFER_ARB
+  , pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB
+  , pattern GL_TEXTURE_BUFFER_FORMAT_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_buffer_object :: Bool
+gl_ARB_texture_buffer_object = member "GL_ARB_texture_buffer_object" extensions
+
+glTexBufferARB :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
+glTexBufferARB = ffienumenumuintIOV glTexBufferARBFunPtr
+
+glTexBufferARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
+glTexBufferARBFunPtr = unsafePerformIO (getProcAddress "glTexBufferARB")
+
+{-# NOINLINE glTexBufferARBFunPtr #-}
+
+pattern GL_MAX_TEXTURE_BUFFER_SIZE_ARB = 0x8C2B :: GLenum
+
+pattern GL_TEXTURE_BINDING_BUFFER_ARB = 0x8C2C :: GLenum
+
+pattern GL_TEXTURE_BUFFER_ARB = 0x8C2A :: GLenum
+
+pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x8C2D :: GLenum
+
+pattern GL_TEXTURE_BUFFER_FORMAT_ARB = 0x8C2E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferObjectRgb32.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferObjectRgb32.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferObjectRgb32.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureBufferObjectRgb32 (
+  -- * Extension Support
+    gl_ARB_texture_buffer_object_rgb32
+
+  -- * GL_ARB_texture_buffer_object_rgb32
+  , pattern GL_RGB32F
+  , pattern GL_RGB32I
+  , pattern GL_RGB32UI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_buffer_object_rgb32 :: Bool
+gl_ARB_texture_buffer_object_rgb32 = member "GL_ARB_texture_buffer_object_rgb32" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureBufferRange.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureBufferRange (
+  -- * Extension Support
+    gl_ARB_texture_buffer_range
+
+  -- * GL_ARB_texture_buffer_range
+  , glTexBufferRange
+  , pattern GL_TEXTURE_BUFFER_OFFSET
+  , pattern GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_TEXTURE_BUFFER_SIZE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_buffer_range :: Bool
+gl_ARB_texture_buffer_range = member "GL_ARB_texture_buffer_range" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompression.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompression.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompression.hs
@@ -0,0 +1,115 @@
+-- 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
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompressionBptc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompressionBptc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompressionBptc.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureCompressionBptc (
+  -- * Extension Support
+    gl_ARB_texture_compression_bptc
+
+  -- * GL_ARB_texture_compression_bptc
+  , pattern GL_COMPRESSED_RGBA_BPTC_UNORM_ARB
+  , pattern GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB
+  , pattern GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB
+  , pattern GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_compression_bptc :: Bool
+gl_ARB_texture_compression_bptc = member "GL_ARB_texture_compression_bptc" extensions
+
+pattern GL_COMPRESSED_RGBA_BPTC_UNORM_ARB = 0x8E8C :: GLenum
+
+pattern GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = 0x8E8E :: GLenum
+
+pattern GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = 0x8E8F :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = 0x8E8D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompressionRgtc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompressionRgtc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCompressionRgtc.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureCompressionRgtc (
+  -- * Extension Support
+    gl_ARB_texture_compression_rgtc
+
+  -- * GL_ARB_texture_compression_rgtc
+  , pattern GL_COMPRESSED_RED_RGTC1
+  , pattern GL_COMPRESSED_RG_RGTC2
+  , pattern GL_COMPRESSED_SIGNED_RED_RGTC1
+  , pattern GL_COMPRESSED_SIGNED_RG_RGTC2
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_compression_rgtc :: Bool
+gl_ARB_texture_compression_rgtc = member "GL_ARB_texture_compression_rgtc" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCubeMap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCubeMap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCubeMap.hs
@@ -0,0 +1,51 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureCubeMap (
+  -- * Extension Support
+    gl_ARB_texture_cube_map
+
+  -- * GL_ARB_texture_cube_map
+  , pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
+  , pattern GL_NORMAL_MAP_ARB
+  , pattern GL_PROXY_TEXTURE_CUBE_MAP_ARB
+  , pattern GL_REFLECTION_MAP_ARB
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_cube_map :: Bool
+gl_ARB_texture_cube_map = member "GL_ARB_texture_cube_map" extensions
+
+pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 0x851C :: GLenum
+
+pattern GL_NORMAL_MAP_ARB = 0x8511 :: GLenum
+
+pattern GL_PROXY_TEXTURE_CUBE_MAP_ARB = 0x851B :: GLenum
+
+pattern GL_REFLECTION_MAP_ARB = 0x8512 :: GLenum
+
+pattern GL_TEXTURE_BINDING_CUBE_MAP_ARB = 0x8514 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_ARB = 0x8513 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x8516 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x8518 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x851A :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x8515 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x8517 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x8519 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCubeMapArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCubeMapArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureCubeMapArray.hs
@@ -0,0 +1,36 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureCubeMapArray (
+  -- * Extension Support
+    gl_ARB_texture_cube_map_array
+
+  -- * GL_ARB_texture_cube_map_array
+  , pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB
+  , pattern GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY_ARB
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB
+  , pattern GL_TEXTURE_CUBE_MAP_ARRAY_ARB
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_cube_map_array :: Bool
+gl_ARB_texture_cube_map_array = member "GL_ARB_texture_cube_map_array" extensions
+
+pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900E :: GLenum
+
+pattern GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x900B :: GLenum
+
+pattern GL_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900C :: GLenum
+
+pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = 0x900D :: GLenum
+
+pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = 0x900A :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x9009 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvAdd.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvAdd.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvAdd.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureEnvAdd (
+  -- * Extension Support
+    gl_ARB_texture_env_add
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_texture_env_add :: Bool
+gl_ARB_texture_env_add = member "GL_ARB_texture_env_add" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvCombine.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvCombine.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvCombine.hs
@@ -0,0 +1,81 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureEnvCombine (
+  -- * Extension Support
+    gl_ARB_texture_env_combine
+
+  -- * GL_ARB_texture_env_combine
+  , pattern GL_ADD_SIGNED_ARB
+  , pattern GL_COMBINE_ALPHA_ARB
+  , pattern GL_COMBINE_ARB
+  , pattern GL_COMBINE_RGB_ARB
+  , pattern GL_CONSTANT_ARB
+  , pattern GL_INTERPOLATE_ARB
+  , pattern GL_OPERAND0_ALPHA_ARB
+  , pattern GL_OPERAND0_RGB_ARB
+  , pattern GL_OPERAND1_ALPHA_ARB
+  , pattern GL_OPERAND1_RGB_ARB
+  , pattern GL_OPERAND2_ALPHA_ARB
+  , pattern GL_OPERAND2_RGB_ARB
+  , pattern GL_PREVIOUS_ARB
+  , pattern GL_PRIMARY_COLOR_ARB
+  , pattern GL_RGB_SCALE_ARB
+  , pattern GL_SOURCE0_ALPHA_ARB
+  , pattern GL_SOURCE0_RGB_ARB
+  , pattern GL_SOURCE1_ALPHA_ARB
+  , pattern GL_SOURCE1_RGB_ARB
+  , pattern GL_SOURCE2_ALPHA_ARB
+  , pattern GL_SOURCE2_RGB_ARB
+  , pattern GL_SUBTRACT_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_env_combine :: Bool
+gl_ARB_texture_env_combine = member "GL_ARB_texture_env_combine" extensions
+
+pattern GL_ADD_SIGNED_ARB = 0x8574 :: GLenum
+
+pattern GL_COMBINE_ALPHA_ARB = 0x8572 :: GLenum
+
+pattern GL_COMBINE_ARB = 0x8570 :: GLenum
+
+pattern GL_COMBINE_RGB_ARB = 0x8571 :: GLenum
+
+pattern GL_CONSTANT_ARB = 0x8576 :: GLenum
+
+pattern GL_INTERPOLATE_ARB = 0x8575 :: GLenum
+
+pattern GL_OPERAND0_ALPHA_ARB = 0x8598 :: GLenum
+
+pattern GL_OPERAND0_RGB_ARB = 0x8590 :: GLenum
+
+pattern GL_OPERAND1_ALPHA_ARB = 0x8599 :: GLenum
+
+pattern GL_OPERAND1_RGB_ARB = 0x8591 :: GLenum
+
+pattern GL_OPERAND2_ALPHA_ARB = 0x859A :: GLenum
+
+pattern GL_OPERAND2_RGB_ARB = 0x8592 :: GLenum
+
+pattern GL_PREVIOUS_ARB = 0x8578 :: GLenum
+
+pattern GL_PRIMARY_COLOR_ARB = 0x8577 :: GLenum
+
+pattern GL_RGB_SCALE_ARB = 0x8573 :: GLenum
+
+pattern GL_SOURCE0_ALPHA_ARB = 0x8588 :: GLenum
+
+pattern GL_SOURCE0_RGB_ARB = 0x8580 :: GLenum
+
+pattern GL_SOURCE1_ALPHA_ARB = 0x8589 :: GLenum
+
+pattern GL_SOURCE1_RGB_ARB = 0x8581 :: GLenum
+
+pattern GL_SOURCE2_ALPHA_ARB = 0x858A :: GLenum
+
+pattern GL_SOURCE2_RGB_ARB = 0x8582 :: GLenum
+
+pattern GL_SUBTRACT_ARB = 0x84E7 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvCrossbar.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvCrossbar.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvCrossbar.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureEnvCrossbar (
+  -- * Extension Support
+    gl_ARB_texture_env_crossbar
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_texture_env_crossbar :: Bool
+gl_ARB_texture_env_crossbar = member "GL_ARB_texture_env_crossbar" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvDot3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvDot3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureEnvDot3.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureEnvDot3 (
+  -- * Extension Support
+    gl_ARB_texture_env_dot3
+
+  -- * GL_ARB_texture_env_dot3
+  , pattern GL_DOT3_RGBA_ARB
+  , pattern GL_DOT3_RGB_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_env_dot3 :: Bool
+gl_ARB_texture_env_dot3 = member "GL_ARB_texture_env_dot3" extensions
+
+pattern GL_DOT3_RGBA_ARB = 0x86AF :: GLenum
+
+pattern GL_DOT3_RGB_ARB = 0x86AE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureFloat.hs
@@ -0,0 +1,75 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureFloat (
+  -- * Extension Support
+    gl_ARB_texture_float
+
+  -- * GL_ARB_texture_float
+  , pattern GL_ALPHA16F_ARB
+  , pattern GL_ALPHA32F_ARB
+  , pattern GL_INTENSITY16F_ARB
+  , pattern GL_INTENSITY32F_ARB
+  , pattern GL_LUMINANCE16F_ARB
+  , pattern GL_LUMINANCE32F_ARB
+  , pattern GL_LUMINANCE_ALPHA16F_ARB
+  , pattern GL_LUMINANCE_ALPHA32F_ARB
+  , pattern GL_RGB16F_ARB
+  , pattern GL_RGB32F_ARB
+  , pattern GL_RGBA16F_ARB
+  , pattern GL_RGBA32F_ARB
+  , pattern GL_TEXTURE_ALPHA_TYPE_ARB
+  , pattern GL_TEXTURE_BLUE_TYPE_ARB
+  , pattern GL_TEXTURE_DEPTH_TYPE_ARB
+  , pattern GL_TEXTURE_GREEN_TYPE_ARB
+  , pattern GL_TEXTURE_INTENSITY_TYPE_ARB
+  , pattern GL_TEXTURE_LUMINANCE_TYPE_ARB
+  , pattern GL_TEXTURE_RED_TYPE_ARB
+  , pattern GL_UNSIGNED_NORMALIZED_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_float :: Bool
+gl_ARB_texture_float = member "GL_ARB_texture_float" extensions
+
+pattern GL_ALPHA16F_ARB = 0x881C :: GLenum
+
+pattern GL_ALPHA32F_ARB = 0x8816 :: GLenum
+
+pattern GL_INTENSITY16F_ARB = 0x881D :: GLenum
+
+pattern GL_INTENSITY32F_ARB = 0x8817 :: GLenum
+
+pattern GL_LUMINANCE16F_ARB = 0x881E :: GLenum
+
+pattern GL_LUMINANCE32F_ARB = 0x8818 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA16F_ARB = 0x881F :: GLenum
+
+pattern GL_LUMINANCE_ALPHA32F_ARB = 0x8819 :: GLenum
+
+pattern GL_RGB16F_ARB = 0x881B :: GLenum
+
+pattern GL_RGB32F_ARB = 0x8815 :: GLenum
+
+pattern GL_RGBA16F_ARB = 0x881A :: GLenum
+
+pattern GL_RGBA32F_ARB = 0x8814 :: GLenum
+
+pattern GL_TEXTURE_ALPHA_TYPE_ARB = 0x8C13 :: GLenum
+
+pattern GL_TEXTURE_BLUE_TYPE_ARB = 0x8C12 :: GLenum
+
+pattern GL_TEXTURE_DEPTH_TYPE_ARB = 0x8C16 :: GLenum
+
+pattern GL_TEXTURE_GREEN_TYPE_ARB = 0x8C11 :: GLenum
+
+pattern GL_TEXTURE_INTENSITY_TYPE_ARB = 0x8C15 :: GLenum
+
+pattern GL_TEXTURE_LUMINANCE_TYPE_ARB = 0x8C14 :: GLenum
+
+pattern GL_TEXTURE_RED_TYPE_ARB = 0x8C10 :: GLenum
+
+pattern GL_UNSIGNED_NORMALIZED_ARB = 0x8C17 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureGather.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureGather.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureGather.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureGather (
+  -- * Extension Support
+    gl_ARB_texture_gather
+
+  -- * GL_ARB_texture_gather
+  , pattern GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB
+  , pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB
+  , pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_gather :: Bool
+gl_ARB_texture_gather = member "GL_ARB_texture_gather" extensions
+
+pattern GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = 0x8F9F :: GLenum
+
+pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5F :: GLenum
+
+pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMirrorClampToEdge.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMirrorClampToEdge.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMirrorClampToEdge.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureMirrorClampToEdge (
+  -- * Extension Support
+    gl_ARB_texture_mirror_clamp_to_edge
+
+  -- * GL_ARB_texture_mirror_clamp_to_edge
+  , pattern GL_MIRROR_CLAMP_TO_EDGE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_mirror_clamp_to_edge :: Bool
+gl_ARB_texture_mirror_clamp_to_edge = member "GL_ARB_texture_mirror_clamp_to_edge" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMirroredRepeat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMirroredRepeat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMirroredRepeat.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureMirroredRepeat (
+  -- * Extension Support
+    gl_ARB_texture_mirrored_repeat
+
+  -- * GL_ARB_texture_mirrored_repeat
+  , pattern GL_MIRRORED_REPEAT_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_mirrored_repeat :: Bool
+gl_ARB_texture_mirrored_repeat = member "GL_ARB_texture_mirrored_repeat" extensions
+
+pattern GL_MIRRORED_REPEAT_ARB = 0x8370 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureMultisample.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureMultisample (
+  -- * Extension Support
+    gl_ARB_texture_multisample
+
+  -- * GL_ARB_texture_multisample
+  , glGetMultisamplefv
+  , glSampleMaski
+  , glTexImage2DMultisample
+  , glTexImage3DMultisample
+  , pattern GL_INT_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_MAX_COLOR_TEXTURE_SAMPLES
+  , pattern GL_MAX_DEPTH_TEXTURE_SAMPLES
+  , pattern GL_MAX_INTEGER_SAMPLES
+  , pattern GL_MAX_SAMPLE_MASK_WORDS
+  , pattern GL_PROXY_TEXTURE_2D_MULTISAMPLE
+  , pattern GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_SAMPLE_MASK
+  , pattern GL_SAMPLE_MASK_VALUE
+  , pattern GL_SAMPLE_POSITION
+  , pattern GL_TEXTURE_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_FIXED_SAMPLE_LOCATIONS
+  , pattern GL_TEXTURE_SAMPLES
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_multisample :: Bool
+gl_ARB_texture_multisample = member "GL_ARB_texture_multisample" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureNonPowerOfTwo.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureNonPowerOfTwo.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureNonPowerOfTwo.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureNonPowerOfTwo (
+  -- * Extension Support
+    gl_ARB_texture_non_power_of_two
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_texture_non_power_of_two :: Bool
+gl_ARB_texture_non_power_of_two = member "GL_ARB_texture_non_power_of_two" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureQueryLevels.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureQueryLevels.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureQueryLevels.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureQueryLevels (
+  -- * Extension Support
+    gl_ARB_texture_query_levels
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_texture_query_levels :: Bool
+gl_ARB_texture_query_levels = member "GL_ARB_texture_query_levels" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureQueryLod.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureQueryLod.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureQueryLod.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureQueryLod (
+  -- * Extension Support
+    gl_ARB_texture_query_lod
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARB_texture_query_lod :: Bool
+gl_ARB_texture_query_lod = member "GL_ARB_texture_query_lod" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRectangle.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRectangle.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRectangle.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureRectangle (
+  -- * Extension Support
+    gl_ARB_texture_rectangle
+
+  -- * GL_ARB_texture_rectangle
+  , pattern GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB
+  , pattern GL_PROXY_TEXTURE_RECTANGLE_ARB
+  , pattern GL_TEXTURE_BINDING_RECTANGLE_ARB
+  , pattern GL_TEXTURE_RECTANGLE_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_texture_rectangle :: Bool
+gl_ARB_texture_rectangle = member "GL_ARB_texture_rectangle" extensions
+
+pattern GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x84F8 :: GLenum
+
+pattern GL_PROXY_TEXTURE_RECTANGLE_ARB = 0x84F7 :: GLenum
+
+pattern GL_TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6 :: GLenum
+
+pattern GL_TEXTURE_RECTANGLE_ARB = 0x84F5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRg.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRg.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRg.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureRg (
+  -- * Extension Support
+    gl_ARB_texture_rg
+
+  -- * GL_ARB_texture_rg
+  , pattern GL_R16
+  , pattern GL_R16F
+  , pattern GL_R16I
+  , pattern GL_R16UI
+  , pattern GL_R32F
+  , pattern GL_R32I
+  , pattern GL_R32UI
+  , pattern GL_R8
+  , pattern GL_R8I
+  , pattern GL_R8UI
+  , pattern GL_RG
+  , pattern GL_RG16
+  , pattern GL_RG16F
+  , pattern GL_RG16I
+  , pattern GL_RG16UI
+  , pattern GL_RG32F
+  , pattern GL_RG32I
+  , pattern GL_RG32UI
+  , pattern GL_RG8
+  , pattern GL_RG8I
+  , pattern GL_RG8UI
+  , pattern GL_RG_INTEGER
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_rg :: Bool
+gl_ARB_texture_rg = member "GL_ARB_texture_rg" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRgb10A2ui.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRgb10A2ui.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureRgb10A2ui.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureRgb10A2ui (
+  -- * Extension Support
+    gl_ARB_texture_rgb10_a2ui
+
+  -- * GL_ARB_texture_rgb10_a2ui
+  , pattern GL_RGB10_A2UI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_rgb10_a2ui :: Bool
+gl_ARB_texture_rgb10_a2ui = member "GL_ARB_texture_rgb10_a2ui" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStencil8.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStencil8.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStencil8.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureStencil8 (
+  -- * Extension Support
+    gl_ARB_texture_stencil8
+
+  -- * GL_ARB_texture_stencil8
+  , pattern GL_STENCIL_INDEX
+  , pattern GL_STENCIL_INDEX8
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_stencil8 :: Bool
+gl_ARB_texture_stencil8 = member "GL_ARB_texture_stencil8" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStorage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStorage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStorage.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureStorage (
+  -- * Extension Support
+    gl_ARB_texture_storage
+
+  -- * GL_ARB_texture_storage
+  , glTexStorage1D
+  , glTexStorage2D
+  , glTexStorage3D
+  , pattern GL_TEXTURE_IMMUTABLE_FORMAT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_storage :: Bool
+gl_ARB_texture_storage = member "GL_ARB_texture_storage" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStorageMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStorageMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureStorageMultisample.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureStorageMultisample (
+  -- * Extension Support
+    gl_ARB_texture_storage_multisample
+
+  -- * GL_ARB_texture_storage_multisample
+  , glTexStorage2DMultisample
+  , glTexStorage3DMultisample
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_storage_multisample :: Bool
+gl_ARB_texture_storage_multisample = member "GL_ARB_texture_storage_multisample" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureSwizzle.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureSwizzle.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureSwizzle.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureSwizzle (
+  -- * Extension Support
+    gl_ARB_texture_swizzle
+
+  -- * GL_ARB_texture_swizzle
+  , pattern GL_TEXTURE_SWIZZLE_A
+  , pattern GL_TEXTURE_SWIZZLE_B
+  , pattern GL_TEXTURE_SWIZZLE_G
+  , pattern GL_TEXTURE_SWIZZLE_R
+  , pattern GL_TEXTURE_SWIZZLE_RGBA
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_swizzle :: Bool
+gl_ARB_texture_swizzle = member "GL_ARB_texture_swizzle" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureView.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureView.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TextureView.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TextureView (
+  -- * Extension Support
+    gl_ARB_texture_view
+
+  -- * GL_ARB_texture_view
+  , glTextureView
+  , pattern GL_TEXTURE_IMMUTABLE_LEVELS
+  , pattern GL_TEXTURE_VIEW_MIN_LAYER
+  , pattern GL_TEXTURE_VIEW_MIN_LEVEL
+  , pattern GL_TEXTURE_VIEW_NUM_LAYERS
+  , pattern GL_TEXTURE_VIEW_NUM_LEVELS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_texture_view :: Bool
+gl_ARB_texture_view = member "GL_ARB_texture_view" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TimerQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TimerQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TimerQuery.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TimerQuery (
+  -- * Extension Support
+    gl_ARB_timer_query
+
+  -- * GL_ARB_timer_query
+  , glGetQueryObjecti64v
+  , glGetQueryObjectui64v
+  , glQueryCounter
+  , pattern GL_TIMESTAMP
+  , pattern GL_TIME_ELAPSED
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_timer_query :: Bool
+gl_ARB_timer_query = member "GL_ARB_timer_query" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedback2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedback2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedback2.hs
@@ -0,0 +1,26 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TransformFeedback2 (
+  -- * Extension Support
+    gl_ARB_transform_feedback2
+
+  -- * GL_ARB_transform_feedback2
+  , glBindTransformFeedback
+  , glDeleteTransformFeedbacks
+  , glDrawTransformFeedback
+  , glGenTransformFeedbacks
+  , glIsTransformFeedback
+  , glPauseTransformFeedback
+  , glResumeTransformFeedback
+  , pattern GL_TRANSFORM_FEEDBACK
+  , pattern GL_TRANSFORM_FEEDBACK_BINDING
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_transform_feedback2 :: Bool
+gl_ARB_transform_feedback2 = member "GL_ARB_transform_feedback2" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedback3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedback3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedback3.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TransformFeedback3 (
+  -- * Extension Support
+    gl_ARB_transform_feedback3
+
+  -- * GL_ARB_transform_feedback3
+  , glBeginQueryIndexed
+  , glDrawTransformFeedbackStream
+  , glEndQueryIndexed
+  , glGetQueryIndexediv
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_BUFFERS
+  , pattern GL_MAX_VERTEX_STREAMS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_transform_feedback3 :: Bool
+gl_ARB_transform_feedback3 = member "GL_ARB_transform_feedback3" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedbackInstanced.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedbackInstanced.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedbackInstanced.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TransformFeedbackInstanced (
+  -- * Extension Support
+    gl_ARB_transform_feedback_instanced
+
+  -- * GL_ARB_transform_feedback_instanced
+  , glDrawTransformFeedbackInstanced
+  , glDrawTransformFeedbackStreamInstanced
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_transform_feedback_instanced :: Bool
+gl_ARB_transform_feedback_instanced = member "GL_ARB_transform_feedback_instanced" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedbackOverflowQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedbackOverflowQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransformFeedbackOverflowQuery.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TransformFeedbackOverflowQuery (
+  -- * Extension Support
+    gl_ARB_transform_feedback_overflow_query
+
+  -- * GL_ARB_transform_feedback_overflow_query
+  , pattern GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB
+  , pattern GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARB_transform_feedback_overflow_query :: Bool
+gl_ARB_transform_feedback_overflow_query = member "GL_ARB_transform_feedback_overflow_query" extensions
+
+pattern GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB = 0x82EC :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB = 0x82ED :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransposeMatrix.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransposeMatrix.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/TransposeMatrix.hs
@@ -0,0 +1,67 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.TransposeMatrix (
+  -- * Extension Support
+    gl_ARB_transpose_matrix
+
+  -- * GL_ARB_transpose_matrix
+  , glLoadTransposeMatrixdARB
+  , glLoadTransposeMatrixfARB
+  , glMultTransposeMatrixdARB
+  , glMultTransposeMatrixfARB
+  , pattern GL_TRANSPOSE_COLOR_MATRIX_ARB
+  , pattern GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
+  , pattern GL_TRANSPOSE_PROJECTION_MATRIX_ARB
+  , pattern GL_TRANSPOSE_TEXTURE_MATRIX_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_transpose_matrix :: Bool
+gl_ARB_transpose_matrix = member "GL_ARB_transpose_matrix" extensions
+
+glLoadTransposeMatrixdARB :: MonadIO m => Ptr GLdouble -> m ()
+glLoadTransposeMatrixdARB = ffiPtrdoubleIOV glLoadTransposeMatrixdARBFunPtr
+
+glLoadTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glLoadTransposeMatrixdARBFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixdARB")
+
+{-# NOINLINE glLoadTransposeMatrixdARBFunPtr #-}
+
+glLoadTransposeMatrixfARB :: MonadIO m => Ptr GLfloat -> m ()
+glLoadTransposeMatrixfARB = ffiPtrfloatIOV glLoadTransposeMatrixfARBFunPtr
+
+glLoadTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glLoadTransposeMatrixfARBFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixfARB")
+
+{-# NOINLINE glLoadTransposeMatrixfARBFunPtr #-}
+
+glMultTransposeMatrixdARB :: MonadIO m => Ptr GLdouble -> m ()
+glMultTransposeMatrixdARB = ffiPtrdoubleIOV glMultTransposeMatrixdARBFunPtr
+
+glMultTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glMultTransposeMatrixdARBFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixdARB")
+
+{-# NOINLINE glMultTransposeMatrixdARBFunPtr #-}
+
+glMultTransposeMatrixfARB :: MonadIO m => Ptr GLfloat -> m ()
+glMultTransposeMatrixfARB = ffiPtrfloatIOV glMultTransposeMatrixfARBFunPtr
+
+glMultTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glMultTransposeMatrixfARBFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixfARB")
+
+{-# NOINLINE glMultTransposeMatrixfARBFunPtr #-}
+
+pattern GL_TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6 :: GLenum
+
+pattern GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3 :: GLenum
+
+pattern GL_TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4 :: GLenum
+
+pattern GL_TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/UniformBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/UniformBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/UniformBufferObject.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.UniformBufferObject (
+  -- * Extension Support
+    gl_ARB_uniform_buffer_object
+
+  -- * GL_ARB_uniform_buffer_object
+  , glGetActiveUniformBlockName
+  , glGetActiveUniformBlockiv
+  , glGetActiveUniformName
+  , glGetActiveUniformsiv
+  , glGetUniformBlockIndex
+  , glGetUniformIndices
+  , glUniformBlockBinding
+  , pattern GL_ACTIVE_UNIFORM_BLOCKS
+  , pattern GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+  , pattern GL_INVALID_INDEX
+  , pattern GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_UNIFORM_BLOCKS
+  , pattern GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+  , pattern GL_MAX_FRAGMENT_UNIFORM_BLOCKS
+  , pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS
+  , pattern GL_MAX_UNIFORM_BLOCK_SIZE
+  , pattern GL_MAX_UNIFORM_BUFFER_BINDINGS
+  , pattern GL_MAX_VERTEX_UNIFORM_BLOCKS
+  , pattern GL_UNIFORM_ARRAY_STRIDE
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+  , pattern GL_UNIFORM_BLOCK_BINDING
+  , pattern GL_UNIFORM_BLOCK_DATA_SIZE
+  , pattern GL_UNIFORM_BLOCK_INDEX
+  , pattern GL_UNIFORM_BLOCK_NAME_LENGTH
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_UNIFORM_BUFFER
+  , pattern GL_UNIFORM_BUFFER_BINDING
+  , pattern GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_UNIFORM_BUFFER_SIZE
+  , pattern GL_UNIFORM_BUFFER_START
+  , pattern GL_UNIFORM_IS_ROW_MAJOR
+  , pattern GL_UNIFORM_MATRIX_STRIDE
+  , pattern GL_UNIFORM_NAME_LENGTH
+  , pattern GL_UNIFORM_OFFSET
+  , pattern GL_UNIFORM_SIZE
+  , pattern GL_UNIFORM_TYPE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_uniform_buffer_object :: Bool
+gl_ARB_uniform_buffer_object = member "GL_ARB_uniform_buffer_object" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexArrayBgra.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexArrayBgra.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexArrayBgra.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexArrayBgra (
+  -- * Extension Support
+    gl_ARB_vertex_array_bgra
+
+  -- * GL_ARB_vertex_array_bgra
+  , pattern GL_BGRA
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_vertex_array_bgra :: Bool
+gl_ARB_vertex_array_bgra = member "GL_ARB_vertex_array_bgra" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexArrayObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexArrayObject.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexArrayObject (
+  -- * Extension Support
+    gl_ARB_vertex_array_object
+
+  -- * GL_ARB_vertex_array_object
+  , glBindVertexArray
+  , glDeleteVertexArrays
+  , glGenVertexArrays
+  , glIsVertexArray
+  , pattern GL_VERTEX_ARRAY_BINDING
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_vertex_array_object :: Bool
+gl_ARB_vertex_array_object = member "GL_ARB_vertex_array_object" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexAttrib64bit.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexAttrib64bit.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexAttrib64bit.hs
@@ -0,0 +1,38 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexAttrib64bit (
+  -- * Extension Support
+    gl_ARB_vertex_attrib_64bit
+
+  -- * GL_ARB_vertex_attrib_64bit
+  , glGetVertexAttribLdv
+  , glVertexAttribL1d
+  , glVertexAttribL1dv
+  , glVertexAttribL2d
+  , glVertexAttribL2dv
+  , glVertexAttribL3d
+  , glVertexAttribL3dv
+  , glVertexAttribL4d
+  , glVertexAttribL4dv
+  , glVertexAttribLPointer
+  , pattern GL_DOUBLE_MAT2
+  , pattern GL_DOUBLE_MAT2x3
+  , pattern GL_DOUBLE_MAT2x4
+  , pattern GL_DOUBLE_MAT3
+  , pattern GL_DOUBLE_MAT3x2
+  , pattern GL_DOUBLE_MAT3x4
+  , pattern GL_DOUBLE_MAT4
+  , pattern GL_DOUBLE_MAT4x2
+  , pattern GL_DOUBLE_MAT4x3
+  , pattern GL_DOUBLE_VEC2
+  , pattern GL_DOUBLE_VEC3
+  , pattern GL_DOUBLE_VEC4
+  , pattern GL_RGB32I
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_vertex_attrib_64bit :: Bool
+gl_ARB_vertex_attrib_64bit = member "GL_ARB_vertex_attrib_64bit" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexAttribBinding.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexAttribBinding.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexAttribBinding.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexAttribBinding (
+  -- * Extension Support
+    gl_ARB_vertex_attrib_binding
+
+  -- * GL_ARB_vertex_attrib_binding
+  , glBindVertexBuffer
+  , glVertexAttribBinding
+  , glVertexAttribFormat
+  , glVertexAttribIFormat
+  , glVertexAttribLFormat
+  , glVertexBindingDivisor
+  , pattern GL_MAX_VERTEX_ATTRIB_BINDINGS
+  , pattern GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET
+  , pattern GL_VERTEX_ATTRIB_BINDING
+  , pattern GL_VERTEX_ATTRIB_RELATIVE_OFFSET
+  , pattern GL_VERTEX_BINDING_DIVISOR
+  , pattern GL_VERTEX_BINDING_OFFSET
+  , pattern GL_VERTEX_BINDING_STRIDE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_vertex_attrib_binding :: Bool
+gl_ARB_vertex_attrib_binding = member "GL_ARB_vertex_attrib_binding" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexBlend.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexBlend.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexBlend.hs
@@ -0,0 +1,235 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexBlend (
+  -- * Extension Support
+    gl_ARB_vertex_blend
+
+  -- * GL_ARB_vertex_blend
+  , glVertexBlendARB
+  , glWeightPointerARB
+  , glWeightbvARB
+  , glWeightdvARB
+  , glWeightfvARB
+  , glWeightivARB
+  , glWeightsvARB
+  , glWeightubvARB
+  , glWeightuivARB
+  , glWeightusvARB
+  , pattern GL_ACTIVE_VERTEX_UNITS_ARB
+  , pattern GL_CURRENT_WEIGHT_ARB
+  , pattern GL_MAX_VERTEX_UNITS_ARB
+  , pattern GL_MODELVIEW0_ARB
+  , pattern GL_MODELVIEW10_ARB
+  , pattern GL_MODELVIEW11_ARB
+  , pattern GL_MODELVIEW12_ARB
+  , pattern GL_MODELVIEW13_ARB
+  , pattern GL_MODELVIEW14_ARB
+  , pattern GL_MODELVIEW15_ARB
+  , pattern GL_MODELVIEW16_ARB
+  , pattern GL_MODELVIEW17_ARB
+  , pattern GL_MODELVIEW18_ARB
+  , pattern GL_MODELVIEW19_ARB
+  , pattern GL_MODELVIEW1_ARB
+  , pattern GL_MODELVIEW20_ARB
+  , pattern GL_MODELVIEW21_ARB
+  , pattern GL_MODELVIEW22_ARB
+  , pattern GL_MODELVIEW23_ARB
+  , pattern GL_MODELVIEW24_ARB
+  , pattern GL_MODELVIEW25_ARB
+  , pattern GL_MODELVIEW26_ARB
+  , pattern GL_MODELVIEW27_ARB
+  , pattern GL_MODELVIEW28_ARB
+  , pattern GL_MODELVIEW29_ARB
+  , pattern GL_MODELVIEW2_ARB
+  , pattern GL_MODELVIEW30_ARB
+  , pattern GL_MODELVIEW31_ARB
+  , pattern GL_MODELVIEW3_ARB
+  , pattern GL_MODELVIEW4_ARB
+  , pattern GL_MODELVIEW5_ARB
+  , pattern GL_MODELVIEW6_ARB
+  , pattern GL_MODELVIEW7_ARB
+  , pattern GL_MODELVIEW8_ARB
+  , pattern GL_MODELVIEW9_ARB
+  , pattern GL_VERTEX_BLEND_ARB
+  , pattern GL_WEIGHT_ARRAY_ARB
+  , pattern GL_WEIGHT_ARRAY_POINTER_ARB
+  , pattern GL_WEIGHT_ARRAY_SIZE_ARB
+  , pattern GL_WEIGHT_ARRAY_STRIDE_ARB
+  , pattern GL_WEIGHT_ARRAY_TYPE_ARB
+  , pattern GL_WEIGHT_SUM_UNITY_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_vertex_blend :: Bool
+gl_ARB_vertex_blend = member "GL_ARB_vertex_blend" extensions
+
+glVertexBlendARB :: MonadIO m => GLint -> m ()
+glVertexBlendARB = ffiintIOV glVertexBlendARBFunPtr
+
+glVertexBlendARBFunPtr :: FunPtr (GLint -> IO ())
+glVertexBlendARBFunPtr = unsafePerformIO (getProcAddress "glVertexBlendARB")
+
+{-# NOINLINE glVertexBlendARBFunPtr #-}
+
+glWeightPointerARB :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glWeightPointerARB = ffiintenumsizeiPtrVIOV glWeightPointerARBFunPtr
+
+glWeightPointerARBFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glWeightPointerARBFunPtr = unsafePerformIO (getProcAddress "glWeightPointerARB")
+
+{-# NOINLINE glWeightPointerARBFunPtr #-}
+
+glWeightbvARB :: MonadIO m => GLint -> Ptr GLbyte -> m ()
+glWeightbvARB = ffiintPtrbyteIOV glWeightbvARBFunPtr
+
+glWeightbvARBFunPtr :: FunPtr (GLint -> Ptr GLbyte -> IO ())
+glWeightbvARBFunPtr = unsafePerformIO (getProcAddress "glWeightbvARB")
+
+{-# NOINLINE glWeightbvARBFunPtr #-}
+
+glWeightdvARB :: MonadIO m => GLint -> Ptr GLdouble -> m ()
+glWeightdvARB = ffiintPtrdoubleIOV glWeightdvARBFunPtr
+
+glWeightdvARBFunPtr :: FunPtr (GLint -> Ptr GLdouble -> IO ())
+glWeightdvARBFunPtr = unsafePerformIO (getProcAddress "glWeightdvARB")
+
+{-# NOINLINE glWeightdvARBFunPtr #-}
+
+glWeightfvARB :: MonadIO m => GLint -> Ptr GLfloat -> m ()
+glWeightfvARB = ffiintPtrfloatIOV glWeightfvARBFunPtr
+
+glWeightfvARBFunPtr :: FunPtr (GLint -> Ptr GLfloat -> IO ())
+glWeightfvARBFunPtr = unsafePerformIO (getProcAddress "glWeightfvARB")
+
+{-# NOINLINE glWeightfvARBFunPtr #-}
+
+glWeightivARB :: MonadIO m => GLint -> Ptr GLint -> m ()
+glWeightivARB = ffiintPtrintIOV glWeightivARBFunPtr
+
+glWeightivARBFunPtr :: FunPtr (GLint -> Ptr GLint -> IO ())
+glWeightivARBFunPtr = unsafePerformIO (getProcAddress "glWeightivARB")
+
+{-# NOINLINE glWeightivARBFunPtr #-}
+
+glWeightsvARB :: MonadIO m => GLint -> Ptr GLshort -> m ()
+glWeightsvARB = ffiintPtrshortIOV glWeightsvARBFunPtr
+
+glWeightsvARBFunPtr :: FunPtr (GLint -> Ptr GLshort -> IO ())
+glWeightsvARBFunPtr = unsafePerformIO (getProcAddress "glWeightsvARB")
+
+{-# NOINLINE glWeightsvARBFunPtr #-}
+
+glWeightubvARB :: MonadIO m => GLint -> Ptr GLubyte -> m ()
+glWeightubvARB = ffiintPtrubyteIOV glWeightubvARBFunPtr
+
+glWeightubvARBFunPtr :: FunPtr (GLint -> Ptr GLubyte -> IO ())
+glWeightubvARBFunPtr = unsafePerformIO (getProcAddress "glWeightubvARB")
+
+{-# NOINLINE glWeightubvARBFunPtr #-}
+
+glWeightuivARB :: MonadIO m => GLint -> Ptr GLuint -> m ()
+glWeightuivARB = ffiintPtruintIOV glWeightuivARBFunPtr
+
+glWeightuivARBFunPtr :: FunPtr (GLint -> Ptr GLuint -> IO ())
+glWeightuivARBFunPtr = unsafePerformIO (getProcAddress "glWeightuivARB")
+
+{-# NOINLINE glWeightuivARBFunPtr #-}
+
+glWeightusvARB :: MonadIO m => GLint -> Ptr GLushort -> m ()
+glWeightusvARB = ffiintPtrushortIOV glWeightusvARBFunPtr
+
+glWeightusvARBFunPtr :: FunPtr (GLint -> Ptr GLushort -> IO ())
+glWeightusvARBFunPtr = unsafePerformIO (getProcAddress "glWeightusvARB")
+
+{-# NOINLINE glWeightusvARBFunPtr #-}
+
+pattern GL_ACTIVE_VERTEX_UNITS_ARB = 0x86A5 :: GLenum
+
+pattern GL_CURRENT_WEIGHT_ARB = 0x86A8 :: GLenum
+
+pattern GL_MAX_VERTEX_UNITS_ARB = 0x86A4 :: GLenum
+
+pattern GL_MODELVIEW0_ARB = 0x1700 :: GLenum
+
+pattern GL_MODELVIEW10_ARB = 0x872A :: GLenum
+
+pattern GL_MODELVIEW11_ARB = 0x872B :: GLenum
+
+pattern GL_MODELVIEW12_ARB = 0x872C :: GLenum
+
+pattern GL_MODELVIEW13_ARB = 0x872D :: GLenum
+
+pattern GL_MODELVIEW14_ARB = 0x872E :: GLenum
+
+pattern GL_MODELVIEW15_ARB = 0x872F :: GLenum
+
+pattern GL_MODELVIEW16_ARB = 0x8730 :: GLenum
+
+pattern GL_MODELVIEW17_ARB = 0x8731 :: GLenum
+
+pattern GL_MODELVIEW18_ARB = 0x8732 :: GLenum
+
+pattern GL_MODELVIEW19_ARB = 0x8733 :: GLenum
+
+pattern GL_MODELVIEW1_ARB = 0x850A :: GLenum
+
+pattern GL_MODELVIEW20_ARB = 0x8734 :: GLenum
+
+pattern GL_MODELVIEW21_ARB = 0x8735 :: GLenum
+
+pattern GL_MODELVIEW22_ARB = 0x8736 :: GLenum
+
+pattern GL_MODELVIEW23_ARB = 0x8737 :: GLenum
+
+pattern GL_MODELVIEW24_ARB = 0x8738 :: GLenum
+
+pattern GL_MODELVIEW25_ARB = 0x8739 :: GLenum
+
+pattern GL_MODELVIEW26_ARB = 0x873A :: GLenum
+
+pattern GL_MODELVIEW27_ARB = 0x873B :: GLenum
+
+pattern GL_MODELVIEW28_ARB = 0x873C :: GLenum
+
+pattern GL_MODELVIEW29_ARB = 0x873D :: GLenum
+
+pattern GL_MODELVIEW2_ARB = 0x8722 :: GLenum
+
+pattern GL_MODELVIEW30_ARB = 0x873E :: GLenum
+
+pattern GL_MODELVIEW31_ARB = 0x873F :: GLenum
+
+pattern GL_MODELVIEW3_ARB = 0x8723 :: GLenum
+
+pattern GL_MODELVIEW4_ARB = 0x8724 :: GLenum
+
+pattern GL_MODELVIEW5_ARB = 0x8725 :: GLenum
+
+pattern GL_MODELVIEW6_ARB = 0x8726 :: GLenum
+
+pattern GL_MODELVIEW7_ARB = 0x8727 :: GLenum
+
+pattern GL_MODELVIEW8_ARB = 0x8728 :: GLenum
+
+pattern GL_MODELVIEW9_ARB = 0x8729 :: GLenum
+
+pattern GL_VERTEX_BLEND_ARB = 0x86A7 :: GLenum
+
+pattern GL_WEIGHT_ARRAY_ARB = 0x86AD :: GLenum
+
+pattern GL_WEIGHT_ARRAY_POINTER_ARB = 0x86AC :: GLenum
+
+pattern GL_WEIGHT_ARRAY_SIZE_ARB = 0x86AB :: GLenum
+
+pattern GL_WEIGHT_ARRAY_STRIDE_ARB = 0x86AA :: GLenum
+
+pattern GL_WEIGHT_ARRAY_TYPE_ARB = 0x86A9 :: GLenum
+
+pattern GL_WEIGHT_SUM_UNITY_ARB = 0x86A6 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexBufferObject.hs
@@ -0,0 +1,211 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexBufferObject (
+  -- * Extension Support
+    gl_ARB_vertex_buffer_object
+
+  -- * GL_ARB_vertex_buffer_object
+  , glBindBufferARB
+  , glBufferDataARB
+  , glBufferSubDataARB
+  , glDeleteBuffersARB
+  , glGenBuffersARB
+  , glGetBufferParameterivARB
+  , glGetBufferPointervARB
+  , glGetBufferSubDataARB
+  , glIsBufferARB
+  , glMapBufferARB
+  , glUnmapBufferARB
+  , pattern GL_ARRAY_BUFFER_ARB
+  , pattern GL_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_BUFFER_ACCESS_ARB
+  , pattern GL_BUFFER_MAPPED_ARB
+  , pattern GL_BUFFER_MAP_POINTER_ARB
+  , pattern GL_BUFFER_SIZE_ARB
+  , pattern GL_BUFFER_USAGE_ARB
+  , pattern GL_COLOR_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_DYNAMIC_COPY_ARB
+  , pattern GL_DYNAMIC_DRAW_ARB
+  , pattern GL_DYNAMIC_READ_ARB
+  , pattern GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_ELEMENT_ARRAY_BUFFER_ARB
+  , pattern GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_INDEX_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_READ_ONLY_ARB
+  , pattern GL_READ_WRITE_ARB
+  , pattern GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_STATIC_COPY_ARB
+  , pattern GL_STATIC_DRAW_ARB
+  , pattern GL_STATIC_READ_ARB
+  , pattern GL_STREAM_COPY_ARB
+  , pattern GL_STREAM_DRAW_ARB
+  , pattern GL_STREAM_READ_ARB
+  , pattern GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB
+  , pattern GL_WRITE_ONLY_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_vertex_buffer_object :: Bool
+gl_ARB_vertex_buffer_object = member "GL_ARB_vertex_buffer_object" extensions
+
+glBindBufferARB :: MonadIO m => GLenum -> GLuint -> m ()
+glBindBufferARB = ffienumuintIOV glBindBufferARBFunPtr
+
+glBindBufferARBFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindBufferARBFunPtr = unsafePerformIO (getProcAddress "glBindBufferARB")
+
+{-# NOINLINE glBindBufferARBFunPtr #-}
+
+glBufferDataARB :: MonadIO m => GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> m ()
+glBufferDataARB = ffienumsizeiptrARBPtrVenumIOV glBufferDataARBFunPtr
+
+glBufferDataARBFunPtr :: FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ())
+glBufferDataARBFunPtr = unsafePerformIO (getProcAddress "glBufferDataARB")
+
+{-# NOINLINE glBufferDataARBFunPtr #-}
+
+glBufferSubDataARB :: MonadIO m => GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> m ()
+glBufferSubDataARB = ffienumintptrARBsizeiptrARBPtrVIOV glBufferSubDataARBFunPtr
+
+glBufferSubDataARBFunPtr :: FunPtr (GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
+glBufferSubDataARBFunPtr = unsafePerformIO (getProcAddress "glBufferSubDataARB")
+
+{-# NOINLINE glBufferSubDataARBFunPtr #-}
+
+glDeleteBuffersARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteBuffersARB = ffisizeiPtruintIOV glDeleteBuffersARBFunPtr
+
+glDeleteBuffersARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteBuffersARBFunPtr = unsafePerformIO (getProcAddress "glDeleteBuffersARB")
+
+{-# NOINLINE glDeleteBuffersARBFunPtr #-}
+
+glGenBuffersARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenBuffersARB = ffisizeiPtruintIOV glGenBuffersARBFunPtr
+
+glGenBuffersARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenBuffersARBFunPtr = unsafePerformIO (getProcAddress "glGenBuffersARB")
+
+{-# NOINLINE glGenBuffersARBFunPtr #-}
+
+glGetBufferParameterivARB :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetBufferParameterivARB = ffienumenumPtrintIOV glGetBufferParameterivARBFunPtr
+
+glGetBufferParameterivARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetBufferParameterivARBFunPtr = unsafePerformIO (getProcAddress "glGetBufferParameterivARB")
+
+{-# NOINLINE glGetBufferParameterivARBFunPtr #-}
+
+glGetBufferPointervARB :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
+glGetBufferPointervARB = ffienumenumPtrVIOV glGetBufferPointervARBFunPtr
+
+glGetBufferPointervARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
+glGetBufferPointervARBFunPtr = unsafePerformIO (getProcAddress "glGetBufferPointervARB")
+
+{-# NOINLINE glGetBufferPointervARBFunPtr #-}
+
+glGetBufferSubDataARB :: MonadIO m => GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> m ()
+glGetBufferSubDataARB = ffienumintptrARBsizeiptrARBPtrVIOV glGetBufferSubDataARBFunPtr
+
+glGetBufferSubDataARBFunPtr :: FunPtr (GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
+glGetBufferSubDataARBFunPtr = unsafePerformIO (getProcAddress "glGetBufferSubDataARB")
+
+{-# NOINLINE glGetBufferSubDataARBFunPtr #-}
+
+glIsBufferARB :: MonadIO m => GLuint -> m GLboolean
+glIsBufferARB = ffiuintIOboolean glIsBufferARBFunPtr
+
+glIsBufferARBFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsBufferARBFunPtr = unsafePerformIO (getProcAddress "glIsBufferARB")
+
+{-# NOINLINE glIsBufferARBFunPtr #-}
+
+glMapBufferARB :: MonadIO m => GLenum -> GLenum -> m (Ptr ())
+glMapBufferARB = ffienumenumIOPtrV glMapBufferARBFunPtr
+
+glMapBufferARBFunPtr :: FunPtr (GLenum -> GLenum -> IO (Ptr ()))
+glMapBufferARBFunPtr = unsafePerformIO (getProcAddress "glMapBufferARB")
+
+{-# NOINLINE glMapBufferARBFunPtr #-}
+
+glUnmapBufferARB :: MonadIO m => GLenum -> m GLboolean
+glUnmapBufferARB = ffienumIOboolean glUnmapBufferARBFunPtr
+
+glUnmapBufferARBFunPtr :: FunPtr (GLenum -> IO GLboolean)
+glUnmapBufferARBFunPtr = unsafePerformIO (getProcAddress "glUnmapBufferARB")
+
+{-# NOINLINE glUnmapBufferARBFunPtr #-}
+
+pattern GL_ARRAY_BUFFER_ARB = 0x8892 :: GLenum
+
+pattern GL_ARRAY_BUFFER_BINDING_ARB = 0x8894 :: GLenum
+
+pattern GL_BUFFER_ACCESS_ARB = 0x88BB :: GLenum
+
+pattern GL_BUFFER_MAPPED_ARB = 0x88BC :: GLenum
+
+pattern GL_BUFFER_MAP_POINTER_ARB = 0x88BD :: GLenum
+
+pattern GL_BUFFER_SIZE_ARB = 0x8764 :: GLenum
+
+pattern GL_BUFFER_USAGE_ARB = 0x8765 :: GLenum
+
+pattern GL_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x8898 :: GLenum
+
+pattern GL_DYNAMIC_COPY_ARB = 0x88EA :: GLenum
+
+pattern GL_DYNAMIC_DRAW_ARB = 0x88E8 :: GLenum
+
+pattern GL_DYNAMIC_READ_ARB = 0x88E9 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x889B :: GLenum
+
+pattern GL_ELEMENT_ARRAY_BUFFER_ARB = 0x8893 :: GLenum
+
+pattern GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x8895 :: GLenum
+
+pattern GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x889D :: GLenum
+
+pattern GL_INDEX_ARRAY_BUFFER_BINDING_ARB = 0x8899 :: GLenum
+
+pattern GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x8897 :: GLenum
+
+pattern GL_READ_ONLY_ARB = 0x88B8 :: GLenum
+
+pattern GL_READ_WRITE_ARB = 0x88BA :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x889C :: GLenum
+
+pattern GL_STATIC_COPY_ARB = 0x88E6 :: GLenum
+
+pattern GL_STATIC_DRAW_ARB = 0x88E4 :: GLenum
+
+pattern GL_STATIC_READ_ARB = 0x88E5 :: GLenum
+
+pattern GL_STREAM_COPY_ARB = 0x88E2 :: GLenum
+
+pattern GL_STREAM_DRAW_ARB = 0x88E0 :: GLenum
+
+pattern GL_STREAM_READ_ARB = 0x88E1 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x889A :: GLenum
+
+pattern GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x8896 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x889F :: GLenum
+
+pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x889E :: GLenum
+
+pattern GL_WRITE_ONLY_ARB = 0x88B9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexProgram.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexProgram.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexProgram.hs
@@ -0,0 +1,169 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexProgram (
+  -- * Extension Support
+    gl_ARB_vertex_program
+
+  -- * GL_ARB_vertex_program
+  , glBindProgramARB
+  , glDeleteProgramsARB
+  , glDisableVertexAttribArrayARB
+  , glEnableVertexAttribArrayARB
+  , glGenProgramsARB
+  , glGetProgramEnvParameterdvARB
+  , glGetProgramEnvParameterfvARB
+  , glGetProgramLocalParameterdvARB
+  , glGetProgramLocalParameterfvARB
+  , glGetProgramStringARB
+  , glGetProgramivARB
+  , glGetVertexAttribPointervARB
+  , glGetVertexAttribdvARB
+  , glGetVertexAttribfvARB
+  , glGetVertexAttribivARB
+  , glIsProgramARB
+  , glProgramEnvParameter4dARB
+  , glProgramEnvParameter4dvARB
+  , glProgramEnvParameter4fARB
+  , glProgramEnvParameter4fvARB
+  , glProgramLocalParameter4dARB
+  , glProgramLocalParameter4dvARB
+  , glProgramLocalParameter4fARB
+  , glProgramLocalParameter4fvARB
+  , glProgramStringARB
+  , glVertexAttrib1dARB
+  , glVertexAttrib1dvARB
+  , glVertexAttrib1fARB
+  , glVertexAttrib1fvARB
+  , glVertexAttrib1sARB
+  , glVertexAttrib1svARB
+  , glVertexAttrib2dARB
+  , glVertexAttrib2dvARB
+  , glVertexAttrib2fARB
+  , glVertexAttrib2fvARB
+  , glVertexAttrib2sARB
+  , glVertexAttrib2svARB
+  , glVertexAttrib3dARB
+  , glVertexAttrib3dvARB
+  , glVertexAttrib3fARB
+  , glVertexAttrib3fvARB
+  , glVertexAttrib3sARB
+  , glVertexAttrib3svARB
+  , glVertexAttrib4NbvARB
+  , glVertexAttrib4NivARB
+  , glVertexAttrib4NsvARB
+  , glVertexAttrib4NubARB
+  , glVertexAttrib4NubvARB
+  , glVertexAttrib4NuivARB
+  , glVertexAttrib4NusvARB
+  , glVertexAttrib4bvARB
+  , glVertexAttrib4dARB
+  , glVertexAttrib4dvARB
+  , glVertexAttrib4fARB
+  , glVertexAttrib4fvARB
+  , glVertexAttrib4ivARB
+  , glVertexAttrib4sARB
+  , glVertexAttrib4svARB
+  , glVertexAttrib4ubvARB
+  , glVertexAttrib4uivARB
+  , glVertexAttrib4usvARB
+  , glVertexAttribPointerARB
+  , pattern GL_COLOR_SUM_ARB
+  , pattern GL_CURRENT_MATRIX_ARB
+  , pattern GL_CURRENT_MATRIX_STACK_DEPTH_ARB
+  , pattern GL_CURRENT_VERTEX_ATTRIB_ARB
+  , pattern GL_MATRIX0_ARB
+  , pattern GL_MATRIX10_ARB
+  , pattern GL_MATRIX11_ARB
+  , pattern GL_MATRIX12_ARB
+  , pattern GL_MATRIX13_ARB
+  , pattern GL_MATRIX14_ARB
+  , pattern GL_MATRIX15_ARB
+  , pattern GL_MATRIX16_ARB
+  , pattern GL_MATRIX17_ARB
+  , pattern GL_MATRIX18_ARB
+  , pattern GL_MATRIX19_ARB
+  , pattern GL_MATRIX1_ARB
+  , pattern GL_MATRIX20_ARB
+  , pattern GL_MATRIX21_ARB
+  , pattern GL_MATRIX22_ARB
+  , pattern GL_MATRIX23_ARB
+  , pattern GL_MATRIX24_ARB
+  , pattern GL_MATRIX25_ARB
+  , pattern GL_MATRIX26_ARB
+  , pattern GL_MATRIX27_ARB
+  , pattern GL_MATRIX28_ARB
+  , pattern GL_MATRIX29_ARB
+  , pattern GL_MATRIX2_ARB
+  , pattern GL_MATRIX30_ARB
+  , pattern GL_MATRIX31_ARB
+  , pattern GL_MATRIX3_ARB
+  , pattern GL_MATRIX4_ARB
+  , pattern GL_MATRIX5_ARB
+  , pattern GL_MATRIX6_ARB
+  , pattern GL_MATRIX7_ARB
+  , pattern GL_MATRIX8_ARB
+  , pattern GL_MATRIX9_ARB
+  , pattern GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB
+  , pattern GL_MAX_PROGRAM_ATTRIBS_ARB
+  , pattern GL_MAX_PROGRAM_ENV_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_INSTRUCTIONS_ARB
+  , pattern GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_MATRICES_ARB
+  , pattern GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB
+  , pattern GL_MAX_PROGRAM_PARAMETERS_ARB
+  , pattern GL_MAX_PROGRAM_TEMPORARIES_ARB
+  , pattern GL_MAX_VERTEX_ATTRIBS_ARB
+  , pattern GL_PROGRAM_ADDRESS_REGISTERS_ARB
+  , pattern GL_PROGRAM_ATTRIBS_ARB
+  , pattern GL_PROGRAM_BINDING_ARB
+  , pattern GL_PROGRAM_ERROR_POSITION_ARB
+  , pattern GL_PROGRAM_ERROR_STRING_ARB
+  , pattern GL_PROGRAM_FORMAT_ARB
+  , pattern GL_PROGRAM_FORMAT_ASCII_ARB
+  , pattern GL_PROGRAM_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_LENGTH_ARB
+  , pattern GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB
+  , pattern GL_PROGRAM_NATIVE_ATTRIBS_ARB
+  , pattern GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB
+  , pattern GL_PROGRAM_NATIVE_PARAMETERS_ARB
+  , pattern GL_PROGRAM_NATIVE_TEMPORARIES_ARB
+  , pattern GL_PROGRAM_PARAMETERS_ARB
+  , pattern GL_PROGRAM_STRING_ARB
+  , pattern GL_PROGRAM_TEMPORARIES_ARB
+  , pattern GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB
+  , pattern GL_TRANSPOSE_CURRENT_MATRIX_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB
+  , pattern GL_VERTEX_PROGRAM_ARB
+  , pattern GL_VERTEX_PROGRAM_POINT_SIZE_ARB
+  , pattern GL_VERTEX_PROGRAM_TWO_SIDE_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_ARB_vertex_program :: Bool
+gl_ARB_vertex_program = member "GL_ARB_vertex_program" extensions
+
+pattern GL_COLOR_SUM_ARB = 0x8458 :: GLenum
+
+pattern GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B1 :: GLenum
+
+pattern GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B3 :: GLenum
+
+pattern GL_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B0 :: GLenum
+
+pattern GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B2 :: GLenum
+
+pattern GL_VERTEX_PROGRAM_ARB = 0x8620 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexShader.hs
@@ -0,0 +1,128 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexShader (
+  -- * Extension Support
+    gl_ARB_vertex_shader
+
+  -- * GL_ARB_vertex_shader
+  , glBindAttribLocationARB
+  , glDisableVertexAttribArrayARB
+  , glEnableVertexAttribArrayARB
+  , glGetActiveAttribARB
+  , glGetAttribLocationARB
+  , glGetVertexAttribPointervARB
+  , glGetVertexAttribdvARB
+  , glGetVertexAttribfvARB
+  , glGetVertexAttribivARB
+  , glVertexAttrib1dARB
+  , glVertexAttrib1dvARB
+  , glVertexAttrib1fARB
+  , glVertexAttrib1fvARB
+  , glVertexAttrib1sARB
+  , glVertexAttrib1svARB
+  , glVertexAttrib2dARB
+  , glVertexAttrib2dvARB
+  , glVertexAttrib2fARB
+  , glVertexAttrib2fvARB
+  , glVertexAttrib2sARB
+  , glVertexAttrib2svARB
+  , glVertexAttrib3dARB
+  , glVertexAttrib3dvARB
+  , glVertexAttrib3fARB
+  , glVertexAttrib3fvARB
+  , glVertexAttrib3sARB
+  , glVertexAttrib3svARB
+  , glVertexAttrib4NbvARB
+  , glVertexAttrib4NivARB
+  , glVertexAttrib4NsvARB
+  , glVertexAttrib4NubARB
+  , glVertexAttrib4NubvARB
+  , glVertexAttrib4NuivARB
+  , glVertexAttrib4NusvARB
+  , glVertexAttrib4bvARB
+  , glVertexAttrib4dARB
+  , glVertexAttrib4dvARB
+  , glVertexAttrib4fARB
+  , glVertexAttrib4fvARB
+  , glVertexAttrib4ivARB
+  , glVertexAttrib4sARB
+  , glVertexAttrib4svARB
+  , glVertexAttrib4ubvARB
+  , glVertexAttrib4uivARB
+  , glVertexAttrib4usvARB
+  , glVertexAttribPointerARB
+  , pattern GL_CURRENT_VERTEX_ATTRIB_ARB
+  , pattern GL_FLOAT
+  , pattern GL_FLOAT_MAT2_ARB
+  , pattern GL_FLOAT_MAT3_ARB
+  , pattern GL_FLOAT_MAT4_ARB
+  , pattern GL_FLOAT_VEC2_ARB
+  , pattern GL_FLOAT_VEC3_ARB
+  , pattern GL_FLOAT_VEC4_ARB
+  , pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
+  , pattern GL_MAX_TEXTURE_COORDS_ARB
+  , pattern GL_MAX_TEXTURE_IMAGE_UNITS_ARB
+  , pattern GL_MAX_VARYING_FLOATS_ARB
+  , pattern GL_MAX_VERTEX_ATTRIBS_ARB
+  , pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
+  , pattern GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
+  , pattern GL_OBJECT_ACTIVE_ATTRIBUTES_ARB
+  , pattern GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB
+  , pattern GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB
+  , pattern GL_VERTEX_PROGRAM_POINT_SIZE_ARB
+  , pattern GL_VERTEX_PROGRAM_TWO_SIDE_ARB
+  , pattern GL_VERTEX_SHADER_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.Internal.Shared
+import Graphics.GL.Raw.Types
+import System.IO.Unsafe
+
+gl_ARB_vertex_shader :: Bool
+gl_ARB_vertex_shader = member "GL_ARB_vertex_shader" extensions
+
+glBindAttribLocationARB :: MonadIO m => GLhandleARB -> GLuint -> Ptr GLcharARB -> m ()
+glBindAttribLocationARB = ffihandleARBuintPtrcharARBIOV glBindAttribLocationARBFunPtr
+
+glBindAttribLocationARBFunPtr :: FunPtr (GLhandleARB -> GLuint -> Ptr GLcharARB -> IO ())
+glBindAttribLocationARBFunPtr = unsafePerformIO (getProcAddress "glBindAttribLocationARB")
+
+{-# NOINLINE glBindAttribLocationARBFunPtr #-}
+
+glGetActiveAttribARB :: MonadIO m => GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> m ()
+glGetActiveAttribARB = ffihandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV glGetActiveAttribARBFunPtr
+
+glGetActiveAttribARBFunPtr :: FunPtr (GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> IO ())
+glGetActiveAttribARBFunPtr = unsafePerformIO (getProcAddress "glGetActiveAttribARB")
+
+{-# NOINLINE glGetActiveAttribARBFunPtr #-}
+
+glGetAttribLocationARB :: MonadIO m => GLhandleARB -> Ptr GLcharARB -> m GLint
+glGetAttribLocationARB = ffihandleARBPtrcharARBIOint glGetAttribLocationARBFunPtr
+
+glGetAttribLocationARBFunPtr :: FunPtr (GLhandleARB -> Ptr GLcharARB -> IO GLint)
+glGetAttribLocationARBFunPtr = unsafePerformIO (getProcAddress "glGetAttribLocationARB")
+
+{-# NOINLINE glGetAttribLocationARBFunPtr #-}
+
+pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x8B4D :: GLenum
+
+pattern GL_MAX_VARYING_FLOATS_ARB = 0x8B4B :: GLenum
+
+pattern GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x8B4A :: GLenum
+
+pattern GL_OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x8B89 :: GLenum
+
+pattern GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x8B8A :: GLenum
+
+pattern GL_VERTEX_SHADER_ARB = 0x8B31 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexType10f11f11fRev.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexType10f11f11fRev.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexType10f11f11fRev.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexType10f11f11fRev (
+  -- * Extension Support
+    gl_ARB_vertex_type_10f_11f_11f_rev
+
+  -- * GL_ARB_vertex_type_10f_11f_11f_rev
+  , pattern GL_UNSIGNED_INT_10F_11F_11F_REV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_vertex_type_10f_11f_11f_rev :: Bool
+gl_ARB_vertex_type_10f_11f_11f_rev = member "GL_ARB_vertex_type_10f_11f_11f_rev" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexType2101010Rev.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexType2101010Rev.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/VertexType2101010Rev.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.VertexType2101010Rev (
+  -- * Extension Support
+    gl_ARB_vertex_type_2_10_10_10_rev
+
+  -- * GL_ARB_vertex_type_2_10_10_10_rev
+  , glColorP3ui
+  , glColorP3uiv
+  , glColorP4ui
+  , glColorP4uiv
+  , glMultiTexCoordP1ui
+  , glMultiTexCoordP1uiv
+  , glMultiTexCoordP2ui
+  , glMultiTexCoordP2uiv
+  , glMultiTexCoordP3ui
+  , glMultiTexCoordP3uiv
+  , glMultiTexCoordP4ui
+  , glMultiTexCoordP4uiv
+  , glNormalP3ui
+  , glNormalP3uiv
+  , glSecondaryColorP3ui
+  , glSecondaryColorP3uiv
+  , glTexCoordP1ui
+  , glTexCoordP1uiv
+  , glTexCoordP2ui
+  , glTexCoordP2uiv
+  , glTexCoordP3ui
+  , glTexCoordP3uiv
+  , glTexCoordP4ui
+  , glTexCoordP4uiv
+  , glVertexAttribP1ui
+  , glVertexAttribP1uiv
+  , glVertexAttribP2ui
+  , glVertexAttribP2uiv
+  , glVertexAttribP3ui
+  , glVertexAttribP3uiv
+  , glVertexAttribP4ui
+  , glVertexAttribP4uiv
+  , glVertexP2ui
+  , glVertexP2uiv
+  , glVertexP3ui
+  , glVertexP3uiv
+  , glVertexP4ui
+  , glVertexP4uiv
+  , pattern GL_INT_2_10_10_10_REV
+  , pattern GL_UNSIGNED_INT_2_10_10_10_REV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_vertex_type_2_10_10_10_rev :: Bool
+gl_ARB_vertex_type_2_10_10_10_rev = member "GL_ARB_vertex_type_2_10_10_10_rev" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ViewportArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ViewportArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/ViewportArray.hs
@@ -0,0 +1,38 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.ViewportArray (
+  -- * Extension Support
+    gl_ARB_viewport_array
+
+  -- * GL_ARB_viewport_array
+  , glDepthRangeArrayv
+  , glDepthRangeIndexed
+  , glGetDoublei_v
+  , glGetFloati_v
+  , glScissorArrayv
+  , glScissorIndexed
+  , glScissorIndexedv
+  , glViewportArrayv
+  , glViewportIndexedf
+  , glViewportIndexedfv
+  , pattern GL_DEPTH_RANGE
+  , pattern GL_FIRST_VERTEX_CONVENTION
+  , pattern GL_LAST_VERTEX_CONVENTION
+  , pattern GL_LAYER_PROVOKING_VERTEX
+  , pattern GL_MAX_VIEWPORTS
+  , pattern GL_PROVOKING_VERTEX
+  , pattern GL_SCISSOR_BOX
+  , pattern GL_SCISSOR_TEST
+  , pattern GL_UNDEFINED_VERTEX
+  , pattern GL_VIEWPORT
+  , pattern GL_VIEWPORT_BOUNDS_RANGE
+  , pattern GL_VIEWPORT_INDEX_PROVOKING_VERTEX
+  , pattern GL_VIEWPORT_SUBPIXEL_BITS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_ARB_viewport_array :: Bool
+gl_ARB_viewport_array = member "GL_ARB_viewport_array" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/WindowPos.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/WindowPos.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARB/WindowPos.hs
@@ -0,0 +1,163 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARB.WindowPos (
+  -- * Extension Support
+    gl_ARB_window_pos
+
+  -- * GL_ARB_window_pos
+  , glWindowPos2dARB
+  , glWindowPos2dvARB
+  , glWindowPos2fARB
+  , glWindowPos2fvARB
+  , glWindowPos2iARB
+  , glWindowPos2ivARB
+  , glWindowPos2sARB
+  , glWindowPos2svARB
+  , glWindowPos3dARB
+  , glWindowPos3dvARB
+  , glWindowPos3fARB
+  , glWindowPos3fvARB
+  , glWindowPos3iARB
+  , glWindowPos3ivARB
+  , glWindowPos3sARB
+  , glWindowPos3svARB
+) 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_window_pos :: Bool
+gl_ARB_window_pos = member "GL_ARB_window_pos" extensions
+
+glWindowPos2dARB :: MonadIO m => GLdouble -> GLdouble -> m ()
+glWindowPos2dARB = ffidoubledoubleIOV glWindowPos2dARBFunPtr
+
+glWindowPos2dARBFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
+glWindowPos2dARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2dARB")
+
+{-# NOINLINE glWindowPos2dARBFunPtr #-}
+
+glWindowPos2dvARB :: MonadIO m => Ptr GLdouble -> m ()
+glWindowPos2dvARB = ffiPtrdoubleIOV glWindowPos2dvARBFunPtr
+
+glWindowPos2dvARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glWindowPos2dvARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2dvARB")
+
+{-# NOINLINE glWindowPos2dvARBFunPtr #-}
+
+glWindowPos2fARB :: MonadIO m => GLfloat -> GLfloat -> m ()
+glWindowPos2fARB = ffifloatfloatIOV glWindowPos2fARBFunPtr
+
+glWindowPos2fARBFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
+glWindowPos2fARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2fARB")
+
+{-# NOINLINE glWindowPos2fARBFunPtr #-}
+
+glWindowPos2fvARB :: MonadIO m => Ptr GLfloat -> m ()
+glWindowPos2fvARB = ffiPtrfloatIOV glWindowPos2fvARBFunPtr
+
+glWindowPos2fvARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glWindowPos2fvARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2fvARB")
+
+{-# NOINLINE glWindowPos2fvARBFunPtr #-}
+
+glWindowPos2iARB :: MonadIO m => GLint -> GLint -> m ()
+glWindowPos2iARB = ffiintintIOV glWindowPos2iARBFunPtr
+
+glWindowPos2iARBFunPtr :: FunPtr (GLint -> GLint -> IO ())
+glWindowPos2iARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2iARB")
+
+{-# NOINLINE glWindowPos2iARBFunPtr #-}
+
+glWindowPos2ivARB :: MonadIO m => Ptr GLint -> m ()
+glWindowPos2ivARB = ffiPtrintIOV glWindowPos2ivARBFunPtr
+
+glWindowPos2ivARBFunPtr :: FunPtr (Ptr GLint -> IO ())
+glWindowPos2ivARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2ivARB")
+
+{-# NOINLINE glWindowPos2ivARBFunPtr #-}
+
+glWindowPos2sARB :: MonadIO m => GLshort -> GLshort -> m ()
+glWindowPos2sARB = ffishortshortIOV glWindowPos2sARBFunPtr
+
+glWindowPos2sARBFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
+glWindowPos2sARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2sARB")
+
+{-# NOINLINE glWindowPos2sARBFunPtr #-}
+
+glWindowPos2svARB :: MonadIO m => Ptr GLshort -> m ()
+glWindowPos2svARB = ffiPtrshortIOV glWindowPos2svARBFunPtr
+
+glWindowPos2svARBFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glWindowPos2svARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos2svARB")
+
+{-# NOINLINE glWindowPos2svARBFunPtr #-}
+
+glWindowPos3dARB :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
+glWindowPos3dARB = ffidoubledoubledoubleIOV glWindowPos3dARBFunPtr
+
+glWindowPos3dARBFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
+glWindowPos3dARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3dARB")
+
+{-# NOINLINE glWindowPos3dARBFunPtr #-}
+
+glWindowPos3dvARB :: MonadIO m => Ptr GLdouble -> m ()
+glWindowPos3dvARB = ffiPtrdoubleIOV glWindowPos3dvARBFunPtr
+
+glWindowPos3dvARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glWindowPos3dvARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3dvARB")
+
+{-# NOINLINE glWindowPos3dvARBFunPtr #-}
+
+glWindowPos3fARB :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
+glWindowPos3fARB = ffifloatfloatfloatIOV glWindowPos3fARBFunPtr
+
+glWindowPos3fARBFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
+glWindowPos3fARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3fARB")
+
+{-# NOINLINE glWindowPos3fARBFunPtr #-}
+
+glWindowPos3fvARB :: MonadIO m => Ptr GLfloat -> m ()
+glWindowPos3fvARB = ffiPtrfloatIOV glWindowPos3fvARBFunPtr
+
+glWindowPos3fvARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glWindowPos3fvARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3fvARB")
+
+{-# NOINLINE glWindowPos3fvARBFunPtr #-}
+
+glWindowPos3iARB :: MonadIO m => GLint -> GLint -> GLint -> m ()
+glWindowPos3iARB = ffiintintintIOV glWindowPos3iARBFunPtr
+
+glWindowPos3iARBFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
+glWindowPos3iARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3iARB")
+
+{-# NOINLINE glWindowPos3iARBFunPtr #-}
+
+glWindowPos3ivARB :: MonadIO m => Ptr GLint -> m ()
+glWindowPos3ivARB = ffiPtrintIOV glWindowPos3ivARBFunPtr
+
+glWindowPos3ivARBFunPtr :: FunPtr (Ptr GLint -> IO ())
+glWindowPos3ivARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3ivARB")
+
+{-# NOINLINE glWindowPos3ivARBFunPtr #-}
+
+glWindowPos3sARB :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
+glWindowPos3sARB = ffishortshortshortIOV glWindowPos3sARBFunPtr
+
+glWindowPos3sARBFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
+glWindowPos3sARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3sARB")
+
+{-# NOINLINE glWindowPos3sARBFunPtr #-}
+
+glWindowPos3svARB :: MonadIO m => Ptr GLshort -> m ()
+glWindowPos3svARB = ffiPtrshortIOV glWindowPos3svARBFunPtr
+
+glWindowPos3svARBFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glWindowPos3svARBFunPtr = unsafePerformIO (getProcAddress "glWindowPos3svARB")
+
+{-# NOINLINE glWindowPos3svARBFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARM.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARM (
+  -- * ARM Extensions
+    module Graphics.GL.Raw.Extension.ARM.MaliProgramBinary
+  , module Graphics.GL.Raw.Extension.ARM.MaliShaderBinary
+  , module Graphics.GL.Raw.Extension.ARM.Rgba8
+  , module Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetch
+  , module Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetchDepthStencil
+) where
+
+import Graphics.GL.Raw.Extension.ARM.MaliProgramBinary
+import Graphics.GL.Raw.Extension.ARM.MaliShaderBinary
+import Graphics.GL.Raw.Extension.ARM.Rgba8
+import Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetch
+import Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetchDepthStencil
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/MaliProgramBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/MaliProgramBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/MaliProgramBinary.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARM.MaliProgramBinary (
+  -- * Extension Support
+    gl_ARM_mali_program_binary
+
+  -- * GL_ARM_mali_program_binary
+  , pattern GL_MALI_PROGRAM_BINARY_ARM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARM_mali_program_binary :: Bool
+gl_ARM_mali_program_binary = member "GL_ARM_mali_program_binary" extensions
+
+pattern GL_MALI_PROGRAM_BINARY_ARM = 0x8F61 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/MaliShaderBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/MaliShaderBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/MaliShaderBinary.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARM.MaliShaderBinary (
+  -- * Extension Support
+    gl_ARM_mali_shader_binary
+
+  -- * GL_ARM_mali_shader_binary
+  , pattern GL_MALI_SHADER_BINARY_ARM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARM_mali_shader_binary :: Bool
+gl_ARM_mali_shader_binary = member "GL_ARM_mali_shader_binary" extensions
+
+pattern GL_MALI_SHADER_BINARY_ARM = 0x8F60 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/Rgba8.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/Rgba8.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/Rgba8.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARM.Rgba8 (
+  -- * Extension Support
+    gl_ARM_rgba8
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARM_rgba8 :: Bool
+gl_ARM_rgba8 = member "GL_ARM_rgba8" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/ShaderFramebufferFetch.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/ShaderFramebufferFetch.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/ShaderFramebufferFetch.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetch (
+  -- * Extension Support
+    gl_ARM_shader_framebuffer_fetch
+
+  -- * GL_ARM_shader_framebuffer_fetch
+  , pattern GL_FETCH_PER_SAMPLE_ARM
+  , pattern GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ARM_shader_framebuffer_fetch :: Bool
+gl_ARM_shader_framebuffer_fetch = member "GL_ARM_shader_framebuffer_fetch" extensions
+
+pattern GL_FETCH_PER_SAMPLE_ARM = 0x8F65 :: GLenum
+
+pattern GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM = 0x8F66 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/ShaderFramebufferFetchDepthStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/ShaderFramebufferFetchDepthStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ARM/ShaderFramebufferFetchDepthStencil.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetchDepthStencil (
+  -- * Extension Support
+    gl_ARM_shader_framebuffer_fetch_depth_stencil
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_ARM_shader_framebuffer_fetch_depth_stencil :: Bool
+gl_ARM_shader_framebuffer_fetch_depth_stencil = member "GL_ARM_shader_framebuffer_fetch_depth_stencil" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI.hs
@@ -0,0 +1,38 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI (
+  -- * ATI Extensions
+    module Graphics.GL.Raw.Extension.ATI.DrawBuffers
+  , module Graphics.GL.Raw.Extension.ATI.ElementArray
+  , module Graphics.GL.Raw.Extension.ATI.EnvmapBumpmap
+  , module Graphics.GL.Raw.Extension.ATI.FragmentShader
+  , module Graphics.GL.Raw.Extension.ATI.MapObjectBuffer
+  , module Graphics.GL.Raw.Extension.ATI.Meminfo
+  , module Graphics.GL.Raw.Extension.ATI.PixelFormatFloat
+  , module Graphics.GL.Raw.Extension.ATI.PnTriangles
+  , module Graphics.GL.Raw.Extension.ATI.SeparateStencil
+  , module Graphics.GL.Raw.Extension.ATI.TextFragmentShader
+  , module Graphics.GL.Raw.Extension.ATI.TextureEnvCombine3
+  , module Graphics.GL.Raw.Extension.ATI.TextureFloat
+  , module Graphics.GL.Raw.Extension.ATI.TextureMirrorOnce
+  , module Graphics.GL.Raw.Extension.ATI.VertexArrayObject
+  , module Graphics.GL.Raw.Extension.ATI.VertexAttribArrayObject
+  , module Graphics.GL.Raw.Extension.ATI.VertexStreams
+) where
+
+import Graphics.GL.Raw.Extension.ATI.DrawBuffers
+import Graphics.GL.Raw.Extension.ATI.ElementArray
+import Graphics.GL.Raw.Extension.ATI.EnvmapBumpmap
+import Graphics.GL.Raw.Extension.ATI.FragmentShader
+import Graphics.GL.Raw.Extension.ATI.MapObjectBuffer
+import Graphics.GL.Raw.Extension.ATI.Meminfo
+import Graphics.GL.Raw.Extension.ATI.PixelFormatFloat
+import Graphics.GL.Raw.Extension.ATI.PnTriangles
+import Graphics.GL.Raw.Extension.ATI.SeparateStencil
+import Graphics.GL.Raw.Extension.ATI.TextFragmentShader
+import Graphics.GL.Raw.Extension.ATI.TextureEnvCombine3
+import Graphics.GL.Raw.Extension.ATI.TextureFloat
+import Graphics.GL.Raw.Extension.ATI.TextureMirrorOnce
+import Graphics.GL.Raw.Extension.ATI.VertexArrayObject
+import Graphics.GL.Raw.Extension.ATI.VertexAttribArrayObject
+import Graphics.GL.Raw.Extension.ATI.VertexStreams
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/DrawBuffers.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/DrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/DrawBuffers.hs
@@ -0,0 +1,79 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.DrawBuffers (
+  -- * Extension Support
+    gl_ATI_draw_buffers
+
+  -- * GL_ATI_draw_buffers
+  , glDrawBuffersATI
+  , pattern GL_DRAW_BUFFER0_ATI
+  , pattern GL_DRAW_BUFFER10_ATI
+  , pattern GL_DRAW_BUFFER11_ATI
+  , pattern GL_DRAW_BUFFER12_ATI
+  , pattern GL_DRAW_BUFFER13_ATI
+  , pattern GL_DRAW_BUFFER14_ATI
+  , pattern GL_DRAW_BUFFER15_ATI
+  , pattern GL_DRAW_BUFFER1_ATI
+  , pattern GL_DRAW_BUFFER2_ATI
+  , pattern GL_DRAW_BUFFER3_ATI
+  , pattern GL_DRAW_BUFFER4_ATI
+  , pattern GL_DRAW_BUFFER5_ATI
+  , pattern GL_DRAW_BUFFER6_ATI
+  , pattern GL_DRAW_BUFFER7_ATI
+  , pattern GL_DRAW_BUFFER8_ATI
+  , pattern GL_DRAW_BUFFER9_ATI
+  , pattern GL_MAX_DRAW_BUFFERS_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_draw_buffers :: Bool
+gl_ATI_draw_buffers = member "GL_ATI_draw_buffers" extensions
+
+glDrawBuffersATI :: MonadIO m => GLsizei -> Ptr GLenum -> m ()
+glDrawBuffersATI = ffisizeiPtrenumIOV glDrawBuffersATIFunPtr
+
+glDrawBuffersATIFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
+glDrawBuffersATIFunPtr = unsafePerformIO (getProcAddress "glDrawBuffersATI")
+
+{-# NOINLINE glDrawBuffersATIFunPtr #-}
+
+pattern GL_DRAW_BUFFER0_ATI = 0x8825 :: GLenum
+
+pattern GL_DRAW_BUFFER10_ATI = 0x882F :: GLenum
+
+pattern GL_DRAW_BUFFER11_ATI = 0x8830 :: GLenum
+
+pattern GL_DRAW_BUFFER12_ATI = 0x8831 :: GLenum
+
+pattern GL_DRAW_BUFFER13_ATI = 0x8832 :: GLenum
+
+pattern GL_DRAW_BUFFER14_ATI = 0x8833 :: GLenum
+
+pattern GL_DRAW_BUFFER15_ATI = 0x8834 :: GLenum
+
+pattern GL_DRAW_BUFFER1_ATI = 0x8826 :: GLenum
+
+pattern GL_DRAW_BUFFER2_ATI = 0x8827 :: GLenum
+
+pattern GL_DRAW_BUFFER3_ATI = 0x8828 :: GLenum
+
+pattern GL_DRAW_BUFFER4_ATI = 0x8829 :: GLenum
+
+pattern GL_DRAW_BUFFER5_ATI = 0x882A :: GLenum
+
+pattern GL_DRAW_BUFFER6_ATI = 0x882B :: GLenum
+
+pattern GL_DRAW_BUFFER7_ATI = 0x882C :: GLenum
+
+pattern GL_DRAW_BUFFER8_ATI = 0x882D :: GLenum
+
+pattern GL_DRAW_BUFFER9_ATI = 0x882E :: GLenum
+
+pattern GL_MAX_DRAW_BUFFERS_ATI = 0x8824 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/ElementArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/ElementArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/ElementArray.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.ElementArray (
+  -- * Extension Support
+    gl_ATI_element_array
+
+  -- * GL_ATI_element_array
+  , glDrawElementArrayATI
+  , glDrawRangeElementArrayATI
+  , glElementPointerATI
+  , pattern GL_ELEMENT_ARRAY_ATI
+  , pattern GL_ELEMENT_ARRAY_POINTER_ATI
+  , pattern GL_ELEMENT_ARRAY_TYPE_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_element_array :: Bool
+gl_ATI_element_array = member "GL_ATI_element_array" extensions
+
+glDrawElementArrayATI :: MonadIO m => GLenum -> GLsizei -> m ()
+glDrawElementArrayATI = ffienumsizeiIOV glDrawElementArrayATIFunPtr
+
+glDrawElementArrayATIFunPtr :: FunPtr (GLenum -> GLsizei -> IO ())
+glDrawElementArrayATIFunPtr = unsafePerformIO (getProcAddress "glDrawElementArrayATI")
+
+{-# NOINLINE glDrawElementArrayATIFunPtr #-}
+
+glDrawRangeElementArrayATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> m ()
+glDrawRangeElementArrayATI = ffienumuintuintsizeiIOV glDrawRangeElementArrayATIFunPtr
+
+glDrawRangeElementArrayATIFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> IO ())
+glDrawRangeElementArrayATIFunPtr = unsafePerformIO (getProcAddress "glDrawRangeElementArrayATI")
+
+{-# NOINLINE glDrawRangeElementArrayATIFunPtr #-}
+
+glElementPointerATI :: MonadIO m => GLenum -> Ptr () -> m ()
+glElementPointerATI = ffienumPtrVIOV glElementPointerATIFunPtr
+
+glElementPointerATIFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
+glElementPointerATIFunPtr = unsafePerformIO (getProcAddress "glElementPointerATI")
+
+{-# NOINLINE glElementPointerATIFunPtr #-}
+
+pattern GL_ELEMENT_ARRAY_ATI = 0x8768 :: GLenum
+
+pattern GL_ELEMENT_ARRAY_POINTER_ATI = 0x876A :: GLenum
+
+pattern GL_ELEMENT_ARRAY_TYPE_ATI = 0x8769 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/EnvmapBumpmap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/EnvmapBumpmap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/EnvmapBumpmap.hs
@@ -0,0 +1,79 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.EnvmapBumpmap (
+  -- * Extension Support
+    gl_ATI_envmap_bumpmap
+
+  -- * GL_ATI_envmap_bumpmap
+  , glGetTexBumpParameterfvATI
+  , glGetTexBumpParameterivATI
+  , glTexBumpParameterfvATI
+  , glTexBumpParameterivATI
+  , pattern GL_BUMP_ENVMAP_ATI
+  , pattern GL_BUMP_NUM_TEX_UNITS_ATI
+  , pattern GL_BUMP_ROT_MATRIX_ATI
+  , pattern GL_BUMP_ROT_MATRIX_SIZE_ATI
+  , pattern GL_BUMP_TARGET_ATI
+  , pattern GL_BUMP_TEX_UNITS_ATI
+  , pattern GL_DU8DV8_ATI
+  , pattern GL_DUDV_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_envmap_bumpmap :: Bool
+gl_ATI_envmap_bumpmap = member "GL_ATI_envmap_bumpmap" extensions
+
+glGetTexBumpParameterfvATI :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glGetTexBumpParameterfvATI = ffienumPtrfloatIOV glGetTexBumpParameterfvATIFunPtr
+
+glGetTexBumpParameterfvATIFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glGetTexBumpParameterfvATIFunPtr = unsafePerformIO (getProcAddress "glGetTexBumpParameterfvATI")
+
+{-# NOINLINE glGetTexBumpParameterfvATIFunPtr #-}
+
+glGetTexBumpParameterivATI :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glGetTexBumpParameterivATI = ffienumPtrintIOV glGetTexBumpParameterivATIFunPtr
+
+glGetTexBumpParameterivATIFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glGetTexBumpParameterivATIFunPtr = unsafePerformIO (getProcAddress "glGetTexBumpParameterivATI")
+
+{-# NOINLINE glGetTexBumpParameterivATIFunPtr #-}
+
+glTexBumpParameterfvATI :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glTexBumpParameterfvATI = ffienumPtrfloatIOV glTexBumpParameterfvATIFunPtr
+
+glTexBumpParameterfvATIFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glTexBumpParameterfvATIFunPtr = unsafePerformIO (getProcAddress "glTexBumpParameterfvATI")
+
+{-# NOINLINE glTexBumpParameterfvATIFunPtr #-}
+
+glTexBumpParameterivATI :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glTexBumpParameterivATI = ffienumPtrintIOV glTexBumpParameterivATIFunPtr
+
+glTexBumpParameterivATIFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glTexBumpParameterivATIFunPtr = unsafePerformIO (getProcAddress "glTexBumpParameterivATI")
+
+{-# NOINLINE glTexBumpParameterivATIFunPtr #-}
+
+pattern GL_BUMP_ENVMAP_ATI = 0x877B :: GLenum
+
+pattern GL_BUMP_NUM_TEX_UNITS_ATI = 0x8777 :: GLenum
+
+pattern GL_BUMP_ROT_MATRIX_ATI = 0x8775 :: GLenum
+
+pattern GL_BUMP_ROT_MATRIX_SIZE_ATI = 0x8776 :: GLenum
+
+pattern GL_BUMP_TARGET_ATI = 0x877C :: GLenum
+
+pattern GL_BUMP_TEX_UNITS_ATI = 0x8778 :: GLenum
+
+pattern GL_DU8DV8_ATI = 0x877A :: GLenum
+
+pattern GL_DUDV_ATI = 0x8779 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/FragmentShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/FragmentShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/FragmentShader.hs
@@ -0,0 +1,457 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.FragmentShader (
+  -- * Extension Support
+    gl_ATI_fragment_shader
+
+  -- * GL_ATI_fragment_shader
+  , glAlphaFragmentOp1ATI
+  , glAlphaFragmentOp2ATI
+  , glAlphaFragmentOp3ATI
+  , glBeginFragmentShaderATI
+  , glBindFragmentShaderATI
+  , glColorFragmentOp1ATI
+  , glColorFragmentOp2ATI
+  , glColorFragmentOp3ATI
+  , glDeleteFragmentShaderATI
+  , glEndFragmentShaderATI
+  , glGenFragmentShadersATI
+  , glPassTexCoordATI
+  , glSampleMapATI
+  , glSetFragmentShaderConstantATI
+  , pattern GL_2X_BIT_ATI
+  , pattern GL_4X_BIT_ATI
+  , pattern GL_8X_BIT_ATI
+  , pattern GL_ADD_ATI
+  , pattern GL_BIAS_BIT_ATI
+  , pattern GL_BLUE_BIT_ATI
+  , pattern GL_CND0_ATI
+  , pattern GL_CND_ATI
+  , pattern GL_COLOR_ALPHA_PAIRING_ATI
+  , pattern GL_COMP_BIT_ATI
+  , pattern GL_CON_0_ATI
+  , pattern GL_CON_10_ATI
+  , pattern GL_CON_11_ATI
+  , pattern GL_CON_12_ATI
+  , pattern GL_CON_13_ATI
+  , pattern GL_CON_14_ATI
+  , pattern GL_CON_15_ATI
+  , pattern GL_CON_16_ATI
+  , pattern GL_CON_17_ATI
+  , pattern GL_CON_18_ATI
+  , pattern GL_CON_19_ATI
+  , pattern GL_CON_1_ATI
+  , pattern GL_CON_20_ATI
+  , pattern GL_CON_21_ATI
+  , pattern GL_CON_22_ATI
+  , pattern GL_CON_23_ATI
+  , pattern GL_CON_24_ATI
+  , pattern GL_CON_25_ATI
+  , pattern GL_CON_26_ATI
+  , pattern GL_CON_27_ATI
+  , pattern GL_CON_28_ATI
+  , pattern GL_CON_29_ATI
+  , pattern GL_CON_2_ATI
+  , pattern GL_CON_30_ATI
+  , pattern GL_CON_31_ATI
+  , pattern GL_CON_3_ATI
+  , pattern GL_CON_4_ATI
+  , pattern GL_CON_5_ATI
+  , pattern GL_CON_6_ATI
+  , pattern GL_CON_7_ATI
+  , pattern GL_CON_8_ATI
+  , pattern GL_CON_9_ATI
+  , pattern GL_DOT2_ADD_ATI
+  , pattern GL_DOT3_ATI
+  , pattern GL_DOT4_ATI
+  , pattern GL_EIGHTH_BIT_ATI
+  , pattern GL_FRAGMENT_SHADER_ATI
+  , pattern GL_GREEN_BIT_ATI
+  , pattern GL_HALF_BIT_ATI
+  , pattern GL_LERP_ATI
+  , pattern GL_MAD_ATI
+  , pattern GL_MOV_ATI
+  , pattern GL_MUL_ATI
+  , pattern GL_NEGATE_BIT_ATI
+  , pattern GL_NUM_FRAGMENT_CONSTANTS_ATI
+  , pattern GL_NUM_FRAGMENT_REGISTERS_ATI
+  , pattern GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
+  , pattern GL_NUM_INSTRUCTIONS_PER_PASS_ATI
+  , pattern GL_NUM_INSTRUCTIONS_TOTAL_ATI
+  , pattern GL_NUM_LOOPBACK_COMPONENTS_ATI
+  , pattern GL_NUM_PASSES_ATI
+  , pattern GL_QUARTER_BIT_ATI
+  , pattern GL_RED_BIT_ATI
+  , pattern GL_REG_0_ATI
+  , pattern GL_REG_10_ATI
+  , pattern GL_REG_11_ATI
+  , pattern GL_REG_12_ATI
+  , pattern GL_REG_13_ATI
+  , pattern GL_REG_14_ATI
+  , pattern GL_REG_15_ATI
+  , pattern GL_REG_16_ATI
+  , pattern GL_REG_17_ATI
+  , pattern GL_REG_18_ATI
+  , pattern GL_REG_19_ATI
+  , pattern GL_REG_1_ATI
+  , pattern GL_REG_20_ATI
+  , pattern GL_REG_21_ATI
+  , pattern GL_REG_22_ATI
+  , pattern GL_REG_23_ATI
+  , pattern GL_REG_24_ATI
+  , pattern GL_REG_25_ATI
+  , pattern GL_REG_26_ATI
+  , pattern GL_REG_27_ATI
+  , pattern GL_REG_28_ATI
+  , pattern GL_REG_29_ATI
+  , pattern GL_REG_2_ATI
+  , pattern GL_REG_30_ATI
+  , pattern GL_REG_31_ATI
+  , pattern GL_REG_3_ATI
+  , pattern GL_REG_4_ATI
+  , pattern GL_REG_5_ATI
+  , pattern GL_REG_6_ATI
+  , pattern GL_REG_7_ATI
+  , pattern GL_REG_8_ATI
+  , pattern GL_REG_9_ATI
+  , pattern GL_SATURATE_BIT_ATI
+  , pattern GL_SECONDARY_INTERPOLATOR_ATI
+  , pattern GL_SUB_ATI
+  , pattern GL_SWIZZLE_STQ_ATI
+  , pattern GL_SWIZZLE_STQ_DQ_ATI
+  , pattern GL_SWIZZLE_STRQ_ATI
+  , pattern GL_SWIZZLE_STRQ_DQ_ATI
+  , pattern GL_SWIZZLE_STR_ATI
+  , pattern GL_SWIZZLE_STR_DR_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_fragment_shader :: Bool
+gl_ATI_fragment_shader = member "GL_ATI_fragment_shader" extensions
+
+glAlphaFragmentOp1ATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glAlphaFragmentOp1ATI = ffienumuintuintuintuintuintIOV glAlphaFragmentOp1ATIFunPtr
+
+glAlphaFragmentOp1ATIFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glAlphaFragmentOp1ATIFunPtr = unsafePerformIO (getProcAddress "glAlphaFragmentOp1ATI")
+
+{-# NOINLINE glAlphaFragmentOp1ATIFunPtr #-}
+
+glAlphaFragmentOp2ATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glAlphaFragmentOp2ATI = ffienumuintuintuintuintuintuintuintuintIOV glAlphaFragmentOp2ATIFunPtr
+
+glAlphaFragmentOp2ATIFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glAlphaFragmentOp2ATIFunPtr = unsafePerformIO (getProcAddress "glAlphaFragmentOp2ATI")
+
+{-# NOINLINE glAlphaFragmentOp2ATIFunPtr #-}
+
+glAlphaFragmentOp3ATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glAlphaFragmentOp3ATI = ffienumuintuintuintuintuintuintuintuintuintuintuintIOV glAlphaFragmentOp3ATIFunPtr
+
+glAlphaFragmentOp3ATIFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glAlphaFragmentOp3ATIFunPtr = unsafePerformIO (getProcAddress "glAlphaFragmentOp3ATI")
+
+{-# NOINLINE glAlphaFragmentOp3ATIFunPtr #-}
+
+glBeginFragmentShaderATI :: MonadIO m => m ()
+glBeginFragmentShaderATI = ffiIOV glBeginFragmentShaderATIFunPtr
+
+glBeginFragmentShaderATIFunPtr :: FunPtr (IO ())
+glBeginFragmentShaderATIFunPtr = unsafePerformIO (getProcAddress "glBeginFragmentShaderATI")
+
+{-# NOINLINE glBeginFragmentShaderATIFunPtr #-}
+
+glBindFragmentShaderATI :: MonadIO m => GLuint -> m ()
+glBindFragmentShaderATI = ffiuintIOV glBindFragmentShaderATIFunPtr
+
+glBindFragmentShaderATIFunPtr :: FunPtr (GLuint -> IO ())
+glBindFragmentShaderATIFunPtr = unsafePerformIO (getProcAddress "glBindFragmentShaderATI")
+
+{-# NOINLINE glBindFragmentShaderATIFunPtr #-}
+
+glColorFragmentOp1ATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glColorFragmentOp1ATI = ffienumuintuintuintuintuintuintIOV glColorFragmentOp1ATIFunPtr
+
+glColorFragmentOp1ATIFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glColorFragmentOp1ATIFunPtr = unsafePerformIO (getProcAddress "glColorFragmentOp1ATI")
+
+{-# NOINLINE glColorFragmentOp1ATIFunPtr #-}
+
+glColorFragmentOp2ATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glColorFragmentOp2ATI = ffienumuintuintuintuintuintuintuintuintuintIOV glColorFragmentOp2ATIFunPtr
+
+glColorFragmentOp2ATIFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glColorFragmentOp2ATIFunPtr = unsafePerformIO (getProcAddress "glColorFragmentOp2ATI")
+
+{-# NOINLINE glColorFragmentOp2ATIFunPtr #-}
+
+glColorFragmentOp3ATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glColorFragmentOp3ATI = ffienumuintuintuintuintuintuintuintuintuintuintuintuintIOV glColorFragmentOp3ATIFunPtr
+
+glColorFragmentOp3ATIFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glColorFragmentOp3ATIFunPtr = unsafePerformIO (getProcAddress "glColorFragmentOp3ATI")
+
+{-# NOINLINE glColorFragmentOp3ATIFunPtr #-}
+
+glDeleteFragmentShaderATI :: MonadIO m => GLuint -> m ()
+glDeleteFragmentShaderATI = ffiuintIOV glDeleteFragmentShaderATIFunPtr
+
+glDeleteFragmentShaderATIFunPtr :: FunPtr (GLuint -> IO ())
+glDeleteFragmentShaderATIFunPtr = unsafePerformIO (getProcAddress "glDeleteFragmentShaderATI")
+
+{-# NOINLINE glDeleteFragmentShaderATIFunPtr #-}
+
+glEndFragmentShaderATI :: MonadIO m => m ()
+glEndFragmentShaderATI = ffiIOV glEndFragmentShaderATIFunPtr
+
+glEndFragmentShaderATIFunPtr :: FunPtr (IO ())
+glEndFragmentShaderATIFunPtr = unsafePerformIO (getProcAddress "glEndFragmentShaderATI")
+
+{-# NOINLINE glEndFragmentShaderATIFunPtr #-}
+
+glGenFragmentShadersATI :: MonadIO m => GLuint -> m GLuint
+glGenFragmentShadersATI = ffiuintIOuint glGenFragmentShadersATIFunPtr
+
+glGenFragmentShadersATIFunPtr :: FunPtr (GLuint -> IO GLuint)
+glGenFragmentShadersATIFunPtr = unsafePerformIO (getProcAddress "glGenFragmentShadersATI")
+
+{-# NOINLINE glGenFragmentShadersATIFunPtr #-}
+
+glPassTexCoordATI :: MonadIO m => GLuint -> GLuint -> GLenum -> m ()
+glPassTexCoordATI = ffiuintuintenumIOV glPassTexCoordATIFunPtr
+
+glPassTexCoordATIFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> IO ())
+glPassTexCoordATIFunPtr = unsafePerformIO (getProcAddress "glPassTexCoordATI")
+
+{-# NOINLINE glPassTexCoordATIFunPtr #-}
+
+glSampleMapATI :: MonadIO m => GLuint -> GLuint -> GLenum -> m ()
+glSampleMapATI = ffiuintuintenumIOV glSampleMapATIFunPtr
+
+glSampleMapATIFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> IO ())
+glSampleMapATIFunPtr = unsafePerformIO (getProcAddress "glSampleMapATI")
+
+{-# NOINLINE glSampleMapATIFunPtr #-}
+
+glSetFragmentShaderConstantATI :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glSetFragmentShaderConstantATI = ffiuintPtrfloatIOV glSetFragmentShaderConstantATIFunPtr
+
+glSetFragmentShaderConstantATIFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glSetFragmentShaderConstantATIFunPtr = unsafePerformIO (getProcAddress "glSetFragmentShaderConstantATI")
+
+{-# NOINLINE glSetFragmentShaderConstantATIFunPtr #-}
+
+pattern GL_2X_BIT_ATI = 0x00000001 :: GLenum
+
+pattern GL_4X_BIT_ATI = 0x00000002 :: GLenum
+
+pattern GL_8X_BIT_ATI = 0x00000004 :: GLenum
+
+pattern GL_ADD_ATI = 0x8963 :: GLenum
+
+pattern GL_BIAS_BIT_ATI = 0x00000008 :: GLenum
+
+pattern GL_BLUE_BIT_ATI = 0x00000004 :: GLenum
+
+pattern GL_CND0_ATI = 0x896B :: GLenum
+
+pattern GL_CND_ATI = 0x896A :: GLenum
+
+pattern GL_COLOR_ALPHA_PAIRING_ATI = 0x8975 :: GLenum
+
+pattern GL_COMP_BIT_ATI = 0x00000002 :: GLenum
+
+pattern GL_CON_0_ATI = 0x8941 :: GLenum
+
+pattern GL_CON_10_ATI = 0x894B :: GLenum
+
+pattern GL_CON_11_ATI = 0x894C :: GLenum
+
+pattern GL_CON_12_ATI = 0x894D :: GLenum
+
+pattern GL_CON_13_ATI = 0x894E :: GLenum
+
+pattern GL_CON_14_ATI = 0x894F :: GLenum
+
+pattern GL_CON_15_ATI = 0x8950 :: GLenum
+
+pattern GL_CON_16_ATI = 0x8951 :: GLenum
+
+pattern GL_CON_17_ATI = 0x8952 :: GLenum
+
+pattern GL_CON_18_ATI = 0x8953 :: GLenum
+
+pattern GL_CON_19_ATI = 0x8954 :: GLenum
+
+pattern GL_CON_1_ATI = 0x8942 :: GLenum
+
+pattern GL_CON_20_ATI = 0x8955 :: GLenum
+
+pattern GL_CON_21_ATI = 0x8956 :: GLenum
+
+pattern GL_CON_22_ATI = 0x8957 :: GLenum
+
+pattern GL_CON_23_ATI = 0x8958 :: GLenum
+
+pattern GL_CON_24_ATI = 0x8959 :: GLenum
+
+pattern GL_CON_25_ATI = 0x895A :: GLenum
+
+pattern GL_CON_26_ATI = 0x895B :: GLenum
+
+pattern GL_CON_27_ATI = 0x895C :: GLenum
+
+pattern GL_CON_28_ATI = 0x895D :: GLenum
+
+pattern GL_CON_29_ATI = 0x895E :: GLenum
+
+pattern GL_CON_2_ATI = 0x8943 :: GLenum
+
+pattern GL_CON_30_ATI = 0x895F :: GLenum
+
+pattern GL_CON_31_ATI = 0x8960 :: GLenum
+
+pattern GL_CON_3_ATI = 0x8944 :: GLenum
+
+pattern GL_CON_4_ATI = 0x8945 :: GLenum
+
+pattern GL_CON_5_ATI = 0x8946 :: GLenum
+
+pattern GL_CON_6_ATI = 0x8947 :: GLenum
+
+pattern GL_CON_7_ATI = 0x8948 :: GLenum
+
+pattern GL_CON_8_ATI = 0x8949 :: GLenum
+
+pattern GL_CON_9_ATI = 0x894A :: GLenum
+
+pattern GL_DOT2_ADD_ATI = 0x896C :: GLenum
+
+pattern GL_DOT3_ATI = 0x8966 :: GLenum
+
+pattern GL_DOT4_ATI = 0x8967 :: GLenum
+
+pattern GL_EIGHTH_BIT_ATI = 0x00000020 :: GLenum
+
+pattern GL_FRAGMENT_SHADER_ATI = 0x8920 :: GLenum
+
+pattern GL_GREEN_BIT_ATI = 0x00000002 :: GLenum
+
+pattern GL_HALF_BIT_ATI = 0x00000008 :: GLenum
+
+pattern GL_LERP_ATI = 0x8969 :: GLenum
+
+pattern GL_MAD_ATI = 0x8968 :: GLenum
+
+pattern GL_MOV_ATI = 0x8961 :: GLenum
+
+pattern GL_MUL_ATI = 0x8964 :: GLenum
+
+pattern GL_NEGATE_BIT_ATI = 0x00000004 :: GLenum
+
+pattern GL_NUM_FRAGMENT_CONSTANTS_ATI = 0x896F :: GLenum
+
+pattern GL_NUM_FRAGMENT_REGISTERS_ATI = 0x896E :: GLenum
+
+pattern GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = 0x8973 :: GLenum
+
+pattern GL_NUM_INSTRUCTIONS_PER_PASS_ATI = 0x8971 :: GLenum
+
+pattern GL_NUM_INSTRUCTIONS_TOTAL_ATI = 0x8972 :: GLenum
+
+pattern GL_NUM_LOOPBACK_COMPONENTS_ATI = 0x8974 :: GLenum
+
+pattern GL_NUM_PASSES_ATI = 0x8970 :: GLenum
+
+pattern GL_QUARTER_BIT_ATI = 0x00000010 :: GLenum
+
+pattern GL_RED_BIT_ATI = 0x00000001 :: GLenum
+
+pattern GL_REG_0_ATI = 0x8921 :: GLenum
+
+pattern GL_REG_10_ATI = 0x892B :: GLenum
+
+pattern GL_REG_11_ATI = 0x892C :: GLenum
+
+pattern GL_REG_12_ATI = 0x892D :: GLenum
+
+pattern GL_REG_13_ATI = 0x892E :: GLenum
+
+pattern GL_REG_14_ATI = 0x892F :: GLenum
+
+pattern GL_REG_15_ATI = 0x8930 :: GLenum
+
+pattern GL_REG_16_ATI = 0x8931 :: GLenum
+
+pattern GL_REG_17_ATI = 0x8932 :: GLenum
+
+pattern GL_REG_18_ATI = 0x8933 :: GLenum
+
+pattern GL_REG_19_ATI = 0x8934 :: GLenum
+
+pattern GL_REG_1_ATI = 0x8922 :: GLenum
+
+pattern GL_REG_20_ATI = 0x8935 :: GLenum
+
+pattern GL_REG_21_ATI = 0x8936 :: GLenum
+
+pattern GL_REG_22_ATI = 0x8937 :: GLenum
+
+pattern GL_REG_23_ATI = 0x8938 :: GLenum
+
+pattern GL_REG_24_ATI = 0x8939 :: GLenum
+
+pattern GL_REG_25_ATI = 0x893A :: GLenum
+
+pattern GL_REG_26_ATI = 0x893B :: GLenum
+
+pattern GL_REG_27_ATI = 0x893C :: GLenum
+
+pattern GL_REG_28_ATI = 0x893D :: GLenum
+
+pattern GL_REG_29_ATI = 0x893E :: GLenum
+
+pattern GL_REG_2_ATI = 0x8923 :: GLenum
+
+pattern GL_REG_30_ATI = 0x893F :: GLenum
+
+pattern GL_REG_31_ATI = 0x8940 :: GLenum
+
+pattern GL_REG_3_ATI = 0x8924 :: GLenum
+
+pattern GL_REG_4_ATI = 0x8925 :: GLenum
+
+pattern GL_REG_5_ATI = 0x8926 :: GLenum
+
+pattern GL_REG_6_ATI = 0x8927 :: GLenum
+
+pattern GL_REG_7_ATI = 0x8928 :: GLenum
+
+pattern GL_REG_8_ATI = 0x8929 :: GLenum
+
+pattern GL_REG_9_ATI = 0x892A :: GLenum
+
+pattern GL_SATURATE_BIT_ATI = 0x00000040 :: GLenum
+
+pattern GL_SECONDARY_INTERPOLATOR_ATI = 0x896D :: GLenum
+
+pattern GL_SUB_ATI = 0x8965 :: GLenum
+
+pattern GL_SWIZZLE_STQ_ATI = 0x8977 :: GLenum
+
+pattern GL_SWIZZLE_STQ_DQ_ATI = 0x8979 :: GLenum
+
+pattern GL_SWIZZLE_STRQ_ATI = 0x897A :: GLenum
+
+pattern GL_SWIZZLE_STRQ_DQ_ATI = 0x897B :: GLenum
+
+pattern GL_SWIZZLE_STR_ATI = 0x8976 :: GLenum
+
+pattern GL_SWIZZLE_STR_DR_ATI = 0x8978 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/MapObjectBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/MapObjectBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/MapObjectBuffer.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.MapObjectBuffer (
+  -- * Extension Support
+    gl_ATI_map_object_buffer
+
+  -- * GL_ATI_map_object_buffer
+  , glMapObjectBufferATI
+  , glUnmapObjectBufferATI
+) 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_map_object_buffer :: Bool
+gl_ATI_map_object_buffer = member "GL_ATI_map_object_buffer" extensions
+
+glMapObjectBufferATI :: MonadIO m => GLuint -> m (Ptr ())
+glMapObjectBufferATI = ffiuintIOPtrV glMapObjectBufferATIFunPtr
+
+glMapObjectBufferATIFunPtr :: FunPtr (GLuint -> IO (Ptr ()))
+glMapObjectBufferATIFunPtr = unsafePerformIO (getProcAddress "glMapObjectBufferATI")
+
+{-# NOINLINE glMapObjectBufferATIFunPtr #-}
+
+glUnmapObjectBufferATI :: MonadIO m => GLuint -> m ()
+glUnmapObjectBufferATI = ffiuintIOV glUnmapObjectBufferATIFunPtr
+
+glUnmapObjectBufferATIFunPtr :: FunPtr (GLuint -> IO ())
+glUnmapObjectBufferATIFunPtr = unsafePerformIO (getProcAddress "glUnmapObjectBufferATI")
+
+{-# NOINLINE glUnmapObjectBufferATIFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/Meminfo.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/Meminfo.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/Meminfo.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.Meminfo (
+  -- * Extension Support
+    gl_ATI_meminfo
+
+  -- * GL_ATI_meminfo
+  , pattern GL_RENDERBUFFER_FREE_MEMORY_ATI
+  , pattern GL_TEXTURE_FREE_MEMORY_ATI
+  , pattern GL_VBO_FREE_MEMORY_ATI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ATI_meminfo :: Bool
+gl_ATI_meminfo = member "GL_ATI_meminfo" extensions
+
+pattern GL_RENDERBUFFER_FREE_MEMORY_ATI = 0x87FD :: GLenum
+
+pattern GL_TEXTURE_FREE_MEMORY_ATI = 0x87FC :: GLenum
+
+pattern GL_VBO_FREE_MEMORY_ATI = 0x87FB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/PixelFormatFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/PixelFormatFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/PixelFormatFloat.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.PixelFormatFloat (
+  -- * Extension Support
+    gl_ATI_pixel_format_float
+
+  -- * GL_ATI_pixel_format_float
+  , pattern GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI
+  , pattern GL_RGBA_FLOAT_MODE_ATI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ATI_pixel_format_float :: Bool
+gl_ATI_pixel_format_float = member "GL_ATI_pixel_format_float" extensions
+
+pattern GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = 0x8835 :: GLenum
+
+pattern GL_RGBA_FLOAT_MODE_ATI = 0x8820 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/PnTriangles.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/PnTriangles.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/PnTriangles.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.PnTriangles (
+  -- * Extension Support
+    gl_ATI_pn_triangles
+
+  -- * GL_ATI_pn_triangles
+  , glPNTrianglesfATI
+  , glPNTrianglesiATI
+  , pattern GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI
+  , pattern GL_PN_TRIANGLES_ATI
+  , pattern GL_PN_TRIANGLES_NORMAL_MODE_ATI
+  , pattern GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI
+  , pattern GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI
+  , pattern GL_PN_TRIANGLES_POINT_MODE_ATI
+  , pattern GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI
+  , pattern GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI
+  , pattern GL_PN_TRIANGLES_TESSELATION_LEVEL_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_pn_triangles :: Bool
+gl_ATI_pn_triangles = member "GL_ATI_pn_triangles" extensions
+
+glPNTrianglesfATI :: MonadIO m => GLenum -> GLfloat -> m ()
+glPNTrianglesfATI = ffienumfloatIOV glPNTrianglesfATIFunPtr
+
+glPNTrianglesfATIFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glPNTrianglesfATIFunPtr = unsafePerformIO (getProcAddress "glPNTrianglesfATI")
+
+{-# NOINLINE glPNTrianglesfATIFunPtr #-}
+
+glPNTrianglesiATI :: MonadIO m => GLenum -> GLint -> m ()
+glPNTrianglesiATI = ffienumintIOV glPNTrianglesiATIFunPtr
+
+glPNTrianglesiATIFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glPNTrianglesiATIFunPtr = unsafePerformIO (getProcAddress "glPNTrianglesiATI")
+
+{-# NOINLINE glPNTrianglesiATIFunPtr #-}
+
+pattern GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F1 :: GLenum
+
+pattern GL_PN_TRIANGLES_ATI = 0x87F0 :: GLenum
+
+pattern GL_PN_TRIANGLES_NORMAL_MODE_ATI = 0x87F3 :: GLenum
+
+pattern GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = 0x87F7 :: GLenum
+
+pattern GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = 0x87F8 :: GLenum
+
+pattern GL_PN_TRIANGLES_POINT_MODE_ATI = 0x87F2 :: GLenum
+
+pattern GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = 0x87F6 :: GLenum
+
+pattern GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = 0x87F5 :: GLenum
+
+pattern GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/SeparateStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/SeparateStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/SeparateStencil.hs
@@ -0,0 +1,49 @@
+-- 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
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextFragmentShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextFragmentShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextFragmentShader.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.TextFragmentShader (
+  -- * Extension Support
+    gl_ATI_text_fragment_shader
+
+  -- * GL_ATI_text_fragment_shader
+  , pattern GL_TEXT_FRAGMENT_SHADER_ATI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ATI_text_fragment_shader :: Bool
+gl_ATI_text_fragment_shader = member "GL_ATI_text_fragment_shader" extensions
+
+pattern GL_TEXT_FRAGMENT_SHADER_ATI = 0x8200 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureEnvCombine3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureEnvCombine3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureEnvCombine3.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.TextureEnvCombine3 (
+  -- * Extension Support
+    gl_ATI_texture_env_combine3
+
+  -- * GL_ATI_texture_env_combine3
+  , pattern GL_MODULATE_ADD_ATI
+  , pattern GL_MODULATE_SIGNED_ADD_ATI
+  , pattern GL_MODULATE_SUBTRACT_ATI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ATI_texture_env_combine3 :: Bool
+gl_ATI_texture_env_combine3 = member "GL_ATI_texture_env_combine3" extensions
+
+pattern GL_MODULATE_ADD_ATI = 0x8744 :: GLenum
+
+pattern GL_MODULATE_SIGNED_ADD_ATI = 0x8745 :: GLenum
+
+pattern GL_MODULATE_SUBTRACT_ATI = 0x8746 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureFloat.hs
@@ -0,0 +1,51 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.TextureFloat (
+  -- * Extension Support
+    gl_ATI_texture_float
+
+  -- * GL_ATI_texture_float
+  , pattern GL_ALPHA_FLOAT16_ATI
+  , pattern GL_ALPHA_FLOAT32_ATI
+  , pattern GL_INTENSITY_FLOAT16_ATI
+  , pattern GL_INTENSITY_FLOAT32_ATI
+  , pattern GL_LUMINANCE_ALPHA_FLOAT16_ATI
+  , pattern GL_LUMINANCE_ALPHA_FLOAT32_ATI
+  , pattern GL_LUMINANCE_FLOAT16_ATI
+  , pattern GL_LUMINANCE_FLOAT32_ATI
+  , pattern GL_RGBA_FLOAT16_ATI
+  , pattern GL_RGBA_FLOAT32_ATI
+  , pattern GL_RGB_FLOAT16_ATI
+  , pattern GL_RGB_FLOAT32_ATI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ATI_texture_float :: Bool
+gl_ATI_texture_float = member "GL_ATI_texture_float" extensions
+
+pattern GL_ALPHA_FLOAT16_ATI = 0x881C :: GLenum
+
+pattern GL_ALPHA_FLOAT32_ATI = 0x8816 :: GLenum
+
+pattern GL_INTENSITY_FLOAT16_ATI = 0x881D :: GLenum
+
+pattern GL_INTENSITY_FLOAT32_ATI = 0x8817 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA_FLOAT16_ATI = 0x881F :: GLenum
+
+pattern GL_LUMINANCE_ALPHA_FLOAT32_ATI = 0x8819 :: GLenum
+
+pattern GL_LUMINANCE_FLOAT16_ATI = 0x881E :: GLenum
+
+pattern GL_LUMINANCE_FLOAT32_ATI = 0x8818 :: GLenum
+
+pattern GL_RGBA_FLOAT16_ATI = 0x881A :: GLenum
+
+pattern GL_RGBA_FLOAT32_ATI = 0x8814 :: GLenum
+
+pattern GL_RGB_FLOAT16_ATI = 0x881B :: GLenum
+
+pattern GL_RGB_FLOAT32_ATI = 0x8815 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureMirrorOnce.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureMirrorOnce.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/TextureMirrorOnce.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.TextureMirrorOnce (
+  -- * Extension Support
+    gl_ATI_texture_mirror_once
+
+  -- * GL_ATI_texture_mirror_once
+  , pattern GL_MIRROR_CLAMP_ATI
+  , pattern GL_MIRROR_CLAMP_TO_EDGE_ATI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_ATI_texture_mirror_once :: Bool
+gl_ATI_texture_mirror_once = member "GL_ATI_texture_mirror_once" extensions
+
+pattern GL_MIRROR_CLAMP_ATI = 0x8742 :: GLenum
+
+pattern GL_MIRROR_CLAMP_TO_EDGE_ATI = 0x8743 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexArrayObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexArrayObject.hs
@@ -0,0 +1,151 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.VertexArrayObject (
+  -- * Extension Support
+    gl_ATI_vertex_array_object
+
+  -- * GL_ATI_vertex_array_object
+  , glArrayObjectATI
+  , glFreeObjectBufferATI
+  , glGetArrayObjectfvATI
+  , glGetArrayObjectivATI
+  , glGetObjectBufferfvATI
+  , glGetObjectBufferivATI
+  , glGetVariantArrayObjectfvATI
+  , glGetVariantArrayObjectivATI
+  , glIsObjectBufferATI
+  , glNewObjectBufferATI
+  , glUpdateObjectBufferATI
+  , glVariantArrayObjectATI
+  , pattern GL_ARRAY_OBJECT_BUFFER_ATI
+  , pattern GL_ARRAY_OBJECT_OFFSET_ATI
+  , pattern GL_DISCARD_ATI
+  , pattern GL_DYNAMIC_ATI
+  , pattern GL_OBJECT_BUFFER_SIZE_ATI
+  , pattern GL_OBJECT_BUFFER_USAGE_ATI
+  , pattern GL_PRESERVE_ATI
+  , pattern GL_STATIC_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_vertex_array_object :: Bool
+gl_ATI_vertex_array_object = member "GL_ATI_vertex_array_object" extensions
+
+glArrayObjectATI :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLuint -> GLuint -> m ()
+glArrayObjectATI = ffienumintenumsizeiuintuintIOV glArrayObjectATIFunPtr
+
+glArrayObjectATIFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ())
+glArrayObjectATIFunPtr = unsafePerformIO (getProcAddress "glArrayObjectATI")
+
+{-# NOINLINE glArrayObjectATIFunPtr #-}
+
+glFreeObjectBufferATI :: MonadIO m => GLuint -> m ()
+glFreeObjectBufferATI = ffiuintIOV glFreeObjectBufferATIFunPtr
+
+glFreeObjectBufferATIFunPtr :: FunPtr (GLuint -> IO ())
+glFreeObjectBufferATIFunPtr = unsafePerformIO (getProcAddress "glFreeObjectBufferATI")
+
+{-# NOINLINE glFreeObjectBufferATIFunPtr #-}
+
+glGetArrayObjectfvATI :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetArrayObjectfvATI = ffienumenumPtrfloatIOV glGetArrayObjectfvATIFunPtr
+
+glGetArrayObjectfvATIFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetArrayObjectfvATIFunPtr = unsafePerformIO (getProcAddress "glGetArrayObjectfvATI")
+
+{-# NOINLINE glGetArrayObjectfvATIFunPtr #-}
+
+glGetArrayObjectivATI :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetArrayObjectivATI = ffienumenumPtrintIOV glGetArrayObjectivATIFunPtr
+
+glGetArrayObjectivATIFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetArrayObjectivATIFunPtr = unsafePerformIO (getProcAddress "glGetArrayObjectivATI")
+
+{-# NOINLINE glGetArrayObjectivATIFunPtr #-}
+
+glGetObjectBufferfvATI :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetObjectBufferfvATI = ffiuintenumPtrfloatIOV glGetObjectBufferfvATIFunPtr
+
+glGetObjectBufferfvATIFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetObjectBufferfvATIFunPtr = unsafePerformIO (getProcAddress "glGetObjectBufferfvATI")
+
+{-# NOINLINE glGetObjectBufferfvATIFunPtr #-}
+
+glGetObjectBufferivATI :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetObjectBufferivATI = ffiuintenumPtrintIOV glGetObjectBufferivATIFunPtr
+
+glGetObjectBufferivATIFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetObjectBufferivATIFunPtr = unsafePerformIO (getProcAddress "glGetObjectBufferivATI")
+
+{-# NOINLINE glGetObjectBufferivATIFunPtr #-}
+
+glGetVariantArrayObjectfvATI :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetVariantArrayObjectfvATI = ffiuintenumPtrfloatIOV glGetVariantArrayObjectfvATIFunPtr
+
+glGetVariantArrayObjectfvATIFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetVariantArrayObjectfvATIFunPtr = unsafePerformIO (getProcAddress "glGetVariantArrayObjectfvATI")
+
+{-# NOINLINE glGetVariantArrayObjectfvATIFunPtr #-}
+
+glGetVariantArrayObjectivATI :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVariantArrayObjectivATI = ffiuintenumPtrintIOV glGetVariantArrayObjectivATIFunPtr
+
+glGetVariantArrayObjectivATIFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVariantArrayObjectivATIFunPtr = unsafePerformIO (getProcAddress "glGetVariantArrayObjectivATI")
+
+{-# NOINLINE glGetVariantArrayObjectivATIFunPtr #-}
+
+glIsObjectBufferATI :: MonadIO m => GLuint -> m GLboolean
+glIsObjectBufferATI = ffiuintIOboolean glIsObjectBufferATIFunPtr
+
+glIsObjectBufferATIFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsObjectBufferATIFunPtr = unsafePerformIO (getProcAddress "glIsObjectBufferATI")
+
+{-# NOINLINE glIsObjectBufferATIFunPtr #-}
+
+glNewObjectBufferATI :: MonadIO m => GLsizei -> Ptr () -> GLenum -> m GLuint
+glNewObjectBufferATI = ffisizeiPtrVenumIOuint glNewObjectBufferATIFunPtr
+
+glNewObjectBufferATIFunPtr :: FunPtr (GLsizei -> Ptr () -> GLenum -> IO GLuint)
+glNewObjectBufferATIFunPtr = unsafePerformIO (getProcAddress "glNewObjectBufferATI")
+
+{-# NOINLINE glNewObjectBufferATIFunPtr #-}
+
+glUpdateObjectBufferATI :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr () -> GLenum -> m ()
+glUpdateObjectBufferATI = ffiuintuintsizeiPtrVenumIOV glUpdateObjectBufferATIFunPtr
+
+glUpdateObjectBufferATIFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr () -> GLenum -> IO ())
+glUpdateObjectBufferATIFunPtr = unsafePerformIO (getProcAddress "glUpdateObjectBufferATI")
+
+{-# NOINLINE glUpdateObjectBufferATIFunPtr #-}
+
+glVariantArrayObjectATI :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLuint -> GLuint -> m ()
+glVariantArrayObjectATI = ffiuintenumsizeiuintuintIOV glVariantArrayObjectATIFunPtr
+
+glVariantArrayObjectATIFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ())
+glVariantArrayObjectATIFunPtr = unsafePerformIO (getProcAddress "glVariantArrayObjectATI")
+
+{-# NOINLINE glVariantArrayObjectATIFunPtr #-}
+
+pattern GL_ARRAY_OBJECT_BUFFER_ATI = 0x8766 :: GLenum
+
+pattern GL_ARRAY_OBJECT_OFFSET_ATI = 0x8767 :: GLenum
+
+pattern GL_DISCARD_ATI = 0x8763 :: GLenum
+
+pattern GL_DYNAMIC_ATI = 0x8761 :: GLenum
+
+pattern GL_OBJECT_BUFFER_SIZE_ATI = 0x8764 :: GLenum
+
+pattern GL_OBJECT_BUFFER_USAGE_ATI = 0x8765 :: GLenum
+
+pattern GL_PRESERVE_ATI = 0x8762 :: GLenum
+
+pattern GL_STATIC_ATI = 0x8760 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexAttribArrayObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexAttribArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexAttribArrayObject.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.VertexAttribArrayObject (
+  -- * Extension Support
+    gl_ATI_vertex_attrib_array_object
+
+  -- * GL_ATI_vertex_attrib_array_object
+  , glGetVertexAttribArrayObjectfvATI
+  , glGetVertexAttribArrayObjectivATI
+  , glVertexAttribArrayObjectATI
+) 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_vertex_attrib_array_object :: Bool
+gl_ATI_vertex_attrib_array_object = member "GL_ATI_vertex_attrib_array_object" extensions
+
+glGetVertexAttribArrayObjectfvATI :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetVertexAttribArrayObjectfvATI = ffiuintenumPtrfloatIOV glGetVertexAttribArrayObjectfvATIFunPtr
+
+glGetVertexAttribArrayObjectfvATIFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetVertexAttribArrayObjectfvATIFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribArrayObjectfvATI")
+
+{-# NOINLINE glGetVertexAttribArrayObjectfvATIFunPtr #-}
+
+glGetVertexAttribArrayObjectivATI :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVertexAttribArrayObjectivATI = ffiuintenumPtrintIOV glGetVertexAttribArrayObjectivATIFunPtr
+
+glGetVertexAttribArrayObjectivATIFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVertexAttribArrayObjectivATIFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribArrayObjectivATI")
+
+{-# NOINLINE glGetVertexAttribArrayObjectivATIFunPtr #-}
+
+glVertexAttribArrayObjectATI :: MonadIO m => GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLuint -> GLuint -> m ()
+glVertexAttribArrayObjectATI = ffiuintintenumbooleansizeiuintuintIOV glVertexAttribArrayObjectATIFunPtr
+
+glVertexAttribArrayObjectATIFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLuint -> GLuint -> IO ())
+glVertexAttribArrayObjectATIFunPtr = unsafePerformIO (getProcAddress "glVertexAttribArrayObjectATI")
+
+{-# NOINLINE glVertexAttribArrayObjectATIFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexStreams.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexStreams.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ATI/VertexStreams.hs
@@ -0,0 +1,454 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ATI.VertexStreams (
+  -- * Extension Support
+    gl_ATI_vertex_streams
+
+  -- * GL_ATI_vertex_streams
+  , glClientActiveVertexStreamATI
+  , glNormalStream3bATI
+  , glNormalStream3bvATI
+  , glNormalStream3dATI
+  , glNormalStream3dvATI
+  , glNormalStream3fATI
+  , glNormalStream3fvATI
+  , glNormalStream3iATI
+  , glNormalStream3ivATI
+  , glNormalStream3sATI
+  , glNormalStream3svATI
+  , glVertexBlendEnvfATI
+  , glVertexBlendEnviATI
+  , glVertexStream1dATI
+  , glVertexStream1dvATI
+  , glVertexStream1fATI
+  , glVertexStream1fvATI
+  , glVertexStream1iATI
+  , glVertexStream1ivATI
+  , glVertexStream1sATI
+  , glVertexStream1svATI
+  , glVertexStream2dATI
+  , glVertexStream2dvATI
+  , glVertexStream2fATI
+  , glVertexStream2fvATI
+  , glVertexStream2iATI
+  , glVertexStream2ivATI
+  , glVertexStream2sATI
+  , glVertexStream2svATI
+  , glVertexStream3dATI
+  , glVertexStream3dvATI
+  , glVertexStream3fATI
+  , glVertexStream3fvATI
+  , glVertexStream3iATI
+  , glVertexStream3ivATI
+  , glVertexStream3sATI
+  , glVertexStream3svATI
+  , glVertexStream4dATI
+  , glVertexStream4dvATI
+  , glVertexStream4fATI
+  , glVertexStream4fvATI
+  , glVertexStream4iATI
+  , glVertexStream4ivATI
+  , glVertexStream4sATI
+  , glVertexStream4svATI
+  , pattern GL_MAX_VERTEX_STREAMS_ATI
+  , pattern GL_VERTEX_SOURCE_ATI
+  , pattern GL_VERTEX_STREAM0_ATI
+  , pattern GL_VERTEX_STREAM1_ATI
+  , pattern GL_VERTEX_STREAM2_ATI
+  , pattern GL_VERTEX_STREAM3_ATI
+  , pattern GL_VERTEX_STREAM4_ATI
+  , pattern GL_VERTEX_STREAM5_ATI
+  , pattern GL_VERTEX_STREAM6_ATI
+  , pattern GL_VERTEX_STREAM7_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_vertex_streams :: Bool
+gl_ATI_vertex_streams = member "GL_ATI_vertex_streams" extensions
+
+glClientActiveVertexStreamATI :: MonadIO m => GLenum -> m ()
+glClientActiveVertexStreamATI = ffienumIOV glClientActiveVertexStreamATIFunPtr
+
+glClientActiveVertexStreamATIFunPtr :: FunPtr (GLenum -> IO ())
+glClientActiveVertexStreamATIFunPtr = unsafePerformIO (getProcAddress "glClientActiveVertexStreamATI")
+
+{-# NOINLINE glClientActiveVertexStreamATIFunPtr #-}
+
+glNormalStream3bATI :: MonadIO m => GLenum -> GLbyte -> GLbyte -> GLbyte -> m ()
+glNormalStream3bATI = ffienumbytebytebyteIOV glNormalStream3bATIFunPtr
+
+glNormalStream3bATIFunPtr :: FunPtr (GLenum -> GLbyte -> GLbyte -> GLbyte -> IO ())
+glNormalStream3bATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3bATI")
+
+{-# NOINLINE glNormalStream3bATIFunPtr #-}
+
+glNormalStream3bvATI :: MonadIO m => GLenum -> Ptr GLbyte -> m ()
+glNormalStream3bvATI = ffienumPtrbyteIOV glNormalStream3bvATIFunPtr
+
+glNormalStream3bvATIFunPtr :: FunPtr (GLenum -> Ptr GLbyte -> IO ())
+glNormalStream3bvATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3bvATI")
+
+{-# NOINLINE glNormalStream3bvATIFunPtr #-}
+
+glNormalStream3dATI :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
+glNormalStream3dATI = ffienumdoubledoubledoubleIOV glNormalStream3dATIFunPtr
+
+glNormalStream3dATIFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glNormalStream3dATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3dATI")
+
+{-# NOINLINE glNormalStream3dATIFunPtr #-}
+
+glNormalStream3dvATI :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glNormalStream3dvATI = ffienumPtrdoubleIOV glNormalStream3dvATIFunPtr
+
+glNormalStream3dvATIFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glNormalStream3dvATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3dvATI")
+
+{-# NOINLINE glNormalStream3dvATIFunPtr #-}
+
+glNormalStream3fATI :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
+glNormalStream3fATI = ffienumfloatfloatfloatIOV glNormalStream3fATIFunPtr
+
+glNormalStream3fATIFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glNormalStream3fATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3fATI")
+
+{-# NOINLINE glNormalStream3fATIFunPtr #-}
+
+glNormalStream3fvATI :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glNormalStream3fvATI = ffienumPtrfloatIOV glNormalStream3fvATIFunPtr
+
+glNormalStream3fvATIFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glNormalStream3fvATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3fvATI")
+
+{-# NOINLINE glNormalStream3fvATIFunPtr #-}
+
+glNormalStream3iATI :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> m ()
+glNormalStream3iATI = ffienumintintintIOV glNormalStream3iATIFunPtr
+
+glNormalStream3iATIFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ())
+glNormalStream3iATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3iATI")
+
+{-# NOINLINE glNormalStream3iATIFunPtr #-}
+
+glNormalStream3ivATI :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glNormalStream3ivATI = ffienumPtrintIOV glNormalStream3ivATIFunPtr
+
+glNormalStream3ivATIFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glNormalStream3ivATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3ivATI")
+
+{-# NOINLINE glNormalStream3ivATIFunPtr #-}
+
+glNormalStream3sATI :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> m ()
+glNormalStream3sATI = ffienumshortshortshortIOV glNormalStream3sATIFunPtr
+
+glNormalStream3sATIFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ())
+glNormalStream3sATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3sATI")
+
+{-# NOINLINE glNormalStream3sATIFunPtr #-}
+
+glNormalStream3svATI :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glNormalStream3svATI = ffienumPtrshortIOV glNormalStream3svATIFunPtr
+
+glNormalStream3svATIFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glNormalStream3svATIFunPtr = unsafePerformIO (getProcAddress "glNormalStream3svATI")
+
+{-# NOINLINE glNormalStream3svATIFunPtr #-}
+
+glVertexBlendEnvfATI :: MonadIO m => GLenum -> GLfloat -> m ()
+glVertexBlendEnvfATI = ffienumfloatIOV glVertexBlendEnvfATIFunPtr
+
+glVertexBlendEnvfATIFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glVertexBlendEnvfATIFunPtr = unsafePerformIO (getProcAddress "glVertexBlendEnvfATI")
+
+{-# NOINLINE glVertexBlendEnvfATIFunPtr #-}
+
+glVertexBlendEnviATI :: MonadIO m => GLenum -> GLint -> m ()
+glVertexBlendEnviATI = ffienumintIOV glVertexBlendEnviATIFunPtr
+
+glVertexBlendEnviATIFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glVertexBlendEnviATIFunPtr = unsafePerformIO (getProcAddress "glVertexBlendEnviATI")
+
+{-# NOINLINE glVertexBlendEnviATIFunPtr #-}
+
+glVertexStream1dATI :: MonadIO m => GLenum -> GLdouble -> m ()
+glVertexStream1dATI = ffienumdoubleIOV glVertexStream1dATIFunPtr
+
+glVertexStream1dATIFunPtr :: FunPtr (GLenum -> GLdouble -> IO ())
+glVertexStream1dATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1dATI")
+
+{-# NOINLINE glVertexStream1dATIFunPtr #-}
+
+glVertexStream1dvATI :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glVertexStream1dvATI = ffienumPtrdoubleIOV glVertexStream1dvATIFunPtr
+
+glVertexStream1dvATIFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glVertexStream1dvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1dvATI")
+
+{-# NOINLINE glVertexStream1dvATIFunPtr #-}
+
+glVertexStream1fATI :: MonadIO m => GLenum -> GLfloat -> m ()
+glVertexStream1fATI = ffienumfloatIOV glVertexStream1fATIFunPtr
+
+glVertexStream1fATIFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glVertexStream1fATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1fATI")
+
+{-# NOINLINE glVertexStream1fATIFunPtr #-}
+
+glVertexStream1fvATI :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glVertexStream1fvATI = ffienumPtrfloatIOV glVertexStream1fvATIFunPtr
+
+glVertexStream1fvATIFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glVertexStream1fvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1fvATI")
+
+{-# NOINLINE glVertexStream1fvATIFunPtr #-}
+
+glVertexStream1iATI :: MonadIO m => GLenum -> GLint -> m ()
+glVertexStream1iATI = ffienumintIOV glVertexStream1iATIFunPtr
+
+glVertexStream1iATIFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glVertexStream1iATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1iATI")
+
+{-# NOINLINE glVertexStream1iATIFunPtr #-}
+
+glVertexStream1ivATI :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glVertexStream1ivATI = ffienumPtrintIOV glVertexStream1ivATIFunPtr
+
+glVertexStream1ivATIFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glVertexStream1ivATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1ivATI")
+
+{-# NOINLINE glVertexStream1ivATIFunPtr #-}
+
+glVertexStream1sATI :: MonadIO m => GLenum -> GLshort -> m ()
+glVertexStream1sATI = ffienumshortIOV glVertexStream1sATIFunPtr
+
+glVertexStream1sATIFunPtr :: FunPtr (GLenum -> GLshort -> IO ())
+glVertexStream1sATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1sATI")
+
+{-# NOINLINE glVertexStream1sATIFunPtr #-}
+
+glVertexStream1svATI :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glVertexStream1svATI = ffienumPtrshortIOV glVertexStream1svATIFunPtr
+
+glVertexStream1svATIFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glVertexStream1svATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream1svATI")
+
+{-# NOINLINE glVertexStream1svATIFunPtr #-}
+
+glVertexStream2dATI :: MonadIO m => GLenum -> GLdouble -> GLdouble -> m ()
+glVertexStream2dATI = ffienumdoubledoubleIOV glVertexStream2dATIFunPtr
+
+glVertexStream2dATIFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> IO ())
+glVertexStream2dATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2dATI")
+
+{-# NOINLINE glVertexStream2dATIFunPtr #-}
+
+glVertexStream2dvATI :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glVertexStream2dvATI = ffienumPtrdoubleIOV glVertexStream2dvATIFunPtr
+
+glVertexStream2dvATIFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glVertexStream2dvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2dvATI")
+
+{-# NOINLINE glVertexStream2dvATIFunPtr #-}
+
+glVertexStream2fATI :: MonadIO m => GLenum -> GLfloat -> GLfloat -> m ()
+glVertexStream2fATI = ffienumfloatfloatIOV glVertexStream2fATIFunPtr
+
+glVertexStream2fATIFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> IO ())
+glVertexStream2fATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2fATI")
+
+{-# NOINLINE glVertexStream2fATIFunPtr #-}
+
+glVertexStream2fvATI :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glVertexStream2fvATI = ffienumPtrfloatIOV glVertexStream2fvATIFunPtr
+
+glVertexStream2fvATIFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glVertexStream2fvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2fvATI")
+
+{-# NOINLINE glVertexStream2fvATIFunPtr #-}
+
+glVertexStream2iATI :: MonadIO m => GLenum -> GLint -> GLint -> m ()
+glVertexStream2iATI = ffienumintintIOV glVertexStream2iATIFunPtr
+
+glVertexStream2iATIFunPtr :: FunPtr (GLenum -> GLint -> GLint -> IO ())
+glVertexStream2iATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2iATI")
+
+{-# NOINLINE glVertexStream2iATIFunPtr #-}
+
+glVertexStream2ivATI :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glVertexStream2ivATI = ffienumPtrintIOV glVertexStream2ivATIFunPtr
+
+glVertexStream2ivATIFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glVertexStream2ivATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2ivATI")
+
+{-# NOINLINE glVertexStream2ivATIFunPtr #-}
+
+glVertexStream2sATI :: MonadIO m => GLenum -> GLshort -> GLshort -> m ()
+glVertexStream2sATI = ffienumshortshortIOV glVertexStream2sATIFunPtr
+
+glVertexStream2sATIFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> IO ())
+glVertexStream2sATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2sATI")
+
+{-# NOINLINE glVertexStream2sATIFunPtr #-}
+
+glVertexStream2svATI :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glVertexStream2svATI = ffienumPtrshortIOV glVertexStream2svATIFunPtr
+
+glVertexStream2svATIFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glVertexStream2svATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream2svATI")
+
+{-# NOINLINE glVertexStream2svATIFunPtr #-}
+
+glVertexStream3dATI :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
+glVertexStream3dATI = ffienumdoubledoubledoubleIOV glVertexStream3dATIFunPtr
+
+glVertexStream3dATIFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glVertexStream3dATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3dATI")
+
+{-# NOINLINE glVertexStream3dATIFunPtr #-}
+
+glVertexStream3dvATI :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glVertexStream3dvATI = ffienumPtrdoubleIOV glVertexStream3dvATIFunPtr
+
+glVertexStream3dvATIFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glVertexStream3dvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3dvATI")
+
+{-# NOINLINE glVertexStream3dvATIFunPtr #-}
+
+glVertexStream3fATI :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
+glVertexStream3fATI = ffienumfloatfloatfloatIOV glVertexStream3fATIFunPtr
+
+glVertexStream3fATIFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glVertexStream3fATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3fATI")
+
+{-# NOINLINE glVertexStream3fATIFunPtr #-}
+
+glVertexStream3fvATI :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glVertexStream3fvATI = ffienumPtrfloatIOV glVertexStream3fvATIFunPtr
+
+glVertexStream3fvATIFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glVertexStream3fvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3fvATI")
+
+{-# NOINLINE glVertexStream3fvATIFunPtr #-}
+
+glVertexStream3iATI :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> m ()
+glVertexStream3iATI = ffienumintintintIOV glVertexStream3iATIFunPtr
+
+glVertexStream3iATIFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ())
+glVertexStream3iATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3iATI")
+
+{-# NOINLINE glVertexStream3iATIFunPtr #-}
+
+glVertexStream3ivATI :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glVertexStream3ivATI = ffienumPtrintIOV glVertexStream3ivATIFunPtr
+
+glVertexStream3ivATIFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glVertexStream3ivATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3ivATI")
+
+{-# NOINLINE glVertexStream3ivATIFunPtr #-}
+
+glVertexStream3sATI :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> m ()
+glVertexStream3sATI = ffienumshortshortshortIOV glVertexStream3sATIFunPtr
+
+glVertexStream3sATIFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ())
+glVertexStream3sATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3sATI")
+
+{-# NOINLINE glVertexStream3sATIFunPtr #-}
+
+glVertexStream3svATI :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glVertexStream3svATI = ffienumPtrshortIOV glVertexStream3svATIFunPtr
+
+glVertexStream3svATIFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glVertexStream3svATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream3svATI")
+
+{-# NOINLINE glVertexStream3svATIFunPtr #-}
+
+glVertexStream4dATI :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glVertexStream4dATI = ffienumdoubledoubledoubledoubleIOV glVertexStream4dATIFunPtr
+
+glVertexStream4dATIFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glVertexStream4dATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4dATI")
+
+{-# NOINLINE glVertexStream4dATIFunPtr #-}
+
+glVertexStream4dvATI :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glVertexStream4dvATI = ffienumPtrdoubleIOV glVertexStream4dvATIFunPtr
+
+glVertexStream4dvATIFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glVertexStream4dvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4dvATI")
+
+{-# NOINLINE glVertexStream4dvATIFunPtr #-}
+
+glVertexStream4fATI :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glVertexStream4fATI = ffienumfloatfloatfloatfloatIOV glVertexStream4fATIFunPtr
+
+glVertexStream4fATIFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glVertexStream4fATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4fATI")
+
+{-# NOINLINE glVertexStream4fATIFunPtr #-}
+
+glVertexStream4fvATI :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glVertexStream4fvATI = ffienumPtrfloatIOV glVertexStream4fvATIFunPtr
+
+glVertexStream4fvATIFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glVertexStream4fvATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4fvATI")
+
+{-# NOINLINE glVertexStream4fvATIFunPtr #-}
+
+glVertexStream4iATI :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> m ()
+glVertexStream4iATI = ffienumintintintintIOV glVertexStream4iATIFunPtr
+
+glVertexStream4iATIFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> IO ())
+glVertexStream4iATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4iATI")
+
+{-# NOINLINE glVertexStream4iATIFunPtr #-}
+
+glVertexStream4ivATI :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glVertexStream4ivATI = ffienumPtrintIOV glVertexStream4ivATIFunPtr
+
+glVertexStream4ivATIFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glVertexStream4ivATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4ivATI")
+
+{-# NOINLINE glVertexStream4ivATIFunPtr #-}
+
+glVertexStream4sATI :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+glVertexStream4sATI = ffienumshortshortshortshortIOV glVertexStream4sATIFunPtr
+
+glVertexStream4sATIFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
+glVertexStream4sATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4sATI")
+
+{-# NOINLINE glVertexStream4sATIFunPtr #-}
+
+glVertexStream4svATI :: MonadIO m => GLenum -> Ptr GLshort -> m ()
+glVertexStream4svATI = ffienumPtrshortIOV glVertexStream4svATIFunPtr
+
+glVertexStream4svATIFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
+glVertexStream4svATIFunPtr = unsafePerformIO (getProcAddress "glVertexStream4svATI")
+
+{-# NOINLINE glVertexStream4svATIFunPtr #-}
+
+pattern GL_MAX_VERTEX_STREAMS_ATI = 0x876B :: GLenum
+
+pattern GL_VERTEX_SOURCE_ATI = 0x8774 :: GLenum
+
+pattern GL_VERTEX_STREAM0_ATI = 0x876C :: GLenum
+
+pattern GL_VERTEX_STREAM1_ATI = 0x876D :: GLenum
+
+pattern GL_VERTEX_STREAM2_ATI = 0x876E :: GLenum
+
+pattern GL_VERTEX_STREAM3_ATI = 0x876F :: GLenum
+
+pattern GL_VERTEX_STREAM4_ATI = 0x8770 :: GLenum
+
+pattern GL_VERTEX_STREAM5_ATI = 0x8771 :: GLenum
+
+pattern GL_VERTEX_STREAM6_ATI = 0x8772 :: GLenum
+
+pattern GL_VERTEX_STREAM7_ATI = 0x8773 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/DMP.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/DMP.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/DMP.hs
@@ -0,0 +1,10 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.DMP (
+  -- * DMP Extensions
+    module Graphics.GL.Raw.Extension.DMP.ProgramBinary
+  , module Graphics.GL.Raw.Extension.DMP.ShaderBinary
+) where
+
+import Graphics.GL.Raw.Extension.DMP.ProgramBinary
+import Graphics.GL.Raw.Extension.DMP.ShaderBinary
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/DMP/ProgramBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/DMP/ProgramBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/DMP/ProgramBinary.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.DMP.ProgramBinary (
+  -- * Extension Support
+    gl_DMP_program_binary
+
+  -- * GL_DMP_program_binary
+  , pattern GL_DMP_PROGRAM_BINARY_DMP
+  , pattern GL_SMAPHS30_PROGRAM_BINARY_DMP
+  , pattern GL_SMAPHS_PROGRAM_BINARY_DMP
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_DMP_program_binary :: Bool
+gl_DMP_program_binary = member "GL_DMP_program_binary" extensions
+
+pattern GL_DMP_PROGRAM_BINARY_DMP = 0x9253 :: GLenum
+
+pattern GL_SMAPHS30_PROGRAM_BINARY_DMP = 0x9251 :: GLenum
+
+pattern GL_SMAPHS_PROGRAM_BINARY_DMP = 0x9252 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/DMP/ShaderBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/DMP/ShaderBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/DMP/ShaderBinary.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.DMP.ShaderBinary (
+  -- * Extension Support
+    gl_DMP_shader_binary
+
+  -- * GL_DMP_shader_binary
+  , pattern GL_SHADER_BINARY_DMP
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_DMP_shader_binary :: Bool
+gl_DMP_shader_binary = member "GL_DMP_shader_binary" extensions
+
+pattern GL_SHADER_BINARY_DMP = 0x9250 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT.hs
@@ -0,0 +1,284 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT (
+  -- * EXT Extensions
+    module Graphics.GL.Raw.Extension.EXT.Abgr
+  , module Graphics.GL.Raw.Extension.EXT.Bgra
+  , module Graphics.GL.Raw.Extension.EXT.BindableUniform
+  , module Graphics.GL.Raw.Extension.EXT.BlendColor
+  , module Graphics.GL.Raw.Extension.EXT.BlendEquationSeparate
+  , module Graphics.GL.Raw.Extension.EXT.BlendFuncSeparate
+  , module Graphics.GL.Raw.Extension.EXT.BlendLogicOp
+  , module Graphics.GL.Raw.Extension.EXT.BlendMinmax
+  , module Graphics.GL.Raw.Extension.EXT.BlendSubtract
+  , module Graphics.GL.Raw.Extension.EXT.ClipVolumeHint
+  , module Graphics.GL.Raw.Extension.EXT.Cmyka
+  , module Graphics.GL.Raw.Extension.EXT.ColorBufferHalfFloat
+  , module Graphics.GL.Raw.Extension.EXT.ColorSubtable
+  , module Graphics.GL.Raw.Extension.EXT.CompiledVertexArray
+  , module Graphics.GL.Raw.Extension.EXT.Convolution
+  , module Graphics.GL.Raw.Extension.EXT.CoordinateFrame
+  , module Graphics.GL.Raw.Extension.EXT.CopyImage
+  , module Graphics.GL.Raw.Extension.EXT.CopyTexture
+  , module Graphics.GL.Raw.Extension.EXT.CullVertex
+  , module Graphics.GL.Raw.Extension.EXT.DebugLabel
+  , module Graphics.GL.Raw.Extension.EXT.DebugMarker
+  , module Graphics.GL.Raw.Extension.EXT.DepthBoundsTest
+  , module Graphics.GL.Raw.Extension.EXT.DirectStateAccess
+  , module Graphics.GL.Raw.Extension.EXT.DiscardFramebuffer
+  , module Graphics.GL.Raw.Extension.EXT.DisjointTimerQuery
+  , module Graphics.GL.Raw.Extension.EXT.DrawBuffers
+  , module Graphics.GL.Raw.Extension.EXT.DrawBuffers2
+  , module Graphics.GL.Raw.Extension.EXT.DrawBuffersIndexed
+  , module Graphics.GL.Raw.Extension.EXT.DrawInstanced
+  , module Graphics.GL.Raw.Extension.EXT.DrawRangeElements
+  , module Graphics.GL.Raw.Extension.EXT.FogCoord
+  , module Graphics.GL.Raw.Extension.EXT.FourTwoTwoPixels
+  , module Graphics.GL.Raw.Extension.EXT.FramebufferBlit
+  , module Graphics.GL.Raw.Extension.EXT.FramebufferMultisample
+  , module Graphics.GL.Raw.Extension.EXT.FramebufferMultisampleBlitScaled
+  , module Graphics.GL.Raw.Extension.EXT.FramebufferObject
+  , module Graphics.GL.Raw.Extension.EXT.FramebufferSRGB
+  , module Graphics.GL.Raw.Extension.EXT.GeometryPointSize
+  , module Graphics.GL.Raw.Extension.EXT.GeometryShader
+  , module Graphics.GL.Raw.Extension.EXT.GeometryShader4
+  , module Graphics.GL.Raw.Extension.EXT.GpuProgramParameters
+  , module Graphics.GL.Raw.Extension.EXT.GpuShader4
+  , module Graphics.GL.Raw.Extension.EXT.GpuShader5
+  , module Graphics.GL.Raw.Extension.EXT.Histogram
+  , module Graphics.GL.Raw.Extension.EXT.IndexArrayFormats
+  , module Graphics.GL.Raw.Extension.EXT.IndexFunc
+  , module Graphics.GL.Raw.Extension.EXT.IndexMaterial
+  , module Graphics.GL.Raw.Extension.EXT.IndexTexture
+  , module Graphics.GL.Raw.Extension.EXT.InstancedArrays
+  , module Graphics.GL.Raw.Extension.EXT.LightTexture
+  , module Graphics.GL.Raw.Extension.EXT.MapBufferRange
+  , module Graphics.GL.Raw.Extension.EXT.MiscAttribute
+  , module Graphics.GL.Raw.Extension.EXT.MultiDrawArrays
+  , module Graphics.GL.Raw.Extension.EXT.Multisample
+  , module Graphics.GL.Raw.Extension.EXT.MultisampledRenderToTexture
+  , module Graphics.GL.Raw.Extension.EXT.MultiviewDrawBuffers
+  , module Graphics.GL.Raw.Extension.EXT.OcclusionQueryBoolean
+  , module Graphics.GL.Raw.Extension.EXT.PackedDepthStencil
+  , module Graphics.GL.Raw.Extension.EXT.PackedFloat
+  , module Graphics.GL.Raw.Extension.EXT.PackedPixels
+  , module Graphics.GL.Raw.Extension.EXT.PalettedTexture
+  , module Graphics.GL.Raw.Extension.EXT.PixelBufferObject
+  , module Graphics.GL.Raw.Extension.EXT.PixelTransform
+  , module Graphics.GL.Raw.Extension.EXT.PixelTransformColorTable
+  , module Graphics.GL.Raw.Extension.EXT.PointParameters
+  , module Graphics.GL.Raw.Extension.EXT.PolygonOffset
+  , module Graphics.GL.Raw.Extension.EXT.PolygonOffsetClamp
+  , module Graphics.GL.Raw.Extension.EXT.PostDepthCoverage
+  , module Graphics.GL.Raw.Extension.EXT.PrimitiveBoundingBox
+  , module Graphics.GL.Raw.Extension.EXT.ProvokingVertex
+  , module Graphics.GL.Raw.Extension.EXT.PvrtcSRGB
+  , module Graphics.GL.Raw.Extension.EXT.RasterMultisample
+  , module Graphics.GL.Raw.Extension.EXT.ReadFormatBgra
+  , module Graphics.GL.Raw.Extension.EXT.RescaleNormal
+  , module Graphics.GL.Raw.Extension.EXT.Robustness
+  , module Graphics.GL.Raw.Extension.EXT.SRGB
+  , module Graphics.GL.Raw.Extension.EXT.SRGBWriteControl
+  , module Graphics.GL.Raw.Extension.EXT.SecondaryColor
+  , module Graphics.GL.Raw.Extension.EXT.SeparateShaderObjects
+  , module Graphics.GL.Raw.Extension.EXT.SeparateSpecularColor
+  , module Graphics.GL.Raw.Extension.EXT.ShaderFramebufferFetch
+  , module Graphics.GL.Raw.Extension.EXT.ShaderImageLoadFormatted
+  , module Graphics.GL.Raw.Extension.EXT.ShaderImageLoadStore
+  , module Graphics.GL.Raw.Extension.EXT.ShaderImplicitConversions
+  , module Graphics.GL.Raw.Extension.EXT.ShaderIntegerMix
+  , module Graphics.GL.Raw.Extension.EXT.ShaderIoBlocks
+  , module Graphics.GL.Raw.Extension.EXT.ShaderPixelLocalStorage
+  , module Graphics.GL.Raw.Extension.EXT.ShaderTextureLod
+  , module Graphics.GL.Raw.Extension.EXT.ShadowFuncs
+  , module Graphics.GL.Raw.Extension.EXT.ShadowSamplers
+  , module Graphics.GL.Raw.Extension.EXT.SharedTexturePalette
+  , module Graphics.GL.Raw.Extension.EXT.SparseTexture2
+  , module Graphics.GL.Raw.Extension.EXT.StencilClearTag
+  , module Graphics.GL.Raw.Extension.EXT.StencilTwoSide
+  , module Graphics.GL.Raw.Extension.EXT.StencilWrap
+  , module Graphics.GL.Raw.Extension.EXT.Subtexture
+  , module Graphics.GL.Raw.Extension.EXT.TessellationPointSize
+  , module Graphics.GL.Raw.Extension.EXT.TessellationShader
+  , module Graphics.GL.Raw.Extension.EXT.Texture
+  , module Graphics.GL.Raw.Extension.EXT.Texture3D
+  , module Graphics.GL.Raw.Extension.EXT.TextureArray
+  , module Graphics.GL.Raw.Extension.EXT.TextureBorderClamp
+  , module Graphics.GL.Raw.Extension.EXT.TextureBuffer
+  , module Graphics.GL.Raw.Extension.EXT.TextureBufferObject
+  , module Graphics.GL.Raw.Extension.EXT.TextureCompressionDxt1
+  , module Graphics.GL.Raw.Extension.EXT.TextureCompressionLatc
+  , module Graphics.GL.Raw.Extension.EXT.TextureCompressionRgtc
+  , module Graphics.GL.Raw.Extension.EXT.TextureCompressionS3tc
+  , module Graphics.GL.Raw.Extension.EXT.TextureCubeMap
+  , module Graphics.GL.Raw.Extension.EXT.TextureCubeMapArray
+  , module Graphics.GL.Raw.Extension.EXT.TextureEnvAdd
+  , module Graphics.GL.Raw.Extension.EXT.TextureEnvCombine
+  , module Graphics.GL.Raw.Extension.EXT.TextureEnvDot3
+  , module Graphics.GL.Raw.Extension.EXT.TextureFilterAnisotropic
+  , module Graphics.GL.Raw.Extension.EXT.TextureFilterMinmax
+  , module Graphics.GL.Raw.Extension.EXT.TextureFormatBGRA8888
+  , module Graphics.GL.Raw.Extension.EXT.TextureInteger
+  , module Graphics.GL.Raw.Extension.EXT.TextureLodBias
+  , module Graphics.GL.Raw.Extension.EXT.TextureMirrorClamp
+  , module Graphics.GL.Raw.Extension.EXT.TextureObject
+  , module Graphics.GL.Raw.Extension.EXT.TexturePerturbNormal
+  , module Graphics.GL.Raw.Extension.EXT.TextureRg
+  , module Graphics.GL.Raw.Extension.EXT.TextureSRGB
+  , module Graphics.GL.Raw.Extension.EXT.TextureSRGBDecode
+  , module Graphics.GL.Raw.Extension.EXT.TextureSharedExponent
+  , module Graphics.GL.Raw.Extension.EXT.TextureSnorm
+  , module Graphics.GL.Raw.Extension.EXT.TextureStorage
+  , module Graphics.GL.Raw.Extension.EXT.TextureSwizzle
+  , module Graphics.GL.Raw.Extension.EXT.TextureType2101010REV
+  , module Graphics.GL.Raw.Extension.EXT.TextureView
+  , module Graphics.GL.Raw.Extension.EXT.TimerQuery
+  , module Graphics.GL.Raw.Extension.EXT.TransformFeedback
+  , module Graphics.GL.Raw.Extension.EXT.UnpackSubimage
+  , module Graphics.GL.Raw.Extension.EXT.VertexArray
+  , module Graphics.GL.Raw.Extension.EXT.VertexArrayBgra
+  , module Graphics.GL.Raw.Extension.EXT.VertexAttrib64bit
+  , module Graphics.GL.Raw.Extension.EXT.VertexShader
+  , module Graphics.GL.Raw.Extension.EXT.VertexWeighting
+  , module Graphics.GL.Raw.Extension.EXT.X11SyncObject
+) where
+
+import Graphics.GL.Raw.Extension.EXT.Abgr
+import Graphics.GL.Raw.Extension.EXT.Bgra
+import Graphics.GL.Raw.Extension.EXT.BindableUniform
+import Graphics.GL.Raw.Extension.EXT.BlendColor
+import Graphics.GL.Raw.Extension.EXT.BlendEquationSeparate
+import Graphics.GL.Raw.Extension.EXT.BlendFuncSeparate
+import Graphics.GL.Raw.Extension.EXT.BlendLogicOp
+import Graphics.GL.Raw.Extension.EXT.BlendMinmax
+import Graphics.GL.Raw.Extension.EXT.BlendSubtract
+import Graphics.GL.Raw.Extension.EXT.ClipVolumeHint
+import Graphics.GL.Raw.Extension.EXT.Cmyka
+import Graphics.GL.Raw.Extension.EXT.ColorBufferHalfFloat
+import Graphics.GL.Raw.Extension.EXT.ColorSubtable
+import Graphics.GL.Raw.Extension.EXT.CompiledVertexArray
+import Graphics.GL.Raw.Extension.EXT.Convolution
+import Graphics.GL.Raw.Extension.EXT.CoordinateFrame
+import Graphics.GL.Raw.Extension.EXT.CopyImage
+import Graphics.GL.Raw.Extension.EXT.CopyTexture
+import Graphics.GL.Raw.Extension.EXT.CullVertex
+import Graphics.GL.Raw.Extension.EXT.DebugLabel
+import Graphics.GL.Raw.Extension.EXT.DebugMarker
+import Graphics.GL.Raw.Extension.EXT.DepthBoundsTest
+import Graphics.GL.Raw.Extension.EXT.DirectStateAccess
+import Graphics.GL.Raw.Extension.EXT.DiscardFramebuffer
+import Graphics.GL.Raw.Extension.EXT.DisjointTimerQuery
+import Graphics.GL.Raw.Extension.EXT.DrawBuffers
+import Graphics.GL.Raw.Extension.EXT.DrawBuffers2
+import Graphics.GL.Raw.Extension.EXT.DrawBuffersIndexed
+import Graphics.GL.Raw.Extension.EXT.DrawInstanced
+import Graphics.GL.Raw.Extension.EXT.DrawRangeElements
+import Graphics.GL.Raw.Extension.EXT.FogCoord
+import Graphics.GL.Raw.Extension.EXT.FourTwoTwoPixels
+import Graphics.GL.Raw.Extension.EXT.FramebufferBlit
+import Graphics.GL.Raw.Extension.EXT.FramebufferMultisample
+import Graphics.GL.Raw.Extension.EXT.FramebufferMultisampleBlitScaled
+import Graphics.GL.Raw.Extension.EXT.FramebufferObject
+import Graphics.GL.Raw.Extension.EXT.FramebufferSRGB
+import Graphics.GL.Raw.Extension.EXT.GeometryPointSize
+import Graphics.GL.Raw.Extension.EXT.GeometryShader
+import Graphics.GL.Raw.Extension.EXT.GeometryShader4
+import Graphics.GL.Raw.Extension.EXT.GpuProgramParameters
+import Graphics.GL.Raw.Extension.EXT.GpuShader4
+import Graphics.GL.Raw.Extension.EXT.GpuShader5
+import Graphics.GL.Raw.Extension.EXT.Histogram
+import Graphics.GL.Raw.Extension.EXT.IndexArrayFormats
+import Graphics.GL.Raw.Extension.EXT.IndexFunc
+import Graphics.GL.Raw.Extension.EXT.IndexMaterial
+import Graphics.GL.Raw.Extension.EXT.IndexTexture
+import Graphics.GL.Raw.Extension.EXT.InstancedArrays
+import Graphics.GL.Raw.Extension.EXT.LightTexture
+import Graphics.GL.Raw.Extension.EXT.MapBufferRange
+import Graphics.GL.Raw.Extension.EXT.MiscAttribute
+import Graphics.GL.Raw.Extension.EXT.MultiDrawArrays
+import Graphics.GL.Raw.Extension.EXT.Multisample
+import Graphics.GL.Raw.Extension.EXT.MultisampledRenderToTexture
+import Graphics.GL.Raw.Extension.EXT.MultiviewDrawBuffers
+import Graphics.GL.Raw.Extension.EXT.OcclusionQueryBoolean
+import Graphics.GL.Raw.Extension.EXT.PackedDepthStencil
+import Graphics.GL.Raw.Extension.EXT.PackedFloat
+import Graphics.GL.Raw.Extension.EXT.PackedPixels
+import Graphics.GL.Raw.Extension.EXT.PalettedTexture
+import Graphics.GL.Raw.Extension.EXT.PixelBufferObject
+import Graphics.GL.Raw.Extension.EXT.PixelTransform
+import Graphics.GL.Raw.Extension.EXT.PixelTransformColorTable
+import Graphics.GL.Raw.Extension.EXT.PointParameters
+import Graphics.GL.Raw.Extension.EXT.PolygonOffset
+import Graphics.GL.Raw.Extension.EXT.PolygonOffsetClamp
+import Graphics.GL.Raw.Extension.EXT.PostDepthCoverage
+import Graphics.GL.Raw.Extension.EXT.PrimitiveBoundingBox
+import Graphics.GL.Raw.Extension.EXT.ProvokingVertex
+import Graphics.GL.Raw.Extension.EXT.PvrtcSRGB
+import Graphics.GL.Raw.Extension.EXT.RasterMultisample
+import Graphics.GL.Raw.Extension.EXT.ReadFormatBgra
+import Graphics.GL.Raw.Extension.EXT.RescaleNormal
+import Graphics.GL.Raw.Extension.EXT.Robustness
+import Graphics.GL.Raw.Extension.EXT.SRGB
+import Graphics.GL.Raw.Extension.EXT.SRGBWriteControl
+import Graphics.GL.Raw.Extension.EXT.SecondaryColor
+import Graphics.GL.Raw.Extension.EXT.SeparateShaderObjects
+import Graphics.GL.Raw.Extension.EXT.SeparateSpecularColor
+import Graphics.GL.Raw.Extension.EXT.ShaderFramebufferFetch
+import Graphics.GL.Raw.Extension.EXT.ShaderImageLoadFormatted
+import Graphics.GL.Raw.Extension.EXT.ShaderImageLoadStore
+import Graphics.GL.Raw.Extension.EXT.ShaderImplicitConversions
+import Graphics.GL.Raw.Extension.EXT.ShaderIntegerMix
+import Graphics.GL.Raw.Extension.EXT.ShaderIoBlocks
+import Graphics.GL.Raw.Extension.EXT.ShaderPixelLocalStorage
+import Graphics.GL.Raw.Extension.EXT.ShaderTextureLod
+import Graphics.GL.Raw.Extension.EXT.ShadowFuncs
+import Graphics.GL.Raw.Extension.EXT.ShadowSamplers
+import Graphics.GL.Raw.Extension.EXT.SharedTexturePalette
+import Graphics.GL.Raw.Extension.EXT.SparseTexture2
+import Graphics.GL.Raw.Extension.EXT.StencilClearTag
+import Graphics.GL.Raw.Extension.EXT.StencilTwoSide
+import Graphics.GL.Raw.Extension.EXT.StencilWrap
+import Graphics.GL.Raw.Extension.EXT.Subtexture
+import Graphics.GL.Raw.Extension.EXT.TessellationPointSize
+import Graphics.GL.Raw.Extension.EXT.TessellationShader
+import Graphics.GL.Raw.Extension.EXT.Texture
+import Graphics.GL.Raw.Extension.EXT.Texture3D
+import Graphics.GL.Raw.Extension.EXT.TextureArray
+import Graphics.GL.Raw.Extension.EXT.TextureBorderClamp
+import Graphics.GL.Raw.Extension.EXT.TextureBuffer
+import Graphics.GL.Raw.Extension.EXT.TextureBufferObject
+import Graphics.GL.Raw.Extension.EXT.TextureCompressionDxt1
+import Graphics.GL.Raw.Extension.EXT.TextureCompressionLatc
+import Graphics.GL.Raw.Extension.EXT.TextureCompressionRgtc
+import Graphics.GL.Raw.Extension.EXT.TextureCompressionS3tc
+import Graphics.GL.Raw.Extension.EXT.TextureCubeMap
+import Graphics.GL.Raw.Extension.EXT.TextureCubeMapArray
+import Graphics.GL.Raw.Extension.EXT.TextureEnvAdd
+import Graphics.GL.Raw.Extension.EXT.TextureEnvCombine
+import Graphics.GL.Raw.Extension.EXT.TextureEnvDot3
+import Graphics.GL.Raw.Extension.EXT.TextureFilterAnisotropic
+import Graphics.GL.Raw.Extension.EXT.TextureFilterMinmax
+import Graphics.GL.Raw.Extension.EXT.TextureFormatBGRA8888
+import Graphics.GL.Raw.Extension.EXT.TextureInteger
+import Graphics.GL.Raw.Extension.EXT.TextureLodBias
+import Graphics.GL.Raw.Extension.EXT.TextureMirrorClamp
+import Graphics.GL.Raw.Extension.EXT.TextureObject
+import Graphics.GL.Raw.Extension.EXT.TexturePerturbNormal
+import Graphics.GL.Raw.Extension.EXT.TextureRg
+import Graphics.GL.Raw.Extension.EXT.TextureSRGB
+import Graphics.GL.Raw.Extension.EXT.TextureSRGBDecode
+import Graphics.GL.Raw.Extension.EXT.TextureSharedExponent
+import Graphics.GL.Raw.Extension.EXT.TextureSnorm
+import Graphics.GL.Raw.Extension.EXT.TextureStorage
+import Graphics.GL.Raw.Extension.EXT.TextureSwizzle
+import Graphics.GL.Raw.Extension.EXT.TextureType2101010REV
+import Graphics.GL.Raw.Extension.EXT.TextureView
+import Graphics.GL.Raw.Extension.EXT.TimerQuery
+import Graphics.GL.Raw.Extension.EXT.TransformFeedback
+import Graphics.GL.Raw.Extension.EXT.UnpackSubimage
+import Graphics.GL.Raw.Extension.EXT.VertexArray
+import Graphics.GL.Raw.Extension.EXT.VertexArrayBgra
+import Graphics.GL.Raw.Extension.EXT.VertexAttrib64bit
+import Graphics.GL.Raw.Extension.EXT.VertexShader
+import Graphics.GL.Raw.Extension.EXT.VertexWeighting
+import Graphics.GL.Raw.Extension.EXT.X11SyncObject
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Abgr.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Abgr.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Abgr.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Abgr (
+  -- * Extension Support
+    gl_EXT_abgr
+
+  -- * GL_EXT_abgr
+  , pattern GL_ABGR_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_abgr :: Bool
+gl_EXT_abgr = member "GL_EXT_abgr" extensions
+
+pattern GL_ABGR_EXT = 0x8000 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Bgra.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Bgra.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Bgra.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Bgra (
+  -- * Extension Support
+    gl_EXT_bgra
+
+  -- * GL_EXT_bgra
+  , pattern GL_BGRA_EXT
+  , pattern GL_BGR_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_bgra :: Bool
+gl_EXT_bgra = member "GL_EXT_bgra" extensions
+
+pattern GL_BGR_EXT = 0x80E0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BindableUniform.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BindableUniform.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BindableUniform.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.BindableUniform (
+  -- * Extension Support
+    gl_EXT_bindable_uniform
+
+  -- * GL_EXT_bindable_uniform
+  , glGetUniformBufferSizeEXT
+  , glGetUniformOffsetEXT
+  , glUniformBufferEXT
+  , pattern GL_MAX_BINDABLE_UNIFORM_SIZE_EXT
+  , pattern GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT
+  , pattern GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT
+  , pattern GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT
+  , pattern GL_UNIFORM_BUFFER_BINDING_EXT
+  , pattern GL_UNIFORM_BUFFER_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.Types
+import System.IO.Unsafe
+
+gl_EXT_bindable_uniform :: Bool
+gl_EXT_bindable_uniform = member "GL_EXT_bindable_uniform" extensions
+
+glGetUniformBufferSizeEXT :: MonadIO m => GLuint -> GLint -> m GLint
+glGetUniformBufferSizeEXT = ffiuintintIOint glGetUniformBufferSizeEXTFunPtr
+
+glGetUniformBufferSizeEXTFunPtr :: FunPtr (GLuint -> GLint -> IO GLint)
+glGetUniformBufferSizeEXTFunPtr = unsafePerformIO (getProcAddress "glGetUniformBufferSizeEXT")
+
+{-# NOINLINE glGetUniformBufferSizeEXTFunPtr #-}
+
+glGetUniformOffsetEXT :: MonadIO m => GLuint -> GLint -> m GLintptr
+glGetUniformOffsetEXT = ffiuintintIOintptr glGetUniformOffsetEXTFunPtr
+
+glGetUniformOffsetEXTFunPtr :: FunPtr (GLuint -> GLint -> IO GLintptr)
+glGetUniformOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glGetUniformOffsetEXT")
+
+{-# NOINLINE glGetUniformOffsetEXTFunPtr #-}
+
+glUniformBufferEXT :: MonadIO m => GLuint -> GLint -> GLuint -> m ()
+glUniformBufferEXT = ffiuintintuintIOV glUniformBufferEXTFunPtr
+
+glUniformBufferEXTFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> IO ())
+glUniformBufferEXTFunPtr = unsafePerformIO (getProcAddress "glUniformBufferEXT")
+
+{-# NOINLINE glUniformBufferEXTFunPtr #-}
+
+pattern GL_MAX_BINDABLE_UNIFORM_SIZE_EXT = 0x8DED :: GLenum
+
+pattern GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = 0x8DE3 :: GLenum
+
+pattern GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = 0x8DE4 :: GLenum
+
+pattern GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT = 0x8DE2 :: GLenum
+
+pattern GL_UNIFORM_BUFFER_BINDING_EXT = 0x8DEF :: GLenum
+
+pattern GL_UNIFORM_BUFFER_EXT = 0x8DEE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendColor.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendColor.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendColor.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.BlendColor (
+  -- * Extension Support
+    gl_EXT_blend_color
+
+  -- * GL_EXT_blend_color
+  , glBlendColorEXT
+  , pattern GL_BLEND_COLOR_EXT
+  , pattern GL_CONSTANT_ALPHA_EXT
+  , pattern GL_CONSTANT_COLOR_EXT
+  , pattern GL_ONE_MINUS_CONSTANT_ALPHA_EXT
+  , pattern GL_ONE_MINUS_CONSTANT_COLOR_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.Types
+import System.IO.Unsafe
+
+gl_EXT_blend_color :: Bool
+gl_EXT_blend_color = member "GL_EXT_blend_color" extensions
+
+glBlendColorEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glBlendColorEXT = ffifloatfloatfloatfloatIOV glBlendColorEXTFunPtr
+
+glBlendColorEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glBlendColorEXTFunPtr = unsafePerformIO (getProcAddress "glBlendColorEXT")
+
+{-# NOINLINE glBlendColorEXTFunPtr #-}
+
+pattern GL_BLEND_COLOR_EXT = 0x8005 :: GLenum
+
+pattern GL_CONSTANT_ALPHA_EXT = 0x8003 :: GLenum
+
+pattern GL_CONSTANT_COLOR_EXT = 0x8001 :: GLenum
+
+pattern GL_ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004 :: GLenum
+
+pattern GL_ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendEquationSeparate.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendEquationSeparate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendEquationSeparate.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.BlendEquationSeparate (
+  -- * Extension Support
+    gl_EXT_blend_equation_separate
+
+  -- * GL_EXT_blend_equation_separate
+  , glBlendEquationSeparateEXT
+  , pattern GL_BLEND_EQUATION_ALPHA_EXT
+  , pattern GL_BLEND_EQUATION_RGB_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.Types
+import System.IO.Unsafe
+
+gl_EXT_blend_equation_separate :: Bool
+gl_EXT_blend_equation_separate = member "GL_EXT_blend_equation_separate" extensions
+
+glBlendEquationSeparateEXT :: MonadIO m => GLenum -> GLenum -> m ()
+glBlendEquationSeparateEXT = ffienumenumIOV glBlendEquationSeparateEXTFunPtr
+
+glBlendEquationSeparateEXTFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glBlendEquationSeparateEXTFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparateEXT")
+
+{-# NOINLINE glBlendEquationSeparateEXTFunPtr #-}
+
+pattern GL_BLEND_EQUATION_ALPHA_EXT = 0x883D :: GLenum
+
+pattern GL_BLEND_EQUATION_RGB_EXT = 0x8009 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendFuncSeparate.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendFuncSeparate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendFuncSeparate.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.BlendFuncSeparate (
+  -- * Extension Support
+    gl_EXT_blend_func_separate
+
+  -- * GL_EXT_blend_func_separate
+  , glBlendFuncSeparateEXT
+  , pattern GL_BLEND_DST_ALPHA_EXT
+  , pattern GL_BLEND_DST_RGB_EXT
+  , pattern GL_BLEND_SRC_ALPHA_EXT
+  , pattern GL_BLEND_SRC_RGB_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.Types
+import System.IO.Unsafe
+
+gl_EXT_blend_func_separate :: Bool
+gl_EXT_blend_func_separate = member "GL_EXT_blend_func_separate" extensions
+
+glBlendFuncSeparateEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glBlendFuncSeparateEXT = ffienumenumenumenumIOV glBlendFuncSeparateEXTFunPtr
+
+glBlendFuncSeparateEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glBlendFuncSeparateEXTFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparateEXT")
+
+{-# NOINLINE glBlendFuncSeparateEXTFunPtr #-}
+
+pattern GL_BLEND_DST_ALPHA_EXT = 0x80CA :: GLenum
+
+pattern GL_BLEND_DST_RGB_EXT = 0x80C8 :: GLenum
+
+pattern GL_BLEND_SRC_ALPHA_EXT = 0x80CB :: GLenum
+
+pattern GL_BLEND_SRC_RGB_EXT = 0x80C9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendLogicOp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendLogicOp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendLogicOp.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.BlendLogicOp (
+  -- * Extension Support
+    gl_EXT_blend_logic_op
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_blend_logic_op :: Bool
+gl_EXT_blend_logic_op = member "GL_EXT_blend_logic_op" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendMinmax.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendMinmax.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendMinmax.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.BlendMinmax (
+  -- * Extension Support
+    gl_EXT_blend_minmax
+
+  -- * GL_EXT_blend_minmax
+  , glBlendEquationEXT
+  , pattern GL_BLEND_EQUATION_EXT
+  , pattern GL_FUNC_ADD_EXT
+  , pattern GL_MAX_EXT
+  , pattern GL_MIN_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.Types
+import System.IO.Unsafe
+
+gl_EXT_blend_minmax :: Bool
+gl_EXT_blend_minmax = member "GL_EXT_blend_minmax" extensions
+
+glBlendEquationEXT :: MonadIO m => GLenum -> m ()
+glBlendEquationEXT = ffienumIOV glBlendEquationEXTFunPtr
+
+glBlendEquationEXTFunPtr :: FunPtr (GLenum -> IO ())
+glBlendEquationEXTFunPtr = unsafePerformIO (getProcAddress "glBlendEquationEXT")
+
+{-# NOINLINE glBlendEquationEXTFunPtr #-}
+
+pattern GL_BLEND_EQUATION_EXT = 0x8009 :: GLenum
+
+pattern GL_FUNC_ADD_EXT = 0x8006 :: GLenum
+
+pattern GL_MAX_EXT = 0x8008 :: GLenum
+
+pattern GL_MIN_EXT = 0x8007 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendSubtract.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendSubtract.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/BlendSubtract.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.BlendSubtract (
+  -- * Extension Support
+    gl_EXT_blend_subtract
+
+  -- * GL_EXT_blend_subtract
+  , pattern GL_FUNC_REVERSE_SUBTRACT_EXT
+  , pattern GL_FUNC_SUBTRACT_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_blend_subtract :: Bool
+gl_EXT_blend_subtract = member "GL_EXT_blend_subtract" extensions
+
+pattern GL_FUNC_REVERSE_SUBTRACT_EXT = 0x800B :: GLenum
+
+pattern GL_FUNC_SUBTRACT_EXT = 0x800A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ClipVolumeHint.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ClipVolumeHint.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ClipVolumeHint.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ClipVolumeHint (
+  -- * Extension Support
+    gl_EXT_clip_volume_hint
+
+  -- * GL_EXT_clip_volume_hint
+  , pattern GL_CLIP_VOLUME_CLIPPING_HINT_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_clip_volume_hint :: Bool
+gl_EXT_clip_volume_hint = member "GL_EXT_clip_volume_hint" extensions
+
+pattern GL_CLIP_VOLUME_CLIPPING_HINT_EXT = 0x80F0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Cmyka.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Cmyka.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Cmyka.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Cmyka (
+  -- * Extension Support
+    gl_EXT_cmyka
+
+  -- * GL_EXT_cmyka
+  , pattern GL_CMYKA_EXT
+  , pattern GL_CMYK_EXT
+  , pattern GL_PACK_CMYK_HINT_EXT
+  , pattern GL_UNPACK_CMYK_HINT_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_cmyka :: Bool
+gl_EXT_cmyka = member "GL_EXT_cmyka" extensions
+
+pattern GL_CMYKA_EXT = 0x800D :: GLenum
+
+pattern GL_CMYK_EXT = 0x800C :: GLenum
+
+pattern GL_PACK_CMYK_HINT_EXT = 0x800E :: GLenum
+
+pattern GL_UNPACK_CMYK_HINT_EXT = 0x800F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ColorBufferHalfFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ColorBufferHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ColorBufferHalfFloat.hs
@@ -0,0 +1,26 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ColorBufferHalfFloat (
+  -- * Extension Support
+    gl_EXT_color_buffer_half_float
+
+  -- * GL_EXT_color_buffer_half_float
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT
+  , pattern GL_R16F_EXT
+  , pattern GL_RG16F_EXT
+  , pattern GL_RGB16F_EXT
+  , pattern GL_RGBA16F_EXT
+  , pattern GL_UNSIGNED_NORMALIZED_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_color_buffer_half_float :: Bool
+gl_EXT_color_buffer_half_float = member "GL_EXT_color_buffer_half_float" extensions
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211 :: GLenum
+
+pattern GL_UNSIGNED_NORMALIZED_EXT = 0x8C17 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ColorSubtable.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ColorSubtable.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ColorSubtable.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ColorSubtable (
+  -- * Extension Support
+    gl_EXT_color_subtable
+
+  -- * GL_EXT_color_subtable
+  , glColorSubTableEXT
+  , glCopyColorSubTableEXT
+) 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_EXT_color_subtable :: Bool
+gl_EXT_color_subtable = member "GL_EXT_color_subtable" extensions
+
+glColorSubTableEXT :: MonadIO m => GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glColorSubTableEXT = ffienumsizeisizeienumenumPtrVIOV glColorSubTableEXTFunPtr
+
+glColorSubTableEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glColorSubTableEXTFunPtr = unsafePerformIO (getProcAddress "glColorSubTableEXT")
+
+{-# NOINLINE glColorSubTableEXTFunPtr #-}
+
+glCopyColorSubTableEXT :: MonadIO m => GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> m ()
+glCopyColorSubTableEXT = ffienumsizeiintintsizeiIOV glCopyColorSubTableEXTFunPtr
+
+glCopyColorSubTableEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> IO ())
+glCopyColorSubTableEXTFunPtr = unsafePerformIO (getProcAddress "glCopyColorSubTableEXT")
+
+{-# NOINLINE glCopyColorSubTableEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CompiledVertexArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CompiledVertexArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CompiledVertexArray.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.CompiledVertexArray (
+  -- * Extension Support
+    gl_EXT_compiled_vertex_array
+
+  -- * GL_EXT_compiled_vertex_array
+  , glLockArraysEXT
+  , glUnlockArraysEXT
+  , pattern GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
+  , pattern GL_ARRAY_ELEMENT_LOCK_FIRST_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.Types
+import System.IO.Unsafe
+
+gl_EXT_compiled_vertex_array :: Bool
+gl_EXT_compiled_vertex_array = member "GL_EXT_compiled_vertex_array" extensions
+
+glLockArraysEXT :: MonadIO m => GLint -> GLsizei -> m ()
+glLockArraysEXT = ffiintsizeiIOV glLockArraysEXTFunPtr
+
+glLockArraysEXTFunPtr :: FunPtr (GLint -> GLsizei -> IO ())
+glLockArraysEXTFunPtr = unsafePerformIO (getProcAddress "glLockArraysEXT")
+
+{-# NOINLINE glLockArraysEXTFunPtr #-}
+
+glUnlockArraysEXT :: MonadIO m => m ()
+glUnlockArraysEXT = ffiIOV glUnlockArraysEXTFunPtr
+
+glUnlockArraysEXTFunPtr :: FunPtr (IO ())
+glUnlockArraysEXTFunPtr = unsafePerformIO (getProcAddress "glUnlockArraysEXT")
+
+{-# NOINLINE glUnlockArraysEXTFunPtr #-}
+
+pattern GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = 0x81A9 :: GLenum
+
+pattern GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = 0x81A8 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Convolution.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Convolution.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Convolution.hs
@@ -0,0 +1,196 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Convolution (
+  -- * Extension Support
+    gl_EXT_convolution
+
+  -- * GL_EXT_convolution
+  , glConvolutionFilter1DEXT
+  , glConvolutionFilter2DEXT
+  , glConvolutionParameterfEXT
+  , glConvolutionParameterfvEXT
+  , glConvolutionParameteriEXT
+  , glConvolutionParameterivEXT
+  , glCopyConvolutionFilter1DEXT
+  , glCopyConvolutionFilter2DEXT
+  , glGetConvolutionFilterEXT
+  , glGetConvolutionParameterfvEXT
+  , glGetConvolutionParameterivEXT
+  , glGetSeparableFilterEXT
+  , glSeparableFilter2DEXT
+  , pattern GL_CONVOLUTION_1D_EXT
+  , pattern GL_CONVOLUTION_2D_EXT
+  , pattern GL_CONVOLUTION_BORDER_MODE_EXT
+  , pattern GL_CONVOLUTION_FILTER_BIAS_EXT
+  , pattern GL_CONVOLUTION_FILTER_SCALE_EXT
+  , pattern GL_CONVOLUTION_FORMAT_EXT
+  , pattern GL_CONVOLUTION_HEIGHT_EXT
+  , pattern GL_CONVOLUTION_WIDTH_EXT
+  , pattern GL_MAX_CONVOLUTION_HEIGHT_EXT
+  , pattern GL_MAX_CONVOLUTION_WIDTH_EXT
+  , pattern GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
+  , pattern GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
+  , pattern GL_POST_CONVOLUTION_BLUE_BIAS_EXT
+  , pattern GL_POST_CONVOLUTION_BLUE_SCALE_EXT
+  , pattern GL_POST_CONVOLUTION_GREEN_BIAS_EXT
+  , pattern GL_POST_CONVOLUTION_GREEN_SCALE_EXT
+  , pattern GL_POST_CONVOLUTION_RED_BIAS_EXT
+  , pattern GL_POST_CONVOLUTION_RED_SCALE_EXT
+  , pattern GL_REDUCE_EXT
+  , pattern GL_SEPARABLE_2D_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.Types
+import System.IO.Unsafe
+
+gl_EXT_convolution :: Bool
+gl_EXT_convolution = member "GL_EXT_convolution" extensions
+
+glConvolutionFilter1DEXT :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glConvolutionFilter1DEXT = ffienumenumsizeienumenumPtrVIOV glConvolutionFilter1DEXTFunPtr
+
+glConvolutionFilter1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glConvolutionFilter1DEXTFunPtr = unsafePerformIO (getProcAddress "glConvolutionFilter1DEXT")
+
+{-# NOINLINE glConvolutionFilter1DEXTFunPtr #-}
+
+glConvolutionFilter2DEXT :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glConvolutionFilter2DEXT = ffienumenumsizeisizeienumenumPtrVIOV glConvolutionFilter2DEXTFunPtr
+
+glConvolutionFilter2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glConvolutionFilter2DEXTFunPtr = unsafePerformIO (getProcAddress "glConvolutionFilter2DEXT")
+
+{-# NOINLINE glConvolutionFilter2DEXTFunPtr #-}
+
+glConvolutionParameterfEXT :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
+glConvolutionParameterfEXT = ffienumenumfloatIOV glConvolutionParameterfEXTFunPtr
+
+glConvolutionParameterfEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
+glConvolutionParameterfEXTFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameterfEXT")
+
+{-# NOINLINE glConvolutionParameterfEXTFunPtr #-}
+
+glConvolutionParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glConvolutionParameterfvEXT = ffienumenumPtrfloatIOV glConvolutionParameterfvEXTFunPtr
+
+glConvolutionParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glConvolutionParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameterfvEXT")
+
+{-# NOINLINE glConvolutionParameterfvEXTFunPtr #-}
+
+glConvolutionParameteriEXT :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glConvolutionParameteriEXT = ffienumenumintIOV glConvolutionParameteriEXTFunPtr
+
+glConvolutionParameteriEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glConvolutionParameteriEXTFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameteriEXT")
+
+{-# NOINLINE glConvolutionParameteriEXTFunPtr #-}
+
+glConvolutionParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glConvolutionParameterivEXT = ffienumenumPtrintIOV glConvolutionParameterivEXTFunPtr
+
+glConvolutionParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glConvolutionParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameterivEXT")
+
+{-# NOINLINE glConvolutionParameterivEXTFunPtr #-}
+
+glCopyConvolutionFilter1DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> m ()
+glCopyConvolutionFilter1DEXT = ffienumenumintintsizeiIOV glCopyConvolutionFilter1DEXTFunPtr
+
+glCopyConvolutionFilter1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> IO ())
+glCopyConvolutionFilter1DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyConvolutionFilter1DEXT")
+
+{-# NOINLINE glCopyConvolutionFilter1DEXTFunPtr #-}
+
+glCopyConvolutionFilter2DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyConvolutionFilter2DEXT = ffienumenumintintsizeisizeiIOV glCopyConvolutionFilter2DEXTFunPtr
+
+glCopyConvolutionFilter2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyConvolutionFilter2DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyConvolutionFilter2DEXT")
+
+{-# NOINLINE glCopyConvolutionFilter2DEXTFunPtr #-}
+
+glGetConvolutionFilterEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+glGetConvolutionFilterEXT = ffienumenumenumPtrVIOV glGetConvolutionFilterEXTFunPtr
+
+glGetConvolutionFilterEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetConvolutionFilterEXTFunPtr = unsafePerformIO (getProcAddress "glGetConvolutionFilterEXT")
+
+{-# NOINLINE glGetConvolutionFilterEXTFunPtr #-}
+
+glGetConvolutionParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetConvolutionParameterfvEXT = ffienumenumPtrfloatIOV glGetConvolutionParameterfvEXTFunPtr
+
+glGetConvolutionParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetConvolutionParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetConvolutionParameterfvEXT")
+
+{-# NOINLINE glGetConvolutionParameterfvEXTFunPtr #-}
+
+glGetConvolutionParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetConvolutionParameterivEXT = ffienumenumPtrintIOV glGetConvolutionParameterivEXTFunPtr
+
+glGetConvolutionParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetConvolutionParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetConvolutionParameterivEXT")
+
+{-# NOINLINE glGetConvolutionParameterivEXTFunPtr #-}
+
+glGetSeparableFilterEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> m ()
+glGetSeparableFilterEXT = ffienumenumenumPtrVPtrVPtrVIOV glGetSeparableFilterEXTFunPtr
+
+glGetSeparableFilterEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> IO ())
+glGetSeparableFilterEXTFunPtr = unsafePerformIO (getProcAddress "glGetSeparableFilterEXT")
+
+{-# NOINLINE glGetSeparableFilterEXTFunPtr #-}
+
+glSeparableFilter2DEXT :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> m ()
+glSeparableFilter2DEXT = ffienumenumsizeisizeienumenumPtrVPtrVIOV glSeparableFilter2DEXTFunPtr
+
+glSeparableFilter2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> IO ())
+glSeparableFilter2DEXTFunPtr = unsafePerformIO (getProcAddress "glSeparableFilter2DEXT")
+
+{-# NOINLINE glSeparableFilter2DEXTFunPtr #-}
+
+pattern GL_CONVOLUTION_1D_EXT = 0x8010 :: GLenum
+
+pattern GL_CONVOLUTION_2D_EXT = 0x8011 :: GLenum
+
+pattern GL_CONVOLUTION_BORDER_MODE_EXT = 0x8013 :: GLenum
+
+pattern GL_CONVOLUTION_FILTER_BIAS_EXT = 0x8015 :: GLenum
+
+pattern GL_CONVOLUTION_FILTER_SCALE_EXT = 0x8014 :: GLenum
+
+pattern GL_CONVOLUTION_FORMAT_EXT = 0x8017 :: GLenum
+
+pattern GL_CONVOLUTION_HEIGHT_EXT = 0x8019 :: GLenum
+
+pattern GL_CONVOLUTION_WIDTH_EXT = 0x8018 :: GLenum
+
+pattern GL_MAX_CONVOLUTION_HEIGHT_EXT = 0x801B :: GLenum
+
+pattern GL_MAX_CONVOLUTION_WIDTH_EXT = 0x801A :: GLenum
+
+pattern GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x8023 :: GLenum
+
+pattern GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x801F :: GLenum
+
+pattern GL_POST_CONVOLUTION_BLUE_BIAS_EXT = 0x8022 :: GLenum
+
+pattern GL_POST_CONVOLUTION_BLUE_SCALE_EXT = 0x801E :: GLenum
+
+pattern GL_POST_CONVOLUTION_GREEN_BIAS_EXT = 0x8021 :: GLenum
+
+pattern GL_POST_CONVOLUTION_GREEN_SCALE_EXT = 0x801D :: GLenum
+
+pattern GL_POST_CONVOLUTION_RED_BIAS_EXT = 0x8020 :: GLenum
+
+pattern GL_POST_CONVOLUTION_RED_SCALE_EXT = 0x801C :: GLenum
+
+pattern GL_REDUCE_EXT = 0x8016 :: GLenum
+
+pattern GL_SEPARABLE_2D_EXT = 0x8012 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CoordinateFrame.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CoordinateFrame.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CoordinateFrame.hs
@@ -0,0 +1,259 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.CoordinateFrame (
+  -- * Extension Support
+    gl_EXT_coordinate_frame
+
+  -- * GL_EXT_coordinate_frame
+  , glBinormal3bEXT
+  , glBinormal3bvEXT
+  , glBinormal3dEXT
+  , glBinormal3dvEXT
+  , glBinormal3fEXT
+  , glBinormal3fvEXT
+  , glBinormal3iEXT
+  , glBinormal3ivEXT
+  , glBinormal3sEXT
+  , glBinormal3svEXT
+  , glBinormalPointerEXT
+  , glTangent3bEXT
+  , glTangent3bvEXT
+  , glTangent3dEXT
+  , glTangent3dvEXT
+  , glTangent3fEXT
+  , glTangent3fvEXT
+  , glTangent3iEXT
+  , glTangent3ivEXT
+  , glTangent3sEXT
+  , glTangent3svEXT
+  , glTangentPointerEXT
+  , pattern GL_BINORMAL_ARRAY_EXT
+  , pattern GL_BINORMAL_ARRAY_POINTER_EXT
+  , pattern GL_BINORMAL_ARRAY_STRIDE_EXT
+  , pattern GL_BINORMAL_ARRAY_TYPE_EXT
+  , pattern GL_CURRENT_BINORMAL_EXT
+  , pattern GL_CURRENT_TANGENT_EXT
+  , pattern GL_MAP1_BINORMAL_EXT
+  , pattern GL_MAP1_TANGENT_EXT
+  , pattern GL_MAP2_BINORMAL_EXT
+  , pattern GL_MAP2_TANGENT_EXT
+  , pattern GL_TANGENT_ARRAY_EXT
+  , pattern GL_TANGENT_ARRAY_POINTER_EXT
+  , pattern GL_TANGENT_ARRAY_STRIDE_EXT
+  , pattern GL_TANGENT_ARRAY_TYPE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_coordinate_frame :: Bool
+gl_EXT_coordinate_frame = member "GL_EXT_coordinate_frame" extensions
+
+glBinormal3bEXT :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
+glBinormal3bEXT = ffibytebytebyteIOV glBinormal3bEXTFunPtr
+
+glBinormal3bEXTFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
+glBinormal3bEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3bEXT")
+
+{-# NOINLINE glBinormal3bEXTFunPtr #-}
+
+glBinormal3bvEXT :: MonadIO m => Ptr GLbyte -> m ()
+glBinormal3bvEXT = ffiPtrbyteIOV glBinormal3bvEXTFunPtr
+
+glBinormal3bvEXTFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glBinormal3bvEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3bvEXT")
+
+{-# NOINLINE glBinormal3bvEXTFunPtr #-}
+
+glBinormal3dEXT :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
+glBinormal3dEXT = ffidoubledoubledoubleIOV glBinormal3dEXTFunPtr
+
+glBinormal3dEXTFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
+glBinormal3dEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3dEXT")
+
+{-# NOINLINE glBinormal3dEXTFunPtr #-}
+
+glBinormal3dvEXT :: MonadIO m => Ptr GLdouble -> m ()
+glBinormal3dvEXT = ffiPtrdoubleIOV glBinormal3dvEXTFunPtr
+
+glBinormal3dvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glBinormal3dvEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3dvEXT")
+
+{-# NOINLINE glBinormal3dvEXTFunPtr #-}
+
+glBinormal3fEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
+glBinormal3fEXT = ffifloatfloatfloatIOV glBinormal3fEXTFunPtr
+
+glBinormal3fEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
+glBinormal3fEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3fEXT")
+
+{-# NOINLINE glBinormal3fEXTFunPtr #-}
+
+glBinormal3fvEXT :: MonadIO m => Ptr GLfloat -> m ()
+glBinormal3fvEXT = ffiPtrfloatIOV glBinormal3fvEXTFunPtr
+
+glBinormal3fvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glBinormal3fvEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3fvEXT")
+
+{-# NOINLINE glBinormal3fvEXTFunPtr #-}
+
+glBinormal3iEXT :: MonadIO m => GLint -> GLint -> GLint -> m ()
+glBinormal3iEXT = ffiintintintIOV glBinormal3iEXTFunPtr
+
+glBinormal3iEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
+glBinormal3iEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3iEXT")
+
+{-# NOINLINE glBinormal3iEXTFunPtr #-}
+
+glBinormal3ivEXT :: MonadIO m => Ptr GLint -> m ()
+glBinormal3ivEXT = ffiPtrintIOV glBinormal3ivEXTFunPtr
+
+glBinormal3ivEXTFunPtr :: FunPtr (Ptr GLint -> IO ())
+glBinormal3ivEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3ivEXT")
+
+{-# NOINLINE glBinormal3ivEXTFunPtr #-}
+
+glBinormal3sEXT :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
+glBinormal3sEXT = ffishortshortshortIOV glBinormal3sEXTFunPtr
+
+glBinormal3sEXTFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
+glBinormal3sEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3sEXT")
+
+{-# NOINLINE glBinormal3sEXTFunPtr #-}
+
+glBinormal3svEXT :: MonadIO m => Ptr GLshort -> m ()
+glBinormal3svEXT = ffiPtrshortIOV glBinormal3svEXTFunPtr
+
+glBinormal3svEXTFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glBinormal3svEXTFunPtr = unsafePerformIO (getProcAddress "glBinormal3svEXT")
+
+{-# NOINLINE glBinormal3svEXTFunPtr #-}
+
+glBinormalPointerEXT :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
+glBinormalPointerEXT = ffienumsizeiPtrVIOV glBinormalPointerEXTFunPtr
+
+glBinormalPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
+glBinormalPointerEXTFunPtr = unsafePerformIO (getProcAddress "glBinormalPointerEXT")
+
+{-# NOINLINE glBinormalPointerEXTFunPtr #-}
+
+glTangent3bEXT :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
+glTangent3bEXT = ffibytebytebyteIOV glTangent3bEXTFunPtr
+
+glTangent3bEXTFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
+glTangent3bEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3bEXT")
+
+{-# NOINLINE glTangent3bEXTFunPtr #-}
+
+glTangent3bvEXT :: MonadIO m => Ptr GLbyte -> m ()
+glTangent3bvEXT = ffiPtrbyteIOV glTangent3bvEXTFunPtr
+
+glTangent3bvEXTFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glTangent3bvEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3bvEXT")
+
+{-# NOINLINE glTangent3bvEXTFunPtr #-}
+
+glTangent3dEXT :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
+glTangent3dEXT = ffidoubledoubledoubleIOV glTangent3dEXTFunPtr
+
+glTangent3dEXTFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
+glTangent3dEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3dEXT")
+
+{-# NOINLINE glTangent3dEXTFunPtr #-}
+
+glTangent3dvEXT :: MonadIO m => Ptr GLdouble -> m ()
+glTangent3dvEXT = ffiPtrdoubleIOV glTangent3dvEXTFunPtr
+
+glTangent3dvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glTangent3dvEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3dvEXT")
+
+{-# NOINLINE glTangent3dvEXTFunPtr #-}
+
+glTangent3fEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
+glTangent3fEXT = ffifloatfloatfloatIOV glTangent3fEXTFunPtr
+
+glTangent3fEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
+glTangent3fEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3fEXT")
+
+{-# NOINLINE glTangent3fEXTFunPtr #-}
+
+glTangent3fvEXT :: MonadIO m => Ptr GLfloat -> m ()
+glTangent3fvEXT = ffiPtrfloatIOV glTangent3fvEXTFunPtr
+
+glTangent3fvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glTangent3fvEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3fvEXT")
+
+{-# NOINLINE glTangent3fvEXTFunPtr #-}
+
+glTangent3iEXT :: MonadIO m => GLint -> GLint -> GLint -> m ()
+glTangent3iEXT = ffiintintintIOV glTangent3iEXTFunPtr
+
+glTangent3iEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
+glTangent3iEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3iEXT")
+
+{-# NOINLINE glTangent3iEXTFunPtr #-}
+
+glTangent3ivEXT :: MonadIO m => Ptr GLint -> m ()
+glTangent3ivEXT = ffiPtrintIOV glTangent3ivEXTFunPtr
+
+glTangent3ivEXTFunPtr :: FunPtr (Ptr GLint -> IO ())
+glTangent3ivEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3ivEXT")
+
+{-# NOINLINE glTangent3ivEXTFunPtr #-}
+
+glTangent3sEXT :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
+glTangent3sEXT = ffishortshortshortIOV glTangent3sEXTFunPtr
+
+glTangent3sEXTFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
+glTangent3sEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3sEXT")
+
+{-# NOINLINE glTangent3sEXTFunPtr #-}
+
+glTangent3svEXT :: MonadIO m => Ptr GLshort -> m ()
+glTangent3svEXT = ffiPtrshortIOV glTangent3svEXTFunPtr
+
+glTangent3svEXTFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glTangent3svEXTFunPtr = unsafePerformIO (getProcAddress "glTangent3svEXT")
+
+{-# NOINLINE glTangent3svEXTFunPtr #-}
+
+glTangentPointerEXT :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
+glTangentPointerEXT = ffienumsizeiPtrVIOV glTangentPointerEXTFunPtr
+
+glTangentPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
+glTangentPointerEXTFunPtr = unsafePerformIO (getProcAddress "glTangentPointerEXT")
+
+{-# NOINLINE glTangentPointerEXTFunPtr #-}
+
+pattern GL_BINORMAL_ARRAY_EXT = 0x843A :: GLenum
+
+pattern GL_BINORMAL_ARRAY_POINTER_EXT = 0x8443 :: GLenum
+
+pattern GL_BINORMAL_ARRAY_STRIDE_EXT = 0x8441 :: GLenum
+
+pattern GL_BINORMAL_ARRAY_TYPE_EXT = 0x8440 :: GLenum
+
+pattern GL_CURRENT_BINORMAL_EXT = 0x843C :: GLenum
+
+pattern GL_CURRENT_TANGENT_EXT = 0x843B :: GLenum
+
+pattern GL_MAP1_BINORMAL_EXT = 0x8446 :: GLenum
+
+pattern GL_MAP1_TANGENT_EXT = 0x8444 :: GLenum
+
+pattern GL_MAP2_BINORMAL_EXT = 0x8447 :: GLenum
+
+pattern GL_MAP2_TANGENT_EXT = 0x8445 :: GLenum
+
+pattern GL_TANGENT_ARRAY_EXT = 0x8439 :: GLenum
+
+pattern GL_TANGENT_ARRAY_POINTER_EXT = 0x8442 :: GLenum
+
+pattern GL_TANGENT_ARRAY_STRIDE_EXT = 0x843F :: GLenum
+
+pattern GL_TANGENT_ARRAY_TYPE_EXT = 0x843E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CopyImage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CopyImage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CopyImage.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.CopyImage (
+  -- * Extension Support
+    gl_EXT_copy_image
+
+  -- * GL_EXT_copy_image
+  , glCopyImageSubDataEXT
+) 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_EXT_copy_image :: Bool
+gl_EXT_copy_image = member "GL_EXT_copy_image" extensions
+
+glCopyImageSubDataEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> m ()
+glCopyImageSubDataEXT = ffiuintenumintintintintuintenumintintintintsizeisizeisizeiIOV glCopyImageSubDataEXTFunPtr
+
+glCopyImageSubDataEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ())
+glCopyImageSubDataEXTFunPtr = unsafePerformIO (getProcAddress "glCopyImageSubDataEXT")
+
+{-# NOINLINE glCopyImageSubDataEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CopyTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CopyTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CopyTexture.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.CopyTexture (
+  -- * Extension Support
+    gl_EXT_copy_texture
+
+  -- * GL_EXT_copy_texture
+  , glCopyTexImage1DEXT
+  , glCopyTexImage2DEXT
+  , glCopyTexSubImage1DEXT
+  , glCopyTexSubImage2DEXT
+  , glCopyTexSubImage3DEXT
+) 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_EXT_copy_texture :: Bool
+gl_EXT_copy_texture = member "GL_EXT_copy_texture" extensions
+
+glCopyTexImage1DEXT :: MonadIO m => GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> m ()
+glCopyTexImage1DEXT = ffienumintenumintintsizeiintIOV glCopyTexImage1DEXTFunPtr
+
+glCopyTexImage1DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ())
+glCopyTexImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTexImage1DEXT")
+
+{-# NOINLINE glCopyTexImage1DEXTFunPtr #-}
+
+glCopyTexImage2DEXT :: MonadIO m => GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+glCopyTexImage2DEXT = ffienumintenumintintsizeisizeiintIOV glCopyTexImage2DEXTFunPtr
+
+glCopyTexImage2DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ())
+glCopyTexImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTexImage2DEXT")
+
+{-# NOINLINE glCopyTexImage2DEXTFunPtr #-}
+
+glCopyTexSubImage1DEXT :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
+glCopyTexSubImage1DEXT = ffienumintintintintsizeiIOV glCopyTexSubImage1DEXTFunPtr
+
+glCopyTexSubImage1DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ())
+glCopyTexSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTexSubImage1DEXT")
+
+{-# NOINLINE glCopyTexSubImage1DEXTFunPtr #-}
+
+glCopyTexSubImage2DEXT :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyTexSubImage2DEXT = ffienumintintintintintsizeisizeiIOV glCopyTexSubImage2DEXTFunPtr
+
+glCopyTexSubImage2DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyTexSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTexSubImage2DEXT")
+
+{-# NOINLINE glCopyTexSubImage2DEXTFunPtr #-}
+
+glCopyTexSubImage3DEXT :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyTexSubImage3DEXT = ffienumintintintintintintsizeisizeiIOV glCopyTexSubImage3DEXTFunPtr
+
+glCopyTexSubImage3DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyTexSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTexSubImage3DEXT")
+
+{-# NOINLINE glCopyTexSubImage3DEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CullVertex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CullVertex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/CullVertex.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.CullVertex (
+  -- * Extension Support
+    gl_EXT_cull_vertex
+
+  -- * GL_EXT_cull_vertex
+  , glCullParameterdvEXT
+  , glCullParameterfvEXT
+  , pattern GL_CULL_VERTEX_EXT
+  , pattern GL_CULL_VERTEX_EYE_POSITION_EXT
+  , pattern GL_CULL_VERTEX_OBJECT_POSITION_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.Types
+import System.IO.Unsafe
+
+gl_EXT_cull_vertex :: Bool
+gl_EXT_cull_vertex = member "GL_EXT_cull_vertex" extensions
+
+glCullParameterdvEXT :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glCullParameterdvEXT = ffienumPtrdoubleIOV glCullParameterdvEXTFunPtr
+
+glCullParameterdvEXTFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glCullParameterdvEXTFunPtr = unsafePerformIO (getProcAddress "glCullParameterdvEXT")
+
+{-# NOINLINE glCullParameterdvEXTFunPtr #-}
+
+glCullParameterfvEXT :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glCullParameterfvEXT = ffienumPtrfloatIOV glCullParameterfvEXTFunPtr
+
+glCullParameterfvEXTFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glCullParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glCullParameterfvEXT")
+
+{-# NOINLINE glCullParameterfvEXTFunPtr #-}
+
+pattern GL_CULL_VERTEX_EXT = 0x81AA :: GLenum
+
+pattern GL_CULL_VERTEX_EYE_POSITION_EXT = 0x81AB :: GLenum
+
+pattern GL_CULL_VERTEX_OBJECT_POSITION_EXT = 0x81AC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DebugLabel.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DebugLabel.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DebugLabel.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DebugLabel (
+  -- * Extension Support
+    gl_EXT_debug_label
+
+  -- * GL_EXT_debug_label
+  , glGetObjectLabelEXT
+  , glLabelObjectEXT
+  , pattern GL_BUFFER_OBJECT_EXT
+  , pattern GL_PROGRAM_OBJECT_EXT
+  , pattern GL_PROGRAM_PIPELINE_OBJECT_EXT
+  , pattern GL_QUERY_OBJECT_EXT
+  , pattern GL_SAMPLER
+  , pattern GL_SHADER_OBJECT_EXT
+  , pattern GL_TRANSFORM_FEEDBACK
+  , pattern GL_VERTEX_ARRAY_OBJECT_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_debug_label :: Bool
+gl_EXT_debug_label = member "GL_EXT_debug_label" extensions
+
+glGetObjectLabelEXT :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetObjectLabelEXT = ffienumuintsizeiPtrsizeiPtrcharIOV glGetObjectLabelEXTFunPtr
+
+glGetObjectLabelEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetObjectLabelEXTFunPtr = unsafePerformIO (getProcAddress "glGetObjectLabelEXT")
+
+{-# NOINLINE glGetObjectLabelEXTFunPtr #-}
+
+glLabelObjectEXT :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
+glLabelObjectEXT = ffienumuintsizeiPtrcharIOV glLabelObjectEXTFunPtr
+
+glLabelObjectEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ())
+glLabelObjectEXTFunPtr = unsafePerformIO (getProcAddress "glLabelObjectEXT")
+
+{-# NOINLINE glLabelObjectEXTFunPtr #-}
+
+pattern GL_BUFFER_OBJECT_EXT = 0x9151 :: GLenum
+
+pattern GL_PROGRAM_OBJECT_EXT = 0x8B40 :: GLenum
+
+pattern GL_PROGRAM_PIPELINE_OBJECT_EXT = 0x8A4F :: GLenum
+
+pattern GL_QUERY_OBJECT_EXT = 0x9153 :: GLenum
+
+pattern GL_SHADER_OBJECT_EXT = 0x8B48 :: GLenum
+
+pattern GL_VERTEX_ARRAY_OBJECT_EXT = 0x9154 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DebugMarker.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DebugMarker.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DebugMarker.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DebugMarker (
+  -- * Extension Support
+    gl_EXT_debug_marker
+
+  -- * GL_EXT_debug_marker
+  , glInsertEventMarkerEXT
+  , glPopGroupMarkerEXT
+  , glPushGroupMarkerEXT
+) 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_EXT_debug_marker :: Bool
+gl_EXT_debug_marker = member "GL_EXT_debug_marker" extensions
+
+glInsertEventMarkerEXT :: MonadIO m => GLsizei -> Ptr GLchar -> m ()
+glInsertEventMarkerEXT = ffisizeiPtrcharIOV glInsertEventMarkerEXTFunPtr
+
+glInsertEventMarkerEXTFunPtr :: FunPtr (GLsizei -> Ptr GLchar -> IO ())
+glInsertEventMarkerEXTFunPtr = unsafePerformIO (getProcAddress "glInsertEventMarkerEXT")
+
+{-# NOINLINE glInsertEventMarkerEXTFunPtr #-}
+
+glPopGroupMarkerEXT :: MonadIO m => m ()
+glPopGroupMarkerEXT = ffiIOV glPopGroupMarkerEXTFunPtr
+
+glPopGroupMarkerEXTFunPtr :: FunPtr (IO ())
+glPopGroupMarkerEXTFunPtr = unsafePerformIO (getProcAddress "glPopGroupMarkerEXT")
+
+{-# NOINLINE glPopGroupMarkerEXTFunPtr #-}
+
+glPushGroupMarkerEXT :: MonadIO m => GLsizei -> Ptr GLchar -> m ()
+glPushGroupMarkerEXT = ffisizeiPtrcharIOV glPushGroupMarkerEXTFunPtr
+
+glPushGroupMarkerEXTFunPtr :: FunPtr (GLsizei -> Ptr GLchar -> IO ())
+glPushGroupMarkerEXTFunPtr = unsafePerformIO (getProcAddress "glPushGroupMarkerEXT")
+
+{-# NOINLINE glPushGroupMarkerEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DepthBoundsTest.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DepthBoundsTest.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DepthBoundsTest.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DepthBoundsTest (
+  -- * Extension Support
+    gl_EXT_depth_bounds_test
+
+  -- * GL_EXT_depth_bounds_test
+  , glDepthBoundsEXT
+  , pattern GL_DEPTH_BOUNDS_EXT
+  , pattern GL_DEPTH_BOUNDS_TEST_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.Types
+import System.IO.Unsafe
+
+gl_EXT_depth_bounds_test :: Bool
+gl_EXT_depth_bounds_test = member "GL_EXT_depth_bounds_test" extensions
+
+glDepthBoundsEXT :: MonadIO m => GLclampd -> GLclampd -> m ()
+glDepthBoundsEXT = fficlampdclampdIOV glDepthBoundsEXTFunPtr
+
+glDepthBoundsEXTFunPtr :: FunPtr (GLclampd -> GLclampd -> IO ())
+glDepthBoundsEXTFunPtr = unsafePerformIO (getProcAddress "glDepthBoundsEXT")
+
+{-# NOINLINE glDepthBoundsEXTFunPtr #-}
+
+pattern GL_DEPTH_BOUNDS_EXT = 0x8891 :: GLenum
+
+pattern GL_DEPTH_BOUNDS_TEST_EXT = 0x8890 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DirectStateAccess.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DirectStateAccess.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DirectStateAccess.hs
@@ -0,0 +1,1996 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DirectStateAccess (
+  -- * Extension Support
+    gl_EXT_direct_state_access
+
+  -- * GL_EXT_direct_state_access
+  , glBindMultiTextureEXT
+  , glCheckNamedFramebufferStatusEXT
+  , glClearNamedBufferDataEXT
+  , glClearNamedBufferSubDataEXT
+  , glClientAttribDefaultEXT
+  , glCompressedMultiTexImage1DEXT
+  , glCompressedMultiTexImage2DEXT
+  , glCompressedMultiTexImage3DEXT
+  , glCompressedMultiTexSubImage1DEXT
+  , glCompressedMultiTexSubImage2DEXT
+  , glCompressedMultiTexSubImage3DEXT
+  , glCompressedTextureImage1DEXT
+  , glCompressedTextureImage2DEXT
+  , glCompressedTextureImage3DEXT
+  , glCompressedTextureSubImage1DEXT
+  , glCompressedTextureSubImage2DEXT
+  , glCompressedTextureSubImage3DEXT
+  , glCopyMultiTexImage1DEXT
+  , glCopyMultiTexImage2DEXT
+  , glCopyMultiTexSubImage1DEXT
+  , glCopyMultiTexSubImage2DEXT
+  , glCopyMultiTexSubImage3DEXT
+  , glCopyTextureImage1DEXT
+  , glCopyTextureImage2DEXT
+  , glCopyTextureSubImage1DEXT
+  , glCopyTextureSubImage2DEXT
+  , glCopyTextureSubImage3DEXT
+  , glDisableClientStateIndexedEXT
+  , glDisableClientStateiEXT
+  , glDisableIndexedEXT
+  , glDisableVertexArrayAttribEXT
+  , glDisableVertexArrayEXT
+  , glEnableClientStateIndexedEXT
+  , glEnableClientStateiEXT
+  , glEnableIndexedEXT
+  , glEnableVertexArrayAttribEXT
+  , glEnableVertexArrayEXT
+  , glFlushMappedNamedBufferRangeEXT
+  , glFramebufferDrawBufferEXT
+  , glFramebufferDrawBuffersEXT
+  , glFramebufferReadBufferEXT
+  , glGenerateMultiTexMipmapEXT
+  , glGenerateTextureMipmapEXT
+  , glGetBooleanIndexedvEXT
+  , glGetCompressedMultiTexImageEXT
+  , glGetCompressedTextureImageEXT
+  , glGetDoubleIndexedvEXT
+  , glGetDoublei_vEXT
+  , glGetFloatIndexedvEXT
+  , glGetFloati_vEXT
+  , glGetFramebufferParameterivEXT
+  , glGetIntegerIndexedvEXT
+  , glGetMultiTexEnvfvEXT
+  , glGetMultiTexEnvivEXT
+  , glGetMultiTexGendvEXT
+  , glGetMultiTexGenfvEXT
+  , glGetMultiTexGenivEXT
+  , glGetMultiTexImageEXT
+  , glGetMultiTexLevelParameterfvEXT
+  , glGetMultiTexLevelParameterivEXT
+  , glGetMultiTexParameterIivEXT
+  , glGetMultiTexParameterIuivEXT
+  , glGetMultiTexParameterfvEXT
+  , glGetMultiTexParameterivEXT
+  , glGetNamedBufferParameterivEXT
+  , glGetNamedBufferPointervEXT
+  , glGetNamedBufferSubDataEXT
+  , glGetNamedFramebufferAttachmentParameterivEXT
+  , glGetNamedFramebufferParameterivEXT
+  , glGetNamedProgramLocalParameterIivEXT
+  , glGetNamedProgramLocalParameterIuivEXT
+  , glGetNamedProgramLocalParameterdvEXT
+  , glGetNamedProgramLocalParameterfvEXT
+  , glGetNamedProgramStringEXT
+  , glGetNamedProgramivEXT
+  , glGetNamedRenderbufferParameterivEXT
+  , glGetPointerIndexedvEXT
+  , glGetPointeri_vEXT
+  , glGetTextureImageEXT
+  , glGetTextureLevelParameterfvEXT
+  , glGetTextureLevelParameterivEXT
+  , glGetTextureParameterIivEXT
+  , glGetTextureParameterIuivEXT
+  , glGetTextureParameterfvEXT
+  , glGetTextureParameterivEXT
+  , glGetVertexArrayIntegeri_vEXT
+  , glGetVertexArrayIntegervEXT
+  , glGetVertexArrayPointeri_vEXT
+  , glGetVertexArrayPointervEXT
+  , glIsEnabledIndexedEXT
+  , glMapNamedBufferEXT
+  , glMapNamedBufferRangeEXT
+  , glMatrixFrustumEXT
+  , glMatrixLoadIdentityEXT
+  , glMatrixLoadTransposedEXT
+  , glMatrixLoadTransposefEXT
+  , glMatrixLoaddEXT
+  , glMatrixLoadfEXT
+  , glMatrixMultTransposedEXT
+  , glMatrixMultTransposefEXT
+  , glMatrixMultdEXT
+  , glMatrixMultfEXT
+  , glMatrixOrthoEXT
+  , glMatrixPopEXT
+  , glMatrixPushEXT
+  , glMatrixRotatedEXT
+  , glMatrixRotatefEXT
+  , glMatrixScaledEXT
+  , glMatrixScalefEXT
+  , glMatrixTranslatedEXT
+  , glMatrixTranslatefEXT
+  , glMultiTexBufferEXT
+  , glMultiTexCoordPointerEXT
+  , glMultiTexEnvfEXT
+  , glMultiTexEnvfvEXT
+  , glMultiTexEnviEXT
+  , glMultiTexEnvivEXT
+  , glMultiTexGendEXT
+  , glMultiTexGendvEXT
+  , glMultiTexGenfEXT
+  , glMultiTexGenfvEXT
+  , glMultiTexGeniEXT
+  , glMultiTexGenivEXT
+  , glMultiTexImage1DEXT
+  , glMultiTexImage2DEXT
+  , glMultiTexImage3DEXT
+  , glMultiTexParameterIivEXT
+  , glMultiTexParameterIuivEXT
+  , glMultiTexParameterfEXT
+  , glMultiTexParameterfvEXT
+  , glMultiTexParameteriEXT
+  , glMultiTexParameterivEXT
+  , glMultiTexRenderbufferEXT
+  , glMultiTexSubImage1DEXT
+  , glMultiTexSubImage2DEXT
+  , glMultiTexSubImage3DEXT
+  , glNamedBufferDataEXT
+  , glNamedBufferStorageEXT
+  , glNamedBufferSubDataEXT
+  , glNamedCopyBufferSubDataEXT
+  , glNamedFramebufferParameteriEXT
+  , glNamedFramebufferRenderbufferEXT
+  , glNamedFramebufferTexture1DEXT
+  , glNamedFramebufferTexture2DEXT
+  , glNamedFramebufferTexture3DEXT
+  , glNamedFramebufferTextureEXT
+  , glNamedFramebufferTextureFaceEXT
+  , glNamedFramebufferTextureLayerEXT
+  , glNamedProgramLocalParameter4dEXT
+  , glNamedProgramLocalParameter4dvEXT
+  , glNamedProgramLocalParameter4fEXT
+  , glNamedProgramLocalParameter4fvEXT
+  , glNamedProgramLocalParameterI4iEXT
+  , glNamedProgramLocalParameterI4ivEXT
+  , glNamedProgramLocalParameterI4uiEXT
+  , glNamedProgramLocalParameterI4uivEXT
+  , glNamedProgramLocalParameters4fvEXT
+  , glNamedProgramLocalParametersI4ivEXT
+  , glNamedProgramLocalParametersI4uivEXT
+  , glNamedProgramStringEXT
+  , glNamedRenderbufferStorageEXT
+  , glNamedRenderbufferStorageMultisampleCoverageEXT
+  , glNamedRenderbufferStorageMultisampleEXT
+  , glProgramUniform1dEXT
+  , glProgramUniform1dvEXT
+  , glProgramUniform1fEXT
+  , glProgramUniform1fvEXT
+  , glProgramUniform1iEXT
+  , glProgramUniform1ivEXT
+  , glProgramUniform1uiEXT
+  , glProgramUniform1uivEXT
+  , glProgramUniform2dEXT
+  , glProgramUniform2dvEXT
+  , glProgramUniform2fEXT
+  , glProgramUniform2fvEXT
+  , glProgramUniform2iEXT
+  , glProgramUniform2ivEXT
+  , glProgramUniform2uiEXT
+  , glProgramUniform2uivEXT
+  , glProgramUniform3dEXT
+  , glProgramUniform3dvEXT
+  , glProgramUniform3fEXT
+  , glProgramUniform3fvEXT
+  , glProgramUniform3iEXT
+  , glProgramUniform3ivEXT
+  , glProgramUniform3uiEXT
+  , glProgramUniform3uivEXT
+  , glProgramUniform4dEXT
+  , glProgramUniform4dvEXT
+  , glProgramUniform4fEXT
+  , glProgramUniform4fvEXT
+  , glProgramUniform4iEXT
+  , glProgramUniform4ivEXT
+  , glProgramUniform4uiEXT
+  , glProgramUniform4uivEXT
+  , glProgramUniformMatrix2dvEXT
+  , glProgramUniformMatrix2fvEXT
+  , glProgramUniformMatrix2x3dvEXT
+  , glProgramUniformMatrix2x3fvEXT
+  , glProgramUniformMatrix2x4dvEXT
+  , glProgramUniformMatrix2x4fvEXT
+  , glProgramUniformMatrix3dvEXT
+  , glProgramUniformMatrix3fvEXT
+  , glProgramUniformMatrix3x2dvEXT
+  , glProgramUniformMatrix3x2fvEXT
+  , glProgramUniformMatrix3x4dvEXT
+  , glProgramUniformMatrix3x4fvEXT
+  , glProgramUniformMatrix4dvEXT
+  , glProgramUniformMatrix4fvEXT
+  , glProgramUniformMatrix4x2dvEXT
+  , glProgramUniformMatrix4x2fvEXT
+  , glProgramUniformMatrix4x3dvEXT
+  , glProgramUniformMatrix4x3fvEXT
+  , glPushClientAttribDefaultEXT
+  , glTextureBufferEXT
+  , glTextureBufferRangeEXT
+  , glTextureImage1DEXT
+  , glTextureImage2DEXT
+  , glTextureImage3DEXT
+  , glTexturePageCommitmentEXT
+  , glTextureParameterIivEXT
+  , glTextureParameterIuivEXT
+  , glTextureParameterfEXT
+  , glTextureParameterfvEXT
+  , glTextureParameteriEXT
+  , glTextureParameterivEXT
+  , glTextureRenderbufferEXT
+  , glTextureStorage1DEXT
+  , glTextureStorage2DEXT
+  , glTextureStorage2DMultisampleEXT
+  , glTextureStorage3DEXT
+  , glTextureStorage3DMultisampleEXT
+  , glTextureSubImage1DEXT
+  , glTextureSubImage2DEXT
+  , glTextureSubImage3DEXT
+  , glUnmapNamedBufferEXT
+  , glVertexArrayBindVertexBufferEXT
+  , glVertexArrayColorOffsetEXT
+  , glVertexArrayEdgeFlagOffsetEXT
+  , glVertexArrayFogCoordOffsetEXT
+  , glVertexArrayIndexOffsetEXT
+  , glVertexArrayMultiTexCoordOffsetEXT
+  , glVertexArrayNormalOffsetEXT
+  , glVertexArraySecondaryColorOffsetEXT
+  , glVertexArrayTexCoordOffsetEXT
+  , glVertexArrayVertexAttribBindingEXT
+  , glVertexArrayVertexAttribDivisorEXT
+  , glVertexArrayVertexAttribFormatEXT
+  , glVertexArrayVertexAttribIFormatEXT
+  , glVertexArrayVertexAttribIOffsetEXT
+  , glVertexArrayVertexAttribLFormatEXT
+  , glVertexArrayVertexAttribLOffsetEXT
+  , glVertexArrayVertexAttribOffsetEXT
+  , glVertexArrayVertexBindingDivisorEXT
+  , glVertexArrayVertexOffsetEXT
+  , pattern GL_PROGRAM_MATRIX_EXT
+  , pattern GL_PROGRAM_MATRIX_STACK_DEPTH_EXT
+  , pattern GL_TRANSPOSE_PROGRAM_MATRIX_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_direct_state_access :: Bool
+gl_EXT_direct_state_access = member "GL_EXT_direct_state_access" extensions
+
+glBindMultiTextureEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
+glBindMultiTextureEXT = ffienumenumuintIOV glBindMultiTextureEXTFunPtr
+
+glBindMultiTextureEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
+glBindMultiTextureEXTFunPtr = unsafePerformIO (getProcAddress "glBindMultiTextureEXT")
+
+{-# NOINLINE glBindMultiTextureEXTFunPtr #-}
+
+glCheckNamedFramebufferStatusEXT :: MonadIO m => GLuint -> GLenum -> m GLenum
+glCheckNamedFramebufferStatusEXT = ffiuintenumIOenum glCheckNamedFramebufferStatusEXTFunPtr
+
+glCheckNamedFramebufferStatusEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO GLenum)
+glCheckNamedFramebufferStatusEXTFunPtr = unsafePerformIO (getProcAddress "glCheckNamedFramebufferStatusEXT")
+
+{-# NOINLINE glCheckNamedFramebufferStatusEXTFunPtr #-}
+
+glClearNamedBufferDataEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+glClearNamedBufferDataEXT = ffiuintenumenumenumPtrVIOV glClearNamedBufferDataEXTFunPtr
+
+glClearNamedBufferDataEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
+glClearNamedBufferDataEXTFunPtr = unsafePerformIO (getProcAddress "glClearNamedBufferDataEXT")
+
+{-# NOINLINE glClearNamedBufferDataEXTFunPtr #-}
+
+glClearNamedBufferSubDataEXT :: MonadIO m => GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> m ()
+glClearNamedBufferSubDataEXT = ffiuintenumsizeiptrsizeiptrenumenumPtrVIOV glClearNamedBufferSubDataEXTFunPtr
+
+glClearNamedBufferSubDataEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ())
+glClearNamedBufferSubDataEXTFunPtr = unsafePerformIO (getProcAddress "glClearNamedBufferSubDataEXT")
+
+{-# NOINLINE glClearNamedBufferSubDataEXTFunPtr #-}
+
+glClientAttribDefaultEXT :: MonadIO m => GLbitfield -> m ()
+glClientAttribDefaultEXT = ffibitfieldIOV glClientAttribDefaultEXTFunPtr
+
+glClientAttribDefaultEXTFunPtr :: FunPtr (GLbitfield -> IO ())
+glClientAttribDefaultEXTFunPtr = unsafePerformIO (getProcAddress "glClientAttribDefaultEXT")
+
+{-# NOINLINE glClientAttribDefaultEXTFunPtr #-}
+
+glCompressedMultiTexImage1DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+glCompressedMultiTexImage1DEXT = ffienumenumintenumsizeiintsizeiPtrVIOV glCompressedMultiTexImage1DEXTFunPtr
+
+glCompressedMultiTexImage1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
+glCompressedMultiTexImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedMultiTexImage1DEXT")
+
+{-# NOINLINE glCompressedMultiTexImage1DEXTFunPtr #-}
+
+glCompressedMultiTexImage2DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+glCompressedMultiTexImage2DEXT = ffienumenumintenumsizeisizeiintsizeiPtrVIOV glCompressedMultiTexImage2DEXTFunPtr
+
+glCompressedMultiTexImage2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
+glCompressedMultiTexImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedMultiTexImage2DEXT")
+
+{-# NOINLINE glCompressedMultiTexImage2DEXTFunPtr #-}
+
+glCompressedMultiTexImage3DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+glCompressedMultiTexImage3DEXT = ffienumenumintenumsizeisizeisizeiintsizeiPtrVIOV glCompressedMultiTexImage3DEXTFunPtr
+
+glCompressedMultiTexImage3DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
+glCompressedMultiTexImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedMultiTexImage3DEXT")
+
+{-# NOINLINE glCompressedMultiTexImage3DEXTFunPtr #-}
+
+glCompressedMultiTexSubImage1DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+glCompressedMultiTexSubImage1DEXT = ffienumenumintintsizeienumsizeiPtrVIOV glCompressedMultiTexSubImage1DEXTFunPtr
+
+glCompressedMultiTexSubImage1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
+glCompressedMultiTexSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedMultiTexSubImage1DEXT")
+
+{-# NOINLINE glCompressedMultiTexSubImage1DEXTFunPtr #-}
+
+glCompressedMultiTexSubImage2DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+glCompressedMultiTexSubImage2DEXT = ffienumenumintintintsizeisizeienumsizeiPtrVIOV glCompressedMultiTexSubImage2DEXTFunPtr
+
+glCompressedMultiTexSubImage2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
+glCompressedMultiTexSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedMultiTexSubImage2DEXT")
+
+{-# NOINLINE glCompressedMultiTexSubImage2DEXTFunPtr #-}
+
+glCompressedMultiTexSubImage3DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+glCompressedMultiTexSubImage3DEXT = ffienumenumintintintintsizeisizeisizeienumsizeiPtrVIOV glCompressedMultiTexSubImage3DEXTFunPtr
+
+glCompressedMultiTexSubImage3DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
+glCompressedMultiTexSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedMultiTexSubImage3DEXT")
+
+{-# NOINLINE glCompressedMultiTexSubImage3DEXTFunPtr #-}
+
+glCompressedTextureImage1DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+glCompressedTextureImage1DEXT = ffiuintenumintenumsizeiintsizeiPtrVIOV glCompressedTextureImage1DEXTFunPtr
+
+glCompressedTextureImage1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
+glCompressedTextureImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureImage1DEXT")
+
+{-# NOINLINE glCompressedTextureImage1DEXTFunPtr #-}
+
+glCompressedTextureImage2DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+glCompressedTextureImage2DEXT = ffiuintenumintenumsizeisizeiintsizeiPtrVIOV glCompressedTextureImage2DEXTFunPtr
+
+glCompressedTextureImage2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
+glCompressedTextureImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureImage2DEXT")
+
+{-# NOINLINE glCompressedTextureImage2DEXTFunPtr #-}
+
+glCompressedTextureImage3DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+glCompressedTextureImage3DEXT = ffiuintenumintenumsizeisizeisizeiintsizeiPtrVIOV glCompressedTextureImage3DEXTFunPtr
+
+glCompressedTextureImage3DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
+glCompressedTextureImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureImage3DEXT")
+
+{-# NOINLINE glCompressedTextureImage3DEXTFunPtr #-}
+
+glCompressedTextureSubImage1DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+glCompressedTextureSubImage1DEXT = ffiuintenumintintsizeienumsizeiPtrVIOV glCompressedTextureSubImage1DEXTFunPtr
+
+glCompressedTextureSubImage1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
+glCompressedTextureSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage1DEXT")
+
+{-# NOINLINE glCompressedTextureSubImage1DEXTFunPtr #-}
+
+glCompressedTextureSubImage2DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+glCompressedTextureSubImage2DEXT = ffiuintenumintintintsizeisizeienumsizeiPtrVIOV glCompressedTextureSubImage2DEXTFunPtr
+
+glCompressedTextureSubImage2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
+glCompressedTextureSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage2DEXT")
+
+{-# NOINLINE glCompressedTextureSubImage2DEXTFunPtr #-}
+
+glCompressedTextureSubImage3DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+glCompressedTextureSubImage3DEXT = ffiuintenumintintintintsizeisizeisizeienumsizeiPtrVIOV glCompressedTextureSubImage3DEXTFunPtr
+
+glCompressedTextureSubImage3DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
+glCompressedTextureSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage3DEXT")
+
+{-# NOINLINE glCompressedTextureSubImage3DEXTFunPtr #-}
+
+glCopyMultiTexImage1DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> m ()
+glCopyMultiTexImage1DEXT = ffienumenumintenumintintsizeiintIOV glCopyMultiTexImage1DEXTFunPtr
+
+glCopyMultiTexImage1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ())
+glCopyMultiTexImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyMultiTexImage1DEXT")
+
+{-# NOINLINE glCopyMultiTexImage1DEXTFunPtr #-}
+
+glCopyMultiTexImage2DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+glCopyMultiTexImage2DEXT = ffienumenumintenumintintsizeisizeiintIOV glCopyMultiTexImage2DEXTFunPtr
+
+glCopyMultiTexImage2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ())
+glCopyMultiTexImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyMultiTexImage2DEXT")
+
+{-# NOINLINE glCopyMultiTexImage2DEXTFunPtr #-}
+
+glCopyMultiTexSubImage1DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
+glCopyMultiTexSubImage1DEXT = ffienumenumintintintintsizeiIOV glCopyMultiTexSubImage1DEXTFunPtr
+
+glCopyMultiTexSubImage1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ())
+glCopyMultiTexSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyMultiTexSubImage1DEXT")
+
+{-# NOINLINE glCopyMultiTexSubImage1DEXTFunPtr #-}
+
+glCopyMultiTexSubImage2DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyMultiTexSubImage2DEXT = ffienumenumintintintintintsizeisizeiIOV glCopyMultiTexSubImage2DEXTFunPtr
+
+glCopyMultiTexSubImage2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyMultiTexSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyMultiTexSubImage2DEXT")
+
+{-# NOINLINE glCopyMultiTexSubImage2DEXTFunPtr #-}
+
+glCopyMultiTexSubImage3DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyMultiTexSubImage3DEXT = ffienumenumintintintintintintsizeisizeiIOV glCopyMultiTexSubImage3DEXTFunPtr
+
+glCopyMultiTexSubImage3DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyMultiTexSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyMultiTexSubImage3DEXT")
+
+{-# NOINLINE glCopyMultiTexSubImage3DEXTFunPtr #-}
+
+glCopyTextureImage1DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> m ()
+glCopyTextureImage1DEXT = ffiuintenumintenumintintsizeiintIOV glCopyTextureImage1DEXTFunPtr
+
+glCopyTextureImage1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ())
+glCopyTextureImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTextureImage1DEXT")
+
+{-# NOINLINE glCopyTextureImage1DEXTFunPtr #-}
+
+glCopyTextureImage2DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+glCopyTextureImage2DEXT = ffiuintenumintenumintintsizeisizeiintIOV glCopyTextureImage2DEXTFunPtr
+
+glCopyTextureImage2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ())
+glCopyTextureImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTextureImage2DEXT")
+
+{-# NOINLINE glCopyTextureImage2DEXTFunPtr #-}
+
+glCopyTextureSubImage1DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
+glCopyTextureSubImage1DEXT = ffiuintenumintintintintsizeiIOV glCopyTextureSubImage1DEXTFunPtr
+
+glCopyTextureSubImage1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ())
+glCopyTextureSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage1DEXT")
+
+{-# NOINLINE glCopyTextureSubImage1DEXTFunPtr #-}
+
+glCopyTextureSubImage2DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyTextureSubImage2DEXT = ffiuintenumintintintintintsizeisizeiIOV glCopyTextureSubImage2DEXTFunPtr
+
+glCopyTextureSubImage2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyTextureSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage2DEXT")
+
+{-# NOINLINE glCopyTextureSubImage2DEXTFunPtr #-}
+
+glCopyTextureSubImage3DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyTextureSubImage3DEXT = ffiuintenumintintintintintintsizeisizeiIOV glCopyTextureSubImage3DEXTFunPtr
+
+glCopyTextureSubImage3DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyTextureSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage3DEXT")
+
+{-# NOINLINE glCopyTextureSubImage3DEXTFunPtr #-}
+
+glDisableClientStateIndexedEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glDisableClientStateIndexedEXT = ffienumuintIOV glDisableClientStateIndexedEXTFunPtr
+
+glDisableClientStateIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glDisableClientStateIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glDisableClientStateIndexedEXT")
+
+{-# NOINLINE glDisableClientStateIndexedEXTFunPtr #-}
+
+glDisableClientStateiEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glDisableClientStateiEXT = ffienumuintIOV glDisableClientStateiEXTFunPtr
+
+glDisableClientStateiEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glDisableClientStateiEXTFunPtr = unsafePerformIO (getProcAddress "glDisableClientStateiEXT")
+
+{-# NOINLINE glDisableClientStateiEXTFunPtr #-}
+
+glDisableVertexArrayAttribEXT :: MonadIO m => GLuint -> GLuint -> m ()
+glDisableVertexArrayAttribEXT = ffiuintuintIOV glDisableVertexArrayAttribEXTFunPtr
+
+glDisableVertexArrayAttribEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glDisableVertexArrayAttribEXTFunPtr = unsafePerformIO (getProcAddress "glDisableVertexArrayAttribEXT")
+
+{-# NOINLINE glDisableVertexArrayAttribEXTFunPtr #-}
+
+glDisableVertexArrayEXT :: MonadIO m => GLuint -> GLenum -> m ()
+glDisableVertexArrayEXT = ffiuintenumIOV glDisableVertexArrayEXTFunPtr
+
+glDisableVertexArrayEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glDisableVertexArrayEXTFunPtr = unsafePerformIO (getProcAddress "glDisableVertexArrayEXT")
+
+{-# NOINLINE glDisableVertexArrayEXTFunPtr #-}
+
+glEnableClientStateIndexedEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glEnableClientStateIndexedEXT = ffienumuintIOV glEnableClientStateIndexedEXTFunPtr
+
+glEnableClientStateIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glEnableClientStateIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glEnableClientStateIndexedEXT")
+
+{-# NOINLINE glEnableClientStateIndexedEXTFunPtr #-}
+
+glEnableClientStateiEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glEnableClientStateiEXT = ffienumuintIOV glEnableClientStateiEXTFunPtr
+
+glEnableClientStateiEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glEnableClientStateiEXTFunPtr = unsafePerformIO (getProcAddress "glEnableClientStateiEXT")
+
+{-# NOINLINE glEnableClientStateiEXTFunPtr #-}
+
+glEnableVertexArrayAttribEXT :: MonadIO m => GLuint -> GLuint -> m ()
+glEnableVertexArrayAttribEXT = ffiuintuintIOV glEnableVertexArrayAttribEXTFunPtr
+
+glEnableVertexArrayAttribEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glEnableVertexArrayAttribEXTFunPtr = unsafePerformIO (getProcAddress "glEnableVertexArrayAttribEXT")
+
+{-# NOINLINE glEnableVertexArrayAttribEXTFunPtr #-}
+
+glEnableVertexArrayEXT :: MonadIO m => GLuint -> GLenum -> m ()
+glEnableVertexArrayEXT = ffiuintenumIOV glEnableVertexArrayEXTFunPtr
+
+glEnableVertexArrayEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glEnableVertexArrayEXTFunPtr = unsafePerformIO (getProcAddress "glEnableVertexArrayEXT")
+
+{-# NOINLINE glEnableVertexArrayEXTFunPtr #-}
+
+glFlushMappedNamedBufferRangeEXT :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> m ()
+glFlushMappedNamedBufferRangeEXT = ffiuintintptrsizeiptrIOV glFlushMappedNamedBufferRangeEXTFunPtr
+
+glFlushMappedNamedBufferRangeEXTFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ())
+glFlushMappedNamedBufferRangeEXTFunPtr = unsafePerformIO (getProcAddress "glFlushMappedNamedBufferRangeEXT")
+
+{-# NOINLINE glFlushMappedNamedBufferRangeEXTFunPtr #-}
+
+glFramebufferDrawBufferEXT :: MonadIO m => GLuint -> GLenum -> m ()
+glFramebufferDrawBufferEXT = ffiuintenumIOV glFramebufferDrawBufferEXTFunPtr
+
+glFramebufferDrawBufferEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glFramebufferDrawBufferEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferDrawBufferEXT")
+
+{-# NOINLINE glFramebufferDrawBufferEXTFunPtr #-}
+
+glFramebufferDrawBuffersEXT :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> m ()
+glFramebufferDrawBuffersEXT = ffiuintsizeiPtrenumIOV glFramebufferDrawBuffersEXTFunPtr
+
+glFramebufferDrawBuffersEXTFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> IO ())
+glFramebufferDrawBuffersEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferDrawBuffersEXT")
+
+{-# NOINLINE glFramebufferDrawBuffersEXTFunPtr #-}
+
+glFramebufferReadBufferEXT :: MonadIO m => GLuint -> GLenum -> m ()
+glFramebufferReadBufferEXT = ffiuintenumIOV glFramebufferReadBufferEXTFunPtr
+
+glFramebufferReadBufferEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glFramebufferReadBufferEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferReadBufferEXT")
+
+{-# NOINLINE glFramebufferReadBufferEXTFunPtr #-}
+
+glGenerateMultiTexMipmapEXT :: MonadIO m => GLenum -> GLenum -> m ()
+glGenerateMultiTexMipmapEXT = ffienumenumIOV glGenerateMultiTexMipmapEXTFunPtr
+
+glGenerateMultiTexMipmapEXTFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glGenerateMultiTexMipmapEXTFunPtr = unsafePerformIO (getProcAddress "glGenerateMultiTexMipmapEXT")
+
+{-# NOINLINE glGenerateMultiTexMipmapEXTFunPtr #-}
+
+glGenerateTextureMipmapEXT :: MonadIO m => GLuint -> GLenum -> m ()
+glGenerateTextureMipmapEXT = ffiuintenumIOV glGenerateTextureMipmapEXTFunPtr
+
+glGenerateTextureMipmapEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glGenerateTextureMipmapEXTFunPtr = unsafePerformIO (getProcAddress "glGenerateTextureMipmapEXT")
+
+{-# NOINLINE glGenerateTextureMipmapEXTFunPtr #-}
+
+glGetCompressedMultiTexImageEXT :: MonadIO m => GLenum -> GLenum -> GLint -> Ptr () -> m ()
+glGetCompressedMultiTexImageEXT = ffienumenumintPtrVIOV glGetCompressedMultiTexImageEXTFunPtr
+
+glGetCompressedMultiTexImageEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> Ptr () -> IO ())
+glGetCompressedMultiTexImageEXTFunPtr = unsafePerformIO (getProcAddress "glGetCompressedMultiTexImageEXT")
+
+{-# NOINLINE glGetCompressedMultiTexImageEXTFunPtr #-}
+
+glGetCompressedTextureImageEXT :: MonadIO m => GLuint -> GLenum -> GLint -> Ptr () -> m ()
+glGetCompressedTextureImageEXT = ffiuintenumintPtrVIOV glGetCompressedTextureImageEXTFunPtr
+
+glGetCompressedTextureImageEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> Ptr () -> IO ())
+glGetCompressedTextureImageEXTFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTextureImageEXT")
+
+{-# NOINLINE glGetCompressedTextureImageEXTFunPtr #-}
+
+glGetDoubleIndexedvEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
+glGetDoubleIndexedvEXT = ffienumuintPtrdoubleIOV glGetDoubleIndexedvEXTFunPtr
+
+glGetDoubleIndexedvEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
+glGetDoubleIndexedvEXTFunPtr = unsafePerformIO (getProcAddress "glGetDoubleIndexedvEXT")
+
+{-# NOINLINE glGetDoubleIndexedvEXTFunPtr #-}
+
+glGetDoublei_vEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
+glGetDoublei_vEXT = ffienumuintPtrdoubleIOV glGetDoublei_vEXTFunPtr
+
+glGetDoublei_vEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
+glGetDoublei_vEXTFunPtr = unsafePerformIO (getProcAddress "glGetDoublei_vEXT")
+
+{-# NOINLINE glGetDoublei_vEXTFunPtr #-}
+
+glGetFloatIndexedvEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
+glGetFloatIndexedvEXT = ffienumuintPtrfloatIOV glGetFloatIndexedvEXTFunPtr
+
+glGetFloatIndexedvEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glGetFloatIndexedvEXTFunPtr = unsafePerformIO (getProcAddress "glGetFloatIndexedvEXT")
+
+{-# NOINLINE glGetFloatIndexedvEXTFunPtr #-}
+
+glGetFloati_vEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
+glGetFloati_vEXT = ffienumuintPtrfloatIOV glGetFloati_vEXTFunPtr
+
+glGetFloati_vEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glGetFloati_vEXTFunPtr = unsafePerformIO (getProcAddress "glGetFloati_vEXT")
+
+{-# NOINLINE glGetFloati_vEXTFunPtr #-}
+
+glGetFramebufferParameterivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetFramebufferParameterivEXT = ffiuintenumPtrintIOV glGetFramebufferParameterivEXTFunPtr
+
+glGetFramebufferParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetFramebufferParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferParameterivEXT")
+
+{-# NOINLINE glGetFramebufferParameterivEXTFunPtr #-}
+
+glGetMultiTexEnvfvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetMultiTexEnvfvEXT = ffienumenumenumPtrfloatIOV glGetMultiTexEnvfvEXTFunPtr
+
+glGetMultiTexEnvfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetMultiTexEnvfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexEnvfvEXT")
+
+{-# NOINLINE glGetMultiTexEnvfvEXTFunPtr #-}
+
+glGetMultiTexEnvivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetMultiTexEnvivEXT = ffienumenumenumPtrintIOV glGetMultiTexEnvivEXTFunPtr
+
+glGetMultiTexEnvivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetMultiTexEnvivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexEnvivEXT")
+
+{-# NOINLINE glGetMultiTexEnvivEXTFunPtr #-}
+
+glGetMultiTexGendvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLdouble -> m ()
+glGetMultiTexGendvEXT = ffienumenumenumPtrdoubleIOV glGetMultiTexGendvEXTFunPtr
+
+glGetMultiTexGendvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLdouble -> IO ())
+glGetMultiTexGendvEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexGendvEXT")
+
+{-# NOINLINE glGetMultiTexGendvEXTFunPtr #-}
+
+glGetMultiTexGenfvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetMultiTexGenfvEXT = ffienumenumenumPtrfloatIOV glGetMultiTexGenfvEXTFunPtr
+
+glGetMultiTexGenfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetMultiTexGenfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexGenfvEXT")
+
+{-# NOINLINE glGetMultiTexGenfvEXTFunPtr #-}
+
+glGetMultiTexGenivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetMultiTexGenivEXT = ffienumenumenumPtrintIOV glGetMultiTexGenivEXTFunPtr
+
+glGetMultiTexGenivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetMultiTexGenivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexGenivEXT")
+
+{-# NOINLINE glGetMultiTexGenivEXTFunPtr #-}
+
+glGetMultiTexImageEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glGetMultiTexImageEXT = ffienumenumintenumenumPtrVIOV glGetMultiTexImageEXTFunPtr
+
+glGetMultiTexImageEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetMultiTexImageEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexImageEXT")
+
+{-# NOINLINE glGetMultiTexImageEXTFunPtr #-}
+
+glGetMultiTexLevelParameterfvEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> m ()
+glGetMultiTexLevelParameterfvEXT = ffienumenumintenumPtrfloatIOV glGetMultiTexLevelParameterfvEXTFunPtr
+
+glGetMultiTexLevelParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ())
+glGetMultiTexLevelParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexLevelParameterfvEXT")
+
+{-# NOINLINE glGetMultiTexLevelParameterfvEXTFunPtr #-}
+
+glGetMultiTexLevelParameterivEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
+glGetMultiTexLevelParameterivEXT = ffienumenumintenumPtrintIOV glGetMultiTexLevelParameterivEXTFunPtr
+
+glGetMultiTexLevelParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ())
+glGetMultiTexLevelParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexLevelParameterivEXT")
+
+{-# NOINLINE glGetMultiTexLevelParameterivEXTFunPtr #-}
+
+glGetMultiTexParameterIivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetMultiTexParameterIivEXT = ffienumenumenumPtrintIOV glGetMultiTexParameterIivEXTFunPtr
+
+glGetMultiTexParameterIivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetMultiTexParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexParameterIivEXT")
+
+{-# NOINLINE glGetMultiTexParameterIivEXTFunPtr #-}
+
+glGetMultiTexParameterIuivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLuint -> m ()
+glGetMultiTexParameterIuivEXT = ffienumenumenumPtruintIOV glGetMultiTexParameterIuivEXTFunPtr
+
+glGetMultiTexParameterIuivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLuint -> IO ())
+glGetMultiTexParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexParameterIuivEXT")
+
+{-# NOINLINE glGetMultiTexParameterIuivEXTFunPtr #-}
+
+glGetMultiTexParameterfvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetMultiTexParameterfvEXT = ffienumenumenumPtrfloatIOV glGetMultiTexParameterfvEXTFunPtr
+
+glGetMultiTexParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetMultiTexParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexParameterfvEXT")
+
+{-# NOINLINE glGetMultiTexParameterfvEXTFunPtr #-}
+
+glGetMultiTexParameterivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetMultiTexParameterivEXT = ffienumenumenumPtrintIOV glGetMultiTexParameterivEXTFunPtr
+
+glGetMultiTexParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetMultiTexParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMultiTexParameterivEXT")
+
+{-# NOINLINE glGetMultiTexParameterivEXTFunPtr #-}
+
+glGetNamedBufferParameterivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetNamedBufferParameterivEXT = ffiuintenumPtrintIOV glGetNamedBufferParameterivEXTFunPtr
+
+glGetNamedBufferParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetNamedBufferParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferParameterivEXT")
+
+{-# NOINLINE glGetNamedBufferParameterivEXTFunPtr #-}
+
+glGetNamedBufferPointervEXT :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
+glGetNamedBufferPointervEXT = ffiuintenumPtrVIOV glGetNamedBufferPointervEXTFunPtr
+
+glGetNamedBufferPointervEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
+glGetNamedBufferPointervEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferPointervEXT")
+
+{-# NOINLINE glGetNamedBufferPointervEXTFunPtr #-}
+
+glGetNamedBufferSubDataEXT :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
+glGetNamedBufferSubDataEXT = ffiuintintptrsizeiptrPtrVIOV glGetNamedBufferSubDataEXTFunPtr
+
+glGetNamedBufferSubDataEXTFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
+glGetNamedBufferSubDataEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferSubDataEXT")
+
+{-# NOINLINE glGetNamedBufferSubDataEXTFunPtr #-}
+
+glGetNamedFramebufferAttachmentParameterivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetNamedFramebufferAttachmentParameterivEXT = ffiuintenumenumPtrintIOV glGetNamedFramebufferAttachmentParameterivEXTFunPtr
+
+glGetNamedFramebufferAttachmentParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetNamedFramebufferAttachmentParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedFramebufferAttachmentParameterivEXT")
+
+{-# NOINLINE glGetNamedFramebufferAttachmentParameterivEXTFunPtr #-}
+
+glGetNamedFramebufferParameterivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetNamedFramebufferParameterivEXT = ffiuintenumPtrintIOV glGetNamedFramebufferParameterivEXTFunPtr
+
+glGetNamedFramebufferParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetNamedFramebufferParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedFramebufferParameterivEXT")
+
+{-# NOINLINE glGetNamedFramebufferParameterivEXTFunPtr #-}
+
+glGetNamedProgramLocalParameterIivEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLint -> m ()
+glGetNamedProgramLocalParameterIivEXT = ffiuintenumuintPtrintIOV glGetNamedProgramLocalParameterIivEXTFunPtr
+
+glGetNamedProgramLocalParameterIivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint -> IO ())
+glGetNamedProgramLocalParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedProgramLocalParameterIivEXT")
+
+{-# NOINLINE glGetNamedProgramLocalParameterIivEXTFunPtr #-}
+
+glGetNamedProgramLocalParameterIuivEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLuint -> m ()
+glGetNamedProgramLocalParameterIuivEXT = ffiuintenumuintPtruintIOV glGetNamedProgramLocalParameterIuivEXTFunPtr
+
+glGetNamedProgramLocalParameterIuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLuint -> IO ())
+glGetNamedProgramLocalParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedProgramLocalParameterIuivEXT")
+
+{-# NOINLINE glGetNamedProgramLocalParameterIuivEXTFunPtr #-}
+
+glGetNamedProgramLocalParameterdvEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLdouble -> m ()
+glGetNamedProgramLocalParameterdvEXT = ffiuintenumuintPtrdoubleIOV glGetNamedProgramLocalParameterdvEXTFunPtr
+
+glGetNamedProgramLocalParameterdvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLdouble -> IO ())
+glGetNamedProgramLocalParameterdvEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedProgramLocalParameterdvEXT")
+
+{-# NOINLINE glGetNamedProgramLocalParameterdvEXTFunPtr #-}
+
+glGetNamedProgramLocalParameterfvEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLfloat -> m ()
+glGetNamedProgramLocalParameterfvEXT = ffiuintenumuintPtrfloatIOV glGetNamedProgramLocalParameterfvEXTFunPtr
+
+glGetNamedProgramLocalParameterfvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glGetNamedProgramLocalParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedProgramLocalParameterfvEXT")
+
+{-# NOINLINE glGetNamedProgramLocalParameterfvEXTFunPtr #-}
+
+glGetNamedProgramStringEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr () -> m ()
+glGetNamedProgramStringEXT = ffiuintenumenumPtrVIOV glGetNamedProgramStringEXTFunPtr
+
+glGetNamedProgramStringEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetNamedProgramStringEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedProgramStringEXT")
+
+{-# NOINLINE glGetNamedProgramStringEXTFunPtr #-}
+
+glGetNamedProgramivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetNamedProgramivEXT = ffiuintenumenumPtrintIOV glGetNamedProgramivEXTFunPtr
+
+glGetNamedProgramivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetNamedProgramivEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedProgramivEXT")
+
+{-# NOINLINE glGetNamedProgramivEXTFunPtr #-}
+
+glGetNamedRenderbufferParameterivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetNamedRenderbufferParameterivEXT = ffiuintenumPtrintIOV glGetNamedRenderbufferParameterivEXTFunPtr
+
+glGetNamedRenderbufferParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetNamedRenderbufferParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetNamedRenderbufferParameterivEXT")
+
+{-# NOINLINE glGetNamedRenderbufferParameterivEXTFunPtr #-}
+
+glGetPointerIndexedvEXT :: MonadIO m => GLenum -> GLuint -> Ptr () -> m ()
+glGetPointerIndexedvEXT = ffienumuintPtrVIOV glGetPointerIndexedvEXTFunPtr
+
+glGetPointerIndexedvEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr () -> IO ())
+glGetPointerIndexedvEXTFunPtr = unsafePerformIO (getProcAddress "glGetPointerIndexedvEXT")
+
+{-# NOINLINE glGetPointerIndexedvEXTFunPtr #-}
+
+glGetPointeri_vEXT :: MonadIO m => GLenum -> GLuint -> Ptr () -> m ()
+glGetPointeri_vEXT = ffienumuintPtrVIOV glGetPointeri_vEXTFunPtr
+
+glGetPointeri_vEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr () -> IO ())
+glGetPointeri_vEXTFunPtr = unsafePerformIO (getProcAddress "glGetPointeri_vEXT")
+
+{-# NOINLINE glGetPointeri_vEXTFunPtr #-}
+
+glGetTextureImageEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glGetTextureImageEXT = ffiuintenumintenumenumPtrVIOV glGetTextureImageEXTFunPtr
+
+glGetTextureImageEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetTextureImageEXTFunPtr = unsafePerformIO (getProcAddress "glGetTextureImageEXT")
+
+{-# NOINLINE glGetTextureImageEXTFunPtr #-}
+
+glGetTextureLevelParameterfvEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> m ()
+glGetTextureLevelParameterfvEXT = ffiuintenumintenumPtrfloatIOV glGetTextureLevelParameterfvEXTFunPtr
+
+glGetTextureLevelParameterfvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ())
+glGetTextureLevelParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetTextureLevelParameterfvEXT")
+
+{-# NOINLINE glGetTextureLevelParameterfvEXTFunPtr #-}
+
+glGetTextureLevelParameterivEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
+glGetTextureLevelParameterivEXT = ffiuintenumintenumPtrintIOV glGetTextureLevelParameterivEXTFunPtr
+
+glGetTextureLevelParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ())
+glGetTextureLevelParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTextureLevelParameterivEXT")
+
+{-# NOINLINE glGetTextureLevelParameterivEXTFunPtr #-}
+
+glGetTextureParameterIivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetTextureParameterIivEXT = ffiuintenumenumPtrintIOV glGetTextureParameterIivEXTFunPtr
+
+glGetTextureParameterIivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetTextureParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterIivEXT")
+
+{-# NOINLINE glGetTextureParameterIivEXTFunPtr #-}
+
+glGetTextureParameterIuivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLuint -> m ()
+glGetTextureParameterIuivEXT = ffiuintenumenumPtruintIOV glGetTextureParameterIuivEXTFunPtr
+
+glGetTextureParameterIuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLuint -> IO ())
+glGetTextureParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterIuivEXT")
+
+{-# NOINLINE glGetTextureParameterIuivEXTFunPtr #-}
+
+glGetTextureParameterfvEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetTextureParameterfvEXT = ffiuintenumenumPtrfloatIOV glGetTextureParameterfvEXTFunPtr
+
+glGetTextureParameterfvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetTextureParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterfvEXT")
+
+{-# NOINLINE glGetTextureParameterfvEXTFunPtr #-}
+
+glGetTextureParameterivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetTextureParameterivEXT = ffiuintenumenumPtrintIOV glGetTextureParameterivEXTFunPtr
+
+glGetTextureParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetTextureParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterivEXT")
+
+{-# NOINLINE glGetTextureParameterivEXTFunPtr #-}
+
+glGetVertexArrayIntegeri_vEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVertexArrayIntegeri_vEXT = ffiuintuintenumPtrintIOV glGetVertexArrayIntegeri_vEXTFunPtr
+
+glGetVertexArrayIntegeri_vEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVertexArrayIntegeri_vEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayIntegeri_vEXT")
+
+{-# NOINLINE glGetVertexArrayIntegeri_vEXTFunPtr #-}
+
+glGetVertexArrayIntegervEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVertexArrayIntegervEXT = ffiuintenumPtrintIOV glGetVertexArrayIntegervEXTFunPtr
+
+glGetVertexArrayIntegervEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVertexArrayIntegervEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayIntegervEXT")
+
+{-# NOINLINE glGetVertexArrayIntegervEXTFunPtr #-}
+
+glGetVertexArrayPointeri_vEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr () -> m ()
+glGetVertexArrayPointeri_vEXT = ffiuintuintenumPtrVIOV glGetVertexArrayPointeri_vEXTFunPtr
+
+glGetVertexArrayPointeri_vEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr () -> IO ())
+glGetVertexArrayPointeri_vEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayPointeri_vEXT")
+
+{-# NOINLINE glGetVertexArrayPointeri_vEXTFunPtr #-}
+
+glGetVertexArrayPointervEXT :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
+glGetVertexArrayPointervEXT = ffiuintenumPtrVIOV glGetVertexArrayPointervEXTFunPtr
+
+glGetVertexArrayPointervEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
+glGetVertexArrayPointervEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayPointervEXT")
+
+{-# NOINLINE glGetVertexArrayPointervEXTFunPtr #-}
+
+glMapNamedBufferEXT :: MonadIO m => GLuint -> GLenum -> m (Ptr ())
+glMapNamedBufferEXT = ffiuintenumIOPtrV glMapNamedBufferEXTFunPtr
+
+glMapNamedBufferEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO (Ptr ()))
+glMapNamedBufferEXTFunPtr = unsafePerformIO (getProcAddress "glMapNamedBufferEXT")
+
+{-# NOINLINE glMapNamedBufferEXTFunPtr #-}
+
+glMapNamedBufferRangeEXT :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
+glMapNamedBufferRangeEXT = ffiuintintptrsizeiptrbitfieldIOPtrV glMapNamedBufferRangeEXTFunPtr
+
+glMapNamedBufferRangeEXTFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ()))
+glMapNamedBufferRangeEXTFunPtr = unsafePerformIO (getProcAddress "glMapNamedBufferRangeEXT")
+
+{-# NOINLINE glMapNamedBufferRangeEXTFunPtr #-}
+
+glMatrixFrustumEXT :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glMatrixFrustumEXT = ffienumdoubledoubledoubledoubledoubledoubleIOV glMatrixFrustumEXTFunPtr
+
+glMatrixFrustumEXTFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glMatrixFrustumEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixFrustumEXT")
+
+{-# NOINLINE glMatrixFrustumEXTFunPtr #-}
+
+glMatrixLoadIdentityEXT :: MonadIO m => GLenum -> m ()
+glMatrixLoadIdentityEXT = ffienumIOV glMatrixLoadIdentityEXTFunPtr
+
+glMatrixLoadIdentityEXTFunPtr :: FunPtr (GLenum -> IO ())
+glMatrixLoadIdentityEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixLoadIdentityEXT")
+
+{-# NOINLINE glMatrixLoadIdentityEXTFunPtr #-}
+
+glMatrixLoadTransposedEXT :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMatrixLoadTransposedEXT = ffienumPtrdoubleIOV glMatrixLoadTransposedEXTFunPtr
+
+glMatrixLoadTransposedEXTFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMatrixLoadTransposedEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixLoadTransposedEXT")
+
+{-# NOINLINE glMatrixLoadTransposedEXTFunPtr #-}
+
+glMatrixLoadTransposefEXT :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixLoadTransposefEXT = ffienumPtrfloatIOV glMatrixLoadTransposefEXTFunPtr
+
+glMatrixLoadTransposefEXTFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixLoadTransposefEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixLoadTransposefEXT")
+
+{-# NOINLINE glMatrixLoadTransposefEXTFunPtr #-}
+
+glMatrixLoaddEXT :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMatrixLoaddEXT = ffienumPtrdoubleIOV glMatrixLoaddEXTFunPtr
+
+glMatrixLoaddEXTFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMatrixLoaddEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixLoaddEXT")
+
+{-# NOINLINE glMatrixLoaddEXTFunPtr #-}
+
+glMatrixLoadfEXT :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixLoadfEXT = ffienumPtrfloatIOV glMatrixLoadfEXTFunPtr
+
+glMatrixLoadfEXTFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixLoadfEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixLoadfEXT")
+
+{-# NOINLINE glMatrixLoadfEXTFunPtr #-}
+
+glMatrixMultTransposedEXT :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMatrixMultTransposedEXT = ffienumPtrdoubleIOV glMatrixMultTransposedEXTFunPtr
+
+glMatrixMultTransposedEXTFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMatrixMultTransposedEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixMultTransposedEXT")
+
+{-# NOINLINE glMatrixMultTransposedEXTFunPtr #-}
+
+glMatrixMultTransposefEXT :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixMultTransposefEXT = ffienumPtrfloatIOV glMatrixMultTransposefEXTFunPtr
+
+glMatrixMultTransposefEXTFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixMultTransposefEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixMultTransposefEXT")
+
+{-# NOINLINE glMatrixMultTransposefEXTFunPtr #-}
+
+glMatrixMultdEXT :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
+glMatrixMultdEXT = ffienumPtrdoubleIOV glMatrixMultdEXTFunPtr
+
+glMatrixMultdEXTFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
+glMatrixMultdEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixMultdEXT")
+
+{-# NOINLINE glMatrixMultdEXTFunPtr #-}
+
+glMatrixMultfEXT :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixMultfEXT = ffienumPtrfloatIOV glMatrixMultfEXTFunPtr
+
+glMatrixMultfEXTFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixMultfEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixMultfEXT")
+
+{-# NOINLINE glMatrixMultfEXTFunPtr #-}
+
+glMatrixOrthoEXT :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glMatrixOrthoEXT = ffienumdoubledoubledoubledoubledoubledoubleIOV glMatrixOrthoEXTFunPtr
+
+glMatrixOrthoEXTFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glMatrixOrthoEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixOrthoEXT")
+
+{-# NOINLINE glMatrixOrthoEXTFunPtr #-}
+
+glMatrixPopEXT :: MonadIO m => GLenum -> m ()
+glMatrixPopEXT = ffienumIOV glMatrixPopEXTFunPtr
+
+glMatrixPopEXTFunPtr :: FunPtr (GLenum -> IO ())
+glMatrixPopEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixPopEXT")
+
+{-# NOINLINE glMatrixPopEXTFunPtr #-}
+
+glMatrixPushEXT :: MonadIO m => GLenum -> m ()
+glMatrixPushEXT = ffienumIOV glMatrixPushEXTFunPtr
+
+glMatrixPushEXTFunPtr :: FunPtr (GLenum -> IO ())
+glMatrixPushEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixPushEXT")
+
+{-# NOINLINE glMatrixPushEXTFunPtr #-}
+
+glMatrixRotatedEXT :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glMatrixRotatedEXT = ffienumdoubledoubledoubledoubleIOV glMatrixRotatedEXTFunPtr
+
+glMatrixRotatedEXTFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glMatrixRotatedEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixRotatedEXT")
+
+{-# NOINLINE glMatrixRotatedEXTFunPtr #-}
+
+glMatrixRotatefEXT :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glMatrixRotatefEXT = ffienumfloatfloatfloatfloatIOV glMatrixRotatefEXTFunPtr
+
+glMatrixRotatefEXTFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glMatrixRotatefEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixRotatefEXT")
+
+{-# NOINLINE glMatrixRotatefEXTFunPtr #-}
+
+glMatrixScaledEXT :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
+glMatrixScaledEXT = ffienumdoubledoubledoubleIOV glMatrixScaledEXTFunPtr
+
+glMatrixScaledEXTFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glMatrixScaledEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixScaledEXT")
+
+{-# NOINLINE glMatrixScaledEXTFunPtr #-}
+
+glMatrixScalefEXT :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
+glMatrixScalefEXT = ffienumfloatfloatfloatIOV glMatrixScalefEXTFunPtr
+
+glMatrixScalefEXTFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glMatrixScalefEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixScalefEXT")
+
+{-# NOINLINE glMatrixScalefEXTFunPtr #-}
+
+glMatrixTranslatedEXT :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
+glMatrixTranslatedEXT = ffienumdoubledoubledoubleIOV glMatrixTranslatedEXTFunPtr
+
+glMatrixTranslatedEXTFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glMatrixTranslatedEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixTranslatedEXT")
+
+{-# NOINLINE glMatrixTranslatedEXTFunPtr #-}
+
+glMatrixTranslatefEXT :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
+glMatrixTranslatefEXT = ffienumfloatfloatfloatIOV glMatrixTranslatefEXTFunPtr
+
+glMatrixTranslatefEXTFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glMatrixTranslatefEXTFunPtr = unsafePerformIO (getProcAddress "glMatrixTranslatefEXT")
+
+{-# NOINLINE glMatrixTranslatefEXTFunPtr #-}
+
+glMultiTexBufferEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> m ()
+glMultiTexBufferEXT = ffienumenumenumuintIOV glMultiTexBufferEXTFunPtr
+
+glMultiTexBufferEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO ())
+glMultiTexBufferEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexBufferEXT")
+
+{-# NOINLINE glMultiTexBufferEXTFunPtr #-}
+
+glMultiTexCoordPointerEXT :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glMultiTexCoordPointerEXT = ffienumintenumsizeiPtrVIOV glMultiTexCoordPointerEXTFunPtr
+
+glMultiTexCoordPointerEXTFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glMultiTexCoordPointerEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordPointerEXT")
+
+{-# NOINLINE glMultiTexCoordPointerEXTFunPtr #-}
+
+glMultiTexEnvfEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLfloat -> m ()
+glMultiTexEnvfEXT = ffienumenumenumfloatIOV glMultiTexEnvfEXTFunPtr
+
+glMultiTexEnvfEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLfloat -> IO ())
+glMultiTexEnvfEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexEnvfEXT")
+
+{-# NOINLINE glMultiTexEnvfEXTFunPtr #-}
+
+glMultiTexEnvfvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glMultiTexEnvfvEXT = ffienumenumenumPtrfloatIOV glMultiTexEnvfvEXTFunPtr
+
+glMultiTexEnvfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glMultiTexEnvfvEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexEnvfvEXT")
+
+{-# NOINLINE glMultiTexEnvfvEXTFunPtr #-}
+
+glMultiTexEnviEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLint -> m ()
+glMultiTexEnviEXT = ffienumenumenumintIOV glMultiTexEnviEXTFunPtr
+
+glMultiTexEnviEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
+glMultiTexEnviEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexEnviEXT")
+
+{-# NOINLINE glMultiTexEnviEXTFunPtr #-}
+
+glMultiTexEnvivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glMultiTexEnvivEXT = ffienumenumenumPtrintIOV glMultiTexEnvivEXTFunPtr
+
+glMultiTexEnvivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glMultiTexEnvivEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexEnvivEXT")
+
+{-# NOINLINE glMultiTexEnvivEXTFunPtr #-}
+
+glMultiTexGendEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLdouble -> m ()
+glMultiTexGendEXT = ffienumenumenumdoubleIOV glMultiTexGendEXTFunPtr
+
+glMultiTexGendEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLdouble -> IO ())
+glMultiTexGendEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexGendEXT")
+
+{-# NOINLINE glMultiTexGendEXTFunPtr #-}
+
+glMultiTexGendvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLdouble -> m ()
+glMultiTexGendvEXT = ffienumenumenumPtrdoubleIOV glMultiTexGendvEXTFunPtr
+
+glMultiTexGendvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLdouble -> IO ())
+glMultiTexGendvEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexGendvEXT")
+
+{-# NOINLINE glMultiTexGendvEXTFunPtr #-}
+
+glMultiTexGenfEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLfloat -> m ()
+glMultiTexGenfEXT = ffienumenumenumfloatIOV glMultiTexGenfEXTFunPtr
+
+glMultiTexGenfEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLfloat -> IO ())
+glMultiTexGenfEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexGenfEXT")
+
+{-# NOINLINE glMultiTexGenfEXTFunPtr #-}
+
+glMultiTexGenfvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glMultiTexGenfvEXT = ffienumenumenumPtrfloatIOV glMultiTexGenfvEXTFunPtr
+
+glMultiTexGenfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glMultiTexGenfvEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexGenfvEXT")
+
+{-# NOINLINE glMultiTexGenfvEXTFunPtr #-}
+
+glMultiTexGeniEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLint -> m ()
+glMultiTexGeniEXT = ffienumenumenumintIOV glMultiTexGeniEXTFunPtr
+
+glMultiTexGeniEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
+glMultiTexGeniEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexGeniEXT")
+
+{-# NOINLINE glMultiTexGeniEXTFunPtr #-}
+
+glMultiTexGenivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glMultiTexGenivEXT = ffienumenumenumPtrintIOV glMultiTexGenivEXTFunPtr
+
+glMultiTexGenivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glMultiTexGenivEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexGenivEXT")
+
+{-# NOINLINE glMultiTexGenivEXTFunPtr #-}
+
+glMultiTexImage1DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glMultiTexImage1DEXT = ffienumenumintintsizeiintenumenumPtrVIOV glMultiTexImage1DEXTFunPtr
+
+glMultiTexImage1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glMultiTexImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexImage1DEXT")
+
+{-# NOINLINE glMultiTexImage1DEXTFunPtr #-}
+
+glMultiTexImage2DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glMultiTexImage2DEXT = ffienumenumintintsizeisizeiintenumenumPtrVIOV glMultiTexImage2DEXTFunPtr
+
+glMultiTexImage2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glMultiTexImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexImage2DEXT")
+
+{-# NOINLINE glMultiTexImage2DEXTFunPtr #-}
+
+glMultiTexImage3DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glMultiTexImage3DEXT = ffienumenumintintsizeisizeisizeiintenumenumPtrVIOV glMultiTexImage3DEXTFunPtr
+
+glMultiTexImage3DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glMultiTexImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexImage3DEXT")
+
+{-# NOINLINE glMultiTexImage3DEXTFunPtr #-}
+
+glMultiTexParameterIivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glMultiTexParameterIivEXT = ffienumenumenumPtrintIOV glMultiTexParameterIivEXTFunPtr
+
+glMultiTexParameterIivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glMultiTexParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexParameterIivEXT")
+
+{-# NOINLINE glMultiTexParameterIivEXTFunPtr #-}
+
+glMultiTexParameterIuivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLuint -> m ()
+glMultiTexParameterIuivEXT = ffienumenumenumPtruintIOV glMultiTexParameterIuivEXTFunPtr
+
+glMultiTexParameterIuivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLuint -> IO ())
+glMultiTexParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexParameterIuivEXT")
+
+{-# NOINLINE glMultiTexParameterIuivEXTFunPtr #-}
+
+glMultiTexParameterfEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLfloat -> m ()
+glMultiTexParameterfEXT = ffienumenumenumfloatIOV glMultiTexParameterfEXTFunPtr
+
+glMultiTexParameterfEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLfloat -> IO ())
+glMultiTexParameterfEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexParameterfEXT")
+
+{-# NOINLINE glMultiTexParameterfEXTFunPtr #-}
+
+glMultiTexParameterfvEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glMultiTexParameterfvEXT = ffienumenumenumPtrfloatIOV glMultiTexParameterfvEXTFunPtr
+
+glMultiTexParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glMultiTexParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexParameterfvEXT")
+
+{-# NOINLINE glMultiTexParameterfvEXTFunPtr #-}
+
+glMultiTexParameteriEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLint -> m ()
+glMultiTexParameteriEXT = ffienumenumenumintIOV glMultiTexParameteriEXTFunPtr
+
+glMultiTexParameteriEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
+glMultiTexParameteriEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexParameteriEXT")
+
+{-# NOINLINE glMultiTexParameteriEXTFunPtr #-}
+
+glMultiTexParameterivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glMultiTexParameterivEXT = ffienumenumenumPtrintIOV glMultiTexParameterivEXTFunPtr
+
+glMultiTexParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glMultiTexParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexParameterivEXT")
+
+{-# NOINLINE glMultiTexParameterivEXTFunPtr #-}
+
+glMultiTexRenderbufferEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
+glMultiTexRenderbufferEXT = ffienumenumuintIOV glMultiTexRenderbufferEXTFunPtr
+
+glMultiTexRenderbufferEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
+glMultiTexRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexRenderbufferEXT")
+
+{-# NOINLINE glMultiTexRenderbufferEXTFunPtr #-}
+
+glMultiTexSubImage1DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glMultiTexSubImage1DEXT = ffienumenumintintsizeienumenumPtrVIOV glMultiTexSubImage1DEXTFunPtr
+
+glMultiTexSubImage1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glMultiTexSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexSubImage1DEXT")
+
+{-# NOINLINE glMultiTexSubImage1DEXTFunPtr #-}
+
+glMultiTexSubImage2DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glMultiTexSubImage2DEXT = ffienumenumintintintsizeisizeienumenumPtrVIOV glMultiTexSubImage2DEXTFunPtr
+
+glMultiTexSubImage2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glMultiTexSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexSubImage2DEXT")
+
+{-# NOINLINE glMultiTexSubImage2DEXTFunPtr #-}
+
+glMultiTexSubImage3DEXT :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glMultiTexSubImage3DEXT = ffienumenumintintintintsizeisizeisizeienumenumPtrVIOV glMultiTexSubImage3DEXTFunPtr
+
+glMultiTexSubImage3DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glMultiTexSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glMultiTexSubImage3DEXT")
+
+{-# NOINLINE glMultiTexSubImage3DEXTFunPtr #-}
+
+glNamedBufferDataEXT :: MonadIO m => GLuint -> GLsizeiptr -> Ptr () -> GLenum -> m ()
+glNamedBufferDataEXT = ffiuintsizeiptrPtrVenumIOV glNamedBufferDataEXTFunPtr
+
+glNamedBufferDataEXTFunPtr :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ())
+glNamedBufferDataEXTFunPtr = unsafePerformIO (getProcAddress "glNamedBufferDataEXT")
+
+{-# NOINLINE glNamedBufferDataEXTFunPtr #-}
+
+glNamedBufferStorageEXT :: MonadIO m => GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
+glNamedBufferStorageEXT = ffiuintsizeiptrPtrVbitfieldIOV glNamedBufferStorageEXTFunPtr
+
+glNamedBufferStorageEXTFunPtr :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ())
+glNamedBufferStorageEXTFunPtr = unsafePerformIO (getProcAddress "glNamedBufferStorageEXT")
+
+{-# NOINLINE glNamedBufferStorageEXTFunPtr #-}
+
+glNamedBufferSubDataEXT :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
+glNamedBufferSubDataEXT = ffiuintintptrsizeiptrPtrVIOV glNamedBufferSubDataEXTFunPtr
+
+glNamedBufferSubDataEXTFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
+glNamedBufferSubDataEXTFunPtr = unsafePerformIO (getProcAddress "glNamedBufferSubDataEXT")
+
+{-# NOINLINE glNamedBufferSubDataEXTFunPtr #-}
+
+glNamedCopyBufferSubDataEXT :: MonadIO m => GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+glNamedCopyBufferSubDataEXT = ffiuintuintintptrintptrsizeiptrIOV glNamedCopyBufferSubDataEXTFunPtr
+
+glNamedCopyBufferSubDataEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ())
+glNamedCopyBufferSubDataEXTFunPtr = unsafePerformIO (getProcAddress "glNamedCopyBufferSubDataEXT")
+
+{-# NOINLINE glNamedCopyBufferSubDataEXTFunPtr #-}
+
+glNamedFramebufferParameteriEXT :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
+glNamedFramebufferParameteriEXT = ffiuintenumintIOV glNamedFramebufferParameteriEXTFunPtr
+
+glNamedFramebufferParameteriEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
+glNamedFramebufferParameteriEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferParameteriEXT")
+
+{-# NOINLINE glNamedFramebufferParameteriEXTFunPtr #-}
+
+glNamedFramebufferRenderbufferEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> m ()
+glNamedFramebufferRenderbufferEXT = ffiuintenumenumuintIOV glNamedFramebufferRenderbufferEXTFunPtr
+
+glNamedFramebufferRenderbufferEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ())
+glNamedFramebufferRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferRenderbufferEXT")
+
+{-# NOINLINE glNamedFramebufferRenderbufferEXTFunPtr #-}
+
+glNamedFramebufferTexture1DEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+glNamedFramebufferTexture1DEXT = ffiuintenumenumuintintIOV glNamedFramebufferTexture1DEXTFunPtr
+
+glNamedFramebufferTexture1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glNamedFramebufferTexture1DEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTexture1DEXT")
+
+{-# NOINLINE glNamedFramebufferTexture1DEXTFunPtr #-}
+
+glNamedFramebufferTexture2DEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+glNamedFramebufferTexture2DEXT = ffiuintenumenumuintintIOV glNamedFramebufferTexture2DEXTFunPtr
+
+glNamedFramebufferTexture2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glNamedFramebufferTexture2DEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTexture2DEXT")
+
+{-# NOINLINE glNamedFramebufferTexture2DEXTFunPtr #-}
+
+glNamedFramebufferTexture3DEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+glNamedFramebufferTexture3DEXT = ffiuintenumenumuintintintIOV glNamedFramebufferTexture3DEXTFunPtr
+
+glNamedFramebufferTexture3DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
+glNamedFramebufferTexture3DEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTexture3DEXT")
+
+{-# NOINLINE glNamedFramebufferTexture3DEXTFunPtr #-}
+
+glNamedFramebufferTextureEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> m ()
+glNamedFramebufferTextureEXT = ffiuintenumuintintIOV glNamedFramebufferTextureEXTFunPtr
+
+glNamedFramebufferTextureEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> IO ())
+glNamedFramebufferTextureEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTextureEXT")
+
+{-# NOINLINE glNamedFramebufferTextureEXTFunPtr #-}
+
+glNamedFramebufferTextureFaceEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> GLenum -> m ()
+glNamedFramebufferTextureFaceEXT = ffiuintenumuintintenumIOV glNamedFramebufferTextureFaceEXTFunPtr
+
+glNamedFramebufferTextureFaceEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLenum -> IO ())
+glNamedFramebufferTextureFaceEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTextureFaceEXT")
+
+{-# NOINLINE glNamedFramebufferTextureFaceEXTFunPtr #-}
+
+glNamedFramebufferTextureLayerEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> GLint -> m ()
+glNamedFramebufferTextureLayerEXT = ffiuintenumuintintintIOV glNamedFramebufferTextureLayerEXTFunPtr
+
+glNamedFramebufferTextureLayerEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> IO ())
+glNamedFramebufferTextureLayerEXTFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTextureLayerEXT")
+
+{-# NOINLINE glNamedFramebufferTextureLayerEXTFunPtr #-}
+
+glNamedProgramLocalParameter4dEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glNamedProgramLocalParameter4dEXT = ffiuintenumuintdoubledoubledoubledoubleIOV glNamedProgramLocalParameter4dEXTFunPtr
+
+glNamedProgramLocalParameter4dEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glNamedProgramLocalParameter4dEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameter4dEXT")
+
+{-# NOINLINE glNamedProgramLocalParameter4dEXTFunPtr #-}
+
+glNamedProgramLocalParameter4dvEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLdouble -> m ()
+glNamedProgramLocalParameter4dvEXT = ffiuintenumuintPtrdoubleIOV glNamedProgramLocalParameter4dvEXTFunPtr
+
+glNamedProgramLocalParameter4dvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLdouble -> IO ())
+glNamedProgramLocalParameter4dvEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameter4dvEXT")
+
+{-# NOINLINE glNamedProgramLocalParameter4dvEXTFunPtr #-}
+
+glNamedProgramLocalParameter4fEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glNamedProgramLocalParameter4fEXT = ffiuintenumuintfloatfloatfloatfloatIOV glNamedProgramLocalParameter4fEXTFunPtr
+
+glNamedProgramLocalParameter4fEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glNamedProgramLocalParameter4fEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameter4fEXT")
+
+{-# NOINLINE glNamedProgramLocalParameter4fEXTFunPtr #-}
+
+glNamedProgramLocalParameter4fvEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLfloat -> m ()
+glNamedProgramLocalParameter4fvEXT = ffiuintenumuintPtrfloatIOV glNamedProgramLocalParameter4fvEXTFunPtr
+
+glNamedProgramLocalParameter4fvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glNamedProgramLocalParameter4fvEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameter4fvEXT")
+
+{-# NOINLINE glNamedProgramLocalParameter4fvEXTFunPtr #-}
+
+glNamedProgramLocalParameterI4iEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+glNamedProgramLocalParameterI4iEXT = ffiuintenumuintintintintintIOV glNamedProgramLocalParameterI4iEXTFunPtr
+
+glNamedProgramLocalParameterI4iEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
+glNamedProgramLocalParameterI4iEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameterI4iEXT")
+
+{-# NOINLINE glNamedProgramLocalParameterI4iEXTFunPtr #-}
+
+glNamedProgramLocalParameterI4ivEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLint -> m ()
+glNamedProgramLocalParameterI4ivEXT = ffiuintenumuintPtrintIOV glNamedProgramLocalParameterI4ivEXTFunPtr
+
+glNamedProgramLocalParameterI4ivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint -> IO ())
+glNamedProgramLocalParameterI4ivEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameterI4ivEXT")
+
+{-# NOINLINE glNamedProgramLocalParameterI4ivEXTFunPtr #-}
+
+glNamedProgramLocalParameterI4uiEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glNamedProgramLocalParameterI4uiEXT = ffiuintenumuintuintuintuintuintIOV glNamedProgramLocalParameterI4uiEXTFunPtr
+
+glNamedProgramLocalParameterI4uiEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glNamedProgramLocalParameterI4uiEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameterI4uiEXT")
+
+{-# NOINLINE glNamedProgramLocalParameterI4uiEXTFunPtr #-}
+
+glNamedProgramLocalParameterI4uivEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLuint -> m ()
+glNamedProgramLocalParameterI4uivEXT = ffiuintenumuintPtruintIOV glNamedProgramLocalParameterI4uivEXTFunPtr
+
+glNamedProgramLocalParameterI4uivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLuint -> IO ())
+glNamedProgramLocalParameterI4uivEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameterI4uivEXT")
+
+{-# NOINLINE glNamedProgramLocalParameterI4uivEXTFunPtr #-}
+
+glNamedProgramLocalParameters4fvEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glNamedProgramLocalParameters4fvEXT = ffiuintenumuintsizeiPtrfloatIOV glNamedProgramLocalParameters4fvEXTFunPtr
+
+glNamedProgramLocalParameters4fvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glNamedProgramLocalParameters4fvEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParameters4fvEXT")
+
+{-# NOINLINE glNamedProgramLocalParameters4fvEXTFunPtr #-}
+
+glNamedProgramLocalParametersI4ivEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> m ()
+glNamedProgramLocalParametersI4ivEXT = ffiuintenumuintsizeiPtrintIOV glNamedProgramLocalParametersI4ivEXTFunPtr
+
+glNamedProgramLocalParametersI4ivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ())
+glNamedProgramLocalParametersI4ivEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParametersI4ivEXT")
+
+{-# NOINLINE glNamedProgramLocalParametersI4ivEXTFunPtr #-}
+
+glNamedProgramLocalParametersI4uivEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+glNamedProgramLocalParametersI4uivEXT = ffiuintenumuintsizeiPtruintIOV glNamedProgramLocalParametersI4uivEXTFunPtr
+
+glNamedProgramLocalParametersI4uivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
+glNamedProgramLocalParametersI4uivEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramLocalParametersI4uivEXT")
+
+{-# NOINLINE glNamedProgramLocalParametersI4uivEXTFunPtr #-}
+
+glNamedProgramStringEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glNamedProgramStringEXT = ffiuintenumenumsizeiPtrVIOV glNamedProgramStringEXTFunPtr
+
+glNamedProgramStringEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glNamedProgramStringEXTFunPtr = unsafePerformIO (getProcAddress "glNamedProgramStringEXT")
+
+{-# NOINLINE glNamedProgramStringEXTFunPtr #-}
+
+glNamedRenderbufferStorageEXT :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLsizei -> m ()
+glNamedRenderbufferStorageEXT = ffiuintenumsizeisizeiIOV glNamedRenderbufferStorageEXTFunPtr
+
+glNamedRenderbufferStorageEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> IO ())
+glNamedRenderbufferStorageEXTFunPtr = unsafePerformIO (getProcAddress "glNamedRenderbufferStorageEXT")
+
+{-# NOINLINE glNamedRenderbufferStorageEXTFunPtr #-}
+
+glNamedRenderbufferStorageMultisampleCoverageEXT :: MonadIO m => GLuint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+glNamedRenderbufferStorageMultisampleCoverageEXT = ffiuintsizeisizeienumsizeisizeiIOV glNamedRenderbufferStorageMultisampleCoverageEXTFunPtr
+
+glNamedRenderbufferStorageMultisampleCoverageEXTFunPtr :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+glNamedRenderbufferStorageMultisampleCoverageEXTFunPtr = unsafePerformIO (getProcAddress "glNamedRenderbufferStorageMultisampleCoverageEXT")
+
+{-# NOINLINE glNamedRenderbufferStorageMultisampleCoverageEXTFunPtr #-}
+
+glNamedRenderbufferStorageMultisampleEXT :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+glNamedRenderbufferStorageMultisampleEXT = ffiuintsizeienumsizeisizeiIOV glNamedRenderbufferStorageMultisampleEXTFunPtr
+
+glNamedRenderbufferStorageMultisampleEXTFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+glNamedRenderbufferStorageMultisampleEXTFunPtr = unsafePerformIO (getProcAddress "glNamedRenderbufferStorageMultisampleEXT")
+
+{-# NOINLINE glNamedRenderbufferStorageMultisampleEXTFunPtr #-}
+
+glProgramUniform1dEXT :: MonadIO m => GLuint -> GLint -> GLdouble -> m ()
+glProgramUniform1dEXT = ffiuintintdoubleIOV glProgramUniform1dEXTFunPtr
+
+glProgramUniform1dEXTFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> IO ())
+glProgramUniform1dEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1dEXT")
+
+{-# NOINLINE glProgramUniform1dEXTFunPtr #-}
+
+glProgramUniform1dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+glProgramUniform1dvEXT = ffiuintintsizeiPtrdoubleIOV glProgramUniform1dvEXTFunPtr
+
+glProgramUniform1dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
+glProgramUniform1dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1dvEXT")
+
+{-# NOINLINE glProgramUniform1dvEXTFunPtr #-}
+
+glProgramUniform2dEXT :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> m ()
+glProgramUniform2dEXT = ffiuintintdoubledoubleIOV glProgramUniform2dEXTFunPtr
+
+glProgramUniform2dEXTFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> IO ())
+glProgramUniform2dEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2dEXT")
+
+{-# NOINLINE glProgramUniform2dEXTFunPtr #-}
+
+glProgramUniform2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+glProgramUniform2dvEXT = ffiuintintsizeiPtrdoubleIOV glProgramUniform2dvEXTFunPtr
+
+glProgramUniform2dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
+glProgramUniform2dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2dvEXT")
+
+{-# NOINLINE glProgramUniform2dvEXTFunPtr #-}
+
+glProgramUniform3dEXT :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> m ()
+glProgramUniform3dEXT = ffiuintintdoubledoubledoubleIOV glProgramUniform3dEXTFunPtr
+
+glProgramUniform3dEXTFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glProgramUniform3dEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3dEXT")
+
+{-# NOINLINE glProgramUniform3dEXTFunPtr #-}
+
+glProgramUniform3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+glProgramUniform3dvEXT = ffiuintintsizeiPtrdoubleIOV glProgramUniform3dvEXTFunPtr
+
+glProgramUniform3dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
+glProgramUniform3dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3dvEXT")
+
+{-# NOINLINE glProgramUniform3dvEXTFunPtr #-}
+
+glProgramUniform4dEXT :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glProgramUniform4dEXT = ffiuintintdoubledoubledoubledoubleIOV glProgramUniform4dEXTFunPtr
+
+glProgramUniform4dEXTFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glProgramUniform4dEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4dEXT")
+
+{-# NOINLINE glProgramUniform4dEXTFunPtr #-}
+
+glProgramUniform4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+glProgramUniform4dvEXT = ffiuintintsizeiPtrdoubleIOV glProgramUniform4dvEXTFunPtr
+
+glProgramUniform4dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
+glProgramUniform4dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4dvEXT")
+
+{-# NOINLINE glProgramUniform4dvEXTFunPtr #-}
+
+glProgramUniformMatrix2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix2dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2dvEXTFunPtr
+
+glProgramUniformMatrix2dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix2dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix2dvEXTFunPtr #-}
+
+glProgramUniformMatrix2x3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix2x3dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2x3dvEXTFunPtr
+
+glProgramUniformMatrix2x3dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix2x3dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x3dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix2x3dvEXTFunPtr #-}
+
+glProgramUniformMatrix2x4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix2x4dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2x4dvEXTFunPtr
+
+glProgramUniformMatrix2x4dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix2x4dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x4dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix2x4dvEXTFunPtr #-}
+
+glProgramUniformMatrix3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix3dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3dvEXTFunPtr
+
+glProgramUniformMatrix3dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix3dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix3dvEXTFunPtr #-}
+
+glProgramUniformMatrix3x2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix3x2dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3x2dvEXTFunPtr
+
+glProgramUniformMatrix3x2dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix3x2dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x2dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix3x2dvEXTFunPtr #-}
+
+glProgramUniformMatrix3x4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix3x4dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3x4dvEXTFunPtr
+
+glProgramUniformMatrix3x4dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix3x4dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x4dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix3x4dvEXTFunPtr #-}
+
+glProgramUniformMatrix4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix4dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4dvEXTFunPtr
+
+glProgramUniformMatrix4dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix4dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix4dvEXTFunPtr #-}
+
+glProgramUniformMatrix4x2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix4x2dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4x2dvEXTFunPtr
+
+glProgramUniformMatrix4x2dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix4x2dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x2dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix4x2dvEXTFunPtr #-}
+
+glProgramUniformMatrix4x3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+glProgramUniformMatrix4x3dvEXT = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4x3dvEXTFunPtr
+
+glProgramUniformMatrix4x3dvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
+glProgramUniformMatrix4x3dvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x3dvEXT")
+
+{-# NOINLINE glProgramUniformMatrix4x3dvEXTFunPtr #-}
+
+glPushClientAttribDefaultEXT :: MonadIO m => GLbitfield -> m ()
+glPushClientAttribDefaultEXT = ffibitfieldIOV glPushClientAttribDefaultEXTFunPtr
+
+glPushClientAttribDefaultEXTFunPtr :: FunPtr (GLbitfield -> IO ())
+glPushClientAttribDefaultEXTFunPtr = unsafePerformIO (getProcAddress "glPushClientAttribDefaultEXT")
+
+{-# NOINLINE glPushClientAttribDefaultEXTFunPtr #-}
+
+glTextureBufferEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> m ()
+glTextureBufferEXT = ffiuintenumenumuintIOV glTextureBufferEXTFunPtr
+
+glTextureBufferEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ())
+glTextureBufferEXTFunPtr = unsafePerformIO (getProcAddress "glTextureBufferEXT")
+
+{-# NOINLINE glTextureBufferEXTFunPtr #-}
+
+glTextureBufferRangeEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+glTextureBufferRangeEXT = ffiuintenumenumuintintptrsizeiptrIOV glTextureBufferRangeEXTFunPtr
+
+glTextureBufferRangeEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
+glTextureBufferRangeEXTFunPtr = unsafePerformIO (getProcAddress "glTextureBufferRangeEXT")
+
+{-# NOINLINE glTextureBufferRangeEXTFunPtr #-}
+
+glTextureImage1DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glTextureImage1DEXT = ffiuintenumintintsizeiintenumenumPtrVIOV glTextureImage1DEXTFunPtr
+
+glTextureImage1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glTextureImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureImage1DEXT")
+
+{-# NOINLINE glTextureImage1DEXTFunPtr #-}
+
+glTextureImage2DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glTextureImage2DEXT = ffiuintenumintintsizeisizeiintenumenumPtrVIOV glTextureImage2DEXTFunPtr
+
+glTextureImage2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glTextureImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureImage2DEXT")
+
+{-# NOINLINE glTextureImage2DEXTFunPtr #-}
+
+glTextureImage3DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glTextureImage3DEXT = ffiuintenumintintsizeisizeisizeiintenumenumPtrVIOV glTextureImage3DEXTFunPtr
+
+glTextureImage3DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glTextureImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureImage3DEXT")
+
+{-# NOINLINE glTextureImage3DEXTFunPtr #-}
+
+glTexturePageCommitmentEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTexturePageCommitmentEXT = ffiuintintintintintsizeisizeisizeibooleanIOV glTexturePageCommitmentEXTFunPtr
+
+glTexturePageCommitmentEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTexturePageCommitmentEXTFunPtr = unsafePerformIO (getProcAddress "glTexturePageCommitmentEXT")
+
+{-# NOINLINE glTexturePageCommitmentEXTFunPtr #-}
+
+glTextureParameterIivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
+glTextureParameterIivEXT = ffiuintenumenumPtrintIOV glTextureParameterIivEXTFunPtr
+
+glTextureParameterIivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glTextureParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glTextureParameterIivEXT")
+
+{-# NOINLINE glTextureParameterIivEXTFunPtr #-}
+
+glTextureParameterIuivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLuint -> m ()
+glTextureParameterIuivEXT = ffiuintenumenumPtruintIOV glTextureParameterIuivEXTFunPtr
+
+glTextureParameterIuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLuint -> IO ())
+glTextureParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glTextureParameterIuivEXT")
+
+{-# NOINLINE glTextureParameterIuivEXTFunPtr #-}
+
+glTextureParameterfEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLfloat -> m ()
+glTextureParameterfEXT = ffiuintenumenumfloatIOV glTextureParameterfEXTFunPtr
+
+glTextureParameterfEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLfloat -> IO ())
+glTextureParameterfEXTFunPtr = unsafePerformIO (getProcAddress "glTextureParameterfEXT")
+
+{-# NOINLINE glTextureParameterfEXTFunPtr #-}
+
+glTextureParameterfvEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glTextureParameterfvEXT = ffiuintenumenumPtrfloatIOV glTextureParameterfvEXTFunPtr
+
+glTextureParameterfvEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glTextureParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glTextureParameterfvEXT")
+
+{-# NOINLINE glTextureParameterfvEXTFunPtr #-}
+
+glTextureParameteriEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLint -> m ()
+glTextureParameteriEXT = ffiuintenumenumintIOV glTextureParameteriEXTFunPtr
+
+glTextureParameteriEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLint -> IO ())
+glTextureParameteriEXTFunPtr = unsafePerformIO (getProcAddress "glTextureParameteriEXT")
+
+{-# NOINLINE glTextureParameteriEXTFunPtr #-}
+
+glTextureParameterivEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
+glTextureParameterivEXT = ffiuintenumenumPtrintIOV glTextureParameterivEXTFunPtr
+
+glTextureParameterivEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glTextureParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glTextureParameterivEXT")
+
+{-# NOINLINE glTextureParameterivEXTFunPtr #-}
+
+glTextureRenderbufferEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> m ()
+glTextureRenderbufferEXT = ffiuintenumuintIOV glTextureRenderbufferEXTFunPtr
+
+glTextureRenderbufferEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> IO ())
+glTextureRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glTextureRenderbufferEXT")
+
+{-# NOINLINE glTextureRenderbufferEXTFunPtr #-}
+
+glTextureStorage2DMultisampleEXT :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTextureStorage2DMultisampleEXT = ffiuintenumsizeienumsizeisizeibooleanIOV glTextureStorage2DMultisampleEXTFunPtr
+
+glTextureStorage2DMultisampleEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTextureStorage2DMultisampleEXTFunPtr = unsafePerformIO (getProcAddress "glTextureStorage2DMultisampleEXT")
+
+{-# NOINLINE glTextureStorage2DMultisampleEXTFunPtr #-}
+
+glTextureStorage3DMultisampleEXT :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTextureStorage3DMultisampleEXT = ffiuintenumsizeienumsizeisizeisizeibooleanIOV glTextureStorage3DMultisampleEXTFunPtr
+
+glTextureStorage3DMultisampleEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTextureStorage3DMultisampleEXTFunPtr = unsafePerformIO (getProcAddress "glTextureStorage3DMultisampleEXT")
+
+{-# NOINLINE glTextureStorage3DMultisampleEXTFunPtr #-}
+
+glTextureSubImage1DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTextureSubImage1DEXT = ffiuintenumintintsizeienumenumPtrVIOV glTextureSubImage1DEXTFunPtr
+
+glTextureSubImage1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTextureSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage1DEXT")
+
+{-# NOINLINE glTextureSubImage1DEXTFunPtr #-}
+
+glTextureSubImage2DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTextureSubImage2DEXT = ffiuintenumintintintsizeisizeienumenumPtrVIOV glTextureSubImage2DEXTFunPtr
+
+glTextureSubImage2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTextureSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage2DEXT")
+
+{-# NOINLINE glTextureSubImage2DEXTFunPtr #-}
+
+glTextureSubImage3DEXT :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTextureSubImage3DEXT = ffiuintenumintintintintsizeisizeisizeienumenumPtrVIOV glTextureSubImage3DEXTFunPtr
+
+glTextureSubImage3DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTextureSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage3DEXT")
+
+{-# NOINLINE glTextureSubImage3DEXTFunPtr #-}
+
+glUnmapNamedBufferEXT :: MonadIO m => GLuint -> m GLboolean
+glUnmapNamedBufferEXT = ffiuintIOboolean glUnmapNamedBufferEXTFunPtr
+
+glUnmapNamedBufferEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glUnmapNamedBufferEXTFunPtr = unsafePerformIO (getProcAddress "glUnmapNamedBufferEXT")
+
+{-# NOINLINE glUnmapNamedBufferEXTFunPtr #-}
+
+glVertexArrayBindVertexBufferEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
+glVertexArrayBindVertexBufferEXT = ffiuintuintuintintptrsizeiIOV glVertexArrayBindVertexBufferEXTFunPtr
+
+glVertexArrayBindVertexBufferEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ())
+glVertexArrayBindVertexBufferEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayBindVertexBufferEXT")
+
+{-# NOINLINE glVertexArrayBindVertexBufferEXTFunPtr #-}
+
+glVertexArrayColorOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayColorOffsetEXT = ffiuintuintintenumsizeiintptrIOV glVertexArrayColorOffsetEXTFunPtr
+
+glVertexArrayColorOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayColorOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayColorOffsetEXT")
+
+{-# NOINLINE glVertexArrayColorOffsetEXTFunPtr #-}
+
+glVertexArrayEdgeFlagOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLsizei -> GLintptr -> m ()
+glVertexArrayEdgeFlagOffsetEXT = ffiuintuintsizeiintptrIOV glVertexArrayEdgeFlagOffsetEXTFunPtr
+
+glVertexArrayEdgeFlagOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> GLintptr -> IO ())
+glVertexArrayEdgeFlagOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayEdgeFlagOffsetEXT")
+
+{-# NOINLINE glVertexArrayEdgeFlagOffsetEXTFunPtr #-}
+
+glVertexArrayFogCoordOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayFogCoordOffsetEXT = ffiuintuintenumsizeiintptrIOV glVertexArrayFogCoordOffsetEXTFunPtr
+
+glVertexArrayFogCoordOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayFogCoordOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayFogCoordOffsetEXT")
+
+{-# NOINLINE glVertexArrayFogCoordOffsetEXTFunPtr #-}
+
+glVertexArrayIndexOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayIndexOffsetEXT = ffiuintuintenumsizeiintptrIOV glVertexArrayIndexOffsetEXTFunPtr
+
+glVertexArrayIndexOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayIndexOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayIndexOffsetEXT")
+
+{-# NOINLINE glVertexArrayIndexOffsetEXTFunPtr #-}
+
+glVertexArrayMultiTexCoordOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayMultiTexCoordOffsetEXT = ffiuintuintenumintenumsizeiintptrIOV glVertexArrayMultiTexCoordOffsetEXTFunPtr
+
+glVertexArrayMultiTexCoordOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayMultiTexCoordOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayMultiTexCoordOffsetEXT")
+
+{-# NOINLINE glVertexArrayMultiTexCoordOffsetEXTFunPtr #-}
+
+glVertexArrayNormalOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayNormalOffsetEXT = ffiuintuintenumsizeiintptrIOV glVertexArrayNormalOffsetEXTFunPtr
+
+glVertexArrayNormalOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayNormalOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayNormalOffsetEXT")
+
+{-# NOINLINE glVertexArrayNormalOffsetEXTFunPtr #-}
+
+glVertexArraySecondaryColorOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArraySecondaryColorOffsetEXT = ffiuintuintintenumsizeiintptrIOV glVertexArraySecondaryColorOffsetEXTFunPtr
+
+glVertexArraySecondaryColorOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArraySecondaryColorOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArraySecondaryColorOffsetEXT")
+
+{-# NOINLINE glVertexArraySecondaryColorOffsetEXTFunPtr #-}
+
+glVertexArrayTexCoordOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayTexCoordOffsetEXT = ffiuintuintintenumsizeiintptrIOV glVertexArrayTexCoordOffsetEXTFunPtr
+
+glVertexArrayTexCoordOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayTexCoordOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayTexCoordOffsetEXT")
+
+{-# NOINLINE glVertexArrayTexCoordOffsetEXTFunPtr #-}
+
+glVertexArrayVertexAttribBindingEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
+glVertexArrayVertexAttribBindingEXT = ffiuintuintuintIOV glVertexArrayVertexAttribBindingEXTFunPtr
+
+glVertexArrayVertexAttribBindingEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
+glVertexArrayVertexAttribBindingEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribBindingEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribBindingEXTFunPtr #-}
+
+glVertexArrayVertexAttribDivisorEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
+glVertexArrayVertexAttribDivisorEXT = ffiuintuintuintIOV glVertexArrayVertexAttribDivisorEXTFunPtr
+
+glVertexArrayVertexAttribDivisorEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
+glVertexArrayVertexAttribDivisorEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribDivisorEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribDivisorEXTFunPtr #-}
+
+glVertexArrayVertexAttribFormatEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> m ()
+glVertexArrayVertexAttribFormatEXT = ffiuintuintintenumbooleanuintIOV glVertexArrayVertexAttribFormatEXTFunPtr
+
+glVertexArrayVertexAttribFormatEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ())
+glVertexArrayVertexAttribFormatEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribFormatEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribFormatEXTFunPtr #-}
+
+glVertexArrayVertexAttribIFormatEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
+glVertexArrayVertexAttribIFormatEXT = ffiuintuintintenumuintIOV glVertexArrayVertexAttribIFormatEXTFunPtr
+
+glVertexArrayVertexAttribIFormatEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ())
+glVertexArrayVertexAttribIFormatEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribIFormatEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribIFormatEXTFunPtr #-}
+
+glVertexArrayVertexAttribIOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayVertexAttribIOffsetEXT = ffiuintuintuintintenumsizeiintptrIOV glVertexArrayVertexAttribIOffsetEXTFunPtr
+
+glVertexArrayVertexAttribIOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayVertexAttribIOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribIOffsetEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribIOffsetEXTFunPtr #-}
+
+glVertexArrayVertexAttribLFormatEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
+glVertexArrayVertexAttribLFormatEXT = ffiuintuintintenumuintIOV glVertexArrayVertexAttribLFormatEXTFunPtr
+
+glVertexArrayVertexAttribLFormatEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ())
+glVertexArrayVertexAttribLFormatEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribLFormatEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribLFormatEXTFunPtr #-}
+
+glVertexArrayVertexAttribLOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayVertexAttribLOffsetEXT = ffiuintuintuintintenumsizeiintptrIOV glVertexArrayVertexAttribLOffsetEXTFunPtr
+
+glVertexArrayVertexAttribLOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayVertexAttribLOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribLOffsetEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribLOffsetEXTFunPtr #-}
+
+glVertexArrayVertexAttribOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> m ()
+glVertexArrayVertexAttribOffsetEXT = ffiuintuintuintintenumbooleansizeiintptrIOV glVertexArrayVertexAttribOffsetEXTFunPtr
+
+glVertexArrayVertexAttribOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> IO ())
+glVertexArrayVertexAttribOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexAttribOffsetEXT")
+
+{-# NOINLINE glVertexArrayVertexAttribOffsetEXTFunPtr #-}
+
+glVertexArrayVertexBindingDivisorEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
+glVertexArrayVertexBindingDivisorEXT = ffiuintuintuintIOV glVertexArrayVertexBindingDivisorEXTFunPtr
+
+glVertexArrayVertexBindingDivisorEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
+glVertexArrayVertexBindingDivisorEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexBindingDivisorEXT")
+
+{-# NOINLINE glVertexArrayVertexBindingDivisorEXTFunPtr #-}
+
+glVertexArrayVertexOffsetEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+glVertexArrayVertexOffsetEXT = ffiuintuintintenumsizeiintptrIOV glVertexArrayVertexOffsetEXTFunPtr
+
+glVertexArrayVertexOffsetEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ())
+glVertexArrayVertexOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexOffsetEXT")
+
+{-# NOINLINE glVertexArrayVertexOffsetEXTFunPtr #-}
+
+pattern GL_PROGRAM_MATRIX_EXT = 0x8E2D :: GLenum
+
+pattern GL_PROGRAM_MATRIX_STACK_DEPTH_EXT = 0x8E2F :: GLenum
+
+pattern GL_TRANSPOSE_PROGRAM_MATRIX_EXT = 0x8E2E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DiscardFramebuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DiscardFramebuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DiscardFramebuffer.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DiscardFramebuffer (
+  -- * Extension Support
+    gl_EXT_discard_framebuffer
+
+  -- * GL_EXT_discard_framebuffer
+  , glDiscardFramebufferEXT
+  , pattern GL_COLOR_EXT
+  , pattern GL_DEPTH_EXT
+  , pattern GL_STENCIL_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.Types
+import System.IO.Unsafe
+
+gl_EXT_discard_framebuffer :: Bool
+gl_EXT_discard_framebuffer = member "GL_EXT_discard_framebuffer" extensions
+
+glDiscardFramebufferEXT :: MonadIO m => GLenum -> GLsizei -> Ptr GLenum -> m ()
+glDiscardFramebufferEXT = ffienumsizeiPtrenumIOV glDiscardFramebufferEXTFunPtr
+
+glDiscardFramebufferEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLenum -> IO ())
+glDiscardFramebufferEXTFunPtr = unsafePerformIO (getProcAddress "glDiscardFramebufferEXT")
+
+{-# NOINLINE glDiscardFramebufferEXTFunPtr #-}
+
+pattern GL_COLOR_EXT = 0x1800 :: GLenum
+
+pattern GL_DEPTH_EXT = 0x1801 :: GLenum
+
+pattern GL_STENCIL_EXT = 0x1802 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DisjointTimerQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DisjointTimerQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DisjointTimerQuery.hs
@@ -0,0 +1,60 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DisjointTimerQuery (
+  -- * Extension Support
+    gl_EXT_disjoint_timer_query
+
+  -- * GL_EXT_disjoint_timer_query
+  , glBeginQueryEXT
+  , glDeleteQueriesEXT
+  , glEndQueryEXT
+  , glGenQueriesEXT
+  , glGetQueryObjecti64vEXT
+  , glGetQueryObjectivEXT
+  , glGetQueryObjectui64vEXT
+  , glGetQueryObjectuivEXT
+  , glGetQueryivEXT
+  , glIsQueryEXT
+  , glQueryCounterEXT
+  , pattern GL_CURRENT_QUERY_EXT
+  , pattern GL_GPU_DISJOINT_EXT
+  , pattern GL_QUERY_COUNTER_BITS_EXT
+  , pattern GL_QUERY_RESULT_AVAILABLE_EXT
+  , pattern GL_QUERY_RESULT_EXT
+  , pattern GL_TIMESTAMP_EXT
+  , pattern GL_TIME_ELAPSED_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_disjoint_timer_query :: Bool
+gl_EXT_disjoint_timer_query = member "GL_EXT_disjoint_timer_query" extensions
+
+glGetQueryObjectivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetQueryObjectivEXT = ffiuintenumPtrintIOV glGetQueryObjectivEXTFunPtr
+
+glGetQueryObjectivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetQueryObjectivEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectivEXT")
+
+{-# NOINLINE glGetQueryObjectivEXTFunPtr #-}
+
+glQueryCounterEXT :: MonadIO m => GLuint -> GLenum -> m ()
+glQueryCounterEXT = ffiuintenumIOV glQueryCounterEXTFunPtr
+
+glQueryCounterEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glQueryCounterEXTFunPtr = unsafePerformIO (getProcAddress "glQueryCounterEXT")
+
+{-# NOINLINE glQueryCounterEXTFunPtr #-}
+
+pattern GL_GPU_DISJOINT_EXT = 0x8FBB :: GLenum
+
+pattern GL_QUERY_COUNTER_BITS_EXT = 0x8864 :: GLenum
+
+pattern GL_TIMESTAMP_EXT = 0x8E28 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffers.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffers.hs
@@ -0,0 +1,97 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DrawBuffers (
+  -- * Extension Support
+    gl_EXT_draw_buffers
+
+  -- * GL_EXT_draw_buffers
+  , glDrawBuffersEXT
+  , pattern GL_COLOR_ATTACHMENT0_EXT
+  , pattern GL_COLOR_ATTACHMENT10_EXT
+  , pattern GL_COLOR_ATTACHMENT11_EXT
+  , pattern GL_COLOR_ATTACHMENT12_EXT
+  , pattern GL_COLOR_ATTACHMENT13_EXT
+  , pattern GL_COLOR_ATTACHMENT14_EXT
+  , pattern GL_COLOR_ATTACHMENT15_EXT
+  , pattern GL_COLOR_ATTACHMENT1_EXT
+  , pattern GL_COLOR_ATTACHMENT2_EXT
+  , pattern GL_COLOR_ATTACHMENT3_EXT
+  , pattern GL_COLOR_ATTACHMENT4_EXT
+  , pattern GL_COLOR_ATTACHMENT5_EXT
+  , pattern GL_COLOR_ATTACHMENT6_EXT
+  , pattern GL_COLOR_ATTACHMENT7_EXT
+  , pattern GL_COLOR_ATTACHMENT8_EXT
+  , pattern GL_COLOR_ATTACHMENT9_EXT
+  , pattern GL_DRAW_BUFFER0_EXT
+  , pattern GL_DRAW_BUFFER10_EXT
+  , pattern GL_DRAW_BUFFER11_EXT
+  , pattern GL_DRAW_BUFFER12_EXT
+  , pattern GL_DRAW_BUFFER13_EXT
+  , pattern GL_DRAW_BUFFER14_EXT
+  , pattern GL_DRAW_BUFFER15_EXT
+  , pattern GL_DRAW_BUFFER1_EXT
+  , pattern GL_DRAW_BUFFER2_EXT
+  , pattern GL_DRAW_BUFFER3_EXT
+  , pattern GL_DRAW_BUFFER4_EXT
+  , pattern GL_DRAW_BUFFER5_EXT
+  , pattern GL_DRAW_BUFFER6_EXT
+  , pattern GL_DRAW_BUFFER7_EXT
+  , pattern GL_DRAW_BUFFER8_EXT
+  , pattern GL_DRAW_BUFFER9_EXT
+  , pattern GL_MAX_COLOR_ATTACHMENTS_EXT
+  , pattern GL_MAX_DRAW_BUFFERS_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_draw_buffers :: Bool
+gl_EXT_draw_buffers = member "GL_EXT_draw_buffers" extensions
+
+glDrawBuffersEXT :: MonadIO m => GLsizei -> Ptr GLenum -> m ()
+glDrawBuffersEXT = ffisizeiPtrenumIOV glDrawBuffersEXTFunPtr
+
+glDrawBuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
+glDrawBuffersEXTFunPtr = unsafePerformIO (getProcAddress "glDrawBuffersEXT")
+
+{-# NOINLINE glDrawBuffersEXTFunPtr #-}
+
+pattern GL_DRAW_BUFFER0_EXT = 0x8825 :: GLenum
+
+pattern GL_DRAW_BUFFER10_EXT = 0x882F :: GLenum
+
+pattern GL_DRAW_BUFFER11_EXT = 0x8830 :: GLenum
+
+pattern GL_DRAW_BUFFER12_EXT = 0x8831 :: GLenum
+
+pattern GL_DRAW_BUFFER13_EXT = 0x8832 :: GLenum
+
+pattern GL_DRAW_BUFFER14_EXT = 0x8833 :: GLenum
+
+pattern GL_DRAW_BUFFER15_EXT = 0x8834 :: GLenum
+
+pattern GL_DRAW_BUFFER1_EXT = 0x8826 :: GLenum
+
+pattern GL_DRAW_BUFFER2_EXT = 0x8827 :: GLenum
+
+pattern GL_DRAW_BUFFER3_EXT = 0x8828 :: GLenum
+
+pattern GL_DRAW_BUFFER4_EXT = 0x8829 :: GLenum
+
+pattern GL_DRAW_BUFFER5_EXT = 0x882A :: GLenum
+
+pattern GL_DRAW_BUFFER6_EXT = 0x882B :: GLenum
+
+pattern GL_DRAW_BUFFER7_EXT = 0x882C :: GLenum
+
+pattern GL_DRAW_BUFFER8_EXT = 0x882D :: GLenum
+
+pattern GL_DRAW_BUFFER9_EXT = 0x882E :: GLenum
+
+pattern GL_MAX_DRAW_BUFFERS_EXT = 0x8824 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffers2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffers2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffers2.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DrawBuffers2 (
+  -- * Extension Support
+    gl_EXT_draw_buffers2
+
+  -- * GL_EXT_draw_buffers2
+  , glColorMaskIndexedEXT
+  , glDisableIndexedEXT
+  , glEnableIndexedEXT
+  , glGetBooleanIndexedvEXT
+  , glGetIntegerIndexedvEXT
+  , glIsEnabledIndexedEXT
+) 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_draw_buffers2 :: Bool
+gl_EXT_draw_buffers2 = member "GL_EXT_draw_buffers2" extensions
+
+glColorMaskIndexedEXT :: MonadIO m => GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
+glColorMaskIndexedEXT = ffiuintbooleanbooleanbooleanbooleanIOV glColorMaskIndexedEXTFunPtr
+
+glColorMaskIndexedEXTFunPtr :: FunPtr (GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
+glColorMaskIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glColorMaskIndexedEXT")
+
+{-# NOINLINE glColorMaskIndexedEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffersIndexed.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffersIndexed.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawBuffersIndexed.hs
@@ -0,0 +1,120 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DrawBuffersIndexed (
+  -- * Extension Support
+    gl_EXT_draw_buffers_indexed
+
+  -- * GL_EXT_draw_buffers_indexed
+  , glBlendEquationSeparateiEXT
+  , glBlendEquationiEXT
+  , glBlendFuncSeparateiEXT
+  , glBlendFunciEXT
+  , glColorMaskiEXT
+  , glDisableiEXT
+  , glEnableiEXT
+  , glIsEnablediEXT
+  , pattern GL_BLEND
+  , pattern GL_BLEND_DST_ALPHA
+  , pattern GL_BLEND_DST_RGB
+  , pattern GL_BLEND_EQUATION_ALPHA
+  , pattern GL_BLEND_EQUATION_RGB
+  , pattern GL_BLEND_SRC_ALPHA
+  , pattern GL_BLEND_SRC_RGB
+  , pattern GL_COLOR_WRITEMASK
+  , pattern GL_CONSTANT_ALPHA
+  , pattern GL_CONSTANT_COLOR
+  , pattern GL_DST_ALPHA
+  , pattern GL_DST_COLOR
+  , pattern GL_FUNC_ADD
+  , pattern GL_FUNC_REVERSE_SUBTRACT
+  , pattern GL_FUNC_SUBTRACT
+  , pattern GL_MAX
+  , pattern GL_MIN
+  , pattern GL_ONE
+  , pattern GL_ONE_MINUS_CONSTANT_ALPHA
+  , pattern GL_ONE_MINUS_CONSTANT_COLOR
+  , pattern GL_ONE_MINUS_DST_ALPHA
+  , pattern GL_ONE_MINUS_DST_COLOR
+  , pattern GL_ONE_MINUS_SRC_ALPHA
+  , pattern GL_ONE_MINUS_SRC_COLOR
+  , pattern GL_SRC_ALPHA
+  , pattern GL_SRC_ALPHA_SATURATE
+  , pattern GL_SRC_COLOR
+  , pattern GL_ZERO
+) 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_draw_buffers_indexed :: Bool
+gl_EXT_draw_buffers_indexed = member "GL_EXT_draw_buffers_indexed" extensions
+
+glBlendEquationSeparateiEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendEquationSeparateiEXT = ffiuintenumenumIOV glBlendEquationSeparateiEXTFunPtr
+
+glBlendEquationSeparateiEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendEquationSeparateiEXTFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparateiEXT")
+
+{-# NOINLINE glBlendEquationSeparateiEXTFunPtr #-}
+
+glBlendEquationiEXT :: MonadIO m => GLuint -> GLenum -> m ()
+glBlendEquationiEXT = ffiuintenumIOV glBlendEquationiEXTFunPtr
+
+glBlendEquationiEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glBlendEquationiEXTFunPtr = unsafePerformIO (getProcAddress "glBlendEquationiEXT")
+
+{-# NOINLINE glBlendEquationiEXTFunPtr #-}
+
+glBlendFuncSeparateiEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glBlendFuncSeparateiEXT = ffiuintenumenumenumenumIOV glBlendFuncSeparateiEXTFunPtr
+
+glBlendFuncSeparateiEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glBlendFuncSeparateiEXTFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparateiEXT")
+
+{-# NOINLINE glBlendFuncSeparateiEXTFunPtr #-}
+
+glBlendFunciEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendFunciEXT = ffiuintenumenumIOV glBlendFunciEXTFunPtr
+
+glBlendFunciEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendFunciEXTFunPtr = unsafePerformIO (getProcAddress "glBlendFunciEXT")
+
+{-# NOINLINE glBlendFunciEXTFunPtr #-}
+
+glColorMaskiEXT :: MonadIO m => GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
+glColorMaskiEXT = ffiuintbooleanbooleanbooleanbooleanIOV glColorMaskiEXTFunPtr
+
+glColorMaskiEXTFunPtr :: FunPtr (GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
+glColorMaskiEXTFunPtr = unsafePerformIO (getProcAddress "glColorMaskiEXT")
+
+{-# NOINLINE glColorMaskiEXTFunPtr #-}
+
+glDisableiEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glDisableiEXT = ffienumuintIOV glDisableiEXTFunPtr
+
+glDisableiEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glDisableiEXTFunPtr = unsafePerformIO (getProcAddress "glDisableiEXT")
+
+{-# NOINLINE glDisableiEXTFunPtr #-}
+
+glEnableiEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glEnableiEXT = ffienumuintIOV glEnableiEXTFunPtr
+
+glEnableiEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glEnableiEXTFunPtr = unsafePerformIO (getProcAddress "glEnableiEXT")
+
+{-# NOINLINE glEnableiEXTFunPtr #-}
+
+glIsEnablediEXT :: MonadIO m => GLenum -> GLuint -> m GLboolean
+glIsEnablediEXT = ffienumuintIOboolean glIsEnablediEXTFunPtr
+
+glIsEnablediEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
+glIsEnablediEXTFunPtr = unsafePerformIO (getProcAddress "glIsEnablediEXT")
+
+{-# NOINLINE glIsEnablediEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawInstanced.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawInstanced.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawInstanced.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DrawInstanced (
+  -- * Extension Support
+    gl_EXT_draw_instanced
+
+  -- * GL_EXT_draw_instanced
+  , glDrawArraysInstancedEXT
+  , glDrawElementsInstancedEXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_draw_instanced :: Bool
+gl_EXT_draw_instanced = member "GL_EXT_draw_instanced" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawRangeElements.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawRangeElements.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/DrawRangeElements.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.DrawRangeElements (
+  -- * Extension Support
+    gl_EXT_draw_range_elements
+
+  -- * GL_EXT_draw_range_elements
+  , glDrawRangeElementsEXT
+  , pattern GL_MAX_ELEMENTS_INDICES_EXT
+  , pattern GL_MAX_ELEMENTS_VERTICES_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.Types
+import System.IO.Unsafe
+
+gl_EXT_draw_range_elements :: Bool
+gl_EXT_draw_range_elements = member "GL_EXT_draw_range_elements" extensions
+
+glDrawRangeElementsEXT :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> m ()
+glDrawRangeElementsEXT = ffienumuintuintsizeienumPtrVIOV glDrawRangeElementsEXTFunPtr
+
+glDrawRangeElementsEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> IO ())
+glDrawRangeElementsEXTFunPtr = unsafePerformIO (getProcAddress "glDrawRangeElementsEXT")
+
+{-# NOINLINE glDrawRangeElementsEXTFunPtr #-}
+
+pattern GL_MAX_ELEMENTS_INDICES_EXT = 0x80E9 :: GLenum
+
+pattern GL_MAX_ELEMENTS_VERTICES_EXT = 0x80E8 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FogCoord.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FogCoord.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FogCoord.hs
@@ -0,0 +1,87 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.FogCoord (
+  -- * Extension Support
+    gl_EXT_fog_coord
+
+  -- * GL_EXT_fog_coord
+  , glFogCoordPointerEXT
+  , glFogCoorddEXT
+  , glFogCoorddvEXT
+  , glFogCoordfEXT
+  , glFogCoordfvEXT
+  , pattern GL_CURRENT_FOG_COORDINATE_EXT
+  , pattern GL_FOG_COORDINATE_ARRAY_EXT
+  , pattern GL_FOG_COORDINATE_ARRAY_POINTER_EXT
+  , pattern GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
+  , pattern GL_FOG_COORDINATE_ARRAY_TYPE_EXT
+  , pattern GL_FOG_COORDINATE_EXT
+  , pattern GL_FOG_COORDINATE_SOURCE_EXT
+  , pattern GL_FRAGMENT_DEPTH_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_fog_coord :: Bool
+gl_EXT_fog_coord = member "GL_EXT_fog_coord" extensions
+
+glFogCoordPointerEXT :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
+glFogCoordPointerEXT = ffienumsizeiPtrVIOV glFogCoordPointerEXTFunPtr
+
+glFogCoordPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
+glFogCoordPointerEXTFunPtr = unsafePerformIO (getProcAddress "glFogCoordPointerEXT")
+
+{-# NOINLINE glFogCoordPointerEXTFunPtr #-}
+
+glFogCoorddEXT :: MonadIO m => GLdouble -> m ()
+glFogCoorddEXT = ffidoubleIOV glFogCoorddEXTFunPtr
+
+glFogCoorddEXTFunPtr :: FunPtr (GLdouble -> IO ())
+glFogCoorddEXTFunPtr = unsafePerformIO (getProcAddress "glFogCoorddEXT")
+
+{-# NOINLINE glFogCoorddEXTFunPtr #-}
+
+glFogCoorddvEXT :: MonadIO m => Ptr GLdouble -> m ()
+glFogCoorddvEXT = ffiPtrdoubleIOV glFogCoorddvEXTFunPtr
+
+glFogCoorddvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glFogCoorddvEXTFunPtr = unsafePerformIO (getProcAddress "glFogCoorddvEXT")
+
+{-# NOINLINE glFogCoorddvEXTFunPtr #-}
+
+glFogCoordfEXT :: MonadIO m => GLfloat -> m ()
+glFogCoordfEXT = ffifloatIOV glFogCoordfEXTFunPtr
+
+glFogCoordfEXTFunPtr :: FunPtr (GLfloat -> IO ())
+glFogCoordfEXTFunPtr = unsafePerformIO (getProcAddress "glFogCoordfEXT")
+
+{-# NOINLINE glFogCoordfEXTFunPtr #-}
+
+glFogCoordfvEXT :: MonadIO m => Ptr GLfloat -> m ()
+glFogCoordfvEXT = ffiPtrfloatIOV glFogCoordfvEXTFunPtr
+
+glFogCoordfvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glFogCoordfvEXTFunPtr = unsafePerformIO (getProcAddress "glFogCoordfvEXT")
+
+{-# NOINLINE glFogCoordfvEXTFunPtr #-}
+
+pattern GL_CURRENT_FOG_COORDINATE_EXT = 0x8453 :: GLenum
+
+pattern GL_FOG_COORDINATE_ARRAY_EXT = 0x8457 :: GLenum
+
+pattern GL_FOG_COORDINATE_ARRAY_POINTER_EXT = 0x8456 :: GLenum
+
+pattern GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = 0x8455 :: GLenum
+
+pattern GL_FOG_COORDINATE_ARRAY_TYPE_EXT = 0x8454 :: GLenum
+
+pattern GL_FOG_COORDINATE_EXT = 0x8451 :: GLenum
+
+pattern GL_FOG_COORDINATE_SOURCE_EXT = 0x8450 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FourTwoTwoPixels.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FourTwoTwoPixels.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FourTwoTwoPixels.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.FourTwoTwoPixels (
+  -- * Extension Support
+    gl_EXT_422_pixels
+
+  -- * GL_EXT_422_pixels
+  , pattern GL_422_AVERAGE_EXT
+  , pattern GL_422_EXT
+  , pattern GL_422_REV_AVERAGE_EXT
+  , pattern GL_422_REV_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_422_pixels :: Bool
+gl_EXT_422_pixels = member "GL_EXT_422_pixels" extensions
+
+pattern GL_422_AVERAGE_EXT = 0x80CE :: GLenum
+
+pattern GL_422_EXT = 0x80CC :: GLenum
+
+pattern GL_422_REV_AVERAGE_EXT = 0x80CF :: GLenum
+
+pattern GL_422_REV_EXT = 0x80CD :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferBlit.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferBlit.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferBlit.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.FramebufferBlit (
+  -- * Extension Support
+    gl_EXT_framebuffer_blit
+
+  -- * GL_EXT_framebuffer_blit
+  , glBlitFramebufferEXT
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING_EXT
+  , pattern GL_DRAW_FRAMEBUFFER_EXT
+  , pattern GL_READ_FRAMEBUFFER_BINDING_EXT
+  , pattern GL_READ_FRAMEBUFFER_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.Types
+import System.IO.Unsafe
+
+gl_EXT_framebuffer_blit :: Bool
+gl_EXT_framebuffer_blit = member "GL_EXT_framebuffer_blit" extensions
+
+glBlitFramebufferEXT :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
+glBlitFramebufferEXT = ffiintintintintintintintintbitfieldenumIOV glBlitFramebufferEXTFunPtr
+
+glBlitFramebufferEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ())
+glBlitFramebufferEXTFunPtr = unsafePerformIO (getProcAddress "glBlitFramebufferEXT")
+
+{-# NOINLINE glBlitFramebufferEXTFunPtr #-}
+
+pattern GL_DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CA6 :: GLenum
+
+pattern GL_DRAW_FRAMEBUFFER_EXT = 0x8CA9 :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_BINDING_EXT = 0x8CAA :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_EXT = 0x8CA8 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferMultisample.hs
@@ -0,0 +1,19 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.FramebufferMultisample (
+  -- * Extension Support
+    gl_EXT_framebuffer_multisample
+
+  -- * GL_EXT_framebuffer_multisample
+  , glRenderbufferStorageMultisampleEXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT
+  , pattern GL_MAX_SAMPLES_EXT
+  , pattern GL_RENDERBUFFER_SAMPLES_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_framebuffer_multisample :: Bool
+gl_EXT_framebuffer_multisample = member "GL_EXT_framebuffer_multisample" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferMultisampleBlitScaled.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferMultisampleBlitScaled.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferMultisampleBlitScaled.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.FramebufferMultisampleBlitScaled (
+  -- * Extension Support
+    gl_EXT_framebuffer_multisample_blit_scaled
+
+  -- * GL_EXT_framebuffer_multisample_blit_scaled
+  , pattern GL_SCALED_RESOLVE_FASTEST_EXT
+  , pattern GL_SCALED_RESOLVE_NICEST_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_framebuffer_multisample_blit_scaled :: Bool
+gl_EXT_framebuffer_multisample_blit_scaled = member "GL_EXT_framebuffer_multisample_blit_scaled" extensions
+
+pattern GL_SCALED_RESOLVE_FASTEST_EXT = 0x90BA :: GLenum
+
+pattern GL_SCALED_RESOLVE_NICEST_EXT = 0x90BB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferObject.hs
@@ -0,0 +1,292 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.FramebufferObject (
+  -- * Extension Support
+    gl_EXT_framebuffer_object
+
+  -- * GL_EXT_framebuffer_object
+  , glBindFramebufferEXT
+  , glBindRenderbufferEXT
+  , glCheckFramebufferStatusEXT
+  , glDeleteFramebuffersEXT
+  , glDeleteRenderbuffersEXT
+  , glFramebufferRenderbufferEXT
+  , glFramebufferTexture1DEXT
+  , glFramebufferTexture2DEXT
+  , glFramebufferTexture3DEXT
+  , glGenFramebuffersEXT
+  , glGenRenderbuffersEXT
+  , glGenerateMipmapEXT
+  , glGetFramebufferAttachmentParameterivEXT
+  , glGetRenderbufferParameterivEXT
+  , glIsFramebufferEXT
+  , glIsRenderbufferEXT
+  , glRenderbufferStorageEXT
+  , pattern GL_COLOR_ATTACHMENT0_EXT
+  , pattern GL_COLOR_ATTACHMENT10_EXT
+  , pattern GL_COLOR_ATTACHMENT11_EXT
+  , pattern GL_COLOR_ATTACHMENT12_EXT
+  , pattern GL_COLOR_ATTACHMENT13_EXT
+  , pattern GL_COLOR_ATTACHMENT14_EXT
+  , pattern GL_COLOR_ATTACHMENT15_EXT
+  , pattern GL_COLOR_ATTACHMENT1_EXT
+  , pattern GL_COLOR_ATTACHMENT2_EXT
+  , pattern GL_COLOR_ATTACHMENT3_EXT
+  , pattern GL_COLOR_ATTACHMENT4_EXT
+  , pattern GL_COLOR_ATTACHMENT5_EXT
+  , pattern GL_COLOR_ATTACHMENT6_EXT
+  , pattern GL_COLOR_ATTACHMENT7_EXT
+  , pattern GL_COLOR_ATTACHMENT8_EXT
+  , pattern GL_COLOR_ATTACHMENT9_EXT
+  , pattern GL_DEPTH_ATTACHMENT_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT
+  , pattern GL_FRAMEBUFFER_BINDING_EXT
+  , pattern GL_FRAMEBUFFER_COMPLETE_EXT
+  , pattern GL_FRAMEBUFFER_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT
+  , pattern GL_FRAMEBUFFER_UNSUPPORTED_EXT
+  , pattern GL_INVALID_FRAMEBUFFER_OPERATION_EXT
+  , pattern GL_MAX_COLOR_ATTACHMENTS_EXT
+  , pattern GL_MAX_RENDERBUFFER_SIZE_EXT
+  , pattern GL_RENDERBUFFER_ALPHA_SIZE_EXT
+  , pattern GL_RENDERBUFFER_BINDING_EXT
+  , pattern GL_RENDERBUFFER_BLUE_SIZE_EXT
+  , pattern GL_RENDERBUFFER_DEPTH_SIZE_EXT
+  , pattern GL_RENDERBUFFER_EXT
+  , pattern GL_RENDERBUFFER_GREEN_SIZE_EXT
+  , pattern GL_RENDERBUFFER_HEIGHT_EXT
+  , pattern GL_RENDERBUFFER_INTERNAL_FORMAT_EXT
+  , pattern GL_RENDERBUFFER_RED_SIZE_EXT
+  , pattern GL_RENDERBUFFER_STENCIL_SIZE_EXT
+  , pattern GL_RENDERBUFFER_WIDTH_EXT
+  , pattern GL_STENCIL_ATTACHMENT_EXT
+  , pattern GL_STENCIL_INDEX16_EXT
+  , pattern GL_STENCIL_INDEX1_EXT
+  , pattern GL_STENCIL_INDEX4_EXT
+  , pattern GL_STENCIL_INDEX8_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_framebuffer_object :: Bool
+gl_EXT_framebuffer_object = member "GL_EXT_framebuffer_object" extensions
+
+glBindFramebufferEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glBindFramebufferEXT = ffienumuintIOV glBindFramebufferEXTFunPtr
+
+glBindFramebufferEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindFramebufferEXTFunPtr = unsafePerformIO (getProcAddress "glBindFramebufferEXT")
+
+{-# NOINLINE glBindFramebufferEXTFunPtr #-}
+
+glBindRenderbufferEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glBindRenderbufferEXT = ffienumuintIOV glBindRenderbufferEXTFunPtr
+
+glBindRenderbufferEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glBindRenderbufferEXT")
+
+{-# NOINLINE glBindRenderbufferEXTFunPtr #-}
+
+glCheckFramebufferStatusEXT :: MonadIO m => GLenum -> m GLenum
+glCheckFramebufferStatusEXT = ffienumIOenum glCheckFramebufferStatusEXTFunPtr
+
+glCheckFramebufferStatusEXTFunPtr :: FunPtr (GLenum -> IO GLenum)
+glCheckFramebufferStatusEXTFunPtr = unsafePerformIO (getProcAddress "glCheckFramebufferStatusEXT")
+
+{-# NOINLINE glCheckFramebufferStatusEXTFunPtr #-}
+
+glDeleteFramebuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteFramebuffersEXT = ffisizeiPtruintIOV glDeleteFramebuffersEXTFunPtr
+
+glDeleteFramebuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteFramebuffersEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteFramebuffersEXT")
+
+{-# NOINLINE glDeleteFramebuffersEXTFunPtr #-}
+
+glDeleteRenderbuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteRenderbuffersEXT = ffisizeiPtruintIOV glDeleteRenderbuffersEXTFunPtr
+
+glDeleteRenderbuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteRenderbuffersEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteRenderbuffersEXT")
+
+{-# NOINLINE glDeleteRenderbuffersEXTFunPtr #-}
+
+glFramebufferRenderbufferEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> m ()
+glFramebufferRenderbufferEXT = ffienumenumenumuintIOV glFramebufferRenderbufferEXTFunPtr
+
+glFramebufferRenderbufferEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO ())
+glFramebufferRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferRenderbufferEXT")
+
+{-# NOINLINE glFramebufferRenderbufferEXTFunPtr #-}
+
+glFramebufferTexture1DEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+glFramebufferTexture1DEXT = ffienumenumenumuintintIOV glFramebufferTexture1DEXTFunPtr
+
+glFramebufferTexture1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glFramebufferTexture1DEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture1DEXT")
+
+{-# NOINLINE glFramebufferTexture1DEXTFunPtr #-}
+
+glFramebufferTexture2DEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+glFramebufferTexture2DEXT = ffienumenumenumuintintIOV glFramebufferTexture2DEXTFunPtr
+
+glFramebufferTexture2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glFramebufferTexture2DEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture2DEXT")
+
+{-# NOINLINE glFramebufferTexture2DEXTFunPtr #-}
+
+glFramebufferTexture3DEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+glFramebufferTexture3DEXT = ffienumenumenumuintintintIOV glFramebufferTexture3DEXTFunPtr
+
+glFramebufferTexture3DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
+glFramebufferTexture3DEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture3DEXT")
+
+{-# NOINLINE glFramebufferTexture3DEXTFunPtr #-}
+
+glGenFramebuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenFramebuffersEXT = ffisizeiPtruintIOV glGenFramebuffersEXTFunPtr
+
+glGenFramebuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenFramebuffersEXTFunPtr = unsafePerformIO (getProcAddress "glGenFramebuffersEXT")
+
+{-# NOINLINE glGenFramebuffersEXTFunPtr #-}
+
+glGenRenderbuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenRenderbuffersEXT = ffisizeiPtruintIOV glGenRenderbuffersEXTFunPtr
+
+glGenRenderbuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenRenderbuffersEXTFunPtr = unsafePerformIO (getProcAddress "glGenRenderbuffersEXT")
+
+{-# NOINLINE glGenRenderbuffersEXTFunPtr #-}
+
+glGenerateMipmapEXT :: MonadIO m => GLenum -> m ()
+glGenerateMipmapEXT = ffienumIOV glGenerateMipmapEXTFunPtr
+
+glGenerateMipmapEXTFunPtr :: FunPtr (GLenum -> IO ())
+glGenerateMipmapEXTFunPtr = unsafePerformIO (getProcAddress "glGenerateMipmapEXT")
+
+{-# NOINLINE glGenerateMipmapEXTFunPtr #-}
+
+glGetFramebufferAttachmentParameterivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetFramebufferAttachmentParameterivEXT = ffienumenumenumPtrintIOV glGetFramebufferAttachmentParameterivEXTFunPtr
+
+glGetFramebufferAttachmentParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetFramebufferAttachmentParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferAttachmentParameterivEXT")
+
+{-# NOINLINE glGetFramebufferAttachmentParameterivEXTFunPtr #-}
+
+glGetRenderbufferParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetRenderbufferParameterivEXT = ffienumenumPtrintIOV glGetRenderbufferParameterivEXTFunPtr
+
+glGetRenderbufferParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetRenderbufferParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetRenderbufferParameterivEXT")
+
+{-# NOINLINE glGetRenderbufferParameterivEXTFunPtr #-}
+
+glIsFramebufferEXT :: MonadIO m => GLuint -> m GLboolean
+glIsFramebufferEXT = ffiuintIOboolean glIsFramebufferEXTFunPtr
+
+glIsFramebufferEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsFramebufferEXTFunPtr = unsafePerformIO (getProcAddress "glIsFramebufferEXT")
+
+{-# NOINLINE glIsFramebufferEXTFunPtr #-}
+
+glIsRenderbufferEXT :: MonadIO m => GLuint -> m GLboolean
+glIsRenderbufferEXT = ffiuintIOboolean glIsRenderbufferEXTFunPtr
+
+glIsRenderbufferEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glIsRenderbufferEXT")
+
+{-# NOINLINE glIsRenderbufferEXTFunPtr #-}
+
+glRenderbufferStorageEXT :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
+glRenderbufferStorageEXT = ffienumenumsizeisizeiIOV glRenderbufferStorageEXTFunPtr
+
+glRenderbufferStorageEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> IO ())
+glRenderbufferStorageEXTFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageEXT")
+
+{-# NOINLINE glRenderbufferStorageEXTFunPtr #-}
+
+pattern GL_DEPTH_ATTACHMENT_EXT = 0x8D00 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2 :: GLenum
+
+pattern GL_FRAMEBUFFER_BINDING_EXT = 0x8CA6 :: GLenum
+
+pattern GL_FRAMEBUFFER_COMPLETE_EXT = 0x8CD5 :: GLenum
+
+pattern GL_FRAMEBUFFER_EXT = 0x8D40 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC :: GLenum
+
+pattern GL_FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD :: GLenum
+
+pattern GL_INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506 :: GLenum
+
+pattern GL_MAX_RENDERBUFFER_SIZE_EXT = 0x84E8 :: GLenum
+
+pattern GL_RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53 :: GLenum
+
+pattern GL_RENDERBUFFER_BINDING_EXT = 0x8CA7 :: GLenum
+
+pattern GL_RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52 :: GLenum
+
+pattern GL_RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54 :: GLenum
+
+pattern GL_RENDERBUFFER_EXT = 0x8D41 :: GLenum
+
+pattern GL_RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51 :: GLenum
+
+pattern GL_RENDERBUFFER_HEIGHT_EXT = 0x8D43 :: GLenum
+
+pattern GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44 :: GLenum
+
+pattern GL_RENDERBUFFER_RED_SIZE_EXT = 0x8D50 :: GLenum
+
+pattern GL_RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55 :: GLenum
+
+pattern GL_RENDERBUFFER_WIDTH_EXT = 0x8D42 :: GLenum
+
+pattern GL_STENCIL_ATTACHMENT_EXT = 0x8D20 :: GLenum
+
+pattern GL_STENCIL_INDEX16_EXT = 0x8D49 :: GLenum
+
+pattern GL_STENCIL_INDEX1_EXT = 0x8D46 :: GLenum
+
+pattern GL_STENCIL_INDEX4_EXT = 0x8D47 :: GLenum
+
+pattern GL_STENCIL_INDEX8_EXT = 0x8D48 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferSRGB.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferSRGB.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/FramebufferSRGB.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.FramebufferSRGB (
+  -- * Extension Support
+    gl_EXT_framebuffer_sRGB
+
+  -- * GL_EXT_framebuffer_sRGB
+  , pattern GL_FRAMEBUFFER_SRGB_CAPABLE_EXT
+  , pattern GL_FRAMEBUFFER_SRGB_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_framebuffer_sRGB :: Bool
+gl_EXT_framebuffer_sRGB = member "GL_EXT_framebuffer_sRGB" extensions
+
+pattern GL_FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryPointSize.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryPointSize.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryPointSize.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.GeometryPointSize (
+  -- * Extension Support
+    gl_EXT_geometry_point_size
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_geometry_point_size :: Bool
+gl_EXT_geometry_point_size = member "GL_EXT_geometry_point_size" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryShader.hs
@@ -0,0 +1,88 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.GeometryShader (
+  -- * Extension Support
+    gl_EXT_geometry_shader
+
+  -- * GL_EXT_geometry_shader
+  , glFramebufferTextureEXT
+  , pattern GL_FIRST_VERTEX_CONVENTION_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT
+  , pattern GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT
+  , pattern GL_GEOMETRY_LINKED_INPUT_TYPE_EXT
+  , pattern GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT
+  , pattern GL_GEOMETRY_LINKED_VERTICES_OUT_EXT
+  , pattern GL_GEOMETRY_SHADER_BIT_EXT
+  , pattern GL_GEOMETRY_SHADER_EXT
+  , pattern GL_GEOMETRY_SHADER_INVOCATIONS_EXT
+  , pattern GL_LAST_VERTEX_CONVENTION_EXT
+  , pattern GL_LAYER_PROVOKING_VERTEX_EXT
+  , pattern GL_LINES_ADJACENCY_EXT
+  , pattern GL_LINE_STRIP_ADJACENCY_EXT
+  , pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT
+  , pattern GL_MAX_FRAMEBUFFER_LAYERS_EXT
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT
+  , pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT
+  , pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT
+  , pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT
+  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT
+  , pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT
+  , pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT
+  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT
+  , pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT
+  , pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT
+  , pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT
+  , pattern GL_PRIMITIVES_GENERATED_EXT
+  , pattern GL_REFERENCED_BY_GEOMETRY_SHADER_EXT
+  , pattern GL_TRIANGLES_ADJACENCY_EXT
+  , pattern GL_TRIANGLE_STRIP_ADJACENCY_EXT
+  , pattern GL_UNDEFINED_VERTEX_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_geometry_shader :: Bool
+gl_EXT_geometry_shader = member "GL_EXT_geometry_shader" extensions
+
+pattern GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT = 0x9312 :: GLenum
+
+pattern GL_GEOMETRY_LINKED_INPUT_TYPE_EXT = 0x8917 :: GLenum
+
+pattern GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = 0x8918 :: GLenum
+
+pattern GL_GEOMETRY_LINKED_VERTICES_OUT_EXT = 0x8916 :: GLenum
+
+pattern GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004 :: GLenum
+
+pattern GL_GEOMETRY_SHADER_INVOCATIONS_EXT = 0x887F :: GLenum
+
+pattern GL_LAYER_PROVOKING_VERTEX_EXT = 0x825E :: GLenum
+
+pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8A32 :: GLenum
+
+pattern GL_MAX_FRAMEBUFFER_LAYERS_EXT = 0x9317 :: GLenum
+
+pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = 0x92D5 :: GLenum
+
+pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = 0x92CF :: GLenum
+
+pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = 0x90CD :: GLenum
+
+pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = 0x9123 :: GLenum
+
+pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = 0x9124 :: GLenum
+
+pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = 0x8E5A :: GLenum
+
+pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = 0x90D7 :: GLenum
+
+pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = 0x8A2C :: GLenum
+
+pattern GL_REFERENCED_BY_GEOMETRY_SHADER_EXT = 0x9309 :: GLenum
+
+pattern GL_UNDEFINED_VERTEX_EXT = 0x8260 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryShader4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryShader4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GeometryShader4.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.GeometryShader4 (
+  -- * Extension Support
+    gl_EXT_geometry_shader4
+
+  -- * GL_EXT_geometry_shader4
+  , glProgramParameteriEXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT
+  , pattern GL_GEOMETRY_INPUT_TYPE_EXT
+  , pattern GL_GEOMETRY_OUTPUT_TYPE_EXT
+  , pattern GL_GEOMETRY_SHADER_EXT
+  , pattern GL_GEOMETRY_VERTICES_OUT_EXT
+  , pattern GL_LINES_ADJACENCY_EXT
+  , pattern GL_LINE_STRIP_ADJACENCY_EXT
+  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT
+  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT
+  , pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT
+  , pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT
+  , pattern GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT
+  , pattern GL_MAX_VARYING_COMPONENTS_EXT
+  , pattern GL_MAX_VERTEX_VARYING_COMPONENTS_EXT
+  , pattern GL_PROGRAM_POINT_SIZE_EXT
+  , pattern GL_TRIANGLES_ADJACENCY_EXT
+  , pattern GL_TRIANGLE_STRIP_ADJACENCY_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_geometry_shader4 :: Bool
+gl_EXT_geometry_shader4 = member "GL_EXT_geometry_shader4" extensions
+
+pattern GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT = 0x8DDD :: GLenum
+
+pattern GL_MAX_VARYING_COMPONENTS_EXT = 0x8B4B :: GLenum
+
+pattern GL_MAX_VERTEX_VARYING_COMPONENTS_EXT = 0x8DDE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuProgramParameters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuProgramParameters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuProgramParameters.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.GpuProgramParameters (
+  -- * Extension Support
+    gl_EXT_gpu_program_parameters
+
+  -- * GL_EXT_gpu_program_parameters
+  , glProgramEnvParameters4fvEXT
+  , glProgramLocalParameters4fvEXT
+) 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_EXT_gpu_program_parameters :: Bool
+gl_EXT_gpu_program_parameters = member "GL_EXT_gpu_program_parameters" extensions
+
+glProgramEnvParameters4fvEXT :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glProgramEnvParameters4fvEXT = ffienumuintsizeiPtrfloatIOV glProgramEnvParameters4fvEXTFunPtr
+
+glProgramEnvParameters4fvEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glProgramEnvParameters4fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameters4fvEXT")
+
+{-# NOINLINE glProgramEnvParameters4fvEXTFunPtr #-}
+
+glProgramLocalParameters4fvEXT :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glProgramLocalParameters4fvEXT = ffienumuintsizeiPtrfloatIOV glProgramLocalParameters4fvEXTFunPtr
+
+glProgramLocalParameters4fvEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glProgramLocalParameters4fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameters4fvEXT")
+
+{-# NOINLINE glProgramLocalParameters4fvEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuShader4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuShader4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuShader4.hs
@@ -0,0 +1,197 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.GpuShader4 (
+  -- * Extension Support
+    gl_EXT_gpu_shader4
+
+  -- * GL_EXT_gpu_shader4
+  , glBindFragDataLocationEXT
+  , glGetFragDataLocationEXT
+  , glGetUniformuivEXT
+  , glUniform1uiEXT
+  , glUniform1uivEXT
+  , glUniform2uiEXT
+  , glUniform2uivEXT
+  , glUniform3uiEXT
+  , glUniform3uivEXT
+  , glUniform4uiEXT
+  , glUniform4uivEXT
+  , pattern GL_INT_SAMPLER_1D_ARRAY_EXT
+  , pattern GL_INT_SAMPLER_1D_EXT
+  , pattern GL_INT_SAMPLER_2D_ARRAY_EXT
+  , pattern GL_INT_SAMPLER_2D_EXT
+  , pattern GL_INT_SAMPLER_2D_RECT_EXT
+  , pattern GL_INT_SAMPLER_3D_EXT
+  , pattern GL_INT_SAMPLER_BUFFER_EXT
+  , pattern GL_INT_SAMPLER_CUBE_EXT
+  , pattern GL_MAX_PROGRAM_TEXEL_OFFSET_EXT
+  , pattern GL_MIN_PROGRAM_TEXEL_OFFSET_EXT
+  , pattern GL_SAMPLER_1D_ARRAY_EXT
+  , pattern GL_SAMPLER_1D_ARRAY_SHADOW_EXT
+  , pattern GL_SAMPLER_2D_ARRAY_EXT
+  , pattern GL_SAMPLER_2D_ARRAY_SHADOW_EXT
+  , pattern GL_SAMPLER_BUFFER_EXT
+  , pattern GL_SAMPLER_CUBE_SHADOW_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_1D_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_3D_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE_EXT
+  , pattern GL_UNSIGNED_INT_VEC2_EXT
+  , pattern GL_UNSIGNED_INT_VEC3_EXT
+  , pattern GL_UNSIGNED_INT_VEC4_EXT
+  , pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_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_gpu_shader4 :: Bool
+gl_EXT_gpu_shader4 = member "GL_EXT_gpu_shader4" extensions
+
+glBindFragDataLocationEXT :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
+glBindFragDataLocationEXT = ffiuintuintPtrcharIOV glBindFragDataLocationEXTFunPtr
+
+glBindFragDataLocationEXTFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
+glBindFragDataLocationEXTFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocationEXT")
+
+{-# NOINLINE glBindFragDataLocationEXTFunPtr #-}
+
+glGetFragDataLocationEXT :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
+glGetFragDataLocationEXT = ffiuintPtrcharIOint glGetFragDataLocationEXTFunPtr
+
+glGetFragDataLocationEXTFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
+glGetFragDataLocationEXTFunPtr = unsafePerformIO (getProcAddress "glGetFragDataLocationEXT")
+
+{-# NOINLINE glGetFragDataLocationEXTFunPtr #-}
+
+glGetUniformuivEXT :: MonadIO m => GLuint -> GLint -> Ptr GLuint -> m ()
+glGetUniformuivEXT = ffiuintintPtruintIOV glGetUniformuivEXTFunPtr
+
+glGetUniformuivEXTFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLuint -> IO ())
+glGetUniformuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetUniformuivEXT")
+
+{-# NOINLINE glGetUniformuivEXTFunPtr #-}
+
+glUniform1uiEXT :: MonadIO m => GLint -> GLuint -> m ()
+glUniform1uiEXT = ffiintuintIOV glUniform1uiEXTFunPtr
+
+glUniform1uiEXTFunPtr :: FunPtr (GLint -> GLuint -> IO ())
+glUniform1uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform1uiEXT")
+
+{-# NOINLINE glUniform1uiEXTFunPtr #-}
+
+glUniform1uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
+glUniform1uivEXT = ffiintsizeiPtruintIOV glUniform1uivEXTFunPtr
+
+glUniform1uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
+glUniform1uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform1uivEXT")
+
+{-# NOINLINE glUniform1uivEXTFunPtr #-}
+
+glUniform2uiEXT :: MonadIO m => GLint -> GLuint -> GLuint -> m ()
+glUniform2uiEXT = ffiintuintuintIOV glUniform2uiEXTFunPtr
+
+glUniform2uiEXTFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> IO ())
+glUniform2uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform2uiEXT")
+
+{-# NOINLINE glUniform2uiEXTFunPtr #-}
+
+glUniform2uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
+glUniform2uivEXT = ffiintsizeiPtruintIOV glUniform2uivEXTFunPtr
+
+glUniform2uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
+glUniform2uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform2uivEXT")
+
+{-# NOINLINE glUniform2uivEXTFunPtr #-}
+
+glUniform3uiEXT :: MonadIO m => GLint -> GLuint -> GLuint -> GLuint -> m ()
+glUniform3uiEXT = ffiintuintuintuintIOV glUniform3uiEXTFunPtr
+
+glUniform3uiEXTFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> IO ())
+glUniform3uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform3uiEXT")
+
+{-# NOINLINE glUniform3uiEXTFunPtr #-}
+
+glUniform3uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
+glUniform3uivEXT = ffiintsizeiPtruintIOV glUniform3uivEXTFunPtr
+
+glUniform3uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
+glUniform3uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform3uivEXT")
+
+{-# NOINLINE glUniform3uivEXTFunPtr #-}
+
+glUniform4uiEXT :: MonadIO m => GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glUniform4uiEXT = ffiintuintuintuintuintIOV glUniform4uiEXTFunPtr
+
+glUniform4uiEXTFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glUniform4uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform4uiEXT")
+
+{-# NOINLINE glUniform4uiEXTFunPtr #-}
+
+glUniform4uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
+glUniform4uivEXT = ffiintsizeiPtruintIOV glUniform4uivEXTFunPtr
+
+glUniform4uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
+glUniform4uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform4uivEXT")
+
+{-# NOINLINE glUniform4uivEXTFunPtr #-}
+
+pattern GL_INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE :: GLenum
+
+pattern GL_INT_SAMPLER_1D_EXT = 0x8DC9 :: GLenum
+
+pattern GL_INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF :: GLenum
+
+pattern GL_INT_SAMPLER_2D_EXT = 0x8DCA :: GLenum
+
+pattern GL_INT_SAMPLER_2D_RECT_EXT = 0x8DCD :: GLenum
+
+pattern GL_INT_SAMPLER_3D_EXT = 0x8DCB :: GLenum
+
+pattern GL_INT_SAMPLER_CUBE_EXT = 0x8DCC :: GLenum
+
+pattern GL_MAX_PROGRAM_TEXEL_OFFSET_EXT = 0x8905 :: GLenum
+
+pattern GL_MIN_PROGRAM_TEXEL_OFFSET_EXT = 0x8904 :: GLenum
+
+pattern GL_SAMPLER_1D_ARRAY_EXT = 0x8DC0 :: GLenum
+
+pattern GL_SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3 :: GLenum
+
+pattern GL_SAMPLER_2D_ARRAY_EXT = 0x8DC1 :: GLenum
+
+pattern GL_SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4 :: GLenum
+
+pattern GL_SAMPLER_CUBE_SHADOW_EXT = 0x8DC5 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4 :: GLenum
+
+pattern GL_UNSIGNED_INT_VEC2_EXT = 0x8DC6 :: GLenum
+
+pattern GL_UNSIGNED_INT_VEC3_EXT = 0x8DC7 :: GLenum
+
+pattern GL_UNSIGNED_INT_VEC4_EXT = 0x8DC8 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuShader5.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuShader5.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/GpuShader5.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.GpuShader5 (
+  -- * Extension Support
+    gl_EXT_gpu_shader5
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_gpu_shader5 :: Bool
+gl_EXT_gpu_shader5 = member "GL_EXT_gpu_shader5" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Histogram.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Histogram.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Histogram.hs
@@ -0,0 +1,151 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Histogram (
+  -- * Extension Support
+    gl_EXT_histogram
+
+  -- * GL_EXT_histogram
+  , glGetHistogramEXT
+  , glGetHistogramParameterfvEXT
+  , glGetHistogramParameterivEXT
+  , glGetMinmaxEXT
+  , glGetMinmaxParameterfvEXT
+  , glGetMinmaxParameterivEXT
+  , glHistogramEXT
+  , glMinmaxEXT
+  , glResetHistogramEXT
+  , glResetMinmaxEXT
+  , pattern GL_HISTOGRAM_ALPHA_SIZE_EXT
+  , pattern GL_HISTOGRAM_BLUE_SIZE_EXT
+  , pattern GL_HISTOGRAM_EXT
+  , pattern GL_HISTOGRAM_FORMAT_EXT
+  , pattern GL_HISTOGRAM_GREEN_SIZE_EXT
+  , pattern GL_HISTOGRAM_LUMINANCE_SIZE_EXT
+  , pattern GL_HISTOGRAM_RED_SIZE_EXT
+  , pattern GL_HISTOGRAM_SINK_EXT
+  , pattern GL_HISTOGRAM_WIDTH_EXT
+  , pattern GL_MINMAX_EXT
+  , pattern GL_MINMAX_FORMAT_EXT
+  , pattern GL_MINMAX_SINK_EXT
+  , pattern GL_PROXY_HISTOGRAM_EXT
+  , pattern GL_TABLE_TOO_LARGE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_histogram :: Bool
+gl_EXT_histogram = member "GL_EXT_histogram" extensions
+
+glGetHistogramEXT :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> m ()
+glGetHistogramEXT = ffienumbooleanenumenumPtrVIOV glGetHistogramEXTFunPtr
+
+glGetHistogramEXTFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetHistogramEXTFunPtr = unsafePerformIO (getProcAddress "glGetHistogramEXT")
+
+{-# NOINLINE glGetHistogramEXTFunPtr #-}
+
+glGetHistogramParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetHistogramParameterfvEXT = ffienumenumPtrfloatIOV glGetHistogramParameterfvEXTFunPtr
+
+glGetHistogramParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetHistogramParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetHistogramParameterfvEXT")
+
+{-# NOINLINE glGetHistogramParameterfvEXTFunPtr #-}
+
+glGetHistogramParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetHistogramParameterivEXT = ffienumenumPtrintIOV glGetHistogramParameterivEXTFunPtr
+
+glGetHistogramParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetHistogramParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetHistogramParameterivEXT")
+
+{-# NOINLINE glGetHistogramParameterivEXTFunPtr #-}
+
+glGetMinmaxEXT :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> m ()
+glGetMinmaxEXT = ffienumbooleanenumenumPtrVIOV glGetMinmaxEXTFunPtr
+
+glGetMinmaxEXTFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetMinmaxEXTFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxEXT")
+
+{-# NOINLINE glGetMinmaxEXTFunPtr #-}
+
+glGetMinmaxParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetMinmaxParameterfvEXT = ffienumenumPtrfloatIOV glGetMinmaxParameterfvEXTFunPtr
+
+glGetMinmaxParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetMinmaxParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxParameterfvEXT")
+
+{-# NOINLINE glGetMinmaxParameterfvEXTFunPtr #-}
+
+glGetMinmaxParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetMinmaxParameterivEXT = ffienumenumPtrintIOV glGetMinmaxParameterivEXTFunPtr
+
+glGetMinmaxParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetMinmaxParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxParameterivEXT")
+
+{-# NOINLINE glGetMinmaxParameterivEXTFunPtr #-}
+
+glHistogramEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLboolean -> m ()
+glHistogramEXT = ffienumsizeienumbooleanIOV glHistogramEXTFunPtr
+
+glHistogramEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLboolean -> IO ())
+glHistogramEXTFunPtr = unsafePerformIO (getProcAddress "glHistogramEXT")
+
+{-# NOINLINE glHistogramEXTFunPtr #-}
+
+glMinmaxEXT :: MonadIO m => GLenum -> GLenum -> GLboolean -> m ()
+glMinmaxEXT = ffienumenumbooleanIOV glMinmaxEXTFunPtr
+
+glMinmaxEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLboolean -> IO ())
+glMinmaxEXTFunPtr = unsafePerformIO (getProcAddress "glMinmaxEXT")
+
+{-# NOINLINE glMinmaxEXTFunPtr #-}
+
+glResetHistogramEXT :: MonadIO m => GLenum -> m ()
+glResetHistogramEXT = ffienumIOV glResetHistogramEXTFunPtr
+
+glResetHistogramEXTFunPtr :: FunPtr (GLenum -> IO ())
+glResetHistogramEXTFunPtr = unsafePerformIO (getProcAddress "glResetHistogramEXT")
+
+{-# NOINLINE glResetHistogramEXTFunPtr #-}
+
+glResetMinmaxEXT :: MonadIO m => GLenum -> m ()
+glResetMinmaxEXT = ffienumIOV glResetMinmaxEXTFunPtr
+
+glResetMinmaxEXTFunPtr :: FunPtr (GLenum -> IO ())
+glResetMinmaxEXTFunPtr = unsafePerformIO (getProcAddress "glResetMinmaxEXT")
+
+{-# NOINLINE glResetMinmaxEXTFunPtr #-}
+
+pattern GL_HISTOGRAM_ALPHA_SIZE_EXT = 0x802B :: GLenum
+
+pattern GL_HISTOGRAM_BLUE_SIZE_EXT = 0x802A :: GLenum
+
+pattern GL_HISTOGRAM_EXT = 0x8024 :: GLenum
+
+pattern GL_HISTOGRAM_FORMAT_EXT = 0x8027 :: GLenum
+
+pattern GL_HISTOGRAM_GREEN_SIZE_EXT = 0x8029 :: GLenum
+
+pattern GL_HISTOGRAM_LUMINANCE_SIZE_EXT = 0x802C :: GLenum
+
+pattern GL_HISTOGRAM_RED_SIZE_EXT = 0x8028 :: GLenum
+
+pattern GL_HISTOGRAM_SINK_EXT = 0x802D :: GLenum
+
+pattern GL_HISTOGRAM_WIDTH_EXT = 0x8026 :: GLenum
+
+pattern GL_MINMAX_EXT = 0x802E :: GLenum
+
+pattern GL_MINMAX_FORMAT_EXT = 0x802F :: GLenum
+
+pattern GL_MINMAX_SINK_EXT = 0x8030 :: GLenum
+
+pattern GL_PROXY_HISTOGRAM_EXT = 0x8025 :: GLenum
+
+pattern GL_TABLE_TOO_LARGE_EXT = 0x8031 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexArrayFormats.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexArrayFormats.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexArrayFormats.hs
@@ -0,0 +1,39 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.IndexArrayFormats (
+  -- * Extension Support
+    gl_EXT_index_array_formats
+
+  -- * GL_EXT_index_array_formats
+  , pattern GL_IUI_N3F_V2F_EXT
+  , pattern GL_IUI_N3F_V3F_EXT
+  , pattern GL_IUI_V2F_EXT
+  , pattern GL_IUI_V3F_EXT
+  , pattern GL_T2F_IUI_N3F_V2F_EXT
+  , pattern GL_T2F_IUI_N3F_V3F_EXT
+  , pattern GL_T2F_IUI_V2F_EXT
+  , pattern GL_T2F_IUI_V3F_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_index_array_formats :: Bool
+gl_EXT_index_array_formats = member "GL_EXT_index_array_formats" extensions
+
+pattern GL_IUI_N3F_V2F_EXT = 0x81AF :: GLenum
+
+pattern GL_IUI_N3F_V3F_EXT = 0x81B0 :: GLenum
+
+pattern GL_IUI_V2F_EXT = 0x81AD :: GLenum
+
+pattern GL_IUI_V3F_EXT = 0x81AE :: GLenum
+
+pattern GL_T2F_IUI_N3F_V2F_EXT = 0x81B3 :: GLenum
+
+pattern GL_T2F_IUI_N3F_V3F_EXT = 0x81B4 :: GLenum
+
+pattern GL_T2F_IUI_V2F_EXT = 0x81B1 :: GLenum
+
+pattern GL_T2F_IUI_V3F_EXT = 0x81B2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexFunc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexFunc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexFunc.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.IndexFunc (
+  -- * Extension Support
+    gl_EXT_index_func
+
+  -- * GL_EXT_index_func
+  , glIndexFuncEXT
+  , pattern GL_INDEX_TEST_EXT
+  , pattern GL_INDEX_TEST_FUNC_EXT
+  , pattern GL_INDEX_TEST_REF_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.Types
+import System.IO.Unsafe
+
+gl_EXT_index_func :: Bool
+gl_EXT_index_func = member "GL_EXT_index_func" extensions
+
+glIndexFuncEXT :: MonadIO m => GLenum -> GLclampf -> m ()
+glIndexFuncEXT = ffienumclampfIOV glIndexFuncEXTFunPtr
+
+glIndexFuncEXTFunPtr :: FunPtr (GLenum -> GLclampf -> IO ())
+glIndexFuncEXTFunPtr = unsafePerformIO (getProcAddress "glIndexFuncEXT")
+
+{-# NOINLINE glIndexFuncEXTFunPtr #-}
+
+pattern GL_INDEX_TEST_EXT = 0x81B5 :: GLenum
+
+pattern GL_INDEX_TEST_FUNC_EXT = 0x81B6 :: GLenum
+
+pattern GL_INDEX_TEST_REF_EXT = 0x81B7 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexMaterial.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexMaterial.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexMaterial.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.IndexMaterial (
+  -- * Extension Support
+    gl_EXT_index_material
+
+  -- * GL_EXT_index_material
+  , glIndexMaterialEXT
+  , pattern GL_INDEX_MATERIAL_EXT
+  , pattern GL_INDEX_MATERIAL_FACE_EXT
+  , pattern GL_INDEX_MATERIAL_PARAMETER_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.Types
+import System.IO.Unsafe
+
+gl_EXT_index_material :: Bool
+gl_EXT_index_material = member "GL_EXT_index_material" extensions
+
+glIndexMaterialEXT :: MonadIO m => GLenum -> GLenum -> m ()
+glIndexMaterialEXT = ffienumenumIOV glIndexMaterialEXTFunPtr
+
+glIndexMaterialEXTFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glIndexMaterialEXTFunPtr = unsafePerformIO (getProcAddress "glIndexMaterialEXT")
+
+{-# NOINLINE glIndexMaterialEXTFunPtr #-}
+
+pattern GL_INDEX_MATERIAL_EXT = 0x81B8 :: GLenum
+
+pattern GL_INDEX_MATERIAL_FACE_EXT = 0x81BA :: GLenum
+
+pattern GL_INDEX_MATERIAL_PARAMETER_EXT = 0x81B9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/IndexTexture.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.IndexTexture (
+  -- * Extension Support
+    gl_EXT_index_texture
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_index_texture :: Bool
+gl_EXT_index_texture = member "GL_EXT_index_texture" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/InstancedArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/InstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/InstancedArrays.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.InstancedArrays (
+  -- * Extension Support
+    gl_EXT_instanced_arrays
+
+  -- * GL_EXT_instanced_arrays
+  , glDrawArraysInstancedEXT
+  , glDrawElementsInstancedEXT
+  , glVertexAttribDivisorEXT
+  , pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_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_instanced_arrays :: Bool
+gl_EXT_instanced_arrays = member "GL_EXT_instanced_arrays" extensions
+
+glVertexAttribDivisorEXT :: MonadIO m => GLuint -> GLuint -> m ()
+glVertexAttribDivisorEXT = ffiuintuintIOV glVertexAttribDivisorEXTFunPtr
+
+glVertexAttribDivisorEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glVertexAttribDivisorEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribDivisorEXT")
+
+{-# NOINLINE glVertexAttribDivisorEXTFunPtr #-}
+
+pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT = 0x88FE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/LightTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/LightTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/LightTexture.hs
@@ -0,0 +1,75 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.LightTexture (
+  -- * Extension Support
+    gl_EXT_light_texture
+
+  -- * GL_EXT_light_texture
+  , glApplyTextureEXT
+  , glTextureLightEXT
+  , glTextureMaterialEXT
+  , pattern GL_ATTENUATION_EXT
+  , pattern GL_FRAGMENT_COLOR_EXT
+  , pattern GL_FRAGMENT_DEPTH_EXT
+  , pattern GL_FRAGMENT_MATERIAL_EXT
+  , pattern GL_FRAGMENT_NORMAL_EXT
+  , pattern GL_SHADOW_ATTENUATION_EXT
+  , pattern GL_TEXTURE_APPLICATION_MODE_EXT
+  , pattern GL_TEXTURE_LIGHT_EXT
+  , pattern GL_TEXTURE_MATERIAL_FACE_EXT
+  , pattern GL_TEXTURE_MATERIAL_PARAMETER_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_light_texture :: Bool
+gl_EXT_light_texture = member "GL_EXT_light_texture" extensions
+
+glApplyTextureEXT :: MonadIO m => GLenum -> m ()
+glApplyTextureEXT = ffienumIOV glApplyTextureEXTFunPtr
+
+glApplyTextureEXTFunPtr :: FunPtr (GLenum -> IO ())
+glApplyTextureEXTFunPtr = unsafePerformIO (getProcAddress "glApplyTextureEXT")
+
+{-# NOINLINE glApplyTextureEXTFunPtr #-}
+
+glTextureLightEXT :: MonadIO m => GLenum -> m ()
+glTextureLightEXT = ffienumIOV glTextureLightEXTFunPtr
+
+glTextureLightEXTFunPtr :: FunPtr (GLenum -> IO ())
+glTextureLightEXTFunPtr = unsafePerformIO (getProcAddress "glTextureLightEXT")
+
+{-# NOINLINE glTextureLightEXTFunPtr #-}
+
+glTextureMaterialEXT :: MonadIO m => GLenum -> GLenum -> m ()
+glTextureMaterialEXT = ffienumenumIOV glTextureMaterialEXTFunPtr
+
+glTextureMaterialEXTFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glTextureMaterialEXTFunPtr = unsafePerformIO (getProcAddress "glTextureMaterialEXT")
+
+{-# NOINLINE glTextureMaterialEXTFunPtr #-}
+
+pattern GL_ATTENUATION_EXT = 0x834D :: GLenum
+
+pattern GL_FRAGMENT_COLOR_EXT = 0x834C :: GLenum
+
+pattern GL_FRAGMENT_MATERIAL_EXT = 0x8349 :: GLenum
+
+pattern GL_FRAGMENT_NORMAL_EXT = 0x834A :: GLenum
+
+pattern GL_SHADOW_ATTENUATION_EXT = 0x834E :: GLenum
+
+pattern GL_TEXTURE_APPLICATION_MODE_EXT = 0x834F :: GLenum
+
+pattern GL_TEXTURE_LIGHT_EXT = 0x8350 :: GLenum
+
+pattern GL_TEXTURE_MATERIAL_FACE_EXT = 0x8351 :: GLenum
+
+pattern GL_TEXTURE_MATERIAL_PARAMETER_EXT = 0x8352 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MapBufferRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MapBufferRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MapBufferRange.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.MapBufferRange (
+  -- * Extension Support
+    gl_EXT_map_buffer_range
+
+  -- * GL_EXT_map_buffer_range
+  , glFlushMappedBufferRangeEXT
+  , glMapBufferRangeEXT
+  , pattern GL_MAP_FLUSH_EXPLICIT_BIT_EXT
+  , pattern GL_MAP_INVALIDATE_BUFFER_BIT_EXT
+  , pattern GL_MAP_INVALIDATE_RANGE_BIT_EXT
+  , pattern GL_MAP_READ_BIT_EXT
+  , pattern GL_MAP_UNSYNCHRONIZED_BIT_EXT
+  , pattern GL_MAP_WRITE_BIT_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.Types
+import System.IO.Unsafe
+
+gl_EXT_map_buffer_range :: Bool
+gl_EXT_map_buffer_range = member "GL_EXT_map_buffer_range" extensions
+
+glFlushMappedBufferRangeEXT :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> m ()
+glFlushMappedBufferRangeEXT = ffienumintptrsizeiptrIOV glFlushMappedBufferRangeEXTFunPtr
+
+glFlushMappedBufferRangeEXTFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> IO ())
+glFlushMappedBufferRangeEXTFunPtr = unsafePerformIO (getProcAddress "glFlushMappedBufferRangeEXT")
+
+{-# NOINLINE glFlushMappedBufferRangeEXTFunPtr #-}
+
+glMapBufferRangeEXT :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
+glMapBufferRangeEXT = ffienumintptrsizeiptrbitfieldIOPtrV glMapBufferRangeEXTFunPtr
+
+glMapBufferRangeEXTFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ()))
+glMapBufferRangeEXTFunPtr = unsafePerformIO (getProcAddress "glMapBufferRangeEXT")
+
+{-# NOINLINE glMapBufferRangeEXTFunPtr #-}
+
+pattern GL_MAP_FLUSH_EXPLICIT_BIT_EXT = 0x0010 :: GLenum
+
+pattern GL_MAP_INVALIDATE_BUFFER_BIT_EXT = 0x0008 :: GLenum
+
+pattern GL_MAP_INVALIDATE_RANGE_BIT_EXT = 0x0004 :: GLenum
+
+pattern GL_MAP_READ_BIT_EXT = 0x0001 :: GLenum
+
+pattern GL_MAP_UNSYNCHRONIZED_BIT_EXT = 0x0020 :: GLenum
+
+pattern GL_MAP_WRITE_BIT_EXT = 0x0002 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MiscAttribute.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MiscAttribute.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MiscAttribute.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.MiscAttribute (
+  -- * Extension Support
+    gl_EXT_misc_attribute
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_misc_attribute :: Bool
+gl_EXT_misc_attribute = member "GL_EXT_misc_attribute" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultiDrawArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultiDrawArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultiDrawArrays.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.MultiDrawArrays (
+  -- * Extension Support
+    gl_EXT_multi_draw_arrays
+
+  -- * GL_EXT_multi_draw_arrays
+  , glMultiDrawArraysEXT
+  , glMultiDrawElementsEXT
+) 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_EXT_multi_draw_arrays :: Bool
+gl_EXT_multi_draw_arrays = member "GL_EXT_multi_draw_arrays" extensions
+
+glMultiDrawArraysEXT :: MonadIO m => GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
+glMultiDrawArraysEXT = ffienumPtrintPtrsizeisizeiIOV glMultiDrawArraysEXTFunPtr
+
+glMultiDrawArraysEXTFunPtr :: FunPtr (GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ())
+glMultiDrawArraysEXTFunPtr = unsafePerformIO (getProcAddress "glMultiDrawArraysEXT")
+
+{-# NOINLINE glMultiDrawArraysEXTFunPtr #-}
+
+glMultiDrawElementsEXT :: MonadIO m => GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
+glMultiDrawElementsEXT = ffienumPtrsizeienumPtrVsizeiIOV glMultiDrawElementsEXTFunPtr
+
+glMultiDrawElementsEXTFunPtr :: FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ())
+glMultiDrawElementsEXTFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementsEXT")
+
+{-# NOINLINE glMultiDrawElementsEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Multisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Multisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Multisample.hs
@@ -0,0 +1,88 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Multisample (
+  -- * Extension Support
+    gl_EXT_multisample
+
+  -- * GL_EXT_multisample
+  , glSampleMaskEXT
+  , glSamplePatternEXT
+  , pattern GL_1PASS_EXT
+  , pattern GL_2PASS_0_EXT
+  , pattern GL_2PASS_1_EXT
+  , pattern GL_4PASS_0_EXT
+  , pattern GL_4PASS_1_EXT
+  , pattern GL_4PASS_2_EXT
+  , pattern GL_4PASS_3_EXT
+  , pattern GL_MULTISAMPLE_BIT_EXT
+  , pattern GL_MULTISAMPLE_EXT
+  , pattern GL_SAMPLES_EXT
+  , pattern GL_SAMPLE_ALPHA_TO_MASK_EXT
+  , pattern GL_SAMPLE_ALPHA_TO_ONE_EXT
+  , pattern GL_SAMPLE_BUFFERS_EXT
+  , pattern GL_SAMPLE_MASK_EXT
+  , pattern GL_SAMPLE_MASK_INVERT_EXT
+  , pattern GL_SAMPLE_MASK_VALUE_EXT
+  , pattern GL_SAMPLE_PATTERN_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.Types
+import System.IO.Unsafe
+
+gl_EXT_multisample :: Bool
+gl_EXT_multisample = member "GL_EXT_multisample" extensions
+
+glSampleMaskEXT :: MonadIO m => GLclampf -> GLboolean -> m ()
+glSampleMaskEXT = fficlampfbooleanIOV glSampleMaskEXTFunPtr
+
+glSampleMaskEXTFunPtr :: FunPtr (GLclampf -> GLboolean -> IO ())
+glSampleMaskEXTFunPtr = unsafePerformIO (getProcAddress "glSampleMaskEXT")
+
+{-# NOINLINE glSampleMaskEXTFunPtr #-}
+
+glSamplePatternEXT :: MonadIO m => GLenum -> m ()
+glSamplePatternEXT = ffienumIOV glSamplePatternEXTFunPtr
+
+glSamplePatternEXTFunPtr :: FunPtr (GLenum -> IO ())
+glSamplePatternEXTFunPtr = unsafePerformIO (getProcAddress "glSamplePatternEXT")
+
+{-# NOINLINE glSamplePatternEXTFunPtr #-}
+
+pattern GL_1PASS_EXT = 0x80A1 :: GLenum
+
+pattern GL_2PASS_0_EXT = 0x80A2 :: GLenum
+
+pattern GL_2PASS_1_EXT = 0x80A3 :: GLenum
+
+pattern GL_4PASS_0_EXT = 0x80A4 :: GLenum
+
+pattern GL_4PASS_1_EXT = 0x80A5 :: GLenum
+
+pattern GL_4PASS_2_EXT = 0x80A6 :: GLenum
+
+pattern GL_4PASS_3_EXT = 0x80A7 :: GLenum
+
+pattern GL_MULTISAMPLE_BIT_EXT = 0x20000000 :: GLenum
+
+pattern GL_MULTISAMPLE_EXT = 0x809D :: GLenum
+
+pattern GL_SAMPLES_EXT = 0x80A9 :: GLenum
+
+pattern GL_SAMPLE_ALPHA_TO_MASK_EXT = 0x809E :: GLenum
+
+pattern GL_SAMPLE_ALPHA_TO_ONE_EXT = 0x809F :: GLenum
+
+pattern GL_SAMPLE_BUFFERS_EXT = 0x80A8 :: GLenum
+
+pattern GL_SAMPLE_MASK_EXT = 0x80A0 :: GLenum
+
+pattern GL_SAMPLE_MASK_INVERT_EXT = 0x80AB :: GLenum
+
+pattern GL_SAMPLE_MASK_VALUE_EXT = 0x80AA :: GLenum
+
+pattern GL_SAMPLE_PATTERN_EXT = 0x80AC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultisampledRenderToTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultisampledRenderToTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultisampledRenderToTexture.hs
@@ -0,0 +1,36 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.MultisampledRenderToTexture (
+  -- * Extension Support
+    gl_EXT_multisampled_render_to_texture
+
+  -- * GL_EXT_multisampled_render_to_texture
+  , glFramebufferTexture2DMultisampleEXT
+  , glRenderbufferStorageMultisampleEXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT
+  , pattern GL_MAX_SAMPLES_EXT
+  , pattern GL_RENDERBUFFER_SAMPLES_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_multisampled_render_to_texture :: Bool
+gl_EXT_multisampled_render_to_texture = member "GL_EXT_multisampled_render_to_texture" extensions
+
+glFramebufferTexture2DMultisampleEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> m ()
+glFramebufferTexture2DMultisampleEXT = ffienumenumenumuintintsizeiIOV glFramebufferTexture2DMultisampleEXTFunPtr
+
+glFramebufferTexture2DMultisampleEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> IO ())
+glFramebufferTexture2DMultisampleEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture2DMultisampleEXT")
+
+{-# NOINLINE glFramebufferTexture2DMultisampleEXTFunPtr #-}
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = 0x8D6C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultiviewDrawBuffers.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultiviewDrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/MultiviewDrawBuffers.hs
@@ -0,0 +1,61 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.MultiviewDrawBuffers (
+  -- * Extension Support
+    gl_EXT_multiview_draw_buffers
+
+  -- * GL_EXT_multiview_draw_buffers
+  , glDrawBuffersIndexedEXT
+  , glGetIntegeri_vEXT
+  , glReadBufferIndexedEXT
+  , pattern GL_COLOR_ATTACHMENT_EXT
+  , pattern GL_DRAW_BUFFER_EXT
+  , pattern GL_MAX_MULTIVIEW_BUFFERS_EXT
+  , pattern GL_MULTIVIEW_EXT
+  , pattern GL_READ_BUFFER_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.Types
+import System.IO.Unsafe
+
+gl_EXT_multiview_draw_buffers :: Bool
+gl_EXT_multiview_draw_buffers = member "GL_EXT_multiview_draw_buffers" extensions
+
+glDrawBuffersIndexedEXT :: MonadIO m => GLint -> Ptr GLenum -> Ptr GLint -> m ()
+glDrawBuffersIndexedEXT = ffiintPtrenumPtrintIOV glDrawBuffersIndexedEXTFunPtr
+
+glDrawBuffersIndexedEXTFunPtr :: FunPtr (GLint -> Ptr GLenum -> Ptr GLint -> IO ())
+glDrawBuffersIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glDrawBuffersIndexedEXT")
+
+{-# NOINLINE glDrawBuffersIndexedEXTFunPtr #-}
+
+glGetIntegeri_vEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
+glGetIntegeri_vEXT = ffienumuintPtrintIOV glGetIntegeri_vEXTFunPtr
+
+glGetIntegeri_vEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
+glGetIntegeri_vEXTFunPtr = unsafePerformIO (getProcAddress "glGetIntegeri_vEXT")
+
+{-# NOINLINE glGetIntegeri_vEXTFunPtr #-}
+
+glReadBufferIndexedEXT :: MonadIO m => GLenum -> GLint -> m ()
+glReadBufferIndexedEXT = ffienumintIOV glReadBufferIndexedEXTFunPtr
+
+glReadBufferIndexedEXTFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glReadBufferIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glReadBufferIndexedEXT")
+
+{-# NOINLINE glReadBufferIndexedEXTFunPtr #-}
+
+pattern GL_COLOR_ATTACHMENT_EXT = 0x90F0 :: GLenum
+
+pattern GL_DRAW_BUFFER_EXT = 0x0C01 :: GLenum
+
+pattern GL_MAX_MULTIVIEW_BUFFERS_EXT = 0x90F2 :: GLenum
+
+pattern GL_MULTIVIEW_EXT = 0x90F1 :: GLenum
+
+pattern GL_READ_BUFFER_EXT = 0x0C02 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/OcclusionQueryBoolean.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/OcclusionQueryBoolean.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/OcclusionQueryBoolean.hs
@@ -0,0 +1,32 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.OcclusionQueryBoolean (
+  -- * Extension Support
+    gl_EXT_occlusion_query_boolean
+
+  -- * GL_EXT_occlusion_query_boolean
+  , glBeginQueryEXT
+  , glDeleteQueriesEXT
+  , glEndQueryEXT
+  , glGenQueriesEXT
+  , glGetQueryObjectuivEXT
+  , glGetQueryivEXT
+  , glIsQueryEXT
+  , pattern GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT
+  , pattern GL_ANY_SAMPLES_PASSED_EXT
+  , pattern GL_CURRENT_QUERY_EXT
+  , pattern GL_QUERY_RESULT_AVAILABLE_EXT
+  , pattern GL_QUERY_RESULT_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_occlusion_query_boolean :: Bool
+gl_EXT_occlusion_query_boolean = member "GL_EXT_occlusion_query_boolean" extensions
+
+pattern GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT = 0x8D6A :: GLenum
+
+pattern GL_ANY_SAMPLES_PASSED_EXT = 0x8C2F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedDepthStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedDepthStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedDepthStencil.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PackedDepthStencil (
+  -- * Extension Support
+    gl_EXT_packed_depth_stencil
+
+  -- * GL_EXT_packed_depth_stencil
+  , pattern GL_DEPTH24_STENCIL8_EXT
+  , pattern GL_DEPTH_STENCIL_EXT
+  , pattern GL_TEXTURE_STENCIL_SIZE_EXT
+  , pattern GL_UNSIGNED_INT_24_8_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_packed_depth_stencil :: Bool
+gl_EXT_packed_depth_stencil = member "GL_EXT_packed_depth_stencil" extensions
+
+pattern GL_DEPTH24_STENCIL8_EXT = 0x88F0 :: GLenum
+
+pattern GL_DEPTH_STENCIL_EXT = 0x84F9 :: GLenum
+
+pattern GL_TEXTURE_STENCIL_SIZE_EXT = 0x88F1 :: GLenum
+
+pattern GL_UNSIGNED_INT_24_8_EXT = 0x84FA :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedFloat.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PackedFloat (
+  -- * Extension Support
+    gl_EXT_packed_float
+
+  -- * GL_EXT_packed_float
+  , pattern GL_R11F_G11F_B10F_EXT
+  , pattern GL_RGBA_SIGNED_COMPONENTS_EXT
+  , pattern GL_UNSIGNED_INT_10F_11F_11F_REV_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_packed_float :: Bool
+gl_EXT_packed_float = member "GL_EXT_packed_float" extensions
+
+pattern GL_R11F_G11F_B10F_EXT = 0x8C3A :: GLenum
+
+pattern GL_RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C :: GLenum
+
+pattern GL_UNSIGNED_INT_10F_11F_11F_REV_EXT = 0x8C3B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedPixels.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedPixels.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PackedPixels.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PackedPixels (
+  -- * Extension Support
+    gl_EXT_packed_pixels
+
+  -- * GL_EXT_packed_pixels
+  , pattern GL_UNSIGNED_BYTE_3_3_2_EXT
+  , pattern GL_UNSIGNED_INT_10_10_10_2_EXT
+  , pattern GL_UNSIGNED_INT_8_8_8_8_EXT
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4_EXT
+  , pattern GL_UNSIGNED_SHORT_5_5_5_1_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_packed_pixels :: Bool
+gl_EXT_packed_pixels = member "GL_EXT_packed_pixels" extensions
+
+pattern GL_UNSIGNED_BYTE_3_3_2_EXT = 0x8032 :: GLenum
+
+pattern GL_UNSIGNED_INT_10_10_10_2_EXT = 0x8036 :: GLenum
+
+pattern GL_UNSIGNED_INT_8_8_8_8_EXT = 0x8035 :: GLenum
+
+pattern GL_UNSIGNED_SHORT_4_4_4_4_EXT = 0x8033 :: GLenum
+
+pattern GL_UNSIGNED_SHORT_5_5_5_1_EXT = 0x8034 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PalettedTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PalettedTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PalettedTexture.hs
@@ -0,0 +1,76 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PalettedTexture (
+  -- * Extension Support
+    gl_EXT_paletted_texture
+
+  -- * GL_EXT_paletted_texture
+  , glColorTableEXT
+  , glGetColorTableEXT
+  , glGetColorTableParameterfvEXT
+  , glGetColorTableParameterivEXT
+  , pattern GL_COLOR_INDEX12_EXT
+  , pattern GL_COLOR_INDEX16_EXT
+  , pattern GL_COLOR_INDEX1_EXT
+  , pattern GL_COLOR_INDEX2_EXT
+  , pattern GL_COLOR_INDEX4_EXT
+  , pattern GL_COLOR_INDEX8_EXT
+  , pattern GL_TEXTURE_INDEX_SIZE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_paletted_texture :: Bool
+gl_EXT_paletted_texture = member "GL_EXT_paletted_texture" extensions
+
+glColorTableEXT :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glColorTableEXT = ffienumenumsizeienumenumPtrVIOV glColorTableEXTFunPtr
+
+glColorTableEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glColorTableEXTFunPtr = unsafePerformIO (getProcAddress "glColorTableEXT")
+
+{-# NOINLINE glColorTableEXTFunPtr #-}
+
+glGetColorTableEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+glGetColorTableEXT = ffienumenumenumPtrVIOV glGetColorTableEXTFunPtr
+
+glGetColorTableEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetColorTableEXTFunPtr = unsafePerformIO (getProcAddress "glGetColorTableEXT")
+
+{-# NOINLINE glGetColorTableEXTFunPtr #-}
+
+glGetColorTableParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetColorTableParameterfvEXT = ffienumenumPtrfloatIOV glGetColorTableParameterfvEXTFunPtr
+
+glGetColorTableParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetColorTableParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetColorTableParameterfvEXT")
+
+{-# NOINLINE glGetColorTableParameterfvEXTFunPtr #-}
+
+glGetColorTableParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetColorTableParameterivEXT = ffienumenumPtrintIOV glGetColorTableParameterivEXTFunPtr
+
+glGetColorTableParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetColorTableParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetColorTableParameterivEXT")
+
+{-# NOINLINE glGetColorTableParameterivEXTFunPtr #-}
+
+pattern GL_COLOR_INDEX12_EXT = 0x80E6 :: GLenum
+
+pattern GL_COLOR_INDEX16_EXT = 0x80E7 :: GLenum
+
+pattern GL_COLOR_INDEX1_EXT = 0x80E2 :: GLenum
+
+pattern GL_COLOR_INDEX2_EXT = 0x80E3 :: GLenum
+
+pattern GL_COLOR_INDEX4_EXT = 0x80E4 :: GLenum
+
+pattern GL_COLOR_INDEX8_EXT = 0x80E5 :: GLenum
+
+pattern GL_TEXTURE_INDEX_SIZE_EXT = 0x80ED :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelBufferObject.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PixelBufferObject (
+  -- * Extension Support
+    gl_EXT_pixel_buffer_object
+
+  -- * GL_EXT_pixel_buffer_object
+  , pattern GL_PIXEL_PACK_BUFFER_BINDING_EXT
+  , pattern GL_PIXEL_PACK_BUFFER_EXT
+  , pattern GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
+  , pattern GL_PIXEL_UNPACK_BUFFER_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_pixel_buffer_object :: Bool
+gl_EXT_pixel_buffer_object = member "GL_EXT_pixel_buffer_object" extensions
+
+pattern GL_PIXEL_PACK_BUFFER_BINDING_EXT = 0x88ED :: GLenum
+
+pattern GL_PIXEL_PACK_BUFFER_EXT = 0x88EB :: GLenum
+
+pattern GL_PIXEL_UNPACK_BUFFER_BINDING_EXT = 0x88EF :: GLenum
+
+pattern GL_PIXEL_UNPACK_BUFFER_EXT = 0x88EC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelTransform.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelTransform.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelTransform.hs
@@ -0,0 +1,100 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PixelTransform (
+  -- * Extension Support
+    gl_EXT_pixel_transform
+
+  -- * GL_EXT_pixel_transform
+  , glGetPixelTransformParameterfvEXT
+  , glGetPixelTransformParameterivEXT
+  , glPixelTransformParameterfEXT
+  , glPixelTransformParameterfvEXT
+  , glPixelTransformParameteriEXT
+  , glPixelTransformParameterivEXT
+  , pattern GL_AVERAGE_EXT
+  , pattern GL_CUBIC_EXT
+  , pattern GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT
+  , pattern GL_PIXEL_CUBIC_WEIGHT_EXT
+  , pattern GL_PIXEL_MAG_FILTER_EXT
+  , pattern GL_PIXEL_MIN_FILTER_EXT
+  , pattern GL_PIXEL_TRANSFORM_2D_EXT
+  , pattern GL_PIXEL_TRANSFORM_2D_MATRIX_EXT
+  , pattern GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_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.Types
+import System.IO.Unsafe
+
+gl_EXT_pixel_transform :: Bool
+gl_EXT_pixel_transform = member "GL_EXT_pixel_transform" extensions
+
+glGetPixelTransformParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetPixelTransformParameterfvEXT = ffienumenumPtrfloatIOV glGetPixelTransformParameterfvEXTFunPtr
+
+glGetPixelTransformParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetPixelTransformParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetPixelTransformParameterfvEXT")
+
+{-# NOINLINE glGetPixelTransformParameterfvEXTFunPtr #-}
+
+glGetPixelTransformParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetPixelTransformParameterivEXT = ffienumenumPtrintIOV glGetPixelTransformParameterivEXTFunPtr
+
+glGetPixelTransformParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetPixelTransformParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetPixelTransformParameterivEXT")
+
+{-# NOINLINE glGetPixelTransformParameterivEXTFunPtr #-}
+
+glPixelTransformParameterfEXT :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
+glPixelTransformParameterfEXT = ffienumenumfloatIOV glPixelTransformParameterfEXTFunPtr
+
+glPixelTransformParameterfEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
+glPixelTransformParameterfEXTFunPtr = unsafePerformIO (getProcAddress "glPixelTransformParameterfEXT")
+
+{-# NOINLINE glPixelTransformParameterfEXTFunPtr #-}
+
+glPixelTransformParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glPixelTransformParameterfvEXT = ffienumenumPtrfloatIOV glPixelTransformParameterfvEXTFunPtr
+
+glPixelTransformParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glPixelTransformParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glPixelTransformParameterfvEXT")
+
+{-# NOINLINE glPixelTransformParameterfvEXTFunPtr #-}
+
+glPixelTransformParameteriEXT :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glPixelTransformParameteriEXT = ffienumenumintIOV glPixelTransformParameteriEXTFunPtr
+
+glPixelTransformParameteriEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glPixelTransformParameteriEXTFunPtr = unsafePerformIO (getProcAddress "glPixelTransformParameteriEXT")
+
+{-# NOINLINE glPixelTransformParameteriEXTFunPtr #-}
+
+glPixelTransformParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glPixelTransformParameterivEXT = ffienumenumPtrintIOV glPixelTransformParameterivEXTFunPtr
+
+glPixelTransformParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glPixelTransformParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glPixelTransformParameterivEXT")
+
+{-# NOINLINE glPixelTransformParameterivEXTFunPtr #-}
+
+pattern GL_AVERAGE_EXT = 0x8335 :: GLenum
+
+pattern GL_CUBIC_EXT = 0x8334 :: GLenum
+
+pattern GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8337 :: GLenum
+
+pattern GL_PIXEL_CUBIC_WEIGHT_EXT = 0x8333 :: GLenum
+
+pattern GL_PIXEL_MAG_FILTER_EXT = 0x8331 :: GLenum
+
+pattern GL_PIXEL_MIN_FILTER_EXT = 0x8332 :: GLenum
+
+pattern GL_PIXEL_TRANSFORM_2D_EXT = 0x8330 :: GLenum
+
+pattern GL_PIXEL_TRANSFORM_2D_MATRIX_EXT = 0x8338 :: GLenum
+
+pattern GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8336 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelTransformColorTable.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelTransformColorTable.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PixelTransformColorTable.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PixelTransformColorTable (
+  -- * Extension Support
+    gl_EXT_pixel_transform_color_table
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_pixel_transform_color_table :: Bool
+gl_EXT_pixel_transform_color_table = member "GL_EXT_pixel_transform_color_table" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PointParameters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PointParameters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PointParameters.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PointParameters (
+  -- * Extension Support
+    gl_EXT_point_parameters
+
+  -- * GL_EXT_point_parameters
+  , glPointParameterfEXT
+  , glPointParameterfvEXT
+  , pattern GL_DISTANCE_ATTENUATION_EXT
+  , pattern GL_POINT_FADE_THRESHOLD_SIZE_EXT
+  , pattern GL_POINT_SIZE_MAX_EXT
+  , pattern GL_POINT_SIZE_MIN_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.Types
+import System.IO.Unsafe
+
+gl_EXT_point_parameters :: Bool
+gl_EXT_point_parameters = member "GL_EXT_point_parameters" extensions
+
+glPointParameterfEXT :: MonadIO m => GLenum -> GLfloat -> m ()
+glPointParameterfEXT = ffienumfloatIOV glPointParameterfEXTFunPtr
+
+glPointParameterfEXTFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glPointParameterfEXTFunPtr = unsafePerformIO (getProcAddress "glPointParameterfEXT")
+
+{-# NOINLINE glPointParameterfEXTFunPtr #-}
+
+glPointParameterfvEXT :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glPointParameterfvEXT = ffienumPtrfloatIOV glPointParameterfvEXTFunPtr
+
+glPointParameterfvEXTFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glPointParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glPointParameterfvEXT")
+
+{-# NOINLINE glPointParameterfvEXTFunPtr #-}
+
+pattern GL_DISTANCE_ATTENUATION_EXT = 0x8129 :: GLenum
+
+pattern GL_POINT_FADE_THRESHOLD_SIZE_EXT = 0x8128 :: GLenum
+
+pattern GL_POINT_SIZE_MAX_EXT = 0x8127 :: GLenum
+
+pattern GL_POINT_SIZE_MIN_EXT = 0x8126 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PolygonOffset.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PolygonOffset.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PolygonOffset.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PolygonOffset (
+  -- * Extension Support
+    gl_EXT_polygon_offset
+
+  -- * GL_EXT_polygon_offset
+  , glPolygonOffsetEXT
+  , pattern GL_POLYGON_OFFSET_BIAS_EXT
+  , pattern GL_POLYGON_OFFSET_EXT
+  , pattern GL_POLYGON_OFFSET_FACTOR_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.Types
+import System.IO.Unsafe
+
+gl_EXT_polygon_offset :: Bool
+gl_EXT_polygon_offset = member "GL_EXT_polygon_offset" extensions
+
+glPolygonOffsetEXT :: MonadIO m => GLfloat -> GLfloat -> m ()
+glPolygonOffsetEXT = ffifloatfloatIOV glPolygonOffsetEXTFunPtr
+
+glPolygonOffsetEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
+glPolygonOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glPolygonOffsetEXT")
+
+{-# NOINLINE glPolygonOffsetEXTFunPtr #-}
+
+pattern GL_POLYGON_OFFSET_BIAS_EXT = 0x8039 :: GLenum
+
+pattern GL_POLYGON_OFFSET_EXT = 0x8037 :: GLenum
+
+pattern GL_POLYGON_OFFSET_FACTOR_EXT = 0x8038 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PolygonOffsetClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PolygonOffsetClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PolygonOffsetClamp.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PolygonOffsetClamp (
+  -- * Extension Support
+    gl_EXT_polygon_offset_clamp
+
+  -- * GL_EXT_polygon_offset_clamp
+  , glPolygonOffsetClampEXT
+  , pattern GL_POLYGON_OFFSET_CLAMP_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.Types
+import System.IO.Unsafe
+
+gl_EXT_polygon_offset_clamp :: Bool
+gl_EXT_polygon_offset_clamp = member "GL_EXT_polygon_offset_clamp" extensions
+
+glPolygonOffsetClampEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
+glPolygonOffsetClampEXT = ffifloatfloatfloatIOV glPolygonOffsetClampEXTFunPtr
+
+glPolygonOffsetClampEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
+glPolygonOffsetClampEXTFunPtr = unsafePerformIO (getProcAddress "glPolygonOffsetClampEXT")
+
+{-# NOINLINE glPolygonOffsetClampEXTFunPtr #-}
+
+pattern GL_POLYGON_OFFSET_CLAMP_EXT = 0x8E1B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PostDepthCoverage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PostDepthCoverage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PostDepthCoverage.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PostDepthCoverage (
+  -- * Extension Support
+    gl_EXT_post_depth_coverage
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_post_depth_coverage :: Bool
+gl_EXT_post_depth_coverage = member "GL_EXT_post_depth_coverage" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PrimitiveBoundingBox.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PrimitiveBoundingBox.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PrimitiveBoundingBox.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PrimitiveBoundingBox (
+  -- * Extension Support
+    gl_EXT_primitive_bounding_box
+
+  -- * GL_EXT_primitive_bounding_box
+  , glPrimitiveBoundingBoxEXT
+  , pattern GL_PRIMITIVE_BOUNDING_BOX_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.Types
+import System.IO.Unsafe
+
+gl_EXT_primitive_bounding_box :: Bool
+gl_EXT_primitive_bounding_box = member "GL_EXT_primitive_bounding_box" extensions
+
+glPrimitiveBoundingBoxEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glPrimitiveBoundingBoxEXT = ffifloatfloatfloatfloatfloatfloatfloatfloatIOV glPrimitiveBoundingBoxEXTFunPtr
+
+glPrimitiveBoundingBoxEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glPrimitiveBoundingBoxEXTFunPtr = unsafePerformIO (getProcAddress "glPrimitiveBoundingBoxEXT")
+
+{-# NOINLINE glPrimitiveBoundingBoxEXTFunPtr #-}
+
+pattern GL_PRIMITIVE_BOUNDING_BOX_EXT = 0x92BE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ProvokingVertex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ProvokingVertex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ProvokingVertex.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ProvokingVertex (
+  -- * Extension Support
+    gl_EXT_provoking_vertex
+
+  -- * GL_EXT_provoking_vertex
+  , glProvokingVertexEXT
+  , pattern GL_FIRST_VERTEX_CONVENTION_EXT
+  , pattern GL_LAST_VERTEX_CONVENTION_EXT
+  , pattern GL_PROVOKING_VERTEX_EXT
+  , pattern GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_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_provoking_vertex :: Bool
+gl_EXT_provoking_vertex = member "GL_EXT_provoking_vertex" extensions
+
+glProvokingVertexEXT :: MonadIO m => GLenum -> m ()
+glProvokingVertexEXT = ffienumIOV glProvokingVertexEXTFunPtr
+
+glProvokingVertexEXTFunPtr :: FunPtr (GLenum -> IO ())
+glProvokingVertexEXTFunPtr = unsafePerformIO (getProcAddress "glProvokingVertexEXT")
+
+{-# NOINLINE glProvokingVertexEXTFunPtr #-}
+
+pattern GL_PROVOKING_VERTEX_EXT = 0x8E4F :: GLenum
+
+pattern GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = 0x8E4C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PvrtcSRGB.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PvrtcSRGB.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/PvrtcSRGB.hs
@@ -0,0 +1,33 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.PvrtcSRGB (
+  -- * Extension Support
+    gl_EXT_pvrtc_sRGB
+
+  -- * GL_EXT_pvrtc_sRGB
+  , pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT
+  , pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG
+  , pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT
+  , pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG
+  , pattern GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT
+  , pattern GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_pvrtc_sRGB :: Bool
+gl_EXT_pvrtc_sRGB = member "GL_EXT_pvrtc_sRGB" extensions
+
+pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT = 0x8A56 :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG = 0x93F0 :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT = 0x8A57 :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG = 0x93F1 :: GLenum
+
+pattern GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT = 0x8A54 :: GLenum
+
+pattern GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT = 0x8A55 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/RasterMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/RasterMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/RasterMultisample.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.RasterMultisample (
+  -- * Extension Support
+    gl_EXT_raster_multisample
+
+  -- * GL_EXT_raster_multisample
+  , glRasterSamplesEXT
+  , pattern GL_EFFECTIVE_RASTER_SAMPLES_EXT
+  , pattern GL_MAX_RASTER_SAMPLES_EXT
+  , pattern GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT
+  , pattern GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT
+  , pattern GL_RASTER_MULTISAMPLE_EXT
+  , pattern GL_RASTER_SAMPLES_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_raster_multisample :: Bool
+gl_EXT_raster_multisample = member "GL_EXT_raster_multisample" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ReadFormatBgra.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ReadFormatBgra.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ReadFormatBgra.hs
@@ -0,0 +1,23 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ReadFormatBgra (
+  -- * Extension Support
+    gl_EXT_read_format_bgra
+
+  -- * GL_EXT_read_format_bgra
+  , pattern GL_BGRA_EXT
+  , pattern GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_read_format_bgra :: Bool
+gl_EXT_read_format_bgra = member "GL_EXT_read_format_bgra" extensions
+
+pattern GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT = 0x8366 :: GLenum
+
+pattern GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT = 0x8365 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/RescaleNormal.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/RescaleNormal.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/RescaleNormal.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.RescaleNormal (
+  -- * Extension Support
+    gl_EXT_rescale_normal
+
+  -- * GL_EXT_rescale_normal
+  , pattern GL_RESCALE_NORMAL_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_rescale_normal :: Bool
+gl_EXT_rescale_normal = member "GL_EXT_rescale_normal" extensions
+
+pattern GL_RESCALE_NORMAL_EXT = 0x803A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Robustness.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Robustness.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Robustness.hs
@@ -0,0 +1,78 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Robustness (
+  -- * Extension Support
+    gl_EXT_robustness
+
+  -- * GL_EXT_robustness
+  , glGetGraphicsResetStatusEXT
+  , glGetnUniformfvEXT
+  , glGetnUniformivEXT
+  , glReadnPixelsEXT
+  , pattern GL_CONTEXT_ROBUST_ACCESS_EXT
+  , pattern GL_GUILTY_CONTEXT_RESET_EXT
+  , pattern GL_INNOCENT_CONTEXT_RESET_EXT
+  , pattern GL_LOSE_CONTEXT_ON_RESET_EXT
+  , pattern GL_NO_ERROR
+  , pattern GL_NO_RESET_NOTIFICATION_EXT
+  , pattern GL_RESET_NOTIFICATION_STRATEGY_EXT
+  , pattern GL_UNKNOWN_CONTEXT_RESET_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_robustness :: Bool
+gl_EXT_robustness = member "GL_EXT_robustness" extensions
+
+glGetGraphicsResetStatusEXT :: MonadIO m => m GLenum
+glGetGraphicsResetStatusEXT = ffiIOenum glGetGraphicsResetStatusEXTFunPtr
+
+glGetGraphicsResetStatusEXTFunPtr :: FunPtr (IO GLenum)
+glGetGraphicsResetStatusEXTFunPtr = unsafePerformIO (getProcAddress "glGetGraphicsResetStatusEXT")
+
+{-# NOINLINE glGetGraphicsResetStatusEXTFunPtr #-}
+
+glGetnUniformfvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
+glGetnUniformfvEXT = ffiuintintsizeiPtrfloatIOV glGetnUniformfvEXTFunPtr
+
+glGetnUniformfvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
+glGetnUniformfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetnUniformfvEXT")
+
+{-# NOINLINE glGetnUniformfvEXTFunPtr #-}
+
+glGetnUniformivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
+glGetnUniformivEXT = ffiuintintsizeiPtrintIOV glGetnUniformivEXTFunPtr
+
+glGetnUniformivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
+glGetnUniformivEXTFunPtr = unsafePerformIO (getProcAddress "glGetnUniformivEXT")
+
+{-# NOINLINE glGetnUniformivEXTFunPtr #-}
+
+glReadnPixelsEXT :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glReadnPixelsEXT = ffiintintsizeisizeienumenumsizeiPtrVIOV glReadnPixelsEXTFunPtr
+
+glReadnPixelsEXTFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glReadnPixelsEXTFunPtr = unsafePerformIO (getProcAddress "glReadnPixelsEXT")
+
+{-# NOINLINE glReadnPixelsEXTFunPtr #-}
+
+pattern GL_CONTEXT_ROBUST_ACCESS_EXT = 0x90F3 :: GLenum
+
+pattern GL_GUILTY_CONTEXT_RESET_EXT = 0x8253 :: GLenum
+
+pattern GL_INNOCENT_CONTEXT_RESET_EXT = 0x8254 :: GLenum
+
+pattern GL_LOSE_CONTEXT_ON_RESET_EXT = 0x8252 :: GLenum
+
+pattern GL_NO_RESET_NOTIFICATION_EXT = 0x8261 :: GLenum
+
+pattern GL_RESET_NOTIFICATION_STRATEGY_EXT = 0x8256 :: GLenum
+
+pattern GL_UNKNOWN_CONTEXT_RESET_EXT = 0x8255 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SRGB.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SRGB.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SRGB.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.SRGB (
+  -- * Extension Support
+    gl_EXT_sRGB
+
+  -- * GL_EXT_sRGB
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT
+  , pattern GL_SRGB8_ALPHA8_EXT
+  , pattern GL_SRGB_ALPHA_EXT
+  , pattern GL_SRGB_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_sRGB :: Bool
+gl_EXT_sRGB = member "GL_EXT_sRGB" extensions
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SRGBWriteControl.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SRGBWriteControl.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SRGBWriteControl.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.SRGBWriteControl (
+  -- * Extension Support
+    gl_EXT_sRGB_write_control
+
+  -- * GL_EXT_sRGB_write_control
+  , pattern GL_FRAMEBUFFER_SRGB_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_sRGB_write_control :: Bool
+gl_EXT_sRGB_write_control = member "GL_EXT_sRGB_write_control" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SecondaryColor.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SecondaryColor.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SecondaryColor.hs
@@ -0,0 +1,193 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.SecondaryColor (
+  -- * Extension Support
+    gl_EXT_secondary_color
+
+  -- * GL_EXT_secondary_color
+  , glSecondaryColor3bEXT
+  , glSecondaryColor3bvEXT
+  , glSecondaryColor3dEXT
+  , glSecondaryColor3dvEXT
+  , glSecondaryColor3fEXT
+  , glSecondaryColor3fvEXT
+  , glSecondaryColor3iEXT
+  , glSecondaryColor3ivEXT
+  , glSecondaryColor3sEXT
+  , glSecondaryColor3svEXT
+  , glSecondaryColor3ubEXT
+  , glSecondaryColor3ubvEXT
+  , glSecondaryColor3uiEXT
+  , glSecondaryColor3uivEXT
+  , glSecondaryColor3usEXT
+  , glSecondaryColor3usvEXT
+  , glSecondaryColorPointerEXT
+  , pattern GL_COLOR_SUM_EXT
+  , pattern GL_CURRENT_SECONDARY_COLOR_EXT
+  , pattern GL_SECONDARY_COLOR_ARRAY_EXT
+  , pattern GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
+  , pattern GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
+  , pattern GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
+  , pattern GL_SECONDARY_COLOR_ARRAY_TYPE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_secondary_color :: Bool
+gl_EXT_secondary_color = member "GL_EXT_secondary_color" extensions
+
+glSecondaryColor3bEXT :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
+glSecondaryColor3bEXT = ffibytebytebyteIOV glSecondaryColor3bEXTFunPtr
+
+glSecondaryColor3bEXTFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
+glSecondaryColor3bEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3bEXT")
+
+{-# NOINLINE glSecondaryColor3bEXTFunPtr #-}
+
+glSecondaryColor3bvEXT :: MonadIO m => Ptr GLbyte -> m ()
+glSecondaryColor3bvEXT = ffiPtrbyteIOV glSecondaryColor3bvEXTFunPtr
+
+glSecondaryColor3bvEXTFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glSecondaryColor3bvEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3bvEXT")
+
+{-# NOINLINE glSecondaryColor3bvEXTFunPtr #-}
+
+glSecondaryColor3dEXT :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
+glSecondaryColor3dEXT = ffidoubledoubledoubleIOV glSecondaryColor3dEXTFunPtr
+
+glSecondaryColor3dEXTFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
+glSecondaryColor3dEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3dEXT")
+
+{-# NOINLINE glSecondaryColor3dEXTFunPtr #-}
+
+glSecondaryColor3dvEXT :: MonadIO m => Ptr GLdouble -> m ()
+glSecondaryColor3dvEXT = ffiPtrdoubleIOV glSecondaryColor3dvEXTFunPtr
+
+glSecondaryColor3dvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glSecondaryColor3dvEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3dvEXT")
+
+{-# NOINLINE glSecondaryColor3dvEXTFunPtr #-}
+
+glSecondaryColor3fEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
+glSecondaryColor3fEXT = ffifloatfloatfloatIOV glSecondaryColor3fEXTFunPtr
+
+glSecondaryColor3fEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
+glSecondaryColor3fEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3fEXT")
+
+{-# NOINLINE glSecondaryColor3fEXTFunPtr #-}
+
+glSecondaryColor3fvEXT :: MonadIO m => Ptr GLfloat -> m ()
+glSecondaryColor3fvEXT = ffiPtrfloatIOV glSecondaryColor3fvEXTFunPtr
+
+glSecondaryColor3fvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glSecondaryColor3fvEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3fvEXT")
+
+{-# NOINLINE glSecondaryColor3fvEXTFunPtr #-}
+
+glSecondaryColor3iEXT :: MonadIO m => GLint -> GLint -> GLint -> m ()
+glSecondaryColor3iEXT = ffiintintintIOV glSecondaryColor3iEXTFunPtr
+
+glSecondaryColor3iEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
+glSecondaryColor3iEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3iEXT")
+
+{-# NOINLINE glSecondaryColor3iEXTFunPtr #-}
+
+glSecondaryColor3ivEXT :: MonadIO m => Ptr GLint -> m ()
+glSecondaryColor3ivEXT = ffiPtrintIOV glSecondaryColor3ivEXTFunPtr
+
+glSecondaryColor3ivEXTFunPtr :: FunPtr (Ptr GLint -> IO ())
+glSecondaryColor3ivEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ivEXT")
+
+{-# NOINLINE glSecondaryColor3ivEXTFunPtr #-}
+
+glSecondaryColor3sEXT :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
+glSecondaryColor3sEXT = ffishortshortshortIOV glSecondaryColor3sEXTFunPtr
+
+glSecondaryColor3sEXTFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
+glSecondaryColor3sEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3sEXT")
+
+{-# NOINLINE glSecondaryColor3sEXTFunPtr #-}
+
+glSecondaryColor3svEXT :: MonadIO m => Ptr GLshort -> m ()
+glSecondaryColor3svEXT = ffiPtrshortIOV glSecondaryColor3svEXTFunPtr
+
+glSecondaryColor3svEXTFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glSecondaryColor3svEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3svEXT")
+
+{-# NOINLINE glSecondaryColor3svEXTFunPtr #-}
+
+glSecondaryColor3ubEXT :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> m ()
+glSecondaryColor3ubEXT = ffiubyteubyteubyteIOV glSecondaryColor3ubEXTFunPtr
+
+glSecondaryColor3ubEXTFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> IO ())
+glSecondaryColor3ubEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ubEXT")
+
+{-# NOINLINE glSecondaryColor3ubEXTFunPtr #-}
+
+glSecondaryColor3ubvEXT :: MonadIO m => Ptr GLubyte -> m ()
+glSecondaryColor3ubvEXT = ffiPtrubyteIOV glSecondaryColor3ubvEXTFunPtr
+
+glSecondaryColor3ubvEXTFunPtr :: FunPtr (Ptr GLubyte -> IO ())
+glSecondaryColor3ubvEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ubvEXT")
+
+{-# NOINLINE glSecondaryColor3ubvEXTFunPtr #-}
+
+glSecondaryColor3uiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
+glSecondaryColor3uiEXT = ffiuintuintuintIOV glSecondaryColor3uiEXTFunPtr
+
+glSecondaryColor3uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
+glSecondaryColor3uiEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3uiEXT")
+
+{-# NOINLINE glSecondaryColor3uiEXTFunPtr #-}
+
+glSecondaryColor3uivEXT :: MonadIO m => Ptr GLuint -> m ()
+glSecondaryColor3uivEXT = ffiPtruintIOV glSecondaryColor3uivEXTFunPtr
+
+glSecondaryColor3uivEXTFunPtr :: FunPtr (Ptr GLuint -> IO ())
+glSecondaryColor3uivEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3uivEXT")
+
+{-# NOINLINE glSecondaryColor3uivEXTFunPtr #-}
+
+glSecondaryColor3usEXT :: MonadIO m => GLushort -> GLushort -> GLushort -> m ()
+glSecondaryColor3usEXT = ffiushortushortushortIOV glSecondaryColor3usEXTFunPtr
+
+glSecondaryColor3usEXTFunPtr :: FunPtr (GLushort -> GLushort -> GLushort -> IO ())
+glSecondaryColor3usEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3usEXT")
+
+{-# NOINLINE glSecondaryColor3usEXTFunPtr #-}
+
+glSecondaryColor3usvEXT :: MonadIO m => Ptr GLushort -> m ()
+glSecondaryColor3usvEXT = ffiPtrushortIOV glSecondaryColor3usvEXTFunPtr
+
+glSecondaryColor3usvEXTFunPtr :: FunPtr (Ptr GLushort -> IO ())
+glSecondaryColor3usvEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3usvEXT")
+
+{-# NOINLINE glSecondaryColor3usvEXTFunPtr #-}
+
+glSecondaryColorPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glSecondaryColorPointerEXT = ffiintenumsizeiPtrVIOV glSecondaryColorPointerEXTFunPtr
+
+glSecondaryColorPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glSecondaryColorPointerEXTFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorPointerEXT")
+
+{-# NOINLINE glSecondaryColorPointerEXTFunPtr #-}
+
+pattern GL_COLOR_SUM_EXT = 0x8458 :: GLenum
+
+pattern GL_CURRENT_SECONDARY_COLOR_EXT = 0x8459 :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_EXT = 0x845E :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = 0x845D :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = 0x845A :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = 0x845C :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = 0x845B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SeparateShaderObjects.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SeparateShaderObjects.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SeparateShaderObjects.hs
@@ -0,0 +1,189 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.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.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_separate_shader_objects :: Bool
+gl_EXT_separate_shader_objects = member "GL_EXT_separate_shader_objects" extensions
+
+glActiveProgramEXT :: MonadIO m => GLuint -> m ()
+glActiveProgramEXT = ffiuintIOV glActiveProgramEXTFunPtr
+
+glActiveProgramEXTFunPtr :: FunPtr (GLuint -> IO ())
+glActiveProgramEXTFunPtr = unsafePerformIO (getProcAddress "glActiveProgramEXT")
+
+{-# NOINLINE glActiveProgramEXTFunPtr #-}
+
+glActiveShaderProgramEXT :: MonadIO m => GLuint -> GLuint -> m ()
+glActiveShaderProgramEXT = ffiuintuintIOV glActiveShaderProgramEXTFunPtr
+
+glActiveShaderProgramEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glActiveShaderProgramEXTFunPtr = unsafePerformIO (getProcAddress "glActiveShaderProgramEXT")
+
+{-# NOINLINE glActiveShaderProgramEXTFunPtr #-}
+
+glBindProgramPipelineEXT :: MonadIO m => GLuint -> m ()
+glBindProgramPipelineEXT = ffiuintIOV glBindProgramPipelineEXTFunPtr
+
+glBindProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO ())
+glBindProgramPipelineEXTFunPtr = unsafePerformIO (getProcAddress "glBindProgramPipelineEXT")
+
+{-# NOINLINE glBindProgramPipelineEXTFunPtr #-}
+
+glCreateShaderProgramEXT :: MonadIO m => GLenum -> Ptr GLchar -> m GLuint
+glCreateShaderProgramEXT = ffienumPtrcharIOuint glCreateShaderProgramEXTFunPtr
+
+glCreateShaderProgramEXTFunPtr :: FunPtr (GLenum -> Ptr GLchar -> IO GLuint)
+glCreateShaderProgramEXTFunPtr = unsafePerformIO (getProcAddress "glCreateShaderProgramEXT")
+
+{-# NOINLINE glCreateShaderProgramEXTFunPtr #-}
+
+glCreateShaderProgramvEXT :: MonadIO m => GLenum -> GLsizei -> Ptr GLchar -> m GLuint
+glCreateShaderProgramvEXT = ffienumsizeiPtrcharIOuint glCreateShaderProgramvEXTFunPtr
+
+glCreateShaderProgramvEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLchar -> IO GLuint)
+glCreateShaderProgramvEXTFunPtr = unsafePerformIO (getProcAddress "glCreateShaderProgramvEXT")
+
+{-# NOINLINE glCreateShaderProgramvEXTFunPtr #-}
+
+glDeleteProgramPipelinesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteProgramPipelinesEXT = ffisizeiPtruintIOV glDeleteProgramPipelinesEXTFunPtr
+
+glDeleteProgramPipelinesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteProgramPipelinesEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteProgramPipelinesEXT")
+
+{-# NOINLINE glDeleteProgramPipelinesEXTFunPtr #-}
+
+glGenProgramPipelinesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenProgramPipelinesEXT = ffisizeiPtruintIOV glGenProgramPipelinesEXTFunPtr
+
+glGenProgramPipelinesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenProgramPipelinesEXTFunPtr = unsafePerformIO (getProcAddress "glGenProgramPipelinesEXT")
+
+{-# NOINLINE glGenProgramPipelinesEXTFunPtr #-}
+
+glGetProgramPipelineInfoLogEXT :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetProgramPipelineInfoLogEXT = ffiuintsizeiPtrsizeiPtrcharIOV glGetProgramPipelineInfoLogEXTFunPtr
+
+glGetProgramPipelineInfoLogEXTFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetProgramPipelineInfoLogEXTFunPtr = unsafePerformIO (getProcAddress "glGetProgramPipelineInfoLogEXT")
+
+{-# NOINLINE glGetProgramPipelineInfoLogEXTFunPtr #-}
+
+glGetProgramPipelineivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetProgramPipelineivEXT = ffiuintenumPtrintIOV glGetProgramPipelineivEXTFunPtr
+
+glGetProgramPipelineivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetProgramPipelineivEXTFunPtr = unsafePerformIO (getProcAddress "glGetProgramPipelineivEXT")
+
+{-# NOINLINE glGetProgramPipelineivEXTFunPtr #-}
+
+glIsProgramPipelineEXT :: MonadIO m => GLuint -> m GLboolean
+glIsProgramPipelineEXT = ffiuintIOboolean glIsProgramPipelineEXTFunPtr
+
+glIsProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsProgramPipelineEXTFunPtr = unsafePerformIO (getProcAddress "glIsProgramPipelineEXT")
+
+{-# NOINLINE glIsProgramPipelineEXTFunPtr #-}
+
+glUseProgramStagesEXT :: MonadIO m => GLuint -> GLbitfield -> GLuint -> m ()
+glUseProgramStagesEXT = ffiuintbitfielduintIOV glUseProgramStagesEXTFunPtr
+
+glUseProgramStagesEXTFunPtr :: FunPtr (GLuint -> GLbitfield -> GLuint -> IO ())
+glUseProgramStagesEXTFunPtr = unsafePerformIO (getProcAddress "glUseProgramStagesEXT")
+
+{-# NOINLINE glUseProgramStagesEXTFunPtr #-}
+
+glUseShaderProgramEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glUseShaderProgramEXT = ffienumuintIOV glUseShaderProgramEXTFunPtr
+
+glUseShaderProgramEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glUseShaderProgramEXTFunPtr = unsafePerformIO (getProcAddress "glUseShaderProgramEXT")
+
+{-# NOINLINE glUseShaderProgramEXTFunPtr #-}
+
+glValidateProgramPipelineEXT :: MonadIO m => GLuint -> m ()
+glValidateProgramPipelineEXT = ffiuintIOV glValidateProgramPipelineEXTFunPtr
+
+glValidateProgramPipelineEXTFunPtr :: FunPtr (GLuint -> IO ())
+glValidateProgramPipelineEXTFunPtr = unsafePerformIO (getProcAddress "glValidateProgramPipelineEXT")
+
+{-# NOINLINE glValidateProgramPipelineEXTFunPtr #-}
+
+pattern GL_ACTIVE_PROGRAM_EXT = 0x8B8D :: GLenum
+
+pattern GL_ALL_SHADER_BITS_EXT = 0xFFFFFFFF :: GLenum
+
+pattern GL_FRAGMENT_SHADER_BIT_EXT = 0x00000002 :: GLenum
+
+pattern GL_PROGRAM_PIPELINE_BINDING_EXT = 0x825A :: GLenum
+
+pattern GL_PROGRAM_SEPARABLE_EXT = 0x8258 :: GLenum
+
+pattern GL_VERTEX_SHADER_BIT_EXT = 0x00000001 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SeparateSpecularColor.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SeparateSpecularColor.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SeparateSpecularColor.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.SeparateSpecularColor (
+  -- * Extension Support
+    gl_EXT_separate_specular_color
+
+  -- * GL_EXT_separate_specular_color
+  , pattern GL_LIGHT_MODEL_COLOR_CONTROL_EXT
+  , pattern GL_SEPARATE_SPECULAR_COLOR_EXT
+  , pattern GL_SINGLE_COLOR_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_separate_specular_color :: Bool
+gl_EXT_separate_specular_color = member "GL_EXT_separate_specular_color" extensions
+
+pattern GL_LIGHT_MODEL_COLOR_CONTROL_EXT = 0x81F8 :: GLenum
+
+pattern GL_SEPARATE_SPECULAR_COLOR_EXT = 0x81FA :: GLenum
+
+pattern GL_SINGLE_COLOR_EXT = 0x81F9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderFramebufferFetch.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderFramebufferFetch.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderFramebufferFetch.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderFramebufferFetch (
+  -- * Extension Support
+    gl_EXT_shader_framebuffer_fetch
+
+  -- * GL_EXT_shader_framebuffer_fetch
+  , pattern GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_shader_framebuffer_fetch :: Bool
+gl_EXT_shader_framebuffer_fetch = member "GL_EXT_shader_framebuffer_fetch" extensions
+
+pattern GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = 0x8A52 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImageLoadFormatted.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImageLoadFormatted.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImageLoadFormatted.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderImageLoadFormatted (
+  -- * Extension Support
+    gl_EXT_shader_image_load_formatted
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_shader_image_load_formatted :: Bool
+gl_EXT_shader_image_load_formatted = member "GL_EXT_shader_image_load_formatted" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImageLoadStore.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImageLoadStore.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImageLoadStore.hs
@@ -0,0 +1,191 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderImageLoadStore (
+  -- * Extension Support
+    gl_EXT_shader_image_load_store
+
+  -- * GL_EXT_shader_image_load_store
+  , glBindImageTextureEXT
+  , glMemoryBarrierEXT
+  , pattern GL_ALL_BARRIER_BITS_EXT
+  , pattern GL_ATOMIC_COUNTER_BARRIER_BIT_EXT
+  , pattern GL_BUFFER_UPDATE_BARRIER_BIT_EXT
+  , pattern GL_COMMAND_BARRIER_BIT_EXT
+  , pattern GL_ELEMENT_ARRAY_BARRIER_BIT_EXT
+  , pattern GL_FRAMEBUFFER_BARRIER_BIT_EXT
+  , pattern GL_IMAGE_1D_ARRAY_EXT
+  , pattern GL_IMAGE_1D_EXT
+  , pattern GL_IMAGE_2D_ARRAY_EXT
+  , pattern GL_IMAGE_2D_EXT
+  , pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT
+  , pattern GL_IMAGE_2D_MULTISAMPLE_EXT
+  , pattern GL_IMAGE_2D_RECT_EXT
+  , pattern GL_IMAGE_3D_EXT
+  , pattern GL_IMAGE_BINDING_ACCESS_EXT
+  , pattern GL_IMAGE_BINDING_FORMAT_EXT
+  , pattern GL_IMAGE_BINDING_LAYERED_EXT
+  , pattern GL_IMAGE_BINDING_LAYER_EXT
+  , pattern GL_IMAGE_BINDING_LEVEL_EXT
+  , pattern GL_IMAGE_BINDING_NAME_EXT
+  , pattern GL_IMAGE_BUFFER_EXT
+  , pattern GL_IMAGE_CUBE_EXT
+  , pattern GL_IMAGE_CUBE_MAP_ARRAY_EXT
+  , pattern GL_INT_IMAGE_1D_ARRAY_EXT
+  , pattern GL_INT_IMAGE_1D_EXT
+  , pattern GL_INT_IMAGE_2D_ARRAY_EXT
+  , pattern GL_INT_IMAGE_2D_EXT
+  , pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT
+  , pattern GL_INT_IMAGE_2D_MULTISAMPLE_EXT
+  , pattern GL_INT_IMAGE_2D_RECT_EXT
+  , pattern GL_INT_IMAGE_3D_EXT
+  , pattern GL_INT_IMAGE_BUFFER_EXT
+  , pattern GL_INT_IMAGE_CUBE_EXT
+  , pattern GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT
+  , pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT
+  , pattern GL_MAX_IMAGE_SAMPLES_EXT
+  , pattern GL_MAX_IMAGE_UNITS_EXT
+  , pattern GL_PIXEL_BUFFER_BARRIER_BIT_EXT
+  , pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT
+  , pattern GL_TEXTURE_FETCH_BARRIER_BIT_EXT
+  , pattern GL_TEXTURE_UPDATE_BARRIER_BIT_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT
+  , pattern GL_UNIFORM_BARRIER_BIT_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_1D_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_3D_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_BUFFER_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_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_shader_image_load_store :: Bool
+gl_EXT_shader_image_load_store = member "GL_EXT_shader_image_load_store" extensions
+
+glBindImageTextureEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> m ()
+glBindImageTextureEXT = ffiuintuintintbooleanintenumintIOV glBindImageTextureEXTFunPtr
+
+glBindImageTextureEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> IO ())
+glBindImageTextureEXTFunPtr = unsafePerformIO (getProcAddress "glBindImageTextureEXT")
+
+{-# NOINLINE glBindImageTextureEXTFunPtr #-}
+
+glMemoryBarrierEXT :: MonadIO m => GLbitfield -> m ()
+glMemoryBarrierEXT = ffibitfieldIOV glMemoryBarrierEXTFunPtr
+
+glMemoryBarrierEXTFunPtr :: FunPtr (GLbitfield -> IO ())
+glMemoryBarrierEXTFunPtr = unsafePerformIO (getProcAddress "glMemoryBarrierEXT")
+
+{-# NOINLINE glMemoryBarrierEXTFunPtr #-}
+
+pattern GL_ALL_BARRIER_BITS_EXT = 0xFFFFFFFF :: GLenum
+
+pattern GL_ATOMIC_COUNTER_BARRIER_BIT_EXT = 0x00001000 :: GLenum
+
+pattern GL_BUFFER_UPDATE_BARRIER_BIT_EXT = 0x00000200 :: GLenum
+
+pattern GL_COMMAND_BARRIER_BIT_EXT = 0x00000040 :: GLenum
+
+pattern GL_ELEMENT_ARRAY_BARRIER_BIT_EXT = 0x00000002 :: GLenum
+
+pattern GL_FRAMEBUFFER_BARRIER_BIT_EXT = 0x00000400 :: GLenum
+
+pattern GL_IMAGE_1D_ARRAY_EXT = 0x9052 :: GLenum
+
+pattern GL_IMAGE_1D_EXT = 0x904C :: GLenum
+
+pattern GL_IMAGE_2D_ARRAY_EXT = 0x9053 :: GLenum
+
+pattern GL_IMAGE_2D_EXT = 0x904D :: GLenum
+
+pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9056 :: GLenum
+
+pattern GL_IMAGE_2D_MULTISAMPLE_EXT = 0x9055 :: GLenum
+
+pattern GL_IMAGE_2D_RECT_EXT = 0x904F :: GLenum
+
+pattern GL_IMAGE_3D_EXT = 0x904E :: GLenum
+
+pattern GL_IMAGE_BINDING_ACCESS_EXT = 0x8F3E :: GLenum
+
+pattern GL_IMAGE_BINDING_FORMAT_EXT = 0x906E :: GLenum
+
+pattern GL_IMAGE_BINDING_LAYERED_EXT = 0x8F3C :: GLenum
+
+pattern GL_IMAGE_BINDING_LAYER_EXT = 0x8F3D :: GLenum
+
+pattern GL_IMAGE_BINDING_LEVEL_EXT = 0x8F3B :: GLenum
+
+pattern GL_IMAGE_BINDING_NAME_EXT = 0x8F3A :: GLenum
+
+pattern GL_IMAGE_CUBE_EXT = 0x9050 :: GLenum
+
+pattern GL_INT_IMAGE_1D_ARRAY_EXT = 0x905D :: GLenum
+
+pattern GL_INT_IMAGE_1D_EXT = 0x9057 :: GLenum
+
+pattern GL_INT_IMAGE_2D_ARRAY_EXT = 0x905E :: GLenum
+
+pattern GL_INT_IMAGE_2D_EXT = 0x9058 :: GLenum
+
+pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9061 :: GLenum
+
+pattern GL_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x9060 :: GLenum
+
+pattern GL_INT_IMAGE_2D_RECT_EXT = 0x905A :: GLenum
+
+pattern GL_INT_IMAGE_3D_EXT = 0x9059 :: GLenum
+
+pattern GL_INT_IMAGE_CUBE_EXT = 0x905B :: GLenum
+
+pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = 0x8F39 :: GLenum
+
+pattern GL_MAX_IMAGE_SAMPLES_EXT = 0x906D :: GLenum
+
+pattern GL_MAX_IMAGE_UNITS_EXT = 0x8F38 :: GLenum
+
+pattern GL_PIXEL_BUFFER_BARRIER_BIT_EXT = 0x00000080 :: GLenum
+
+pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT = 0x00000020 :: GLenum
+
+pattern GL_TEXTURE_FETCH_BARRIER_BIT_EXT = 0x00000008 :: GLenum
+
+pattern GL_TEXTURE_UPDATE_BARRIER_BIT_EXT = 0x00000100 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT = 0x00000800 :: GLenum
+
+pattern GL_UNIFORM_BARRIER_BIT_EXT = 0x00000004 :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = 0x9068 :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_1D_EXT = 0x9062 :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = 0x9069 :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_2D_EXT = 0x9063 :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x906C :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x906B :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT = 0x9065 :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_3D_EXT = 0x9064 :: GLenum
+
+pattern GL_UNSIGNED_INT_IMAGE_CUBE_EXT = 0x9066 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT = 0x00000001 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImplicitConversions.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImplicitConversions.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderImplicitConversions.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderImplicitConversions (
+  -- * Extension Support
+    gl_EXT_shader_implicit_conversions
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_shader_implicit_conversions :: Bool
+gl_EXT_shader_implicit_conversions = member "GL_EXT_shader_implicit_conversions" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderIntegerMix.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderIntegerMix.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderIntegerMix.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderIntegerMix (
+  -- * Extension Support
+    gl_EXT_shader_integer_mix
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_shader_integer_mix :: Bool
+gl_EXT_shader_integer_mix = member "GL_EXT_shader_integer_mix" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderIoBlocks.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderIoBlocks.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderIoBlocks.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderIoBlocks (
+  -- * Extension Support
+    gl_EXT_shader_io_blocks
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_shader_io_blocks :: Bool
+gl_EXT_shader_io_blocks = member "GL_EXT_shader_io_blocks" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderPixelLocalStorage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderPixelLocalStorage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderPixelLocalStorage.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderPixelLocalStorage (
+  -- * Extension Support
+    gl_EXT_shader_pixel_local_storage
+
+  -- * GL_EXT_shader_pixel_local_storage
+  , pattern GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT
+  , pattern GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT
+  , pattern GL_SHADER_PIXEL_LOCAL_STORAGE_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_shader_pixel_local_storage :: Bool
+gl_EXT_shader_pixel_local_storage = member "GL_EXT_shader_pixel_local_storage" extensions
+
+pattern GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT = 0x8F63 :: GLenum
+
+pattern GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT = 0x8F67 :: GLenum
+
+pattern GL_SHADER_PIXEL_LOCAL_STORAGE_EXT = 0x8F64 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderTextureLod.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderTextureLod.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShaderTextureLod.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShaderTextureLod (
+  -- * Extension Support
+    gl_EXT_shader_texture_lod
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_shader_texture_lod :: Bool
+gl_EXT_shader_texture_lod = member "GL_EXT_shader_texture_lod" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShadowFuncs.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShadowFuncs.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShadowFuncs.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShadowFuncs (
+  -- * Extension Support
+    gl_EXT_shadow_funcs
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_shadow_funcs :: Bool
+gl_EXT_shadow_funcs = member "GL_EXT_shadow_funcs" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShadowSamplers.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShadowSamplers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/ShadowSamplers.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.ShadowSamplers (
+  -- * Extension Support
+    gl_EXT_shadow_samplers
+
+  -- * GL_EXT_shadow_samplers
+  , pattern GL_COMPARE_REF_TO_TEXTURE_EXT
+  , pattern GL_SAMPLER_2D_SHADOW_EXT
+  , pattern GL_TEXTURE_COMPARE_FUNC_EXT
+  , pattern GL_TEXTURE_COMPARE_MODE_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_shadow_samplers :: Bool
+gl_EXT_shadow_samplers = member "GL_EXT_shadow_samplers" extensions
+
+pattern GL_COMPARE_REF_TO_TEXTURE_EXT = 0x884E :: GLenum
+
+pattern GL_SAMPLER_2D_SHADOW_EXT = 0x8B62 :: GLenum
+
+pattern GL_TEXTURE_COMPARE_FUNC_EXT = 0x884D :: GLenum
+
+pattern GL_TEXTURE_COMPARE_MODE_EXT = 0x884C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SharedTexturePalette.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SharedTexturePalette.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SharedTexturePalette.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.SharedTexturePalette (
+  -- * Extension Support
+    gl_EXT_shared_texture_palette
+
+  -- * GL_EXT_shared_texture_palette
+  , pattern GL_SHARED_TEXTURE_PALETTE_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_shared_texture_palette :: Bool
+gl_EXT_shared_texture_palette = member "GL_EXT_shared_texture_palette" extensions
+
+pattern GL_SHARED_TEXTURE_PALETTE_EXT = 0x81FB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SparseTexture2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SparseTexture2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/SparseTexture2.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.SparseTexture2 (
+  -- * Extension Support
+    gl_EXT_sparse_texture2
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_sparse_texture2 :: Bool
+gl_EXT_sparse_texture2 = member "GL_EXT_sparse_texture2" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilClearTag.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilClearTag.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilClearTag.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.StencilClearTag (
+  -- * Extension Support
+    gl_EXT_stencil_clear_tag
+
+  -- * GL_EXT_stencil_clear_tag
+  , glStencilClearTagEXT
+  , pattern GL_STENCIL_CLEAR_TAG_VALUE_EXT
+  , pattern GL_STENCIL_TAG_BITS_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.Types
+import System.IO.Unsafe
+
+gl_EXT_stencil_clear_tag :: Bool
+gl_EXT_stencil_clear_tag = member "GL_EXT_stencil_clear_tag" extensions
+
+glStencilClearTagEXT :: MonadIO m => GLsizei -> GLuint -> m ()
+glStencilClearTagEXT = ffisizeiuintIOV glStencilClearTagEXTFunPtr
+
+glStencilClearTagEXTFunPtr :: FunPtr (GLsizei -> GLuint -> IO ())
+glStencilClearTagEXTFunPtr = unsafePerformIO (getProcAddress "glStencilClearTagEXT")
+
+{-# NOINLINE glStencilClearTagEXTFunPtr #-}
+
+pattern GL_STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3 :: GLenum
+
+pattern GL_STENCIL_TAG_BITS_EXT = 0x88F2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilTwoSide.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilTwoSide.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilTwoSide.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.StencilTwoSide (
+  -- * Extension Support
+    gl_EXT_stencil_two_side
+
+  -- * GL_EXT_stencil_two_side
+  , glActiveStencilFaceEXT
+  , pattern GL_ACTIVE_STENCIL_FACE_EXT
+  , pattern GL_STENCIL_TEST_TWO_SIDE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_stencil_two_side :: Bool
+gl_EXT_stencil_two_side = member "GL_EXT_stencil_two_side" extensions
+
+glActiveStencilFaceEXT :: MonadIO m => GLenum -> m ()
+glActiveStencilFaceEXT = ffienumIOV glActiveStencilFaceEXTFunPtr
+
+glActiveStencilFaceEXTFunPtr :: FunPtr (GLenum -> IO ())
+glActiveStencilFaceEXTFunPtr = unsafePerformIO (getProcAddress "glActiveStencilFaceEXT")
+
+{-# NOINLINE glActiveStencilFaceEXTFunPtr #-}
+
+pattern GL_ACTIVE_STENCIL_FACE_EXT = 0x8911 :: GLenum
+
+pattern GL_STENCIL_TEST_TWO_SIDE_EXT = 0x8910 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilWrap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilWrap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/StencilWrap.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.StencilWrap (
+  -- * Extension Support
+    gl_EXT_stencil_wrap
+
+  -- * GL_EXT_stencil_wrap
+  , pattern GL_DECR_WRAP_EXT
+  , pattern GL_INCR_WRAP_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_stencil_wrap :: Bool
+gl_EXT_stencil_wrap = member "GL_EXT_stencil_wrap" extensions
+
+pattern GL_DECR_WRAP_EXT = 0x8508 :: GLenum
+
+pattern GL_INCR_WRAP_EXT = 0x8507 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Subtexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Subtexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Subtexture.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Subtexture (
+  -- * Extension Support
+    gl_EXT_subtexture
+
+  -- * GL_EXT_subtexture
+  , glTexSubImage1DEXT
+  , glTexSubImage2DEXT
+) 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_EXT_subtexture :: Bool
+gl_EXT_subtexture = member "GL_EXT_subtexture" extensions
+
+glTexSubImage1DEXT :: MonadIO m => GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTexSubImage1DEXT = ffienumintintsizeienumenumPtrVIOV glTexSubImage1DEXTFunPtr
+
+glTexSubImage1DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexSubImage1DEXTFunPtr = unsafePerformIO (getProcAddress "glTexSubImage1DEXT")
+
+{-# NOINLINE glTexSubImage1DEXTFunPtr #-}
+
+glTexSubImage2DEXT :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTexSubImage2DEXT = ffienumintintintsizeisizeienumenumPtrVIOV glTexSubImage2DEXTFunPtr
+
+glTexSubImage2DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexSubImage2DEXTFunPtr = unsafePerformIO (getProcAddress "glTexSubImage2DEXT")
+
+{-# NOINLINE glTexSubImage2DEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TessellationPointSize.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TessellationPointSize.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TessellationPointSize.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TessellationPointSize (
+  -- * Extension Support
+    gl_EXT_tessellation_point_size
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_tessellation_point_size :: Bool
+gl_EXT_tessellation_point_size = member "GL_EXT_tessellation_point_size" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TessellationShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TessellationShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TessellationShader.hs
@@ -0,0 +1,160 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TessellationShader (
+  -- * Extension Support
+    gl_EXT_tessellation_shader
+
+  -- * GL_EXT_tessellation_shader
+  , glPatchParameteriEXT
+  , pattern GL_CCW
+  , pattern GL_CW
+  , pattern GL_EQUAL
+  , pattern GL_FRACTIONAL_EVEN_EXT
+  , pattern GL_FRACTIONAL_ODD_EXT
+  , pattern GL_ISOLINES_EXT
+  , pattern GL_IS_PER_PATCH_EXT
+  , pattern GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT
+  , pattern GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT
+  , pattern GL_MAX_PATCH_VERTICES_EXT
+  , pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT
+  , pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT
+  , pattern GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT
+  , pattern GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT
+  , pattern GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT
+  , pattern GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT
+  , pattern GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT
+  , pattern GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT
+  , pattern GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT
+  , pattern GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT
+  , pattern GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT
+  , pattern GL_MAX_TESS_GEN_LEVEL_EXT
+  , pattern GL_MAX_TESS_PATCH_COMPONENTS_EXT
+  , pattern GL_PATCHES_EXT
+  , pattern GL_PATCH_VERTICES_EXT
+  , pattern GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED
+  , pattern GL_QUADS_EXT
+  , pattern GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT
+  , pattern GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT
+  , pattern GL_TESS_CONTROL_OUTPUT_VERTICES_EXT
+  , pattern GL_TESS_CONTROL_SHADER_BIT_EXT
+  , pattern GL_TESS_CONTROL_SHADER_EXT
+  , pattern GL_TESS_EVALUATION_SHADER_BIT_EXT
+  , pattern GL_TESS_EVALUATION_SHADER_EXT
+  , pattern GL_TESS_GEN_MODE_EXT
+  , pattern GL_TESS_GEN_POINT_MODE_EXT
+  , pattern GL_TESS_GEN_SPACING_EXT
+  , pattern GL_TESS_GEN_VERTEX_ORDER_EXT
+  , pattern GL_TRIANGLES
+) 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_tessellation_shader :: Bool
+gl_EXT_tessellation_shader = member "GL_EXT_tessellation_shader" extensions
+
+glPatchParameteriEXT :: MonadIO m => GLenum -> GLint -> m ()
+glPatchParameteriEXT = ffienumintIOV glPatchParameteriEXTFunPtr
+
+glPatchParameteriEXTFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glPatchParameteriEXTFunPtr = unsafePerformIO (getProcAddress "glPatchParameteriEXT")
+
+{-# NOINLINE glPatchParameteriEXTFunPtr #-}
+
+pattern GL_FRACTIONAL_EVEN_EXT = 0x8E7C :: GLenum
+
+pattern GL_FRACTIONAL_ODD_EXT = 0x8E7B :: GLenum
+
+pattern GL_ISOLINES_EXT = 0x8E7A :: GLenum
+
+pattern GL_IS_PER_PATCH_EXT = 0x92E7 :: GLenum
+
+pattern GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 0x8E1E :: GLenum
+
+pattern GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 0x8E1F :: GLenum
+
+pattern GL_MAX_PATCH_VERTICES_EXT = 0x8E7D :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = 0x92D3 :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = 0x92CD :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = 0x90CB :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = 0x886C :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = 0x8E83 :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = 0x90D8 :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = 0x8E81 :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8E85 :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = 0x8E89 :: GLenum
+
+pattern GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 0x8E7F :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = 0x92D4 :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = 0x92CE :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = 0x90CC :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = 0x886D :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = 0x8E86 :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = 0x90D9 :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = 0x8E82 :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = 0x8E8A :: GLenum
+
+pattern GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 0x8E80 :: GLenum
+
+pattern GL_MAX_TESS_GEN_LEVEL_EXT = 0x8E7E :: GLenum
+
+pattern GL_MAX_TESS_PATCH_COMPONENTS_EXT = 0x8E84 :: GLenum
+
+pattern GL_PATCHES_EXT = 0x000E :: GLenum
+
+pattern GL_PATCH_VERTICES_EXT = 0x8E72 :: GLenum
+
+pattern GL_QUADS_EXT = 0x0007 :: GLenum
+
+pattern GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = 0x9307 :: GLenum
+
+pattern GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = 0x9308 :: GLenum
+
+pattern GL_TESS_CONTROL_OUTPUT_VERTICES_EXT = 0x8E75 :: GLenum
+
+pattern GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008 :: GLenum
+
+pattern GL_TESS_CONTROL_SHADER_EXT = 0x8E88 :: GLenum
+
+pattern GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010 :: GLenum
+
+pattern GL_TESS_EVALUATION_SHADER_EXT = 0x8E87 :: GLenum
+
+pattern GL_TESS_GEN_MODE_EXT = 0x8E76 :: GLenum
+
+pattern GL_TESS_GEN_POINT_MODE_EXT = 0x8E79 :: GLenum
+
+pattern GL_TESS_GEN_SPACING_EXT = 0x8E77 :: GLenum
+
+pattern GL_TESS_GEN_VERTEX_ORDER_EXT = 0x8E78 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Texture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Texture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Texture.hs
@@ -0,0 +1,135 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Texture (
+  -- * Extension Support
+    gl_EXT_texture
+
+  -- * GL_EXT_texture
+  , pattern GL_ALPHA12_EXT
+  , pattern GL_ALPHA16_EXT
+  , pattern GL_ALPHA4_EXT
+  , pattern GL_ALPHA8_EXT
+  , pattern GL_INTENSITY12_EXT
+  , pattern GL_INTENSITY16_EXT
+  , pattern GL_INTENSITY4_EXT
+  , pattern GL_INTENSITY8_EXT
+  , pattern GL_INTENSITY_EXT
+  , pattern GL_LUMINANCE12_ALPHA12_EXT
+  , pattern GL_LUMINANCE12_ALPHA4_EXT
+  , pattern GL_LUMINANCE12_EXT
+  , pattern GL_LUMINANCE16_ALPHA16_EXT
+  , pattern GL_LUMINANCE16_EXT
+  , pattern GL_LUMINANCE4_ALPHA4_EXT
+  , pattern GL_LUMINANCE4_EXT
+  , pattern GL_LUMINANCE6_ALPHA2_EXT
+  , pattern GL_LUMINANCE8_ALPHA8_EXT
+  , pattern GL_LUMINANCE8_EXT
+  , pattern GL_PROXY_TEXTURE_1D_EXT
+  , pattern GL_PROXY_TEXTURE_2D_EXT
+  , pattern GL_REPLACE_EXT
+  , pattern GL_RGB10_A2_EXT
+  , pattern GL_RGB10_EXT
+  , pattern GL_RGB12_EXT
+  , pattern GL_RGB16_EXT
+  , pattern GL_RGB2_EXT
+  , pattern GL_RGB4_EXT
+  , pattern GL_RGB5_A1_EXT
+  , pattern GL_RGB5_EXT
+  , pattern GL_RGB8_EXT
+  , pattern GL_RGBA12_EXT
+  , pattern GL_RGBA16_EXT
+  , pattern GL_RGBA2_EXT
+  , pattern GL_RGBA4_EXT
+  , pattern GL_RGBA8_EXT
+  , pattern GL_TEXTURE_ALPHA_SIZE_EXT
+  , pattern GL_TEXTURE_BLUE_SIZE_EXT
+  , pattern GL_TEXTURE_GREEN_SIZE_EXT
+  , pattern GL_TEXTURE_INTENSITY_SIZE_EXT
+  , pattern GL_TEXTURE_LUMINANCE_SIZE_EXT
+  , pattern GL_TEXTURE_RED_SIZE_EXT
+  , pattern GL_TEXTURE_TOO_LARGE_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture :: Bool
+gl_EXT_texture = member "GL_EXT_texture" extensions
+
+pattern GL_ALPHA12_EXT = 0x803D :: GLenum
+
+pattern GL_ALPHA16_EXT = 0x803E :: GLenum
+
+pattern GL_ALPHA4_EXT = 0x803B :: GLenum
+
+pattern GL_INTENSITY12_EXT = 0x804C :: GLenum
+
+pattern GL_INTENSITY16_EXT = 0x804D :: GLenum
+
+pattern GL_INTENSITY4_EXT = 0x804A :: GLenum
+
+pattern GL_INTENSITY8_EXT = 0x804B :: GLenum
+
+pattern GL_INTENSITY_EXT = 0x8049 :: GLenum
+
+pattern GL_LUMINANCE12_ALPHA12_EXT = 0x8047 :: GLenum
+
+pattern GL_LUMINANCE12_ALPHA4_EXT = 0x8046 :: GLenum
+
+pattern GL_LUMINANCE12_EXT = 0x8041 :: GLenum
+
+pattern GL_LUMINANCE16_ALPHA16_EXT = 0x8048 :: GLenum
+
+pattern GL_LUMINANCE16_EXT = 0x8042 :: GLenum
+
+pattern GL_LUMINANCE4_ALPHA4_EXT = 0x8043 :: GLenum
+
+pattern GL_LUMINANCE4_EXT = 0x803F :: GLenum
+
+pattern GL_LUMINANCE6_ALPHA2_EXT = 0x8044 :: GLenum
+
+pattern GL_PROXY_TEXTURE_1D_EXT = 0x8063 :: GLenum
+
+pattern GL_PROXY_TEXTURE_2D_EXT = 0x8064 :: GLenum
+
+pattern GL_REPLACE_EXT = 0x8062 :: GLenum
+
+pattern GL_RGB12_EXT = 0x8053 :: GLenum
+
+pattern GL_RGB16_EXT = 0x8054 :: GLenum
+
+pattern GL_RGB2_EXT = 0x804E :: GLenum
+
+pattern GL_RGB4_EXT = 0x804F :: GLenum
+
+pattern GL_RGB5_A1_EXT = 0x8057 :: GLenum
+
+pattern GL_RGB5_EXT = 0x8050 :: GLenum
+
+pattern GL_RGB8_EXT = 0x8051 :: GLenum
+
+pattern GL_RGBA12_EXT = 0x805A :: GLenum
+
+pattern GL_RGBA16_EXT = 0x805B :: GLenum
+
+pattern GL_RGBA2_EXT = 0x8055 :: GLenum
+
+pattern GL_RGBA4_EXT = 0x8056 :: GLenum
+
+pattern GL_RGBA8_EXT = 0x8058 :: GLenum
+
+pattern GL_TEXTURE_ALPHA_SIZE_EXT = 0x805F :: GLenum
+
+pattern GL_TEXTURE_BLUE_SIZE_EXT = 0x805E :: GLenum
+
+pattern GL_TEXTURE_GREEN_SIZE_EXT = 0x805D :: GLenum
+
+pattern GL_TEXTURE_INTENSITY_SIZE_EXT = 0x8061 :: GLenum
+
+pattern GL_TEXTURE_LUMINANCE_SIZE_EXT = 0x8060 :: GLenum
+
+pattern GL_TEXTURE_RED_SIZE_EXT = 0x805C :: GLenum
+
+pattern GL_TEXTURE_TOO_LARGE_EXT = 0x8065 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Texture3D.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Texture3D.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/Texture3D.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.Texture3D (
+  -- * Extension Support
+    gl_EXT_texture3D
+
+  -- * GL_EXT_texture3D
+  , glTexImage3DEXT
+  , glTexSubImage3DEXT
+  , pattern GL_MAX_3D_TEXTURE_SIZE_EXT
+  , pattern GL_PACK_IMAGE_HEIGHT_EXT
+  , pattern GL_PACK_SKIP_IMAGES_EXT
+  , pattern GL_PROXY_TEXTURE_3D_EXT
+  , pattern GL_TEXTURE_3D_EXT
+  , pattern GL_TEXTURE_DEPTH_EXT
+  , pattern GL_TEXTURE_WRAP_R_EXT
+  , pattern GL_UNPACK_IMAGE_HEIGHT_EXT
+  , pattern GL_UNPACK_SKIP_IMAGES_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.Types
+import System.IO.Unsafe
+
+gl_EXT_texture3D :: Bool
+gl_EXT_texture3D = member "GL_EXT_texture3D" extensions
+
+glTexImage3DEXT :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glTexImage3DEXT = ffienumintenumsizeisizeisizeiintenumenumPtrVIOV glTexImage3DEXTFunPtr
+
+glTexImage3DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glTexImage3DEXT")
+
+{-# NOINLINE glTexImage3DEXTFunPtr #-}
+
+glTexSubImage3DEXT :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTexSubImage3DEXT = ffienumintintintintsizeisizeisizeienumenumPtrVIOV glTexSubImage3DEXTFunPtr
+
+glTexSubImage3DEXTFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexSubImage3DEXTFunPtr = unsafePerformIO (getProcAddress "glTexSubImage3DEXT")
+
+{-# NOINLINE glTexSubImage3DEXTFunPtr #-}
+
+pattern GL_MAX_3D_TEXTURE_SIZE_EXT = 0x8073 :: GLenum
+
+pattern GL_PACK_IMAGE_HEIGHT_EXT = 0x806C :: GLenum
+
+pattern GL_PACK_SKIP_IMAGES_EXT = 0x806B :: GLenum
+
+pattern GL_PROXY_TEXTURE_3D_EXT = 0x8070 :: GLenum
+
+pattern GL_TEXTURE_3D_EXT = 0x806F :: GLenum
+
+pattern GL_TEXTURE_DEPTH_EXT = 0x8071 :: GLenum
+
+pattern GL_TEXTURE_WRAP_R_EXT = 0x8072 :: GLenum
+
+pattern GL_UNPACK_IMAGE_HEIGHT_EXT = 0x806E :: GLenum
+
+pattern GL_UNPACK_SKIP_IMAGES_EXT = 0x806D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureArray.hs
@@ -0,0 +1,42 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureArray (
+  -- * Extension Support
+    gl_EXT_texture_array
+
+  -- * GL_EXT_texture_array
+  , glFramebufferTextureLayerEXT
+  , pattern GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT
+  , pattern GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
+  , pattern GL_PROXY_TEXTURE_1D_ARRAY_EXT
+  , pattern GL_PROXY_TEXTURE_2D_ARRAY_EXT
+  , pattern GL_TEXTURE_1D_ARRAY_EXT
+  , pattern GL_TEXTURE_2D_ARRAY_EXT
+  , pattern GL_TEXTURE_BINDING_1D_ARRAY_EXT
+  , pattern GL_TEXTURE_BINDING_2D_ARRAY_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_array :: Bool
+gl_EXT_texture_array = member "GL_EXT_texture_array" extensions
+
+pattern GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x884E :: GLenum
+
+pattern GL_MAX_ARRAY_TEXTURE_LAYERS_EXT = 0x88FF :: GLenum
+
+pattern GL_PROXY_TEXTURE_1D_ARRAY_EXT = 0x8C19 :: GLenum
+
+pattern GL_PROXY_TEXTURE_2D_ARRAY_EXT = 0x8C1B :: GLenum
+
+pattern GL_TEXTURE_1D_ARRAY_EXT = 0x8C18 :: GLenum
+
+pattern GL_TEXTURE_2D_ARRAY_EXT = 0x8C1A :: GLenum
+
+pattern GL_TEXTURE_BINDING_1D_ARRAY_EXT = 0x8C1C :: GLenum
+
+pattern GL_TEXTURE_BINDING_2D_ARRAY_EXT = 0x8C1D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBorderClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBorderClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBorderClamp.hs
@@ -0,0 +1,66 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureBorderClamp (
+  -- * Extension Support
+    gl_EXT_texture_border_clamp
+
+  -- * GL_EXT_texture_border_clamp
+  , glGetSamplerParameterIivEXT
+  , glGetSamplerParameterIuivEXT
+  , glGetTexParameterIivEXT
+  , glGetTexParameterIuivEXT
+  , glSamplerParameterIivEXT
+  , glSamplerParameterIuivEXT
+  , glTexParameterIivEXT
+  , glTexParameterIuivEXT
+  , pattern GL_CLAMP_TO_BORDER_EXT
+  , pattern GL_TEXTURE_BORDER_COLOR_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_border_clamp :: Bool
+gl_EXT_texture_border_clamp = member "GL_EXT_texture_border_clamp" extensions
+
+glGetSamplerParameterIivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetSamplerParameterIivEXT = ffiuintenumPtrintIOV glGetSamplerParameterIivEXTFunPtr
+
+glGetSamplerParameterIivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetSamplerParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetSamplerParameterIivEXT")
+
+{-# NOINLINE glGetSamplerParameterIivEXTFunPtr #-}
+
+glGetSamplerParameterIuivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
+glGetSamplerParameterIuivEXT = ffiuintenumPtruintIOV glGetSamplerParameterIuivEXTFunPtr
+
+glGetSamplerParameterIuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
+glGetSamplerParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetSamplerParameterIuivEXT")
+
+{-# NOINLINE glGetSamplerParameterIuivEXTFunPtr #-}
+
+glSamplerParameterIivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glSamplerParameterIivEXT = ffiuintenumPtrintIOV glSamplerParameterIivEXTFunPtr
+
+glSamplerParameterIivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glSamplerParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glSamplerParameterIivEXT")
+
+{-# NOINLINE glSamplerParameterIivEXTFunPtr #-}
+
+glSamplerParameterIuivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
+glSamplerParameterIuivEXT = ffiuintenumPtruintIOV glSamplerParameterIuivEXTFunPtr
+
+glSamplerParameterIuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
+glSamplerParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glSamplerParameterIuivEXT")
+
+{-# NOINLINE glSamplerParameterIuivEXTFunPtr #-}
+
+pattern GL_CLAMP_TO_BORDER_EXT = 0x812D :: GLenum
+
+pattern GL_TEXTURE_BORDER_COLOR_EXT = 0x1004 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBuffer.hs
@@ -0,0 +1,52 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureBuffer (
+  -- * Extension Support
+    gl_EXT_texture_buffer
+
+  -- * GL_EXT_texture_buffer
+  , glTexBufferEXT
+  , glTexBufferRangeEXT
+  , pattern GL_IMAGE_BUFFER_EXT
+  , pattern GL_INT_IMAGE_BUFFER_EXT
+  , pattern GL_INT_SAMPLER_BUFFER_EXT
+  , pattern GL_MAX_TEXTURE_BUFFER_SIZE_EXT
+  , pattern GL_SAMPLER_BUFFER_EXT
+  , pattern GL_TEXTURE_BINDING_BUFFER_EXT
+  , pattern GL_TEXTURE_BUFFER_BINDING_EXT
+  , pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT
+  , pattern GL_TEXTURE_BUFFER_EXT
+  , pattern GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT
+  , pattern GL_TEXTURE_BUFFER_OFFSET_EXT
+  , pattern GL_TEXTURE_BUFFER_SIZE_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_BUFFER_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_BUFFER_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_buffer :: Bool
+gl_EXT_texture_buffer = member "GL_EXT_texture_buffer" extensions
+
+glTexBufferRangeEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+glTexBufferRangeEXT = ffienumenumuintintptrsizeiptrIOV glTexBufferRangeEXTFunPtr
+
+glTexBufferRangeEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
+glTexBufferRangeEXTFunPtr = unsafePerformIO (getProcAddress "glTexBufferRangeEXT")
+
+{-# NOINLINE glTexBufferRangeEXTFunPtr #-}
+
+pattern GL_TEXTURE_BUFFER_BINDING_EXT = 0x8C2A :: GLenum
+
+pattern GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = 0x919F :: GLenum
+
+pattern GL_TEXTURE_BUFFER_OFFSET_EXT = 0x919D :: GLenum
+
+pattern GL_TEXTURE_BUFFER_SIZE_EXT = 0x919E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureBufferObject.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureBufferObject (
+  -- * Extension Support
+    gl_EXT_texture_buffer_object
+
+  -- * GL_EXT_texture_buffer_object
+  , glTexBufferEXT
+  , pattern GL_MAX_TEXTURE_BUFFER_SIZE_EXT
+  , pattern GL_TEXTURE_BINDING_BUFFER_EXT
+  , pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT
+  , pattern GL_TEXTURE_BUFFER_EXT
+  , pattern GL_TEXTURE_BUFFER_FORMAT_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_buffer_object :: Bool
+gl_EXT_texture_buffer_object = member "GL_EXT_texture_buffer_object" extensions
+
+pattern GL_TEXTURE_BUFFER_FORMAT_EXT = 0x8C2E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionDxt1.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionDxt1.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionDxt1.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureCompressionDxt1 (
+  -- * Extension Support
+    gl_EXT_texture_compression_dxt1
+
+  -- * GL_EXT_texture_compression_dxt1
+  , pattern GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
+  , pattern GL_COMPRESSED_RGB_S3TC_DXT1_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_texture_compression_dxt1 :: Bool
+gl_EXT_texture_compression_dxt1 = member "GL_EXT_texture_compression_dxt1" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionLatc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionLatc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionLatc.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureCompressionLatc (
+  -- * Extension Support
+    gl_EXT_texture_compression_latc
+
+  -- * GL_EXT_texture_compression_latc
+  , pattern GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT
+  , pattern GL_COMPRESSED_LUMINANCE_LATC1_EXT
+  , pattern GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT
+  , pattern GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_compression_latc :: Bool
+gl_EXT_texture_compression_latc = member "GL_EXT_texture_compression_latc" extensions
+
+pattern GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C72 :: GLenum
+
+pattern GL_COMPRESSED_LUMINANCE_LATC1_EXT = 0x8C70 :: GLenum
+
+pattern GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C73 :: GLenum
+
+pattern GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = 0x8C71 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionRgtc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionRgtc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionRgtc.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureCompressionRgtc (
+  -- * Extension Support
+    gl_EXT_texture_compression_rgtc
+
+  -- * GL_EXT_texture_compression_rgtc
+  , pattern GL_COMPRESSED_RED_GREEN_RGTC2_EXT
+  , pattern GL_COMPRESSED_RED_RGTC1_EXT
+  , pattern GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT
+  , pattern GL_COMPRESSED_SIGNED_RED_RGTC1_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_compression_rgtc :: Bool
+gl_EXT_texture_compression_rgtc = member "GL_EXT_texture_compression_rgtc" extensions
+
+pattern GL_COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD :: GLenum
+
+pattern GL_COMPRESSED_RED_RGTC1_EXT = 0x8DBB :: GLenum
+
+pattern GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE :: GLenum
+
+pattern GL_COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionS3tc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionS3tc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCompressionS3tc.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureCompressionS3tc (
+  -- * Extension Support
+    gl_EXT_texture_compression_s3tc
+
+  -- * GL_EXT_texture_compression_s3tc
+  , pattern GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
+  , pattern GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
+  , pattern GL_COMPRESSED_RGBA_S3TC_DXT5_EXT
+  , pattern GL_COMPRESSED_RGB_S3TC_DXT1_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_compression_s3tc :: Bool
+gl_EXT_texture_compression_s3tc = member "GL_EXT_texture_compression_s3tc" extensions
+
+pattern GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCubeMap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCubeMap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCubeMap.hs
@@ -0,0 +1,51 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureCubeMap (
+  -- * Extension Support
+    gl_EXT_texture_cube_map
+
+  -- * GL_EXT_texture_cube_map
+  , pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT
+  , pattern GL_NORMAL_MAP_EXT
+  , pattern GL_PROXY_TEXTURE_CUBE_MAP_EXT
+  , pattern GL_REFLECTION_MAP_EXT
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_cube_map :: Bool
+gl_EXT_texture_cube_map = member "GL_EXT_texture_cube_map" extensions
+
+pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT = 0x851C :: GLenum
+
+pattern GL_NORMAL_MAP_EXT = 0x8511 :: GLenum
+
+pattern GL_PROXY_TEXTURE_CUBE_MAP_EXT = 0x851B :: GLenum
+
+pattern GL_REFLECTION_MAP_EXT = 0x8512 :: GLenum
+
+pattern GL_TEXTURE_BINDING_CUBE_MAP_EXT = 0x8514 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_EXT = 0x8513 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = 0x8516 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = 0x8518 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = 0x851A :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT = 0x8515 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = 0x8517 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = 0x8519 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCubeMapArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCubeMapArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureCubeMapArray.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureCubeMapArray (
+  -- * Extension Support
+    gl_EXT_texture_cube_map_array
+
+  -- * GL_EXT_texture_cube_map_array
+  , pattern GL_IMAGE_CUBE_MAP_ARRAY_EXT
+  , pattern GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT
+  , pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY_EXT
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT
+  , pattern GL_TEXTURE_CUBE_MAP_ARRAY_EXT
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_cube_map_array :: Bool
+gl_EXT_texture_cube_map_array = member "GL_EXT_texture_cube_map_array" extensions
+
+pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x900E :: GLenum
+
+pattern GL_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x900C :: GLenum
+
+pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = 0x900D :: GLenum
+
+pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = 0x900A :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_ARRAY_EXT = 0x9009 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x900F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvAdd.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvAdd.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvAdd.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureEnvAdd (
+  -- * Extension Support
+    gl_EXT_texture_env_add
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_EXT_texture_env_add :: Bool
+gl_EXT_texture_env_add = member "GL_EXT_texture_env_add" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvCombine.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvCombine.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvCombine.hs
@@ -0,0 +1,78 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureEnvCombine (
+  -- * Extension Support
+    gl_EXT_texture_env_combine
+
+  -- * GL_EXT_texture_env_combine
+  , pattern GL_ADD_SIGNED_EXT
+  , pattern GL_COMBINE_ALPHA_EXT
+  , pattern GL_COMBINE_EXT
+  , pattern GL_COMBINE_RGB_EXT
+  , pattern GL_CONSTANT_EXT
+  , pattern GL_INTERPOLATE_EXT
+  , pattern GL_OPERAND0_ALPHA_EXT
+  , pattern GL_OPERAND0_RGB_EXT
+  , pattern GL_OPERAND1_ALPHA_EXT
+  , pattern GL_OPERAND1_RGB_EXT
+  , pattern GL_OPERAND2_ALPHA_EXT
+  , pattern GL_OPERAND2_RGB_EXT
+  , pattern GL_PREVIOUS_EXT
+  , pattern GL_PRIMARY_COLOR_EXT
+  , pattern GL_RGB_SCALE_EXT
+  , pattern GL_SOURCE0_ALPHA_EXT
+  , pattern GL_SOURCE0_RGB_EXT
+  , pattern GL_SOURCE1_ALPHA_EXT
+  , pattern GL_SOURCE1_RGB_EXT
+  , pattern GL_SOURCE2_ALPHA_EXT
+  , pattern GL_SOURCE2_RGB_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_env_combine :: Bool
+gl_EXT_texture_env_combine = member "GL_EXT_texture_env_combine" extensions
+
+pattern GL_ADD_SIGNED_EXT = 0x8574 :: GLenum
+
+pattern GL_COMBINE_ALPHA_EXT = 0x8572 :: GLenum
+
+pattern GL_COMBINE_EXT = 0x8570 :: GLenum
+
+pattern GL_COMBINE_RGB_EXT = 0x8571 :: GLenum
+
+pattern GL_CONSTANT_EXT = 0x8576 :: GLenum
+
+pattern GL_INTERPOLATE_EXT = 0x8575 :: GLenum
+
+pattern GL_OPERAND0_ALPHA_EXT = 0x8598 :: GLenum
+
+pattern GL_OPERAND0_RGB_EXT = 0x8590 :: GLenum
+
+pattern GL_OPERAND1_ALPHA_EXT = 0x8599 :: GLenum
+
+pattern GL_OPERAND1_RGB_EXT = 0x8591 :: GLenum
+
+pattern GL_OPERAND2_ALPHA_EXT = 0x859A :: GLenum
+
+pattern GL_OPERAND2_RGB_EXT = 0x8592 :: GLenum
+
+pattern GL_PREVIOUS_EXT = 0x8578 :: GLenum
+
+pattern GL_PRIMARY_COLOR_EXT = 0x8577 :: GLenum
+
+pattern GL_RGB_SCALE_EXT = 0x8573 :: GLenum
+
+pattern GL_SOURCE0_ALPHA_EXT = 0x8588 :: GLenum
+
+pattern GL_SOURCE0_RGB_EXT = 0x8580 :: GLenum
+
+pattern GL_SOURCE1_ALPHA_EXT = 0x8589 :: GLenum
+
+pattern GL_SOURCE1_RGB_EXT = 0x8581 :: GLenum
+
+pattern GL_SOURCE2_ALPHA_EXT = 0x858A :: GLenum
+
+pattern GL_SOURCE2_RGB_EXT = 0x8582 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvDot3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvDot3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureEnvDot3.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureEnvDot3 (
+  -- * Extension Support
+    gl_EXT_texture_env_dot3
+
+  -- * GL_EXT_texture_env_dot3
+  , pattern GL_DOT3_RGBA_EXT
+  , pattern GL_DOT3_RGB_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_env_dot3 :: Bool
+gl_EXT_texture_env_dot3 = member "GL_EXT_texture_env_dot3" extensions
+
+pattern GL_DOT3_RGBA_EXT = 0x8741 :: GLenum
+
+pattern GL_DOT3_RGB_EXT = 0x8740 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFilterAnisotropic.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFilterAnisotropic.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFilterAnisotropic.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureFilterAnisotropic (
+  -- * Extension Support
+    gl_EXT_texture_filter_anisotropic
+
+  -- * GL_EXT_texture_filter_anisotropic
+  , pattern GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
+  , pattern GL_TEXTURE_MAX_ANISOTROPY_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_filter_anisotropic :: Bool
+gl_EXT_texture_filter_anisotropic = member "GL_EXT_texture_filter_anisotropic" extensions
+
+pattern GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF :: GLenum
+
+pattern GL_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFilterMinmax.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFilterMinmax.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFilterMinmax.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureFilterMinmax (
+  -- * Extension Support
+    gl_EXT_texture_filter_minmax
+
+  -- * GL_EXT_texture_filter_minmax
+  , glRasterSamplesEXT
+  , pattern GL_EFFECTIVE_RASTER_SAMPLES_EXT
+  , pattern GL_MAX_RASTER_SAMPLES_EXT
+  , pattern GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT
+  , pattern GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT
+  , pattern GL_RASTER_MULTISAMPLE_EXT
+  , pattern GL_RASTER_SAMPLES_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_texture_filter_minmax :: Bool
+gl_EXT_texture_filter_minmax = member "GL_EXT_texture_filter_minmax" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFormatBGRA8888.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFormatBGRA8888.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureFormatBGRA8888.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureFormatBGRA8888 (
+  -- * Extension Support
+    gl_EXT_texture_format_BGRA8888
+
+  -- * GL_EXT_texture_format_BGRA8888
+  , pattern GL_BGRA_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_texture_format_BGRA8888 :: Bool
+gl_EXT_texture_format_BGRA8888 = member "GL_EXT_texture_format_BGRA8888" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureInteger.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureInteger.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureInteger.hs
@@ -0,0 +1,183 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureInteger (
+  -- * Extension Support
+    gl_EXT_texture_integer
+
+  -- * GL_EXT_texture_integer
+  , glClearColorIiEXT
+  , glClearColorIuiEXT
+  , glGetTexParameterIivEXT
+  , glGetTexParameterIuivEXT
+  , glTexParameterIivEXT
+  , glTexParameterIuivEXT
+  , pattern GL_ALPHA16I_EXT
+  , pattern GL_ALPHA16UI_EXT
+  , pattern GL_ALPHA32I_EXT
+  , pattern GL_ALPHA32UI_EXT
+  , pattern GL_ALPHA8I_EXT
+  , pattern GL_ALPHA8UI_EXT
+  , pattern GL_ALPHA_INTEGER_EXT
+  , pattern GL_BGRA_INTEGER_EXT
+  , pattern GL_BGR_INTEGER_EXT
+  , pattern GL_BLUE_INTEGER_EXT
+  , pattern GL_GREEN_INTEGER_EXT
+  , pattern GL_INTENSITY16I_EXT
+  , pattern GL_INTENSITY16UI_EXT
+  , pattern GL_INTENSITY32I_EXT
+  , pattern GL_INTENSITY32UI_EXT
+  , pattern GL_INTENSITY8I_EXT
+  , pattern GL_INTENSITY8UI_EXT
+  , pattern GL_LUMINANCE16I_EXT
+  , pattern GL_LUMINANCE16UI_EXT
+  , pattern GL_LUMINANCE32I_EXT
+  , pattern GL_LUMINANCE32UI_EXT
+  , pattern GL_LUMINANCE8I_EXT
+  , pattern GL_LUMINANCE8UI_EXT
+  , pattern GL_LUMINANCE_ALPHA16I_EXT
+  , pattern GL_LUMINANCE_ALPHA16UI_EXT
+  , pattern GL_LUMINANCE_ALPHA32I_EXT
+  , pattern GL_LUMINANCE_ALPHA32UI_EXT
+  , pattern GL_LUMINANCE_ALPHA8I_EXT
+  , pattern GL_LUMINANCE_ALPHA8UI_EXT
+  , pattern GL_LUMINANCE_ALPHA_INTEGER_EXT
+  , pattern GL_LUMINANCE_INTEGER_EXT
+  , pattern GL_RED_INTEGER_EXT
+  , pattern GL_RGB16I_EXT
+  , pattern GL_RGB16UI_EXT
+  , pattern GL_RGB32I_EXT
+  , pattern GL_RGB32UI_EXT
+  , pattern GL_RGB8I_EXT
+  , pattern GL_RGB8UI_EXT
+  , pattern GL_RGBA16I_EXT
+  , pattern GL_RGBA16UI_EXT
+  , pattern GL_RGBA32I_EXT
+  , pattern GL_RGBA32UI_EXT
+  , pattern GL_RGBA8I_EXT
+  , pattern GL_RGBA8UI_EXT
+  , pattern GL_RGBA_INTEGER_EXT
+  , pattern GL_RGBA_INTEGER_MODE_EXT
+  , pattern GL_RGB_INTEGER_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_integer :: Bool
+gl_EXT_texture_integer = member "GL_EXT_texture_integer" extensions
+
+glClearColorIiEXT :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
+glClearColorIiEXT = ffiintintintintIOV glClearColorIiEXTFunPtr
+
+glClearColorIiEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
+glClearColorIiEXTFunPtr = unsafePerformIO (getProcAddress "glClearColorIiEXT")
+
+{-# NOINLINE glClearColorIiEXTFunPtr #-}
+
+glClearColorIuiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glClearColorIuiEXT = ffiuintuintuintuintIOV glClearColorIuiEXTFunPtr
+
+glClearColorIuiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glClearColorIuiEXTFunPtr = unsafePerformIO (getProcAddress "glClearColorIuiEXT")
+
+{-# NOINLINE glClearColorIuiEXTFunPtr #-}
+
+pattern GL_ALPHA16I_EXT = 0x8D8A :: GLenum
+
+pattern GL_ALPHA16UI_EXT = 0x8D78 :: GLenum
+
+pattern GL_ALPHA32I_EXT = 0x8D84 :: GLenum
+
+pattern GL_ALPHA32UI_EXT = 0x8D72 :: GLenum
+
+pattern GL_ALPHA8I_EXT = 0x8D90 :: GLenum
+
+pattern GL_ALPHA8UI_EXT = 0x8D7E :: GLenum
+
+pattern GL_ALPHA_INTEGER_EXT = 0x8D97 :: GLenum
+
+pattern GL_BGRA_INTEGER_EXT = 0x8D9B :: GLenum
+
+pattern GL_BGR_INTEGER_EXT = 0x8D9A :: GLenum
+
+pattern GL_BLUE_INTEGER_EXT = 0x8D96 :: GLenum
+
+pattern GL_GREEN_INTEGER_EXT = 0x8D95 :: GLenum
+
+pattern GL_INTENSITY16I_EXT = 0x8D8B :: GLenum
+
+pattern GL_INTENSITY16UI_EXT = 0x8D79 :: GLenum
+
+pattern GL_INTENSITY32I_EXT = 0x8D85 :: GLenum
+
+pattern GL_INTENSITY32UI_EXT = 0x8D73 :: GLenum
+
+pattern GL_INTENSITY8I_EXT = 0x8D91 :: GLenum
+
+pattern GL_INTENSITY8UI_EXT = 0x8D7F :: GLenum
+
+pattern GL_LUMINANCE16I_EXT = 0x8D8C :: GLenum
+
+pattern GL_LUMINANCE16UI_EXT = 0x8D7A :: GLenum
+
+pattern GL_LUMINANCE32I_EXT = 0x8D86 :: GLenum
+
+pattern GL_LUMINANCE32UI_EXT = 0x8D74 :: GLenum
+
+pattern GL_LUMINANCE8I_EXT = 0x8D92 :: GLenum
+
+pattern GL_LUMINANCE8UI_EXT = 0x8D80 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA16I_EXT = 0x8D8D :: GLenum
+
+pattern GL_LUMINANCE_ALPHA16UI_EXT = 0x8D7B :: GLenum
+
+pattern GL_LUMINANCE_ALPHA32I_EXT = 0x8D87 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA32UI_EXT = 0x8D75 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA8I_EXT = 0x8D93 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA8UI_EXT = 0x8D81 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA_INTEGER_EXT = 0x8D9D :: GLenum
+
+pattern GL_LUMINANCE_INTEGER_EXT = 0x8D9C :: GLenum
+
+pattern GL_RED_INTEGER_EXT = 0x8D94 :: GLenum
+
+pattern GL_RGB16I_EXT = 0x8D89 :: GLenum
+
+pattern GL_RGB16UI_EXT = 0x8D77 :: GLenum
+
+pattern GL_RGB32I_EXT = 0x8D83 :: GLenum
+
+pattern GL_RGB32UI_EXT = 0x8D71 :: GLenum
+
+pattern GL_RGB8I_EXT = 0x8D8F :: GLenum
+
+pattern GL_RGB8UI_EXT = 0x8D7D :: GLenum
+
+pattern GL_RGBA16I_EXT = 0x8D88 :: GLenum
+
+pattern GL_RGBA16UI_EXT = 0x8D76 :: GLenum
+
+pattern GL_RGBA32I_EXT = 0x8D82 :: GLenum
+
+pattern GL_RGBA32UI_EXT = 0x8D70 :: GLenum
+
+pattern GL_RGBA8I_EXT = 0x8D8E :: GLenum
+
+pattern GL_RGBA8UI_EXT = 0x8D7C :: GLenum
+
+pattern GL_RGBA_INTEGER_EXT = 0x8D99 :: GLenum
+
+pattern GL_RGBA_INTEGER_MODE_EXT = 0x8D9E :: GLenum
+
+pattern GL_RGB_INTEGER_EXT = 0x8D98 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureLodBias.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureLodBias.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureLodBias.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureLodBias (
+  -- * Extension Support
+    gl_EXT_texture_lod_bias
+
+  -- * GL_EXT_texture_lod_bias
+  , pattern GL_MAX_TEXTURE_LOD_BIAS_EXT
+  , pattern GL_TEXTURE_FILTER_CONTROL_EXT
+  , pattern GL_TEXTURE_LOD_BIAS_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_lod_bias :: Bool
+gl_EXT_texture_lod_bias = member "GL_EXT_texture_lod_bias" extensions
+
+pattern GL_MAX_TEXTURE_LOD_BIAS_EXT = 0x84FD :: GLenum
+
+pattern GL_TEXTURE_FILTER_CONTROL_EXT = 0x8500 :: GLenum
+
+pattern GL_TEXTURE_LOD_BIAS_EXT = 0x8501 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureMirrorClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureMirrorClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureMirrorClamp.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureMirrorClamp (
+  -- * Extension Support
+    gl_EXT_texture_mirror_clamp
+
+  -- * GL_EXT_texture_mirror_clamp
+  , pattern GL_MIRROR_CLAMP_EXT
+  , pattern GL_MIRROR_CLAMP_TO_BORDER_EXT
+  , pattern GL_MIRROR_CLAMP_TO_EDGE_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_mirror_clamp :: Bool
+gl_EXT_texture_mirror_clamp = member "GL_EXT_texture_mirror_clamp" extensions
+
+pattern GL_MIRROR_CLAMP_EXT = 0x8742 :: GLenum
+
+pattern GL_MIRROR_CLAMP_TO_BORDER_EXT = 0x8912 :: GLenum
+
+pattern GL_MIRROR_CLAMP_TO_EDGE_EXT = 0x8743 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureObject.hs
@@ -0,0 +1,88 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureObject (
+  -- * Extension Support
+    gl_EXT_texture_object
+
+  -- * GL_EXT_texture_object
+  , glAreTexturesResidentEXT
+  , glBindTextureEXT
+  , glDeleteTexturesEXT
+  , glGenTexturesEXT
+  , glIsTextureEXT
+  , glPrioritizeTexturesEXT
+  , pattern GL_TEXTURE_1D_BINDING_EXT
+  , pattern GL_TEXTURE_2D_BINDING_EXT
+  , pattern GL_TEXTURE_3D_BINDING_EXT
+  , pattern GL_TEXTURE_PRIORITY_EXT
+  , pattern GL_TEXTURE_RESIDENT_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.Types
+import System.IO.Unsafe
+
+gl_EXT_texture_object :: Bool
+gl_EXT_texture_object = member "GL_EXT_texture_object" extensions
+
+glAreTexturesResidentEXT :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLboolean -> m GLboolean
+glAreTexturesResidentEXT = ffisizeiPtruintPtrbooleanIOboolean glAreTexturesResidentEXTFunPtr
+
+glAreTexturesResidentEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean)
+glAreTexturesResidentEXTFunPtr = unsafePerformIO (getProcAddress "glAreTexturesResidentEXT")
+
+{-# NOINLINE glAreTexturesResidentEXTFunPtr #-}
+
+glBindTextureEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glBindTextureEXT = ffienumuintIOV glBindTextureEXTFunPtr
+
+glBindTextureEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindTextureEXTFunPtr = unsafePerformIO (getProcAddress "glBindTextureEXT")
+
+{-# NOINLINE glBindTextureEXTFunPtr #-}
+
+glDeleteTexturesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteTexturesEXT = ffisizeiPtruintIOV glDeleteTexturesEXTFunPtr
+
+glDeleteTexturesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteTexturesEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteTexturesEXT")
+
+{-# NOINLINE glDeleteTexturesEXTFunPtr #-}
+
+glGenTexturesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenTexturesEXT = ffisizeiPtruintIOV glGenTexturesEXTFunPtr
+
+glGenTexturesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenTexturesEXTFunPtr = unsafePerformIO (getProcAddress "glGenTexturesEXT")
+
+{-# NOINLINE glGenTexturesEXTFunPtr #-}
+
+glIsTextureEXT :: MonadIO m => GLuint -> m GLboolean
+glIsTextureEXT = ffiuintIOboolean glIsTextureEXTFunPtr
+
+glIsTextureEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsTextureEXTFunPtr = unsafePerformIO (getProcAddress "glIsTextureEXT")
+
+{-# NOINLINE glIsTextureEXTFunPtr #-}
+
+glPrioritizeTexturesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLclampf -> m ()
+glPrioritizeTexturesEXT = ffisizeiPtruintPtrclampfIOV glPrioritizeTexturesEXTFunPtr
+
+glPrioritizeTexturesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLclampf -> IO ())
+glPrioritizeTexturesEXTFunPtr = unsafePerformIO (getProcAddress "glPrioritizeTexturesEXT")
+
+{-# NOINLINE glPrioritizeTexturesEXTFunPtr #-}
+
+pattern GL_TEXTURE_1D_BINDING_EXT = 0x8068 :: GLenum
+
+pattern GL_TEXTURE_2D_BINDING_EXT = 0x8069 :: GLenum
+
+pattern GL_TEXTURE_3D_BINDING_EXT = 0x806A :: GLenum
+
+pattern GL_TEXTURE_PRIORITY_EXT = 0x8066 :: GLenum
+
+pattern GL_TEXTURE_RESIDENT_EXT = 0x8067 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TexturePerturbNormal.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TexturePerturbNormal.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TexturePerturbNormal.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TexturePerturbNormal (
+  -- * Extension Support
+    gl_EXT_texture_perturb_normal
+
+  -- * GL_EXT_texture_perturb_normal
+  , glTextureNormalEXT
+  , pattern GL_PERTURB_EXT
+  , pattern GL_TEXTURE_NORMAL_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.Types
+import System.IO.Unsafe
+
+gl_EXT_texture_perturb_normal :: Bool
+gl_EXT_texture_perturb_normal = member "GL_EXT_texture_perturb_normal" extensions
+
+glTextureNormalEXT :: MonadIO m => GLenum -> m ()
+glTextureNormalEXT = ffienumIOV glTextureNormalEXTFunPtr
+
+glTextureNormalEXTFunPtr :: FunPtr (GLenum -> IO ())
+glTextureNormalEXTFunPtr = unsafePerformIO (getProcAddress "glTextureNormalEXT")
+
+{-# NOINLINE glTextureNormalEXTFunPtr #-}
+
+pattern GL_PERTURB_EXT = 0x85AE :: GLenum
+
+pattern GL_TEXTURE_NORMAL_EXT = 0x85AF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureRg.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureRg.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureRg.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureRg (
+  -- * Extension Support
+    gl_EXT_texture_rg
+
+  -- * GL_EXT_texture_rg
+  , pattern GL_R8_EXT
+  , pattern GL_RED_EXT
+  , pattern GL_RG8_EXT
+  , pattern GL_RG_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_rg :: Bool
+gl_EXT_texture_rg = member "GL_EXT_texture_rg" extensions
+
+pattern GL_RED_EXT = 0x1903 :: GLenum
+
+pattern GL_RG_EXT = 0x8227 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSRGB.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSRGB.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSRGB.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureSRGB (
+  -- * Extension Support
+    gl_EXT_texture_sRGB
+
+  -- * GL_EXT_texture_sRGB
+  , pattern GL_COMPRESSED_SLUMINANCE_ALPHA_EXT
+  , pattern GL_COMPRESSED_SLUMINANCE_EXT
+  , pattern GL_COMPRESSED_SRGB_ALPHA_EXT
+  , pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT
+  , pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT
+  , pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT
+  , pattern GL_COMPRESSED_SRGB_EXT
+  , pattern GL_COMPRESSED_SRGB_S3TC_DXT1_EXT
+  , pattern GL_SLUMINANCE8_ALPHA8_EXT
+  , pattern GL_SLUMINANCE8_EXT
+  , pattern GL_SLUMINANCE_ALPHA_EXT
+  , pattern GL_SLUMINANCE_EXT
+  , pattern GL_SRGB8_ALPHA8_EXT
+  , pattern GL_SRGB8_EXT
+  , pattern GL_SRGB_ALPHA_EXT
+  , pattern GL_SRGB_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_sRGB :: Bool
+gl_EXT_texture_sRGB = member "GL_EXT_texture_sRGB" extensions
+
+pattern GL_COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B :: GLenum
+
+pattern GL_COMPRESSED_SLUMINANCE_EXT = 0x8C4A :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_EXT = 0x8C49 :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F :: GLenum
+
+pattern GL_COMPRESSED_SRGB_EXT = 0x8C48 :: GLenum
+
+pattern GL_COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C :: GLenum
+
+pattern GL_SLUMINANCE8_ALPHA8_EXT = 0x8C45 :: GLenum
+
+pattern GL_SLUMINANCE8_EXT = 0x8C47 :: GLenum
+
+pattern GL_SLUMINANCE_ALPHA_EXT = 0x8C44 :: GLenum
+
+pattern GL_SLUMINANCE_EXT = 0x8C46 :: GLenum
+
+pattern GL_SRGB8_EXT = 0x8C41 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSRGBDecode.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSRGBDecode.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSRGBDecode.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureSRGBDecode (
+  -- * Extension Support
+    gl_EXT_texture_sRGB_decode
+
+  -- * GL_EXT_texture_sRGB_decode
+  , pattern GL_DECODE_EXT
+  , pattern GL_SKIP_DECODE_EXT
+  , pattern GL_TEXTURE_SRGB_DECODE_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_sRGB_decode :: Bool
+gl_EXT_texture_sRGB_decode = member "GL_EXT_texture_sRGB_decode" extensions
+
+pattern GL_DECODE_EXT = 0x8A49 :: GLenum
+
+pattern GL_SKIP_DECODE_EXT = 0x8A4A :: GLenum
+
+pattern GL_TEXTURE_SRGB_DECODE_EXT = 0x8A48 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSharedExponent.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSharedExponent.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSharedExponent.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureSharedExponent (
+  -- * Extension Support
+    gl_EXT_texture_shared_exponent
+
+  -- * GL_EXT_texture_shared_exponent
+  , pattern GL_RGB9_E5_EXT
+  , pattern GL_TEXTURE_SHARED_SIZE_EXT
+  , pattern GL_UNSIGNED_INT_5_9_9_9_REV_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_shared_exponent :: Bool
+gl_EXT_texture_shared_exponent = member "GL_EXT_texture_shared_exponent" extensions
+
+pattern GL_RGB9_E5_EXT = 0x8C3D :: GLenum
+
+pattern GL_TEXTURE_SHARED_SIZE_EXT = 0x8C3F :: GLenum
+
+pattern GL_UNSIGNED_INT_5_9_9_9_REV_EXT = 0x8C3E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSnorm.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSnorm.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSnorm.hs
@@ -0,0 +1,73 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureSnorm (
+  -- * Extension Support
+    gl_EXT_texture_snorm
+
+  -- * GL_EXT_texture_snorm
+  , pattern GL_ALPHA16_SNORM
+  , pattern GL_ALPHA8_SNORM
+  , pattern GL_ALPHA_SNORM
+  , pattern GL_INTENSITY16_SNORM
+  , pattern GL_INTENSITY8_SNORM
+  , pattern GL_INTENSITY_SNORM
+  , pattern GL_LUMINANCE16_ALPHA16_SNORM
+  , pattern GL_LUMINANCE16_SNORM
+  , pattern GL_LUMINANCE8_ALPHA8_SNORM
+  , pattern GL_LUMINANCE8_SNORM
+  , pattern GL_LUMINANCE_ALPHA_SNORM
+  , pattern GL_LUMINANCE_SNORM
+  , pattern GL_R16_SNORM
+  , pattern GL_R8_SNORM
+  , pattern GL_RED_SNORM
+  , pattern GL_RG16_SNORM
+  , pattern GL_RG8_SNORM
+  , pattern GL_RGB16_SNORM
+  , pattern GL_RGB8_SNORM
+  , pattern GL_RGBA16_SNORM
+  , pattern GL_RGBA8_SNORM
+  , pattern GL_RGBA_SNORM
+  , pattern GL_RGB_SNORM
+  , pattern GL_RG_SNORM
+  , pattern GL_SIGNED_NORMALIZED
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_snorm :: Bool
+gl_EXT_texture_snorm = member "GL_EXT_texture_snorm" extensions
+
+pattern GL_ALPHA16_SNORM = 0x9018 :: GLenum
+
+pattern GL_ALPHA8_SNORM = 0x9014 :: GLenum
+
+pattern GL_ALPHA_SNORM = 0x9010 :: GLenum
+
+pattern GL_INTENSITY16_SNORM = 0x901B :: GLenum
+
+pattern GL_INTENSITY8_SNORM = 0x9017 :: GLenum
+
+pattern GL_INTENSITY_SNORM = 0x9013 :: GLenum
+
+pattern GL_LUMINANCE16_ALPHA16_SNORM = 0x901A :: GLenum
+
+pattern GL_LUMINANCE16_SNORM = 0x9019 :: GLenum
+
+pattern GL_LUMINANCE8_ALPHA8_SNORM = 0x9016 :: GLenum
+
+pattern GL_LUMINANCE8_SNORM = 0x9015 :: GLenum
+
+pattern GL_LUMINANCE_ALPHA_SNORM = 0x9012 :: GLenum
+
+pattern GL_LUMINANCE_SNORM = 0x9011 :: GLenum
+
+pattern GL_RED_SNORM = 0x8F90 :: GLenum
+
+pattern GL_RGBA_SNORM = 0x8F93 :: GLenum
+
+pattern GL_RGB_SNORM = 0x8F92 :: GLenum
+
+pattern GL_RG_SNORM = 0x8F91 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureStorage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureStorage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureStorage.hs
@@ -0,0 +1,95 @@
+-- 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
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSwizzle.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSwizzle.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureSwizzle.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureSwizzle (
+  -- * Extension Support
+    gl_EXT_texture_swizzle
+
+  -- * GL_EXT_texture_swizzle
+  , pattern GL_TEXTURE_SWIZZLE_A_EXT
+  , pattern GL_TEXTURE_SWIZZLE_B_EXT
+  , pattern GL_TEXTURE_SWIZZLE_G_EXT
+  , pattern GL_TEXTURE_SWIZZLE_RGBA_EXT
+  , pattern GL_TEXTURE_SWIZZLE_R_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_swizzle :: Bool
+gl_EXT_texture_swizzle = member "GL_EXT_texture_swizzle" extensions
+
+pattern GL_TEXTURE_SWIZZLE_A_EXT = 0x8E45 :: GLenum
+
+pattern GL_TEXTURE_SWIZZLE_B_EXT = 0x8E44 :: GLenum
+
+pattern GL_TEXTURE_SWIZZLE_G_EXT = 0x8E43 :: GLenum
+
+pattern GL_TEXTURE_SWIZZLE_RGBA_EXT = 0x8E46 :: GLenum
+
+pattern GL_TEXTURE_SWIZZLE_R_EXT = 0x8E42 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureType2101010REV.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureType2101010REV.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureType2101010REV.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureType2101010REV (
+  -- * Extension Support
+    gl_EXT_texture_type_2_10_10_10_REV
+
+  -- * GL_EXT_texture_type_2_10_10_10_REV
+  , pattern GL_UNSIGNED_INT_2_10_10_10_REV_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_texture_type_2_10_10_10_REV :: Bool
+gl_EXT_texture_type_2_10_10_10_REV = member "GL_EXT_texture_type_2_10_10_10_REV" extensions
+
+pattern GL_UNSIGNED_INT_2_10_10_10_REV_EXT = 0x8368 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureView.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureView.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TextureView.hs
@@ -0,0 +1,42 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TextureView (
+  -- * Extension Support
+    gl_EXT_texture_view
+
+  -- * GL_EXT_texture_view
+  , glTextureViewEXT
+  , pattern GL_TEXTURE_IMMUTABLE_LEVELS
+  , pattern GL_TEXTURE_VIEW_MIN_LAYER_EXT
+  , pattern GL_TEXTURE_VIEW_MIN_LEVEL_EXT
+  , pattern GL_TEXTURE_VIEW_NUM_LAYERS_EXT
+  , pattern GL_TEXTURE_VIEW_NUM_LEVELS_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_view :: Bool
+gl_EXT_texture_view = member "GL_EXT_texture_view" extensions
+
+glTextureViewEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glTextureViewEXT = ffiuintenumuintenumuintuintuintuintIOV glTextureViewEXTFunPtr
+
+glTextureViewEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glTextureViewEXTFunPtr = unsafePerformIO (getProcAddress "glTextureViewEXT")
+
+{-# NOINLINE glTextureViewEXTFunPtr #-}
+
+pattern GL_TEXTURE_VIEW_MIN_LAYER_EXT = 0x82DD :: GLenum
+
+pattern GL_TEXTURE_VIEW_MIN_LEVEL_EXT = 0x82DB :: GLenum
+
+pattern GL_TEXTURE_VIEW_NUM_LAYERS_EXT = 0x82DE :: GLenum
+
+pattern GL_TEXTURE_VIEW_NUM_LEVELS_EXT = 0x82DC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TimerQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TimerQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TimerQuery.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TimerQuery (
+  -- * Extension Support
+    gl_EXT_timer_query
+
+  -- * GL_EXT_timer_query
+  , glGetQueryObjecti64vEXT
+  , glGetQueryObjectui64vEXT
+  , pattern GL_TIME_ELAPSED_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_timer_query :: Bool
+gl_EXT_timer_query = member "GL_EXT_timer_query" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TransformFeedback.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TransformFeedback.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/TransformFeedback.hs
@@ -0,0 +1,126 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.TransformFeedback (
+  -- * Extension Support
+    gl_EXT_transform_feedback
+
+  -- * GL_EXT_transform_feedback
+  , glBeginTransformFeedbackEXT
+  , glBindBufferBaseEXT
+  , glBindBufferOffsetEXT
+  , glBindBufferRangeEXT
+  , glEndTransformFeedbackEXT
+  , glGetTransformFeedbackVaryingEXT
+  , glTransformFeedbackVaryingsEXT
+  , pattern GL_INTERLEAVED_ATTRIBS_EXT
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT
+  , pattern GL_PRIMITIVES_GENERATED_EXT
+  , pattern GL_RASTERIZER_DISCARD_EXT
+  , pattern GL_SEPARATE_ATTRIBS_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_VARYINGS_EXT
+  , pattern GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_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_transform_feedback :: Bool
+gl_EXT_transform_feedback = member "GL_EXT_transform_feedback" extensions
+
+glBeginTransformFeedbackEXT :: MonadIO m => GLenum -> m ()
+glBeginTransformFeedbackEXT = ffienumIOV glBeginTransformFeedbackEXTFunPtr
+
+glBeginTransformFeedbackEXTFunPtr :: FunPtr (GLenum -> IO ())
+glBeginTransformFeedbackEXTFunPtr = unsafePerformIO (getProcAddress "glBeginTransformFeedbackEXT")
+
+{-# NOINLINE glBeginTransformFeedbackEXTFunPtr #-}
+
+glBindBufferBaseEXT :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
+glBindBufferBaseEXT = ffienumuintuintIOV glBindBufferBaseEXTFunPtr
+
+glBindBufferBaseEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
+glBindBufferBaseEXTFunPtr = unsafePerformIO (getProcAddress "glBindBufferBaseEXT")
+
+{-# NOINLINE glBindBufferBaseEXTFunPtr #-}
+
+glBindBufferOffsetEXT :: MonadIO m => GLenum -> GLuint -> GLuint -> GLintptr -> m ()
+glBindBufferOffsetEXT = ffienumuintuintintptrIOV glBindBufferOffsetEXTFunPtr
+
+glBindBufferOffsetEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> IO ())
+glBindBufferOffsetEXTFunPtr = unsafePerformIO (getProcAddress "glBindBufferOffsetEXT")
+
+{-# NOINLINE glBindBufferOffsetEXTFunPtr #-}
+
+glBindBufferRangeEXT :: MonadIO m => GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+glBindBufferRangeEXT = ffienumuintuintintptrsizeiptrIOV glBindBufferRangeEXTFunPtr
+
+glBindBufferRangeEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
+glBindBufferRangeEXTFunPtr = unsafePerformIO (getProcAddress "glBindBufferRangeEXT")
+
+{-# NOINLINE glBindBufferRangeEXTFunPtr #-}
+
+glEndTransformFeedbackEXT :: MonadIO m => m ()
+glEndTransformFeedbackEXT = ffiIOV glEndTransformFeedbackEXTFunPtr
+
+glEndTransformFeedbackEXTFunPtr :: FunPtr (IO ())
+glEndTransformFeedbackEXTFunPtr = unsafePerformIO (getProcAddress "glEndTransformFeedbackEXT")
+
+{-# NOINLINE glEndTransformFeedbackEXTFunPtr #-}
+
+glGetTransformFeedbackVaryingEXT :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> m ()
+glGetTransformFeedbackVaryingEXT = ffiuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV glGetTransformFeedbackVaryingEXTFunPtr
+
+glGetTransformFeedbackVaryingEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ())
+glGetTransformFeedbackVaryingEXTFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbackVaryingEXT")
+
+{-# NOINLINE glGetTransformFeedbackVaryingEXTFunPtr #-}
+
+glTransformFeedbackVaryingsEXT :: MonadIO m => GLuint -> GLsizei -> Ptr GLchar -> GLenum -> m ()
+glTransformFeedbackVaryingsEXT = ffiuintsizeiPtrcharenumIOV glTransformFeedbackVaryingsEXTFunPtr
+
+glTransformFeedbackVaryingsEXTFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLchar -> GLenum -> IO ())
+glTransformFeedbackVaryingsEXTFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackVaryingsEXT")
+
+{-# NOINLINE glTransformFeedbackVaryingsEXTFunPtr #-}
+
+pattern GL_INTERLEAVED_ATTRIBS_EXT = 0x8C8C :: GLenum
+
+pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A :: GLenum
+
+pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = 0x8C8B :: GLenum
+
+pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = 0x8C80 :: GLenum
+
+pattern GL_RASTERIZER_DISCARD_EXT = 0x8C89 :: GLenum
+
+pattern GL_SEPARATE_ATTRIBS_EXT = 0x8C8D :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = 0x8C8F :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_EXT = 0x8C8E :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = 0x8C7F :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = 0x8C85 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT = 0x8C84 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = 0x8C88 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_VARYINGS_EXT = 0x8C83 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = 0x8C76 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/UnpackSubimage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/UnpackSubimage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/UnpackSubimage.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.UnpackSubimage (
+  -- * Extension Support
+    gl_EXT_unpack_subimage
+
+  -- * GL_EXT_unpack_subimage
+  , pattern GL_UNPACK_ROW_LENGTH_EXT
+  , pattern GL_UNPACK_SKIP_PIXELS_EXT
+  , pattern GL_UNPACK_SKIP_ROWS_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_EXT_unpack_subimage :: Bool
+gl_EXT_unpack_subimage = member "GL_EXT_unpack_subimage" extensions
+
+pattern GL_UNPACK_ROW_LENGTH_EXT = 0x0CF2 :: GLenum
+
+pattern GL_UNPACK_SKIP_PIXELS_EXT = 0x0CF4 :: GLenum
+
+pattern GL_UNPACK_SKIP_ROWS_EXT = 0x0CF3 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexArray.hs
@@ -0,0 +1,196 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.VertexArray (
+  -- * Extension Support
+    gl_EXT_vertex_array
+
+  -- * GL_EXT_vertex_array
+  , glArrayElementEXT
+  , glColorPointerEXT
+  , glDrawArraysEXT
+  , glEdgeFlagPointerEXT
+  , glGetPointervEXT
+  , glIndexPointerEXT
+  , glNormalPointerEXT
+  , glTexCoordPointerEXT
+  , glVertexPointerEXT
+  , pattern GL_COLOR_ARRAY_COUNT_EXT
+  , pattern GL_COLOR_ARRAY_EXT
+  , pattern GL_COLOR_ARRAY_POINTER_EXT
+  , pattern GL_COLOR_ARRAY_SIZE_EXT
+  , pattern GL_COLOR_ARRAY_STRIDE_EXT
+  , pattern GL_COLOR_ARRAY_TYPE_EXT
+  , pattern GL_EDGE_FLAG_ARRAY_COUNT_EXT
+  , pattern GL_EDGE_FLAG_ARRAY_EXT
+  , pattern GL_EDGE_FLAG_ARRAY_POINTER_EXT
+  , pattern GL_EDGE_FLAG_ARRAY_STRIDE_EXT
+  , pattern GL_INDEX_ARRAY_COUNT_EXT
+  , pattern GL_INDEX_ARRAY_EXT
+  , pattern GL_INDEX_ARRAY_POINTER_EXT
+  , pattern GL_INDEX_ARRAY_STRIDE_EXT
+  , pattern GL_INDEX_ARRAY_TYPE_EXT
+  , pattern GL_NORMAL_ARRAY_COUNT_EXT
+  , pattern GL_NORMAL_ARRAY_EXT
+  , pattern GL_NORMAL_ARRAY_POINTER_EXT
+  , pattern GL_NORMAL_ARRAY_STRIDE_EXT
+  , pattern GL_NORMAL_ARRAY_TYPE_EXT
+  , pattern GL_TEXTURE_COORD_ARRAY_COUNT_EXT
+  , pattern GL_TEXTURE_COORD_ARRAY_EXT
+  , pattern GL_TEXTURE_COORD_ARRAY_POINTER_EXT
+  , pattern GL_TEXTURE_COORD_ARRAY_SIZE_EXT
+  , pattern GL_TEXTURE_COORD_ARRAY_STRIDE_EXT
+  , pattern GL_TEXTURE_COORD_ARRAY_TYPE_EXT
+  , pattern GL_VERTEX_ARRAY_COUNT_EXT
+  , pattern GL_VERTEX_ARRAY_EXT
+  , pattern GL_VERTEX_ARRAY_POINTER_EXT
+  , pattern GL_VERTEX_ARRAY_SIZE_EXT
+  , pattern GL_VERTEX_ARRAY_STRIDE_EXT
+  , pattern GL_VERTEX_ARRAY_TYPE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_vertex_array :: Bool
+gl_EXT_vertex_array = member "GL_EXT_vertex_array" extensions
+
+glArrayElementEXT :: MonadIO m => GLint -> m ()
+glArrayElementEXT = ffiintIOV glArrayElementEXTFunPtr
+
+glArrayElementEXTFunPtr :: FunPtr (GLint -> IO ())
+glArrayElementEXTFunPtr = unsafePerformIO (getProcAddress "glArrayElementEXT")
+
+{-# NOINLINE glArrayElementEXTFunPtr #-}
+
+glColorPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
+glColorPointerEXT = ffiintenumsizeisizeiPtrVIOV glColorPointerEXTFunPtr
+
+glColorPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
+glColorPointerEXTFunPtr = unsafePerformIO (getProcAddress "glColorPointerEXT")
+
+{-# NOINLINE glColorPointerEXTFunPtr #-}
+
+glDrawArraysEXT :: MonadIO m => GLenum -> GLint -> GLsizei -> m ()
+glDrawArraysEXT = ffienumintsizeiIOV glDrawArraysEXTFunPtr
+
+glDrawArraysEXTFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> IO ())
+glDrawArraysEXTFunPtr = unsafePerformIO (getProcAddress "glDrawArraysEXT")
+
+{-# NOINLINE glDrawArraysEXTFunPtr #-}
+
+glEdgeFlagPointerEXT :: MonadIO m => GLsizei -> GLsizei -> Ptr GLboolean -> m ()
+glEdgeFlagPointerEXT = ffisizeisizeiPtrbooleanIOV glEdgeFlagPointerEXTFunPtr
+
+glEdgeFlagPointerEXTFunPtr :: FunPtr (GLsizei -> GLsizei -> Ptr GLboolean -> IO ())
+glEdgeFlagPointerEXTFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagPointerEXT")
+
+{-# NOINLINE glEdgeFlagPointerEXTFunPtr #-}
+
+glGetPointervEXT :: MonadIO m => GLenum -> Ptr () -> m ()
+glGetPointervEXT = ffienumPtrVIOV glGetPointervEXTFunPtr
+
+glGetPointervEXTFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
+glGetPointervEXTFunPtr = unsafePerformIO (getProcAddress "glGetPointervEXT")
+
+{-# NOINLINE glGetPointervEXTFunPtr #-}
+
+glIndexPointerEXT :: MonadIO m => GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
+glIndexPointerEXT = ffienumsizeisizeiPtrVIOV glIndexPointerEXTFunPtr
+
+glIndexPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
+glIndexPointerEXTFunPtr = unsafePerformIO (getProcAddress "glIndexPointerEXT")
+
+{-# NOINLINE glIndexPointerEXTFunPtr #-}
+
+glNormalPointerEXT :: MonadIO m => GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
+glNormalPointerEXT = ffienumsizeisizeiPtrVIOV glNormalPointerEXTFunPtr
+
+glNormalPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
+glNormalPointerEXTFunPtr = unsafePerformIO (getProcAddress "glNormalPointerEXT")
+
+{-# NOINLINE glNormalPointerEXTFunPtr #-}
+
+glTexCoordPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
+glTexCoordPointerEXT = ffiintenumsizeisizeiPtrVIOV glTexCoordPointerEXTFunPtr
+
+glTexCoordPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
+glTexCoordPointerEXTFunPtr = unsafePerformIO (getProcAddress "glTexCoordPointerEXT")
+
+{-# NOINLINE glTexCoordPointerEXTFunPtr #-}
+
+glVertexPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
+glVertexPointerEXT = ffiintenumsizeisizeiPtrVIOV glVertexPointerEXTFunPtr
+
+glVertexPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
+glVertexPointerEXTFunPtr = unsafePerformIO (getProcAddress "glVertexPointerEXT")
+
+{-# NOINLINE glVertexPointerEXTFunPtr #-}
+
+pattern GL_COLOR_ARRAY_COUNT_EXT = 0x8084 :: GLenum
+
+pattern GL_COLOR_ARRAY_EXT = 0x8076 :: GLenum
+
+pattern GL_COLOR_ARRAY_POINTER_EXT = 0x8090 :: GLenum
+
+pattern GL_COLOR_ARRAY_SIZE_EXT = 0x8081 :: GLenum
+
+pattern GL_COLOR_ARRAY_STRIDE_EXT = 0x8083 :: GLenum
+
+pattern GL_COLOR_ARRAY_TYPE_EXT = 0x8082 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_EXT = 0x8079 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C :: GLenum
+
+pattern GL_INDEX_ARRAY_COUNT_EXT = 0x8087 :: GLenum
+
+pattern GL_INDEX_ARRAY_EXT = 0x8077 :: GLenum
+
+pattern GL_INDEX_ARRAY_POINTER_EXT = 0x8091 :: GLenum
+
+pattern GL_INDEX_ARRAY_STRIDE_EXT = 0x8086 :: GLenum
+
+pattern GL_INDEX_ARRAY_TYPE_EXT = 0x8085 :: GLenum
+
+pattern GL_NORMAL_ARRAY_COUNT_EXT = 0x8080 :: GLenum
+
+pattern GL_NORMAL_ARRAY_EXT = 0x8075 :: GLenum
+
+pattern GL_NORMAL_ARRAY_POINTER_EXT = 0x808F :: GLenum
+
+pattern GL_NORMAL_ARRAY_STRIDE_EXT = 0x807F :: GLenum
+
+pattern GL_NORMAL_ARRAY_TYPE_EXT = 0x807E :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_EXT = 0x8078 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089 :: GLenum
+
+pattern GL_VERTEX_ARRAY_COUNT_EXT = 0x807D :: GLenum
+
+pattern GL_VERTEX_ARRAY_EXT = 0x8074 :: GLenum
+
+pattern GL_VERTEX_ARRAY_POINTER_EXT = 0x808E :: GLenum
+
+pattern GL_VERTEX_ARRAY_SIZE_EXT = 0x807A :: GLenum
+
+pattern GL_VERTEX_ARRAY_STRIDE_EXT = 0x807C :: GLenum
+
+pattern GL_VERTEX_ARRAY_TYPE_EXT = 0x807B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexArrayBgra.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexArrayBgra.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexArrayBgra.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.VertexArrayBgra (
+  -- * Extension Support
+    gl_EXT_vertex_array_bgra
+
+  -- * GL_EXT_vertex_array_bgra
+  , pattern GL_BGRA
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_EXT_vertex_array_bgra :: Bool
+gl_EXT_vertex_array_bgra = member "GL_EXT_vertex_array_bgra" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexAttrib64bit.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexAttrib64bit.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexAttrib64bit.hs
@@ -0,0 +1,147 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.VertexAttrib64bit (
+  -- * Extension Support
+    gl_EXT_vertex_attrib_64bit
+
+  -- * GL_EXT_vertex_attrib_64bit
+  , glGetVertexAttribLdvEXT
+  , glVertexAttribL1dEXT
+  , glVertexAttribL1dvEXT
+  , glVertexAttribL2dEXT
+  , glVertexAttribL2dvEXT
+  , glVertexAttribL3dEXT
+  , glVertexAttribL3dvEXT
+  , glVertexAttribL4dEXT
+  , glVertexAttribL4dvEXT
+  , glVertexAttribLPointerEXT
+  , pattern GL_DOUBLE
+  , pattern GL_DOUBLE_MAT2_EXT
+  , pattern GL_DOUBLE_MAT2x3_EXT
+  , pattern GL_DOUBLE_MAT2x4_EXT
+  , pattern GL_DOUBLE_MAT3_EXT
+  , pattern GL_DOUBLE_MAT3x2_EXT
+  , pattern GL_DOUBLE_MAT3x4_EXT
+  , pattern GL_DOUBLE_MAT4_EXT
+  , pattern GL_DOUBLE_MAT4x2_EXT
+  , pattern GL_DOUBLE_MAT4x3_EXT
+  , pattern GL_DOUBLE_VEC2_EXT
+  , pattern GL_DOUBLE_VEC3_EXT
+  , pattern GL_DOUBLE_VEC4_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_vertex_attrib_64bit :: Bool
+gl_EXT_vertex_attrib_64bit = member "GL_EXT_vertex_attrib_64bit" extensions
+
+glGetVertexAttribLdvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
+glGetVertexAttribLdvEXT = ffiuintenumPtrdoubleIOV glGetVertexAttribLdvEXTFunPtr
+
+glGetVertexAttribLdvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
+glGetVertexAttribLdvEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribLdvEXT")
+
+{-# NOINLINE glGetVertexAttribLdvEXTFunPtr #-}
+
+glVertexAttribL1dEXT :: MonadIO m => GLuint -> GLdouble -> m ()
+glVertexAttribL1dEXT = ffiuintdoubleIOV glVertexAttribL1dEXTFunPtr
+
+glVertexAttribL1dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
+glVertexAttribL1dEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1dEXT")
+
+{-# NOINLINE glVertexAttribL1dEXTFunPtr #-}
+
+glVertexAttribL1dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttribL1dvEXT = ffiuintPtrdoubleIOV glVertexAttribL1dvEXTFunPtr
+
+glVertexAttribL1dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttribL1dvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1dvEXT")
+
+{-# NOINLINE glVertexAttribL1dvEXTFunPtr #-}
+
+glVertexAttribL2dEXT :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
+glVertexAttribL2dEXT = ffiuintdoubledoubleIOV glVertexAttribL2dEXTFunPtr
+
+glVertexAttribL2dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
+glVertexAttribL2dEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2dEXT")
+
+{-# NOINLINE glVertexAttribL2dEXTFunPtr #-}
+
+glVertexAttribL2dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttribL2dvEXT = ffiuintPtrdoubleIOV glVertexAttribL2dvEXTFunPtr
+
+glVertexAttribL2dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttribL2dvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2dvEXT")
+
+{-# NOINLINE glVertexAttribL2dvEXTFunPtr #-}
+
+glVertexAttribL3dEXT :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
+glVertexAttribL3dEXT = ffiuintdoubledoubledoubleIOV glVertexAttribL3dEXTFunPtr
+
+glVertexAttribL3dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glVertexAttribL3dEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3dEXT")
+
+{-# NOINLINE glVertexAttribL3dEXTFunPtr #-}
+
+glVertexAttribL3dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttribL3dvEXT = ffiuintPtrdoubleIOV glVertexAttribL3dvEXTFunPtr
+
+glVertexAttribL3dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttribL3dvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3dvEXT")
+
+{-# NOINLINE glVertexAttribL3dvEXTFunPtr #-}
+
+glVertexAttribL4dEXT :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glVertexAttribL4dEXT = ffiuintdoubledoubledoubledoubleIOV glVertexAttribL4dEXTFunPtr
+
+glVertexAttribL4dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glVertexAttribL4dEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4dEXT")
+
+{-# NOINLINE glVertexAttribL4dEXTFunPtr #-}
+
+glVertexAttribL4dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttribL4dvEXT = ffiuintPtrdoubleIOV glVertexAttribL4dvEXTFunPtr
+
+glVertexAttribL4dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttribL4dvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4dvEXT")
+
+{-# NOINLINE glVertexAttribL4dvEXTFunPtr #-}
+
+glVertexAttribLPointerEXT :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glVertexAttribLPointerEXT = ffiuintintenumsizeiPtrVIOV glVertexAttribLPointerEXTFunPtr
+
+glVertexAttribLPointerEXTFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glVertexAttribLPointerEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribLPointerEXT")
+
+{-# NOINLINE glVertexAttribLPointerEXTFunPtr #-}
+
+pattern GL_DOUBLE_MAT2_EXT = 0x8F46 :: GLenum
+
+pattern GL_DOUBLE_MAT2x3_EXT = 0x8F49 :: GLenum
+
+pattern GL_DOUBLE_MAT2x4_EXT = 0x8F4A :: GLenum
+
+pattern GL_DOUBLE_MAT3_EXT = 0x8F47 :: GLenum
+
+pattern GL_DOUBLE_MAT3x2_EXT = 0x8F4B :: GLenum
+
+pattern GL_DOUBLE_MAT3x4_EXT = 0x8F4C :: GLenum
+
+pattern GL_DOUBLE_MAT4_EXT = 0x8F48 :: GLenum
+
+pattern GL_DOUBLE_MAT4x2_EXT = 0x8F4D :: GLenum
+
+pattern GL_DOUBLE_MAT4x3_EXT = 0x8F4E :: GLenum
+
+pattern GL_DOUBLE_VEC2_EXT = 0x8FFC :: GLenum
+
+pattern GL_DOUBLE_VEC3_EXT = 0x8FFD :: GLenum
+
+pattern GL_DOUBLE_VEC4_EXT = 0x8FFE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexShader.hs
@@ -0,0 +1,727 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.VertexShader (
+  -- * Extension Support
+    gl_EXT_vertex_shader
+
+  -- * GL_EXT_vertex_shader
+  , glBeginVertexShaderEXT
+  , glBindLightParameterEXT
+  , glBindMaterialParameterEXT
+  , glBindParameterEXT
+  , glBindTexGenParameterEXT
+  , glBindTextureUnitParameterEXT
+  , glBindVertexShaderEXT
+  , glDeleteVertexShaderEXT
+  , glDisableVariantClientStateEXT
+  , glEnableVariantClientStateEXT
+  , glEndVertexShaderEXT
+  , glExtractComponentEXT
+  , glGenSymbolsEXT
+  , glGenVertexShadersEXT
+  , glGetInvariantBooleanvEXT
+  , glGetInvariantFloatvEXT
+  , glGetInvariantIntegervEXT
+  , glGetLocalConstantBooleanvEXT
+  , glGetLocalConstantFloatvEXT
+  , glGetLocalConstantIntegervEXT
+  , glGetVariantBooleanvEXT
+  , glGetVariantFloatvEXT
+  , glGetVariantIntegervEXT
+  , glGetVariantPointervEXT
+  , glInsertComponentEXT
+  , glIsVariantEnabledEXT
+  , glSetInvariantEXT
+  , glSetLocalConstantEXT
+  , glShaderOp1EXT
+  , glShaderOp2EXT
+  , glShaderOp3EXT
+  , glSwizzleEXT
+  , glVariantPointerEXT
+  , glVariantbvEXT
+  , glVariantdvEXT
+  , glVariantfvEXT
+  , glVariantivEXT
+  , glVariantsvEXT
+  , glVariantubvEXT
+  , glVariantuivEXT
+  , glVariantusvEXT
+  , glWriteMaskEXT
+  , pattern GL_CURRENT_VERTEX_EXT
+  , pattern GL_FULL_RANGE_EXT
+  , pattern GL_INVARIANT_DATATYPE_EXT
+  , pattern GL_INVARIANT_EXT
+  , pattern GL_INVARIANT_VALUE_EXT
+  , pattern GL_LOCAL_CONSTANT_DATATYPE_EXT
+  , pattern GL_LOCAL_CONSTANT_EXT
+  , pattern GL_LOCAL_CONSTANT_VALUE_EXT
+  , pattern GL_LOCAL_EXT
+  , pattern GL_MATRIX_EXT
+  , pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT
+  , pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT
+  , pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT
+  , pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT
+  , pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT
+  , pattern GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT
+  , pattern GL_MAX_VERTEX_SHADER_INVARIANTS_EXT
+  , pattern GL_MAX_VERTEX_SHADER_LOCALS_EXT
+  , pattern GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT
+  , pattern GL_MAX_VERTEX_SHADER_VARIANTS_EXT
+  , pattern GL_MVP_MATRIX_EXT
+  , pattern GL_NEGATIVE_ONE_EXT
+  , pattern GL_NEGATIVE_W_EXT
+  , pattern GL_NEGATIVE_X_EXT
+  , pattern GL_NEGATIVE_Y_EXT
+  , pattern GL_NEGATIVE_Z_EXT
+  , pattern GL_NORMALIZED_RANGE_EXT
+  , pattern GL_ONE_EXT
+  , pattern GL_OP_ADD_EXT
+  , pattern GL_OP_CLAMP_EXT
+  , pattern GL_OP_CROSS_PRODUCT_EXT
+  , pattern GL_OP_DOT3_EXT
+  , pattern GL_OP_DOT4_EXT
+  , pattern GL_OP_EXP_BASE_2_EXT
+  , pattern GL_OP_FLOOR_EXT
+  , pattern GL_OP_FRAC_EXT
+  , pattern GL_OP_INDEX_EXT
+  , pattern GL_OP_LOG_BASE_2_EXT
+  , pattern GL_OP_MADD_EXT
+  , pattern GL_OP_MAX_EXT
+  , pattern GL_OP_MIN_EXT
+  , pattern GL_OP_MOV_EXT
+  , pattern GL_OP_MULTIPLY_MATRIX_EXT
+  , pattern GL_OP_MUL_EXT
+  , pattern GL_OP_NEGATE_EXT
+  , pattern GL_OP_POWER_EXT
+  , pattern GL_OP_RECIP_EXT
+  , pattern GL_OP_RECIP_SQRT_EXT
+  , pattern GL_OP_ROUND_EXT
+  , pattern GL_OP_SET_GE_EXT
+  , pattern GL_OP_SET_LT_EXT
+  , pattern GL_OP_SUB_EXT
+  , pattern GL_OUTPUT_COLOR0_EXT
+  , pattern GL_OUTPUT_COLOR1_EXT
+  , pattern GL_OUTPUT_FOG_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD0_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD10_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD11_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD12_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD13_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD14_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD15_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD16_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD17_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD18_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD19_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD1_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD20_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD21_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD22_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD23_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD24_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD25_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD26_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD27_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD28_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD29_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD2_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD30_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD31_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD3_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD4_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD5_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD6_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD7_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD8_EXT
+  , pattern GL_OUTPUT_TEXTURE_COORD9_EXT
+  , pattern GL_OUTPUT_VERTEX_EXT
+  , pattern GL_SCALAR_EXT
+  , pattern GL_VARIANT_ARRAY_EXT
+  , pattern GL_VARIANT_ARRAY_POINTER_EXT
+  , pattern GL_VARIANT_ARRAY_STRIDE_EXT
+  , pattern GL_VARIANT_ARRAY_TYPE_EXT
+  , pattern GL_VARIANT_DATATYPE_EXT
+  , pattern GL_VARIANT_EXT
+  , pattern GL_VARIANT_VALUE_EXT
+  , pattern GL_VECTOR_EXT
+  , pattern GL_VERTEX_SHADER_BINDING_EXT
+  , pattern GL_VERTEX_SHADER_EXT
+  , pattern GL_VERTEX_SHADER_INSTRUCTIONS_EXT
+  , pattern GL_VERTEX_SHADER_INVARIANTS_EXT
+  , pattern GL_VERTEX_SHADER_LOCALS_EXT
+  , pattern GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT
+  , pattern GL_VERTEX_SHADER_OPTIMIZED_EXT
+  , pattern GL_VERTEX_SHADER_VARIANTS_EXT
+  , pattern GL_W_EXT
+  , pattern GL_X_EXT
+  , pattern GL_Y_EXT
+  , pattern GL_ZERO_EXT
+  , pattern GL_Z_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.Types
+import System.IO.Unsafe
+
+gl_EXT_vertex_shader :: Bool
+gl_EXT_vertex_shader = member "GL_EXT_vertex_shader" extensions
+
+glBeginVertexShaderEXT :: MonadIO m => m ()
+glBeginVertexShaderEXT = ffiIOV glBeginVertexShaderEXTFunPtr
+
+glBeginVertexShaderEXTFunPtr :: FunPtr (IO ())
+glBeginVertexShaderEXTFunPtr = unsafePerformIO (getProcAddress "glBeginVertexShaderEXT")
+
+{-# NOINLINE glBeginVertexShaderEXTFunPtr #-}
+
+glBindLightParameterEXT :: MonadIO m => GLenum -> GLenum -> m GLuint
+glBindLightParameterEXT = ffienumenumIOuint glBindLightParameterEXTFunPtr
+
+glBindLightParameterEXTFunPtr :: FunPtr (GLenum -> GLenum -> IO GLuint)
+glBindLightParameterEXTFunPtr = unsafePerformIO (getProcAddress "glBindLightParameterEXT")
+
+{-# NOINLINE glBindLightParameterEXTFunPtr #-}
+
+glBindMaterialParameterEXT :: MonadIO m => GLenum -> GLenum -> m GLuint
+glBindMaterialParameterEXT = ffienumenumIOuint glBindMaterialParameterEXTFunPtr
+
+glBindMaterialParameterEXTFunPtr :: FunPtr (GLenum -> GLenum -> IO GLuint)
+glBindMaterialParameterEXTFunPtr = unsafePerformIO (getProcAddress "glBindMaterialParameterEXT")
+
+{-# NOINLINE glBindMaterialParameterEXTFunPtr #-}
+
+glBindParameterEXT :: MonadIO m => GLenum -> m GLuint
+glBindParameterEXT = ffienumIOuint glBindParameterEXTFunPtr
+
+glBindParameterEXTFunPtr :: FunPtr (GLenum -> IO GLuint)
+glBindParameterEXTFunPtr = unsafePerformIO (getProcAddress "glBindParameterEXT")
+
+{-# NOINLINE glBindParameterEXTFunPtr #-}
+
+glBindTexGenParameterEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> m GLuint
+glBindTexGenParameterEXT = ffienumenumenumIOuint glBindTexGenParameterEXTFunPtr
+
+glBindTexGenParameterEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> IO GLuint)
+glBindTexGenParameterEXTFunPtr = unsafePerformIO (getProcAddress "glBindTexGenParameterEXT")
+
+{-# NOINLINE glBindTexGenParameterEXTFunPtr #-}
+
+glBindTextureUnitParameterEXT :: MonadIO m => GLenum -> GLenum -> m GLuint
+glBindTextureUnitParameterEXT = ffienumenumIOuint glBindTextureUnitParameterEXTFunPtr
+
+glBindTextureUnitParameterEXTFunPtr :: FunPtr (GLenum -> GLenum -> IO GLuint)
+glBindTextureUnitParameterEXTFunPtr = unsafePerformIO (getProcAddress "glBindTextureUnitParameterEXT")
+
+{-# NOINLINE glBindTextureUnitParameterEXTFunPtr #-}
+
+glBindVertexShaderEXT :: MonadIO m => GLuint -> m ()
+glBindVertexShaderEXT = ffiuintIOV glBindVertexShaderEXTFunPtr
+
+glBindVertexShaderEXTFunPtr :: FunPtr (GLuint -> IO ())
+glBindVertexShaderEXTFunPtr = unsafePerformIO (getProcAddress "glBindVertexShaderEXT")
+
+{-# NOINLINE glBindVertexShaderEXTFunPtr #-}
+
+glDeleteVertexShaderEXT :: MonadIO m => GLuint -> m ()
+glDeleteVertexShaderEXT = ffiuintIOV glDeleteVertexShaderEXTFunPtr
+
+glDeleteVertexShaderEXTFunPtr :: FunPtr (GLuint -> IO ())
+glDeleteVertexShaderEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteVertexShaderEXT")
+
+{-# NOINLINE glDeleteVertexShaderEXTFunPtr #-}
+
+glDisableVariantClientStateEXT :: MonadIO m => GLuint -> m ()
+glDisableVariantClientStateEXT = ffiuintIOV glDisableVariantClientStateEXTFunPtr
+
+glDisableVariantClientStateEXTFunPtr :: FunPtr (GLuint -> IO ())
+glDisableVariantClientStateEXTFunPtr = unsafePerformIO (getProcAddress "glDisableVariantClientStateEXT")
+
+{-# NOINLINE glDisableVariantClientStateEXTFunPtr #-}
+
+glEnableVariantClientStateEXT :: MonadIO m => GLuint -> m ()
+glEnableVariantClientStateEXT = ffiuintIOV glEnableVariantClientStateEXTFunPtr
+
+glEnableVariantClientStateEXTFunPtr :: FunPtr (GLuint -> IO ())
+glEnableVariantClientStateEXTFunPtr = unsafePerformIO (getProcAddress "glEnableVariantClientStateEXT")
+
+{-# NOINLINE glEnableVariantClientStateEXTFunPtr #-}
+
+glEndVertexShaderEXT :: MonadIO m => m ()
+glEndVertexShaderEXT = ffiIOV glEndVertexShaderEXTFunPtr
+
+glEndVertexShaderEXTFunPtr :: FunPtr (IO ())
+glEndVertexShaderEXTFunPtr = unsafePerformIO (getProcAddress "glEndVertexShaderEXT")
+
+{-# NOINLINE glEndVertexShaderEXTFunPtr #-}
+
+glExtractComponentEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
+glExtractComponentEXT = ffiuintuintuintIOV glExtractComponentEXTFunPtr
+
+glExtractComponentEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
+glExtractComponentEXTFunPtr = unsafePerformIO (getProcAddress "glExtractComponentEXT")
+
+{-# NOINLINE glExtractComponentEXTFunPtr #-}
+
+glGenSymbolsEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> m GLuint
+glGenSymbolsEXT = ffienumenumenumuintIOuint glGenSymbolsEXTFunPtr
+
+glGenSymbolsEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO GLuint)
+glGenSymbolsEXTFunPtr = unsafePerformIO (getProcAddress "glGenSymbolsEXT")
+
+{-# NOINLINE glGenSymbolsEXTFunPtr #-}
+
+glGenVertexShadersEXT :: MonadIO m => GLuint -> m GLuint
+glGenVertexShadersEXT = ffiuintIOuint glGenVertexShadersEXTFunPtr
+
+glGenVertexShadersEXTFunPtr :: FunPtr (GLuint -> IO GLuint)
+glGenVertexShadersEXTFunPtr = unsafePerformIO (getProcAddress "glGenVertexShadersEXT")
+
+{-# NOINLINE glGenVertexShadersEXTFunPtr #-}
+
+glGetInvariantBooleanvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLboolean -> m ()
+glGetInvariantBooleanvEXT = ffiuintenumPtrbooleanIOV glGetInvariantBooleanvEXTFunPtr
+
+glGetInvariantBooleanvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLboolean -> IO ())
+glGetInvariantBooleanvEXTFunPtr = unsafePerformIO (getProcAddress "glGetInvariantBooleanvEXT")
+
+{-# NOINLINE glGetInvariantBooleanvEXTFunPtr #-}
+
+glGetInvariantFloatvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetInvariantFloatvEXT = ffiuintenumPtrfloatIOV glGetInvariantFloatvEXTFunPtr
+
+glGetInvariantFloatvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetInvariantFloatvEXTFunPtr = unsafePerformIO (getProcAddress "glGetInvariantFloatvEXT")
+
+{-# NOINLINE glGetInvariantFloatvEXTFunPtr #-}
+
+glGetInvariantIntegervEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetInvariantIntegervEXT = ffiuintenumPtrintIOV glGetInvariantIntegervEXTFunPtr
+
+glGetInvariantIntegervEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetInvariantIntegervEXTFunPtr = unsafePerformIO (getProcAddress "glGetInvariantIntegervEXT")
+
+{-# NOINLINE glGetInvariantIntegervEXTFunPtr #-}
+
+glGetLocalConstantBooleanvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLboolean -> m ()
+glGetLocalConstantBooleanvEXT = ffiuintenumPtrbooleanIOV glGetLocalConstantBooleanvEXTFunPtr
+
+glGetLocalConstantBooleanvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLboolean -> IO ())
+glGetLocalConstantBooleanvEXTFunPtr = unsafePerformIO (getProcAddress "glGetLocalConstantBooleanvEXT")
+
+{-# NOINLINE glGetLocalConstantBooleanvEXTFunPtr #-}
+
+glGetLocalConstantFloatvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetLocalConstantFloatvEXT = ffiuintenumPtrfloatIOV glGetLocalConstantFloatvEXTFunPtr
+
+glGetLocalConstantFloatvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetLocalConstantFloatvEXTFunPtr = unsafePerformIO (getProcAddress "glGetLocalConstantFloatvEXT")
+
+{-# NOINLINE glGetLocalConstantFloatvEXTFunPtr #-}
+
+glGetLocalConstantIntegervEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetLocalConstantIntegervEXT = ffiuintenumPtrintIOV glGetLocalConstantIntegervEXTFunPtr
+
+glGetLocalConstantIntegervEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetLocalConstantIntegervEXTFunPtr = unsafePerformIO (getProcAddress "glGetLocalConstantIntegervEXT")
+
+{-# NOINLINE glGetLocalConstantIntegervEXTFunPtr #-}
+
+glGetVariantBooleanvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLboolean -> m ()
+glGetVariantBooleanvEXT = ffiuintenumPtrbooleanIOV glGetVariantBooleanvEXTFunPtr
+
+glGetVariantBooleanvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLboolean -> IO ())
+glGetVariantBooleanvEXTFunPtr = unsafePerformIO (getProcAddress "glGetVariantBooleanvEXT")
+
+{-# NOINLINE glGetVariantBooleanvEXTFunPtr #-}
+
+glGetVariantFloatvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetVariantFloatvEXT = ffiuintenumPtrfloatIOV glGetVariantFloatvEXTFunPtr
+
+glGetVariantFloatvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetVariantFloatvEXTFunPtr = unsafePerformIO (getProcAddress "glGetVariantFloatvEXT")
+
+{-# NOINLINE glGetVariantFloatvEXTFunPtr #-}
+
+glGetVariantIntegervEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVariantIntegervEXT = ffiuintenumPtrintIOV glGetVariantIntegervEXTFunPtr
+
+glGetVariantIntegervEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVariantIntegervEXTFunPtr = unsafePerformIO (getProcAddress "glGetVariantIntegervEXT")
+
+{-# NOINLINE glGetVariantIntegervEXTFunPtr #-}
+
+glGetVariantPointervEXT :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
+glGetVariantPointervEXT = ffiuintenumPtrVIOV glGetVariantPointervEXTFunPtr
+
+glGetVariantPointervEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
+glGetVariantPointervEXTFunPtr = unsafePerformIO (getProcAddress "glGetVariantPointervEXT")
+
+{-# NOINLINE glGetVariantPointervEXTFunPtr #-}
+
+glInsertComponentEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
+glInsertComponentEXT = ffiuintuintuintIOV glInsertComponentEXTFunPtr
+
+glInsertComponentEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
+glInsertComponentEXTFunPtr = unsafePerformIO (getProcAddress "glInsertComponentEXT")
+
+{-# NOINLINE glInsertComponentEXTFunPtr #-}
+
+glIsVariantEnabledEXT :: MonadIO m => GLuint -> GLenum -> m GLboolean
+glIsVariantEnabledEXT = ffiuintenumIOboolean glIsVariantEnabledEXTFunPtr
+
+glIsVariantEnabledEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO GLboolean)
+glIsVariantEnabledEXTFunPtr = unsafePerformIO (getProcAddress "glIsVariantEnabledEXT")
+
+{-# NOINLINE glIsVariantEnabledEXTFunPtr #-}
+
+glSetInvariantEXT :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
+glSetInvariantEXT = ffiuintenumPtrVIOV glSetInvariantEXTFunPtr
+
+glSetInvariantEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
+glSetInvariantEXTFunPtr = unsafePerformIO (getProcAddress "glSetInvariantEXT")
+
+{-# NOINLINE glSetInvariantEXTFunPtr #-}
+
+glSetLocalConstantEXT :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
+glSetLocalConstantEXT = ffiuintenumPtrVIOV glSetLocalConstantEXTFunPtr
+
+glSetLocalConstantEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
+glSetLocalConstantEXTFunPtr = unsafePerformIO (getProcAddress "glSetLocalConstantEXT")
+
+{-# NOINLINE glSetLocalConstantEXTFunPtr #-}
+
+glShaderOp1EXT :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
+glShaderOp1EXT = ffienumuintuintIOV glShaderOp1EXTFunPtr
+
+glShaderOp1EXTFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
+glShaderOp1EXTFunPtr = unsafePerformIO (getProcAddress "glShaderOp1EXT")
+
+{-# NOINLINE glShaderOp1EXTFunPtr #-}
+
+glShaderOp2EXT :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> m ()
+glShaderOp2EXT = ffienumuintuintuintIOV glShaderOp2EXTFunPtr
+
+glShaderOp2EXTFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> IO ())
+glShaderOp2EXTFunPtr = unsafePerformIO (getProcAddress "glShaderOp2EXT")
+
+{-# NOINLINE glShaderOp2EXTFunPtr #-}
+
+glShaderOp3EXT :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glShaderOp3EXT = ffienumuintuintuintuintIOV glShaderOp3EXTFunPtr
+
+glShaderOp3EXTFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glShaderOp3EXTFunPtr = unsafePerformIO (getProcAddress "glShaderOp3EXT")
+
+{-# NOINLINE glShaderOp3EXTFunPtr #-}
+
+glSwizzleEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glSwizzleEXT = ffiuintuintenumenumenumenumIOV glSwizzleEXTFunPtr
+
+glSwizzleEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glSwizzleEXTFunPtr = unsafePerformIO (getProcAddress "glSwizzleEXT")
+
+{-# NOINLINE glSwizzleEXTFunPtr #-}
+
+glVariantPointerEXT :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr () -> m ()
+glVariantPointerEXT = ffiuintenumuintPtrVIOV glVariantPointerEXTFunPtr
+
+glVariantPointerEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr () -> IO ())
+glVariantPointerEXTFunPtr = unsafePerformIO (getProcAddress "glVariantPointerEXT")
+
+{-# NOINLINE glVariantPointerEXTFunPtr #-}
+
+glVariantbvEXT :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
+glVariantbvEXT = ffiuintPtrbyteIOV glVariantbvEXTFunPtr
+
+glVariantbvEXTFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
+glVariantbvEXTFunPtr = unsafePerformIO (getProcAddress "glVariantbvEXT")
+
+{-# NOINLINE glVariantbvEXTFunPtr #-}
+
+glVariantdvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVariantdvEXT = ffiuintPtrdoubleIOV glVariantdvEXTFunPtr
+
+glVariantdvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVariantdvEXTFunPtr = unsafePerformIO (getProcAddress "glVariantdvEXT")
+
+{-# NOINLINE glVariantdvEXTFunPtr #-}
+
+glVariantfvEXT :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glVariantfvEXT = ffiuintPtrfloatIOV glVariantfvEXTFunPtr
+
+glVariantfvEXTFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glVariantfvEXTFunPtr = unsafePerformIO (getProcAddress "glVariantfvEXT")
+
+{-# NOINLINE glVariantfvEXTFunPtr #-}
+
+glVariantivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
+glVariantivEXT = ffiuintPtrintIOV glVariantivEXTFunPtr
+
+glVariantivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
+glVariantivEXTFunPtr = unsafePerformIO (getProcAddress "glVariantivEXT")
+
+{-# NOINLINE glVariantivEXTFunPtr #-}
+
+glVariantsvEXT :: MonadIO m => GLuint -> Ptr GLshort -> m ()
+glVariantsvEXT = ffiuintPtrshortIOV glVariantsvEXTFunPtr
+
+glVariantsvEXTFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
+glVariantsvEXTFunPtr = unsafePerformIO (getProcAddress "glVariantsvEXT")
+
+{-# NOINLINE glVariantsvEXTFunPtr #-}
+
+glVariantubvEXT :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
+glVariantubvEXT = ffiuintPtrubyteIOV glVariantubvEXTFunPtr
+
+glVariantubvEXTFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
+glVariantubvEXTFunPtr = unsafePerformIO (getProcAddress "glVariantubvEXT")
+
+{-# NOINLINE glVariantubvEXTFunPtr #-}
+
+glVariantuivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
+glVariantuivEXT = ffiuintPtruintIOV glVariantuivEXTFunPtr
+
+glVariantuivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
+glVariantuivEXTFunPtr = unsafePerformIO (getProcAddress "glVariantuivEXT")
+
+{-# NOINLINE glVariantuivEXTFunPtr #-}
+
+glVariantusvEXT :: MonadIO m => GLuint -> Ptr GLushort -> m ()
+glVariantusvEXT = ffiuintPtrushortIOV glVariantusvEXTFunPtr
+
+glVariantusvEXTFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
+glVariantusvEXTFunPtr = unsafePerformIO (getProcAddress "glVariantusvEXT")
+
+{-# NOINLINE glVariantusvEXTFunPtr #-}
+
+glWriteMaskEXT :: MonadIO m => GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glWriteMaskEXT = ffiuintuintenumenumenumenumIOV glWriteMaskEXTFunPtr
+
+glWriteMaskEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glWriteMaskEXTFunPtr = unsafePerformIO (getProcAddress "glWriteMaskEXT")
+
+{-# NOINLINE glWriteMaskEXTFunPtr #-}
+
+pattern GL_CURRENT_VERTEX_EXT = 0x87E2 :: GLenum
+
+pattern GL_FULL_RANGE_EXT = 0x87E1 :: GLenum
+
+pattern GL_INVARIANT_DATATYPE_EXT = 0x87EB :: GLenum
+
+pattern GL_INVARIANT_EXT = 0x87C2 :: GLenum
+
+pattern GL_INVARIANT_VALUE_EXT = 0x87EA :: GLenum
+
+pattern GL_LOCAL_CONSTANT_DATATYPE_EXT = 0x87ED :: GLenum
+
+pattern GL_LOCAL_CONSTANT_EXT = 0x87C3 :: GLenum
+
+pattern GL_LOCAL_CONSTANT_VALUE_EXT = 0x87EC :: GLenum
+
+pattern GL_LOCAL_EXT = 0x87C4 :: GLenum
+
+pattern GL_MATRIX_EXT = 0x87C0 :: GLenum
+
+pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CA :: GLenum
+
+pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = 0x87CD :: GLenum
+
+pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = 0x87CE :: GLenum
+
+pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC :: GLenum
+
+pattern GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = 0x87CB :: GLenum
+
+pattern GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87C5 :: GLenum
+
+pattern GL_MAX_VERTEX_SHADER_INVARIANTS_EXT = 0x87C7 :: GLenum
+
+pattern GL_MAX_VERTEX_SHADER_LOCALS_EXT = 0x87C9 :: GLenum
+
+pattern GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87C8 :: GLenum
+
+pattern GL_MAX_VERTEX_SHADER_VARIANTS_EXT = 0x87C6 :: GLenum
+
+pattern GL_MVP_MATRIX_EXT = 0x87E3 :: GLenum
+
+pattern GL_NEGATIVE_ONE_EXT = 0x87DF :: GLenum
+
+pattern GL_NEGATIVE_W_EXT = 0x87DC :: GLenum
+
+pattern GL_NEGATIVE_X_EXT = 0x87D9 :: GLenum
+
+pattern GL_NEGATIVE_Y_EXT = 0x87DA :: GLenum
+
+pattern GL_NEGATIVE_Z_EXT = 0x87DB :: GLenum
+
+pattern GL_NORMALIZED_RANGE_EXT = 0x87E0 :: GLenum
+
+pattern GL_ONE_EXT = 0x87DE :: GLenum
+
+pattern GL_OP_ADD_EXT = 0x8787 :: GLenum
+
+pattern GL_OP_CLAMP_EXT = 0x878E :: GLenum
+
+pattern GL_OP_CROSS_PRODUCT_EXT = 0x8797 :: GLenum
+
+pattern GL_OP_DOT3_EXT = 0x8784 :: GLenum
+
+pattern GL_OP_DOT4_EXT = 0x8785 :: GLenum
+
+pattern GL_OP_EXP_BASE_2_EXT = 0x8791 :: GLenum
+
+pattern GL_OP_FLOOR_EXT = 0x878F :: GLenum
+
+pattern GL_OP_FRAC_EXT = 0x8789 :: GLenum
+
+pattern GL_OP_INDEX_EXT = 0x8782 :: GLenum
+
+pattern GL_OP_LOG_BASE_2_EXT = 0x8792 :: GLenum
+
+pattern GL_OP_MADD_EXT = 0x8788 :: GLenum
+
+pattern GL_OP_MAX_EXT = 0x878A :: GLenum
+
+pattern GL_OP_MIN_EXT = 0x878B :: GLenum
+
+pattern GL_OP_MOV_EXT = 0x8799 :: GLenum
+
+pattern GL_OP_MULTIPLY_MATRIX_EXT = 0x8798 :: GLenum
+
+pattern GL_OP_MUL_EXT = 0x8786 :: GLenum
+
+pattern GL_OP_NEGATE_EXT = 0x8783 :: GLenum
+
+pattern GL_OP_POWER_EXT = 0x8793 :: GLenum
+
+pattern GL_OP_RECIP_EXT = 0x8794 :: GLenum
+
+pattern GL_OP_RECIP_SQRT_EXT = 0x8795 :: GLenum
+
+pattern GL_OP_ROUND_EXT = 0x8790 :: GLenum
+
+pattern GL_OP_SET_GE_EXT = 0x878C :: GLenum
+
+pattern GL_OP_SET_LT_EXT = 0x878D :: GLenum
+
+pattern GL_OP_SUB_EXT = 0x8796 :: GLenum
+
+pattern GL_OUTPUT_COLOR0_EXT = 0x879B :: GLenum
+
+pattern GL_OUTPUT_COLOR1_EXT = 0x879C :: GLenum
+
+pattern GL_OUTPUT_FOG_EXT = 0x87BD :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD0_EXT = 0x879D :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD10_EXT = 0x87A7 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD11_EXT = 0x87A8 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD12_EXT = 0x87A9 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD13_EXT = 0x87AA :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD14_EXT = 0x87AB :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD15_EXT = 0x87AC :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD16_EXT = 0x87AD :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD17_EXT = 0x87AE :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD18_EXT = 0x87AF :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD19_EXT = 0x87B0 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD1_EXT = 0x879E :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD20_EXT = 0x87B1 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD21_EXT = 0x87B2 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD22_EXT = 0x87B3 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD23_EXT = 0x87B4 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD24_EXT = 0x87B5 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD25_EXT = 0x87B6 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD26_EXT = 0x87B7 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD27_EXT = 0x87B8 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD28_EXT = 0x87B9 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD29_EXT = 0x87BA :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD2_EXT = 0x879F :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD30_EXT = 0x87BB :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD31_EXT = 0x87BC :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD3_EXT = 0x87A0 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD4_EXT = 0x87A1 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD5_EXT = 0x87A2 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD6_EXT = 0x87A3 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD7_EXT = 0x87A4 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD8_EXT = 0x87A5 :: GLenum
+
+pattern GL_OUTPUT_TEXTURE_COORD9_EXT = 0x87A6 :: GLenum
+
+pattern GL_OUTPUT_VERTEX_EXT = 0x879A :: GLenum
+
+pattern GL_SCALAR_EXT = 0x87BE :: GLenum
+
+pattern GL_VARIANT_ARRAY_EXT = 0x87E8 :: GLenum
+
+pattern GL_VARIANT_ARRAY_POINTER_EXT = 0x87E9 :: GLenum
+
+pattern GL_VARIANT_ARRAY_STRIDE_EXT = 0x87E6 :: GLenum
+
+pattern GL_VARIANT_ARRAY_TYPE_EXT = 0x87E7 :: GLenum
+
+pattern GL_VARIANT_DATATYPE_EXT = 0x87E5 :: GLenum
+
+pattern GL_VARIANT_EXT = 0x87C1 :: GLenum
+
+pattern GL_VARIANT_VALUE_EXT = 0x87E4 :: GLenum
+
+pattern GL_VECTOR_EXT = 0x87BF :: GLenum
+
+pattern GL_VERTEX_SHADER_BINDING_EXT = 0x8781 :: GLenum
+
+pattern GL_VERTEX_SHADER_EXT = 0x8780 :: GLenum
+
+pattern GL_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CF :: GLenum
+
+pattern GL_VERTEX_SHADER_INVARIANTS_EXT = 0x87D1 :: GLenum
+
+pattern GL_VERTEX_SHADER_LOCALS_EXT = 0x87D3 :: GLenum
+
+pattern GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87D2 :: GLenum
+
+pattern GL_VERTEX_SHADER_OPTIMIZED_EXT = 0x87D4 :: GLenum
+
+pattern GL_VERTEX_SHADER_VARIANTS_EXT = 0x87D0 :: GLenum
+
+pattern GL_W_EXT = 0x87D8 :: GLenum
+
+pattern GL_X_EXT = 0x87D5 :: GLenum
+
+pattern GL_Y_EXT = 0x87D6 :: GLenum
+
+pattern GL_ZERO_EXT = 0x87DD :: GLenum
+
+pattern GL_Z_EXT = 0x87D7 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexWeighting.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexWeighting.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/VertexWeighting.hs
@@ -0,0 +1,85 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.VertexWeighting (
+  -- * Extension Support
+    gl_EXT_vertex_weighting
+
+  -- * GL_EXT_vertex_weighting
+  , glVertexWeightPointerEXT
+  , glVertexWeightfEXT
+  , glVertexWeightfvEXT
+  , pattern GL_CURRENT_VERTEX_WEIGHT_EXT
+  , pattern GL_MODELVIEW0_EXT
+  , pattern GL_MODELVIEW0_MATRIX_EXT
+  , pattern GL_MODELVIEW0_STACK_DEPTH_EXT
+  , pattern GL_MODELVIEW1_EXT
+  , pattern GL_MODELVIEW1_MATRIX_EXT
+  , pattern GL_MODELVIEW1_STACK_DEPTH_EXT
+  , pattern GL_VERTEX_WEIGHTING_EXT
+  , pattern GL_VERTEX_WEIGHT_ARRAY_EXT
+  , pattern GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT
+  , pattern GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT
+  , pattern GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT
+  , pattern GL_VERTEX_WEIGHT_ARRAY_TYPE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_vertex_weighting :: Bool
+gl_EXT_vertex_weighting = member "GL_EXT_vertex_weighting" extensions
+
+glVertexWeightPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glVertexWeightPointerEXT = ffiintenumsizeiPtrVIOV glVertexWeightPointerEXTFunPtr
+
+glVertexWeightPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glVertexWeightPointerEXTFunPtr = unsafePerformIO (getProcAddress "glVertexWeightPointerEXT")
+
+{-# NOINLINE glVertexWeightPointerEXTFunPtr #-}
+
+glVertexWeightfEXT :: MonadIO m => GLfloat -> m ()
+glVertexWeightfEXT = ffifloatIOV glVertexWeightfEXTFunPtr
+
+glVertexWeightfEXTFunPtr :: FunPtr (GLfloat -> IO ())
+glVertexWeightfEXTFunPtr = unsafePerformIO (getProcAddress "glVertexWeightfEXT")
+
+{-# NOINLINE glVertexWeightfEXTFunPtr #-}
+
+glVertexWeightfvEXT :: MonadIO m => Ptr GLfloat -> m ()
+glVertexWeightfvEXT = ffiPtrfloatIOV glVertexWeightfvEXTFunPtr
+
+glVertexWeightfvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glVertexWeightfvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexWeightfvEXT")
+
+{-# NOINLINE glVertexWeightfvEXTFunPtr #-}
+
+pattern GL_CURRENT_VERTEX_WEIGHT_EXT = 0x850B :: GLenum
+
+pattern GL_MODELVIEW0_EXT = 0x1700 :: GLenum
+
+pattern GL_MODELVIEW0_MATRIX_EXT = 0x0BA6 :: GLenum
+
+pattern GL_MODELVIEW0_STACK_DEPTH_EXT = 0x0BA3 :: GLenum
+
+pattern GL_MODELVIEW1_EXT = 0x850A :: GLenum
+
+pattern GL_MODELVIEW1_MATRIX_EXT = 0x8506 :: GLenum
+
+pattern GL_MODELVIEW1_STACK_DEPTH_EXT = 0x8502 :: GLenum
+
+pattern GL_VERTEX_WEIGHTING_EXT = 0x8509 :: GLenum
+
+pattern GL_VERTEX_WEIGHT_ARRAY_EXT = 0x850C :: GLenum
+
+pattern GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = 0x8510 :: GLenum
+
+pattern GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = 0x850D :: GLenum
+
+pattern GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = 0x850F :: GLenum
+
+pattern GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = 0x850E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/X11SyncObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/X11SyncObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/EXT/X11SyncObject.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.EXT.X11SyncObject (
+  -- * Extension Support
+    gl_EXT_x11_sync_object
+
+  -- * GL_EXT_x11_sync_object
+  , glImportSyncEXT
+  , pattern GL_SYNC_X11_FENCE_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.Types
+import System.IO.Unsafe
+
+gl_EXT_x11_sync_object :: Bool
+gl_EXT_x11_sync_object = member "GL_EXT_x11_sync_object" extensions
+
+glImportSyncEXT :: MonadIO m => GLenum -> GLintptr -> GLbitfield -> m GLsync
+glImportSyncEXT = ffienumintptrbitfieldIOsync glImportSyncEXTFunPtr
+
+glImportSyncEXTFunPtr :: FunPtr (GLenum -> GLintptr -> GLbitfield -> IO GLsync)
+glImportSyncEXTFunPtr = unsafePerformIO (getProcAddress "glImportSyncEXT")
+
+{-# NOINLINE glImportSyncEXTFunPtr #-}
+
+pattern GL_SYNC_X11_FENCE_EXT = 0x90E1 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/FJ.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/FJ.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/FJ.hs
@@ -0,0 +1,8 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.FJ (
+  -- * FJ Extensions
+    module Graphics.GL.Raw.Extension.FJ.ShaderBinaryGCCSO
+) where
+
+import Graphics.GL.Raw.Extension.FJ.ShaderBinaryGCCSO
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/FJ/ShaderBinaryGCCSO.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/FJ/ShaderBinaryGCCSO.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/FJ/ShaderBinaryGCCSO.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.FJ.ShaderBinaryGCCSO (
+  -- * Extension Support
+    gl_FJ_shader_binary_GCCSO
+
+  -- * GL_FJ_shader_binary_GCCSO
+  , pattern GL_GCCSO_SHADER_BINARY_FJ
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_FJ_shader_binary_GCCSO :: Bool
+gl_FJ_shader_binary_GCCSO = member "GL_FJ_shader_binary_GCCSO" extensions
+
+pattern GL_GCCSO_SHADER_BINARY_FJ = 0x9260 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY.hs
@@ -0,0 +1,10 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.GREMEDY (
+  -- * GREMEDY Extensions
+    module Graphics.GL.Raw.Extension.GREMEDY.FrameTerminator
+  , module Graphics.GL.Raw.Extension.GREMEDY.StringMarker
+) where
+
+import Graphics.GL.Raw.Extension.GREMEDY.FrameTerminator
+import Graphics.GL.Raw.Extension.GREMEDY.StringMarker
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY/FrameTerminator.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY/FrameTerminator.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY/FrameTerminator.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.GREMEDY.FrameTerminator (
+  -- * Extension Support
+    gl_GREMEDY_frame_terminator
+
+  -- * GL_GREMEDY_frame_terminator
+  , glFrameTerminatorGREMEDY
+) 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 System.IO.Unsafe
+
+gl_GREMEDY_frame_terminator :: Bool
+gl_GREMEDY_frame_terminator = member "GL_GREMEDY_frame_terminator" extensions
+
+glFrameTerminatorGREMEDY :: MonadIO m => m ()
+glFrameTerminatorGREMEDY = ffiIOV glFrameTerminatorGREMEDYFunPtr
+
+glFrameTerminatorGREMEDYFunPtr :: FunPtr (IO ())
+glFrameTerminatorGREMEDYFunPtr = unsafePerformIO (getProcAddress "glFrameTerminatorGREMEDY")
+
+{-# NOINLINE glFrameTerminatorGREMEDYFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY/StringMarker.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY/StringMarker.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/GREMEDY/StringMarker.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.GREMEDY.StringMarker (
+  -- * Extension Support
+    gl_GREMEDY_string_marker
+
+  -- * GL_GREMEDY_string_marker
+  , glStringMarkerGREMEDY
+) 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_GREMEDY_string_marker :: Bool
+gl_GREMEDY_string_marker = member "GL_GREMEDY_string_marker" extensions
+
+glStringMarkerGREMEDY :: MonadIO m => GLsizei -> Ptr () -> m ()
+glStringMarkerGREMEDY = ffisizeiPtrVIOV glStringMarkerGREMEDYFunPtr
+
+glStringMarkerGREMEDYFunPtr :: FunPtr (GLsizei -> Ptr () -> IO ())
+glStringMarkerGREMEDYFunPtr = unsafePerformIO (getProcAddress "glStringMarkerGREMEDY")
+
+{-# NOINLINE glStringMarkerGREMEDYFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/HP.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/HP.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/HP.hs
@@ -0,0 +1,14 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.HP (
+  -- * HP Extensions
+    module Graphics.GL.Raw.Extension.HP.ConvolutionBorderModes
+  , module Graphics.GL.Raw.Extension.HP.ImageTransform
+  , module Graphics.GL.Raw.Extension.HP.OcclusionTest
+  , module Graphics.GL.Raw.Extension.HP.TextureLighting
+) where
+
+import Graphics.GL.Raw.Extension.HP.ConvolutionBorderModes
+import Graphics.GL.Raw.Extension.HP.ImageTransform
+import Graphics.GL.Raw.Extension.HP.OcclusionTest
+import Graphics.GL.Raw.Extension.HP.TextureLighting
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/HP/ConvolutionBorderModes.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/ConvolutionBorderModes.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/ConvolutionBorderModes.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.HP.ConvolutionBorderModes (
+  -- * Extension Support
+    gl_HP_convolution_border_modes
+
+  -- * GL_HP_convolution_border_modes
+  , pattern GL_CONSTANT_BORDER_HP
+  , pattern GL_CONVOLUTION_BORDER_COLOR_HP
+  , pattern GL_IGNORE_BORDER_HP
+  , pattern GL_REPLICATE_BORDER_HP
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_HP_convolution_border_modes :: Bool
+gl_HP_convolution_border_modes = member "GL_HP_convolution_border_modes" extensions
+
+pattern GL_CONSTANT_BORDER_HP = 0x8151 :: GLenum
+
+pattern GL_CONVOLUTION_BORDER_COLOR_HP = 0x8154 :: GLenum
+
+pattern GL_IGNORE_BORDER_HP = 0x8150 :: GLenum
+
+pattern GL_REPLICATE_BORDER_HP = 0x8153 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/HP/ImageTransform.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/ImageTransform.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/ImageTransform.hs
@@ -0,0 +1,118 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.HP.ImageTransform (
+  -- * Extension Support
+    gl_HP_image_transform
+
+  -- * GL_HP_image_transform
+  , glGetImageTransformParameterfvHP
+  , glGetImageTransformParameterivHP
+  , glImageTransformParameterfHP
+  , glImageTransformParameterfvHP
+  , glImageTransformParameteriHP
+  , glImageTransformParameterivHP
+  , pattern GL_AVERAGE_HP
+  , pattern GL_CUBIC_HP
+  , pattern GL_IMAGE_CUBIC_WEIGHT_HP
+  , pattern GL_IMAGE_MAG_FILTER_HP
+  , pattern GL_IMAGE_MIN_FILTER_HP
+  , pattern GL_IMAGE_ROTATE_ANGLE_HP
+  , pattern GL_IMAGE_ROTATE_ORIGIN_X_HP
+  , pattern GL_IMAGE_ROTATE_ORIGIN_Y_HP
+  , pattern GL_IMAGE_SCALE_X_HP
+  , pattern GL_IMAGE_SCALE_Y_HP
+  , pattern GL_IMAGE_TRANSFORM_2D_HP
+  , pattern GL_IMAGE_TRANSLATE_X_HP
+  , pattern GL_IMAGE_TRANSLATE_Y_HP
+  , pattern GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP
+  , pattern GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP
+) 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_HP_image_transform :: Bool
+gl_HP_image_transform = member "GL_HP_image_transform" extensions
+
+glGetImageTransformParameterfvHP :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetImageTransformParameterfvHP = ffienumenumPtrfloatIOV glGetImageTransformParameterfvHPFunPtr
+
+glGetImageTransformParameterfvHPFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetImageTransformParameterfvHPFunPtr = unsafePerformIO (getProcAddress "glGetImageTransformParameterfvHP")
+
+{-# NOINLINE glGetImageTransformParameterfvHPFunPtr #-}
+
+glGetImageTransformParameterivHP :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetImageTransformParameterivHP = ffienumenumPtrintIOV glGetImageTransformParameterivHPFunPtr
+
+glGetImageTransformParameterivHPFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetImageTransformParameterivHPFunPtr = unsafePerformIO (getProcAddress "glGetImageTransformParameterivHP")
+
+{-# NOINLINE glGetImageTransformParameterivHPFunPtr #-}
+
+glImageTransformParameterfHP :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
+glImageTransformParameterfHP = ffienumenumfloatIOV glImageTransformParameterfHPFunPtr
+
+glImageTransformParameterfHPFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
+glImageTransformParameterfHPFunPtr = unsafePerformIO (getProcAddress "glImageTransformParameterfHP")
+
+{-# NOINLINE glImageTransformParameterfHPFunPtr #-}
+
+glImageTransformParameterfvHP :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glImageTransformParameterfvHP = ffienumenumPtrfloatIOV glImageTransformParameterfvHPFunPtr
+
+glImageTransformParameterfvHPFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glImageTransformParameterfvHPFunPtr = unsafePerformIO (getProcAddress "glImageTransformParameterfvHP")
+
+{-# NOINLINE glImageTransformParameterfvHPFunPtr #-}
+
+glImageTransformParameteriHP :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glImageTransformParameteriHP = ffienumenumintIOV glImageTransformParameteriHPFunPtr
+
+glImageTransformParameteriHPFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glImageTransformParameteriHPFunPtr = unsafePerformIO (getProcAddress "glImageTransformParameteriHP")
+
+{-# NOINLINE glImageTransformParameteriHPFunPtr #-}
+
+glImageTransformParameterivHP :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glImageTransformParameterivHP = ffienumenumPtrintIOV glImageTransformParameterivHPFunPtr
+
+glImageTransformParameterivHPFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glImageTransformParameterivHPFunPtr = unsafePerformIO (getProcAddress "glImageTransformParameterivHP")
+
+{-# NOINLINE glImageTransformParameterivHPFunPtr #-}
+
+pattern GL_AVERAGE_HP = 0x8160 :: GLenum
+
+pattern GL_CUBIC_HP = 0x815F :: GLenum
+
+pattern GL_IMAGE_CUBIC_WEIGHT_HP = 0x815E :: GLenum
+
+pattern GL_IMAGE_MAG_FILTER_HP = 0x815C :: GLenum
+
+pattern GL_IMAGE_MIN_FILTER_HP = 0x815D :: GLenum
+
+pattern GL_IMAGE_ROTATE_ANGLE_HP = 0x8159 :: GLenum
+
+pattern GL_IMAGE_ROTATE_ORIGIN_X_HP = 0x815A :: GLenum
+
+pattern GL_IMAGE_ROTATE_ORIGIN_Y_HP = 0x815B :: GLenum
+
+pattern GL_IMAGE_SCALE_X_HP = 0x8155 :: GLenum
+
+pattern GL_IMAGE_SCALE_Y_HP = 0x8156 :: GLenum
+
+pattern GL_IMAGE_TRANSFORM_2D_HP = 0x8161 :: GLenum
+
+pattern GL_IMAGE_TRANSLATE_X_HP = 0x8157 :: GLenum
+
+pattern GL_IMAGE_TRANSLATE_Y_HP = 0x8158 :: GLenum
+
+pattern GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8162 :: GLenum
+
+pattern GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8163 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/HP/OcclusionTest.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/OcclusionTest.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/OcclusionTest.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.HP.OcclusionTest (
+  -- * Extension Support
+    gl_HP_occlusion_test
+
+  -- * GL_HP_occlusion_test
+  , pattern GL_OCCLUSION_TEST_HP
+  , pattern GL_OCCLUSION_TEST_RESULT_HP
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_HP_occlusion_test :: Bool
+gl_HP_occlusion_test = member "GL_HP_occlusion_test" extensions
+
+pattern GL_OCCLUSION_TEST_HP = 0x8165 :: GLenum
+
+pattern GL_OCCLUSION_TEST_RESULT_HP = 0x8166 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/HP/TextureLighting.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/TextureLighting.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/HP/TextureLighting.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.HP.TextureLighting (
+  -- * Extension Support
+    gl_HP_texture_lighting
+
+  -- * GL_HP_texture_lighting
+  , pattern GL_TEXTURE_LIGHTING_MODE_HP
+  , pattern GL_TEXTURE_POST_SPECULAR_HP
+  , pattern GL_TEXTURE_PRE_SPECULAR_HP
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_HP_texture_lighting :: Bool
+gl_HP_texture_lighting = member "GL_HP_texture_lighting" extensions
+
+pattern GL_TEXTURE_LIGHTING_MODE_HP = 0x8167 :: GLenum
+
+pattern GL_TEXTURE_POST_SPECULAR_HP = 0x8168 :: GLenum
+
+pattern GL_TEXTURE_PRE_SPECULAR_HP = 0x8169 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IBM.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IBM (
+  -- * IBM Extensions
+    module Graphics.GL.Raw.Extension.IBM.CullVertex
+  , module Graphics.GL.Raw.Extension.IBM.MultimodeDrawArrays
+  , module Graphics.GL.Raw.Extension.IBM.RasterposClip
+  , module Graphics.GL.Raw.Extension.IBM.StaticData
+  , module Graphics.GL.Raw.Extension.IBM.TextureMirroredRepeat
+  , module Graphics.GL.Raw.Extension.IBM.VertexArrayLists
+) where
+
+import Graphics.GL.Raw.Extension.IBM.CullVertex
+import Graphics.GL.Raw.Extension.IBM.MultimodeDrawArrays
+import Graphics.GL.Raw.Extension.IBM.RasterposClip
+import Graphics.GL.Raw.Extension.IBM.StaticData
+import Graphics.GL.Raw.Extension.IBM.TextureMirroredRepeat
+import Graphics.GL.Raw.Extension.IBM.VertexArrayLists
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/CullVertex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/CullVertex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/CullVertex.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IBM.CullVertex (
+  -- * Extension Support
+    gl_IBM_cull_vertex
+
+  -- * GL_IBM_cull_vertex
+  , pattern GL_CULL_VERTEX_IBM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IBM_cull_vertex :: Bool
+gl_IBM_cull_vertex = member "GL_IBM_cull_vertex" extensions
+
+pattern GL_CULL_VERTEX_IBM = 103050 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/MultimodeDrawArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/MultimodeDrawArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/MultimodeDrawArrays.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IBM.MultimodeDrawArrays (
+  -- * Extension Support
+    gl_IBM_multimode_draw_arrays
+
+  -- * GL_IBM_multimode_draw_arrays
+  , glMultiModeDrawArraysIBM
+  , glMultiModeDrawElementsIBM
+) 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_IBM_multimode_draw_arrays :: Bool
+gl_IBM_multimode_draw_arrays = member "GL_IBM_multimode_draw_arrays" extensions
+
+glMultiModeDrawArraysIBM :: MonadIO m => Ptr GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> GLint -> m ()
+glMultiModeDrawArraysIBM = ffiPtrenumPtrintPtrsizeisizeiintIOV glMultiModeDrawArraysIBMFunPtr
+
+glMultiModeDrawArraysIBMFunPtr :: FunPtr (Ptr GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> GLint -> IO ())
+glMultiModeDrawArraysIBMFunPtr = unsafePerformIO (getProcAddress "glMultiModeDrawArraysIBM")
+
+{-# NOINLINE glMultiModeDrawArraysIBMFunPtr #-}
+
+glMultiModeDrawElementsIBM :: MonadIO m => Ptr GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> m ()
+glMultiModeDrawElementsIBM = ffiPtrenumPtrsizeienumPtrVsizeiintIOV glMultiModeDrawElementsIBMFunPtr
+
+glMultiModeDrawElementsIBMFunPtr :: FunPtr (Ptr GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ())
+glMultiModeDrawElementsIBMFunPtr = unsafePerformIO (getProcAddress "glMultiModeDrawElementsIBM")
+
+{-# NOINLINE glMultiModeDrawElementsIBMFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/RasterposClip.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/RasterposClip.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/RasterposClip.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IBM.RasterposClip (
+  -- * Extension Support
+    gl_IBM_rasterpos_clip
+
+  -- * GL_IBM_rasterpos_clip
+  , pattern GL_RASTER_POSITION_UNCLIPPED_IBM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IBM_rasterpos_clip :: Bool
+gl_IBM_rasterpos_clip = member "GL_IBM_rasterpos_clip" extensions
+
+pattern GL_RASTER_POSITION_UNCLIPPED_IBM = 0x19262 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/StaticData.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/StaticData.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/StaticData.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IBM.StaticData (
+  -- * Extension Support
+    gl_IBM_static_data
+
+  -- * GL_IBM_static_data
+  , glFlushStaticDataIBM
+  , pattern GL_ALL_STATIC_DATA_IBM
+  , pattern GL_STATIC_VERTEX_ARRAY_IBM
+) 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_IBM_static_data :: Bool
+gl_IBM_static_data = member "GL_IBM_static_data" extensions
+
+glFlushStaticDataIBM :: MonadIO m => GLenum -> m ()
+glFlushStaticDataIBM = ffienumIOV glFlushStaticDataIBMFunPtr
+
+glFlushStaticDataIBMFunPtr :: FunPtr (GLenum -> IO ())
+glFlushStaticDataIBMFunPtr = unsafePerformIO (getProcAddress "glFlushStaticDataIBM")
+
+{-# NOINLINE glFlushStaticDataIBMFunPtr #-}
+
+pattern GL_ALL_STATIC_DATA_IBM = 103060 :: GLenum
+
+pattern GL_STATIC_VERTEX_ARRAY_IBM = 103061 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/TextureMirroredRepeat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/TextureMirroredRepeat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/TextureMirroredRepeat.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IBM.TextureMirroredRepeat (
+  -- * Extension Support
+    gl_IBM_texture_mirrored_repeat
+
+  -- * GL_IBM_texture_mirrored_repeat
+  , pattern GL_MIRRORED_REPEAT_IBM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IBM_texture_mirrored_repeat :: Bool
+gl_IBM_texture_mirrored_repeat = member "GL_IBM_texture_mirrored_repeat" extensions
+
+pattern GL_MIRRORED_REPEAT_IBM = 0x8370 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/VertexArrayLists.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/VertexArrayLists.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IBM/VertexArrayLists.hs
@@ -0,0 +1,139 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IBM.VertexArrayLists (
+  -- * Extension Support
+    gl_IBM_vertex_array_lists
+
+  -- * GL_IBM_vertex_array_lists
+  , glColorPointerListIBM
+  , glEdgeFlagPointerListIBM
+  , glFogCoordPointerListIBM
+  , glIndexPointerListIBM
+  , glNormalPointerListIBM
+  , glSecondaryColorPointerListIBM
+  , glTexCoordPointerListIBM
+  , glVertexPointerListIBM
+  , pattern GL_COLOR_ARRAY_LIST_IBM
+  , pattern GL_COLOR_ARRAY_LIST_STRIDE_IBM
+  , pattern GL_EDGE_FLAG_ARRAY_LIST_IBM
+  , pattern GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM
+  , pattern GL_FOG_COORDINATE_ARRAY_LIST_IBM
+  , pattern GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM
+  , pattern GL_INDEX_ARRAY_LIST_IBM
+  , pattern GL_INDEX_ARRAY_LIST_STRIDE_IBM
+  , pattern GL_NORMAL_ARRAY_LIST_IBM
+  , pattern GL_NORMAL_ARRAY_LIST_STRIDE_IBM
+  , pattern GL_SECONDARY_COLOR_ARRAY_LIST_IBM
+  , pattern GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM
+  , pattern GL_TEXTURE_COORD_ARRAY_LIST_IBM
+  , pattern GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM
+  , pattern GL_VERTEX_ARRAY_LIST_IBM
+  , pattern GL_VERTEX_ARRAY_LIST_STRIDE_IBM
+) 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_IBM_vertex_array_lists :: Bool
+gl_IBM_vertex_array_lists = member "GL_IBM_vertex_array_lists" extensions
+
+glColorPointerListIBM :: MonadIO m => GLint -> GLenum -> GLint -> Ptr () -> GLint -> m ()
+glColorPointerListIBM = ffiintenumintPtrVintIOV glColorPointerListIBMFunPtr
+
+glColorPointerListIBMFunPtr :: FunPtr (GLint -> GLenum -> GLint -> Ptr () -> GLint -> IO ())
+glColorPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glColorPointerListIBM")
+
+{-# NOINLINE glColorPointerListIBMFunPtr #-}
+
+glEdgeFlagPointerListIBM :: MonadIO m => GLint -> Ptr GLboolean -> GLint -> m ()
+glEdgeFlagPointerListIBM = ffiintPtrbooleanintIOV glEdgeFlagPointerListIBMFunPtr
+
+glEdgeFlagPointerListIBMFunPtr :: FunPtr (GLint -> Ptr GLboolean -> GLint -> IO ())
+glEdgeFlagPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagPointerListIBM")
+
+{-# NOINLINE glEdgeFlagPointerListIBMFunPtr #-}
+
+glFogCoordPointerListIBM :: MonadIO m => GLenum -> GLint -> Ptr () -> GLint -> m ()
+glFogCoordPointerListIBM = ffienumintPtrVintIOV glFogCoordPointerListIBMFunPtr
+
+glFogCoordPointerListIBMFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> GLint -> IO ())
+glFogCoordPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glFogCoordPointerListIBM")
+
+{-# NOINLINE glFogCoordPointerListIBMFunPtr #-}
+
+glIndexPointerListIBM :: MonadIO m => GLenum -> GLint -> Ptr () -> GLint -> m ()
+glIndexPointerListIBM = ffienumintPtrVintIOV glIndexPointerListIBMFunPtr
+
+glIndexPointerListIBMFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> GLint -> IO ())
+glIndexPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glIndexPointerListIBM")
+
+{-# NOINLINE glIndexPointerListIBMFunPtr #-}
+
+glNormalPointerListIBM :: MonadIO m => GLenum -> GLint -> Ptr () -> GLint -> m ()
+glNormalPointerListIBM = ffienumintPtrVintIOV glNormalPointerListIBMFunPtr
+
+glNormalPointerListIBMFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> GLint -> IO ())
+glNormalPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glNormalPointerListIBM")
+
+{-# NOINLINE glNormalPointerListIBMFunPtr #-}
+
+glSecondaryColorPointerListIBM :: MonadIO m => GLint -> GLenum -> GLint -> Ptr () -> GLint -> m ()
+glSecondaryColorPointerListIBM = ffiintenumintPtrVintIOV glSecondaryColorPointerListIBMFunPtr
+
+glSecondaryColorPointerListIBMFunPtr :: FunPtr (GLint -> GLenum -> GLint -> Ptr () -> GLint -> IO ())
+glSecondaryColorPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorPointerListIBM")
+
+{-# NOINLINE glSecondaryColorPointerListIBMFunPtr #-}
+
+glTexCoordPointerListIBM :: MonadIO m => GLint -> GLenum -> GLint -> Ptr () -> GLint -> m ()
+glTexCoordPointerListIBM = ffiintenumintPtrVintIOV glTexCoordPointerListIBMFunPtr
+
+glTexCoordPointerListIBMFunPtr :: FunPtr (GLint -> GLenum -> GLint -> Ptr () -> GLint -> IO ())
+glTexCoordPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glTexCoordPointerListIBM")
+
+{-# NOINLINE glTexCoordPointerListIBMFunPtr #-}
+
+glVertexPointerListIBM :: MonadIO m => GLint -> GLenum -> GLint -> Ptr () -> GLint -> m ()
+glVertexPointerListIBM = ffiintenumintPtrVintIOV glVertexPointerListIBMFunPtr
+
+glVertexPointerListIBMFunPtr :: FunPtr (GLint -> GLenum -> GLint -> Ptr () -> GLint -> IO ())
+glVertexPointerListIBMFunPtr = unsafePerformIO (getProcAddress "glVertexPointerListIBM")
+
+{-# NOINLINE glVertexPointerListIBMFunPtr #-}
+
+pattern GL_COLOR_ARRAY_LIST_IBM = 103072 :: GLenum
+
+pattern GL_COLOR_ARRAY_LIST_STRIDE_IBM = 103082 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_LIST_IBM = 103075 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085 :: GLenum
+
+pattern GL_FOG_COORDINATE_ARRAY_LIST_IBM = 103076 :: GLenum
+
+pattern GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086 :: GLenum
+
+pattern GL_INDEX_ARRAY_LIST_IBM = 103073 :: GLenum
+
+pattern GL_INDEX_ARRAY_LIST_STRIDE_IBM = 103083 :: GLenum
+
+pattern GL_NORMAL_ARRAY_LIST_IBM = 103071 :: GLenum
+
+pattern GL_NORMAL_ARRAY_LIST_STRIDE_IBM = 103081 :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_LIST_IBM = 103077 :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_LIST_IBM = 103074 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084 :: GLenum
+
+pattern GL_VERTEX_ARRAY_LIST_IBM = 103070 :: GLenum
+
+pattern GL_VERTEX_ARRAY_LIST_STRIDE_IBM = 103080 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG (
+  -- * IMG Extensions
+    module Graphics.GL.Raw.Extension.IMG.MultisampledRenderToTexture
+  , module Graphics.GL.Raw.Extension.IMG.ProgramBinary
+  , module Graphics.GL.Raw.Extension.IMG.ReadFormat
+  , module Graphics.GL.Raw.Extension.IMG.ShaderBinary
+  , module Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc
+  , module Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc2
+  , module Graphics.GL.Raw.Extension.IMG.TextureEnvEnhancedFixedFunction
+  , module Graphics.GL.Raw.Extension.IMG.UserClipPlane
+) where
+
+import Graphics.GL.Raw.Extension.IMG.MultisampledRenderToTexture
+import Graphics.GL.Raw.Extension.IMG.ProgramBinary
+import Graphics.GL.Raw.Extension.IMG.ReadFormat
+import Graphics.GL.Raw.Extension.IMG.ShaderBinary
+import Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc
+import Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc2
+import Graphics.GL.Raw.Extension.IMG.TextureEnvEnhancedFixedFunction
+import Graphics.GL.Raw.Extension.IMG.UserClipPlane
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/MultisampledRenderToTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/MultisampledRenderToTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/MultisampledRenderToTexture.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.MultisampledRenderToTexture (
+  -- * Extension Support
+    gl_IMG_multisampled_render_to_texture
+
+  -- * GL_IMG_multisampled_render_to_texture
+  , glFramebufferTexture2DMultisampleIMG
+  , glRenderbufferStorageMultisampleIMG
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG
+  , pattern GL_MAX_SAMPLES_IMG
+  , pattern GL_RENDERBUFFER_SAMPLES_IMG
+  , pattern GL_TEXTURE_SAMPLES_IMG
+) 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_IMG_multisampled_render_to_texture :: Bool
+gl_IMG_multisampled_render_to_texture = member "GL_IMG_multisampled_render_to_texture" extensions
+
+glFramebufferTexture2DMultisampleIMG :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> m ()
+glFramebufferTexture2DMultisampleIMG = ffienumenumenumuintintsizeiIOV glFramebufferTexture2DMultisampleIMGFunPtr
+
+glFramebufferTexture2DMultisampleIMGFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> IO ())
+glFramebufferTexture2DMultisampleIMGFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture2DMultisampleIMG")
+
+{-# NOINLINE glFramebufferTexture2DMultisampleIMGFunPtr #-}
+
+glRenderbufferStorageMultisampleIMG :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+glRenderbufferStorageMultisampleIMG = ffienumsizeienumsizeisizeiIOV glRenderbufferStorageMultisampleIMGFunPtr
+
+glRenderbufferStorageMultisampleIMGFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+glRenderbufferStorageMultisampleIMGFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageMultisampleIMG")
+
+{-# NOINLINE glRenderbufferStorageMultisampleIMGFunPtr #-}
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x9134 :: GLenum
+
+pattern GL_MAX_SAMPLES_IMG = 0x9135 :: GLenum
+
+pattern GL_RENDERBUFFER_SAMPLES_IMG = 0x9133 :: GLenum
+
+pattern GL_TEXTURE_SAMPLES_IMG = 0x9136 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ProgramBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ProgramBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ProgramBinary.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.ProgramBinary (
+  -- * Extension Support
+    gl_IMG_program_binary
+
+  -- * GL_IMG_program_binary
+  , pattern GL_SGX_PROGRAM_BINARY_IMG
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IMG_program_binary :: Bool
+gl_IMG_program_binary = member "GL_IMG_program_binary" extensions
+
+pattern GL_SGX_PROGRAM_BINARY_IMG = 0x9130 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ReadFormat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ReadFormat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ReadFormat.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.ReadFormat (
+  -- * Extension Support
+    gl_IMG_read_format
+
+  -- * GL_IMG_read_format
+  , pattern GL_BGRA_IMG
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IMG_read_format :: Bool
+gl_IMG_read_format = member "GL_IMG_read_format" extensions
+
+pattern GL_BGRA_IMG = 0x80E1 :: GLenum
+
+pattern GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG = 0x8365 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ShaderBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ShaderBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/ShaderBinary.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.ShaderBinary (
+  -- * Extension Support
+    gl_IMG_shader_binary
+
+  -- * GL_IMG_shader_binary
+  , pattern GL_SGX_BINARY_IMG
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IMG_shader_binary :: Bool
+gl_IMG_shader_binary = member "GL_IMG_shader_binary" extensions
+
+pattern GL_SGX_BINARY_IMG = 0x8C0A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureCompressionPvrtc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureCompressionPvrtc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureCompressionPvrtc.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc (
+  -- * Extension Support
+    gl_IMG_texture_compression_pvrtc
+
+  -- * GL_IMG_texture_compression_pvrtc
+  , pattern GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
+  , pattern GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG
+  , pattern GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG
+  , pattern GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IMG_texture_compression_pvrtc :: Bool
+gl_IMG_texture_compression_pvrtc = member "GL_IMG_texture_compression_pvrtc" extensions
+
+pattern GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02 :: GLenum
+
+pattern GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01 :: GLenum
+
+pattern GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureCompressionPvrtc2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureCompressionPvrtc2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureCompressionPvrtc2.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc2 (
+  -- * Extension Support
+    gl_IMG_texture_compression_pvrtc2
+
+  -- * GL_IMG_texture_compression_pvrtc2
+  , pattern GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG
+  , pattern GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IMG_texture_compression_pvrtc2 :: Bool
+gl_IMG_texture_compression_pvrtc2 = member "GL_IMG_texture_compression_pvrtc2" extensions
+
+pattern GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG = 0x9137 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG = 0x9138 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureEnvEnhancedFixedFunction.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureEnvEnhancedFixedFunction.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/TextureEnvEnhancedFixedFunction.hs
@@ -0,0 +1,36 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.TextureEnvEnhancedFixedFunction (
+  -- * Extension Support
+    gl_IMG_texture_env_enhanced_fixed_function
+
+  -- * GL_IMG_texture_env_enhanced_fixed_function
+  , pattern GL_ADD_BLEND_IMG
+  , pattern GL_DOT3_RGBA_IMG
+  , pattern GL_FACTOR_ALPHA_MODULATE_IMG
+  , pattern GL_FRAGMENT_ALPHA_MODULATE_IMG
+  , pattern GL_MODULATE_COLOR_IMG
+  , pattern GL_RECIP_ADD_SIGNED_ALPHA_IMG
+  , pattern GL_TEXTURE_ALPHA_MODULATE_IMG
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_IMG_texture_env_enhanced_fixed_function :: Bool
+gl_IMG_texture_env_enhanced_fixed_function = member "GL_IMG_texture_env_enhanced_fixed_function" extensions
+
+pattern GL_ADD_BLEND_IMG = 0x8C09 :: GLenum
+
+pattern GL_DOT3_RGBA_IMG = 0x86AF :: GLenum
+
+pattern GL_FACTOR_ALPHA_MODULATE_IMG = 0x8C07 :: GLenum
+
+pattern GL_FRAGMENT_ALPHA_MODULATE_IMG = 0x8C08 :: GLenum
+
+pattern GL_MODULATE_COLOR_IMG = 0x8C04 :: GLenum
+
+pattern GL_RECIP_ADD_SIGNED_ALPHA_IMG = 0x8C05 :: GLenum
+
+pattern GL_TEXTURE_ALPHA_MODULATE_IMG = 0x8C06 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/UserClipPlane.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/UserClipPlane.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/IMG/UserClipPlane.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.IMG.UserClipPlane (
+  -- * Extension Support
+    gl_IMG_user_clip_plane
+
+  -- * GL_IMG_user_clip_plane
+  , glClipPlanefIMG
+  , glClipPlanexIMG
+  , pattern GL_CLIP_PLANE0_IMG
+  , pattern GL_CLIP_PLANE1_IMG
+  , pattern GL_CLIP_PLANE2_IMG
+  , pattern GL_CLIP_PLANE3_IMG
+  , pattern GL_CLIP_PLANE4_IMG
+  , pattern GL_CLIP_PLANE5_IMG
+  , pattern GL_MAX_CLIP_PLANES_IMG
+) 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_IMG_user_clip_plane :: Bool
+gl_IMG_user_clip_plane = member "GL_IMG_user_clip_plane" extensions
+
+glClipPlanefIMG :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glClipPlanefIMG = ffienumPtrfloatIOV glClipPlanefIMGFunPtr
+
+glClipPlanefIMGFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glClipPlanefIMGFunPtr = unsafePerformIO (getProcAddress "glClipPlanefIMG")
+
+{-# NOINLINE glClipPlanefIMGFunPtr #-}
+
+glClipPlanexIMG :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glClipPlanexIMG = ffienumPtrfixedIOV glClipPlanexIMGFunPtr
+
+glClipPlanexIMGFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glClipPlanexIMGFunPtr = unsafePerformIO (getProcAddress "glClipPlanexIMG")
+
+{-# NOINLINE glClipPlanexIMGFunPtr #-}
+
+pattern GL_CLIP_PLANE0_IMG = 0x3000 :: GLenum
+
+pattern GL_CLIP_PLANE1_IMG = 0x3001 :: GLenum
+
+pattern GL_CLIP_PLANE2_IMG = 0x3002 :: GLenum
+
+pattern GL_CLIP_PLANE3_IMG = 0x3003 :: GLenum
+
+pattern GL_CLIP_PLANE4_IMG = 0x3004 :: GLenum
+
+pattern GL_CLIP_PLANE5_IMG = 0x3005 :: GLenum
+
+pattern GL_MAX_CLIP_PLANES_IMG = 0x0D32 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INGR.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INGR (
+  -- * INGR Extensions
+    module Graphics.GL.Raw.Extension.INGR.BlendFuncSeparate
+  , module Graphics.GL.Raw.Extension.INGR.ColorClamp
+  , module Graphics.GL.Raw.Extension.INGR.InterlaceRead
+) where
+
+import Graphics.GL.Raw.Extension.INGR.BlendFuncSeparate
+import Graphics.GL.Raw.Extension.INGR.ColorClamp
+import Graphics.GL.Raw.Extension.INGR.InterlaceRead
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/BlendFuncSeparate.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/BlendFuncSeparate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/BlendFuncSeparate.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INGR.BlendFuncSeparate (
+  -- * Extension Support
+    gl_INGR_blend_func_separate
+
+  -- * GL_INGR_blend_func_separate
+  , glBlendFuncSeparateINGR
+) 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_INGR_blend_func_separate :: Bool
+gl_INGR_blend_func_separate = member "GL_INGR_blend_func_separate" extensions
+
+glBlendFuncSeparateINGR :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glBlendFuncSeparateINGR = ffienumenumenumenumIOV glBlendFuncSeparateINGRFunPtr
+
+glBlendFuncSeparateINGRFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glBlendFuncSeparateINGRFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparateINGR")
+
+{-# NOINLINE glBlendFuncSeparateINGRFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/ColorClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/ColorClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/ColorClamp.hs
@@ -0,0 +1,39 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INGR.ColorClamp (
+  -- * Extension Support
+    gl_INGR_color_clamp
+
+  -- * GL_INGR_color_clamp
+  , pattern GL_ALPHA_MAX_CLAMP_INGR
+  , pattern GL_ALPHA_MIN_CLAMP_INGR
+  , pattern GL_BLUE_MAX_CLAMP_INGR
+  , pattern GL_BLUE_MIN_CLAMP_INGR
+  , pattern GL_GREEN_MAX_CLAMP_INGR
+  , pattern GL_GREEN_MIN_CLAMP_INGR
+  , pattern GL_RED_MAX_CLAMP_INGR
+  , pattern GL_RED_MIN_CLAMP_INGR
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_INGR_color_clamp :: Bool
+gl_INGR_color_clamp = member "GL_INGR_color_clamp" extensions
+
+pattern GL_ALPHA_MAX_CLAMP_INGR = 0x8567 :: GLenum
+
+pattern GL_ALPHA_MIN_CLAMP_INGR = 0x8563 :: GLenum
+
+pattern GL_BLUE_MAX_CLAMP_INGR = 0x8566 :: GLenum
+
+pattern GL_BLUE_MIN_CLAMP_INGR = 0x8562 :: GLenum
+
+pattern GL_GREEN_MAX_CLAMP_INGR = 0x8565 :: GLenum
+
+pattern GL_GREEN_MIN_CLAMP_INGR = 0x8561 :: GLenum
+
+pattern GL_RED_MAX_CLAMP_INGR = 0x8564 :: GLenum
+
+pattern GL_RED_MIN_CLAMP_INGR = 0x8560 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/InterlaceRead.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/InterlaceRead.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INGR/InterlaceRead.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INGR.InterlaceRead (
+  -- * Extension Support
+    gl_INGR_interlace_read
+
+  -- * GL_INGR_interlace_read
+  , pattern GL_INTERLACE_READ_INGR
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_INGR_interlace_read :: Bool
+gl_INGR_interlace_read = member "GL_INGR_interlace_read" extensions
+
+pattern GL_INTERLACE_READ_INGR = 0x8568 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL.hs
@@ -0,0 +1,14 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INTEL (
+  -- * INTEL Extensions
+    module Graphics.GL.Raw.Extension.INTEL.FragmentShaderOrdering
+  , module Graphics.GL.Raw.Extension.INTEL.MapTexture
+  , module Graphics.GL.Raw.Extension.INTEL.ParallelArrays
+  , module Graphics.GL.Raw.Extension.INTEL.PerformanceQuery
+) where
+
+import Graphics.GL.Raw.Extension.INTEL.FragmentShaderOrdering
+import Graphics.GL.Raw.Extension.INTEL.MapTexture
+import Graphics.GL.Raw.Extension.INTEL.ParallelArrays
+import Graphics.GL.Raw.Extension.INTEL.PerformanceQuery
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/FragmentShaderOrdering.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/FragmentShaderOrdering.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/FragmentShaderOrdering.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INTEL.FragmentShaderOrdering (
+  -- * Extension Support
+    gl_INTEL_fragment_shader_ordering
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_INTEL_fragment_shader_ordering :: Bool
+gl_INTEL_fragment_shader_ordering = member "GL_INTEL_fragment_shader_ordering" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/MapTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/MapTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/MapTexture.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INTEL.MapTexture (
+  -- * Extension Support
+    gl_INTEL_map_texture
+
+  -- * GL_INTEL_map_texture
+  , glMapTexture2DINTEL
+  , glSyncTextureINTEL
+  , glUnmapTexture2DINTEL
+  , pattern GL_LAYOUT_DEFAULT_INTEL
+  , pattern GL_LAYOUT_LINEAR_CPU_CACHED_INTEL
+  , pattern GL_LAYOUT_LINEAR_INTEL
+  , pattern GL_TEXTURE_MEMORY_LAYOUT_INTEL
+) 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_INTEL_map_texture :: Bool
+gl_INTEL_map_texture = member "GL_INTEL_map_texture" extensions
+
+glMapTexture2DINTEL :: MonadIO m => GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> m (Ptr ())
+glMapTexture2DINTEL = ffiuintintbitfieldPtrintPtrenumIOPtrV glMapTexture2DINTELFunPtr
+
+glMapTexture2DINTELFunPtr :: FunPtr (GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> IO (Ptr ()))
+glMapTexture2DINTELFunPtr = unsafePerformIO (getProcAddress "glMapTexture2DINTEL")
+
+{-# NOINLINE glMapTexture2DINTELFunPtr #-}
+
+glSyncTextureINTEL :: MonadIO m => GLuint -> m ()
+glSyncTextureINTEL = ffiuintIOV glSyncTextureINTELFunPtr
+
+glSyncTextureINTELFunPtr :: FunPtr (GLuint -> IO ())
+glSyncTextureINTELFunPtr = unsafePerformIO (getProcAddress "glSyncTextureINTEL")
+
+{-# NOINLINE glSyncTextureINTELFunPtr #-}
+
+glUnmapTexture2DINTEL :: MonadIO m => GLuint -> GLint -> m ()
+glUnmapTexture2DINTEL = ffiuintintIOV glUnmapTexture2DINTELFunPtr
+
+glUnmapTexture2DINTELFunPtr :: FunPtr (GLuint -> GLint -> IO ())
+glUnmapTexture2DINTELFunPtr = unsafePerformIO (getProcAddress "glUnmapTexture2DINTEL")
+
+{-# NOINLINE glUnmapTexture2DINTELFunPtr #-}
+
+pattern GL_LAYOUT_DEFAULT_INTEL = 0 :: GLenum
+
+pattern GL_LAYOUT_LINEAR_CPU_CACHED_INTEL = 2 :: GLenum
+
+pattern GL_LAYOUT_LINEAR_INTEL = 1 :: GLenum
+
+pattern GL_TEXTURE_MEMORY_LAYOUT_INTEL = 0x83FF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/ParallelArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/ParallelArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/ParallelArrays.hs
@@ -0,0 +1,70 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INTEL.ParallelArrays (
+  -- * Extension Support
+    gl_INTEL_parallel_arrays
+
+  -- * GL_INTEL_parallel_arrays
+  , glColorPointervINTEL
+  , glNormalPointervINTEL
+  , glTexCoordPointervINTEL
+  , glVertexPointervINTEL
+  , pattern GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL
+  , pattern GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL
+  , pattern GL_PARALLEL_ARRAYS_INTEL
+  , pattern GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL
+  , pattern GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL
+) 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_INTEL_parallel_arrays :: Bool
+gl_INTEL_parallel_arrays = member "GL_INTEL_parallel_arrays" extensions
+
+glColorPointervINTEL :: MonadIO m => GLint -> GLenum -> Ptr () -> m ()
+glColorPointervINTEL = ffiintenumPtrVIOV glColorPointervINTELFunPtr
+
+glColorPointervINTELFunPtr :: FunPtr (GLint -> GLenum -> Ptr () -> IO ())
+glColorPointervINTELFunPtr = unsafePerformIO (getProcAddress "glColorPointervINTEL")
+
+{-# NOINLINE glColorPointervINTELFunPtr #-}
+
+glNormalPointervINTEL :: MonadIO m => GLenum -> Ptr () -> m ()
+glNormalPointervINTEL = ffienumPtrVIOV glNormalPointervINTELFunPtr
+
+glNormalPointervINTELFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
+glNormalPointervINTELFunPtr = unsafePerformIO (getProcAddress "glNormalPointervINTEL")
+
+{-# NOINLINE glNormalPointervINTELFunPtr #-}
+
+glTexCoordPointervINTEL :: MonadIO m => GLint -> GLenum -> Ptr () -> m ()
+glTexCoordPointervINTEL = ffiintenumPtrVIOV glTexCoordPointervINTELFunPtr
+
+glTexCoordPointervINTELFunPtr :: FunPtr (GLint -> GLenum -> Ptr () -> IO ())
+glTexCoordPointervINTELFunPtr = unsafePerformIO (getProcAddress "glTexCoordPointervINTEL")
+
+{-# NOINLINE glTexCoordPointervINTELFunPtr #-}
+
+glVertexPointervINTEL :: MonadIO m => GLint -> GLenum -> Ptr () -> m ()
+glVertexPointervINTEL = ffiintenumPtrVIOV glVertexPointervINTELFunPtr
+
+glVertexPointervINTELFunPtr :: FunPtr (GLint -> GLenum -> Ptr () -> IO ())
+glVertexPointervINTELFunPtr = unsafePerformIO (getProcAddress "glVertexPointervINTEL")
+
+{-# NOINLINE glVertexPointervINTELFunPtr #-}
+
+pattern GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F7 :: GLenum
+
+pattern GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F6 :: GLenum
+
+pattern GL_PARALLEL_ARRAYS_INTEL = 0x83F4 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F8 :: GLenum
+
+pattern GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/PerformanceQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/PerformanceQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/INTEL/PerformanceQuery.hs
@@ -0,0 +1,169 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.INTEL.PerformanceQuery (
+  -- * Extension Support
+    gl_INTEL_performance_query
+
+  -- * GL_INTEL_performance_query
+  , glBeginPerfQueryINTEL
+  , glCreatePerfQueryINTEL
+  , glDeletePerfQueryINTEL
+  , glEndPerfQueryINTEL
+  , glGetFirstPerfQueryIdINTEL
+  , glGetNextPerfQueryIdINTEL
+  , glGetPerfCounterInfoINTEL
+  , glGetPerfQueryDataINTEL
+  , glGetPerfQueryIdByNameINTEL
+  , glGetPerfQueryInfoINTEL
+  , pattern GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL
+  , pattern GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL
+  , pattern GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL
+  , pattern GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL
+  , pattern GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL
+  , pattern GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL
+  , pattern GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL
+  , pattern GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL
+  , pattern GL_PERFQUERY_COUNTER_EVENT_INTEL
+  , pattern GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL
+  , pattern GL_PERFQUERY_COUNTER_RAW_INTEL
+  , pattern GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL
+  , pattern GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL
+  , pattern GL_PERFQUERY_DONOT_FLUSH_INTEL
+  , pattern GL_PERFQUERY_FLUSH_INTEL
+  , pattern GL_PERFQUERY_GLOBAL_CONTEXT_INTEL
+  , pattern GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL
+  , pattern GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL
+  , pattern GL_PERFQUERY_SINGLE_CONTEXT_INTEL
+  , pattern GL_PERFQUERY_WAIT_INTEL
+) 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_INTEL_performance_query :: Bool
+gl_INTEL_performance_query = member "GL_INTEL_performance_query" extensions
+
+glBeginPerfQueryINTEL :: MonadIO m => GLuint -> m ()
+glBeginPerfQueryINTEL = ffiuintIOV glBeginPerfQueryINTELFunPtr
+
+glBeginPerfQueryINTELFunPtr :: FunPtr (GLuint -> IO ())
+glBeginPerfQueryINTELFunPtr = unsafePerformIO (getProcAddress "glBeginPerfQueryINTEL")
+
+{-# NOINLINE glBeginPerfQueryINTELFunPtr #-}
+
+glCreatePerfQueryINTEL :: MonadIO m => GLuint -> Ptr GLuint -> m ()
+glCreatePerfQueryINTEL = ffiuintPtruintIOV glCreatePerfQueryINTELFunPtr
+
+glCreatePerfQueryINTELFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
+glCreatePerfQueryINTELFunPtr = unsafePerformIO (getProcAddress "glCreatePerfQueryINTEL")
+
+{-# NOINLINE glCreatePerfQueryINTELFunPtr #-}
+
+glDeletePerfQueryINTEL :: MonadIO m => GLuint -> m ()
+glDeletePerfQueryINTEL = ffiuintIOV glDeletePerfQueryINTELFunPtr
+
+glDeletePerfQueryINTELFunPtr :: FunPtr (GLuint -> IO ())
+glDeletePerfQueryINTELFunPtr = unsafePerformIO (getProcAddress "glDeletePerfQueryINTEL")
+
+{-# NOINLINE glDeletePerfQueryINTELFunPtr #-}
+
+glEndPerfQueryINTEL :: MonadIO m => GLuint -> m ()
+glEndPerfQueryINTEL = ffiuintIOV glEndPerfQueryINTELFunPtr
+
+glEndPerfQueryINTELFunPtr :: FunPtr (GLuint -> IO ())
+glEndPerfQueryINTELFunPtr = unsafePerformIO (getProcAddress "glEndPerfQueryINTEL")
+
+{-# NOINLINE glEndPerfQueryINTELFunPtr #-}
+
+glGetFirstPerfQueryIdINTEL :: MonadIO m => Ptr GLuint -> m ()
+glGetFirstPerfQueryIdINTEL = ffiPtruintIOV glGetFirstPerfQueryIdINTELFunPtr
+
+glGetFirstPerfQueryIdINTELFunPtr :: FunPtr (Ptr GLuint -> IO ())
+glGetFirstPerfQueryIdINTELFunPtr = unsafePerformIO (getProcAddress "glGetFirstPerfQueryIdINTEL")
+
+{-# NOINLINE glGetFirstPerfQueryIdINTELFunPtr #-}
+
+glGetNextPerfQueryIdINTEL :: MonadIO m => GLuint -> Ptr GLuint -> m ()
+glGetNextPerfQueryIdINTEL = ffiuintPtruintIOV glGetNextPerfQueryIdINTELFunPtr
+
+glGetNextPerfQueryIdINTELFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
+glGetNextPerfQueryIdINTELFunPtr = unsafePerformIO (getProcAddress "glGetNextPerfQueryIdINTEL")
+
+{-# NOINLINE glGetNextPerfQueryIdINTELFunPtr #-}
+
+glGetPerfCounterInfoINTEL :: MonadIO m => GLuint -> GLuint -> GLuint -> Ptr GLchar -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint64 -> m ()
+glGetPerfCounterInfoINTEL = ffiuintuintuintPtrcharuintPtrcharPtruintPtruintPtruintPtruintPtruint64IOV glGetPerfCounterInfoINTELFunPtr
+
+glGetPerfCounterInfoINTELFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLchar -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint64 -> IO ())
+glGetPerfCounterInfoINTELFunPtr = unsafePerformIO (getProcAddress "glGetPerfCounterInfoINTEL")
+
+{-# NOINLINE glGetPerfCounterInfoINTELFunPtr #-}
+
+glGetPerfQueryDataINTEL :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr () -> Ptr GLuint -> m ()
+glGetPerfQueryDataINTEL = ffiuintuintsizeiPtrVPtruintIOV glGetPerfQueryDataINTELFunPtr
+
+glGetPerfQueryDataINTELFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr () -> Ptr GLuint -> IO ())
+glGetPerfQueryDataINTELFunPtr = unsafePerformIO (getProcAddress "glGetPerfQueryDataINTEL")
+
+{-# NOINLINE glGetPerfQueryDataINTELFunPtr #-}
+
+glGetPerfQueryIdByNameINTEL :: MonadIO m => Ptr GLchar -> Ptr GLuint -> m ()
+glGetPerfQueryIdByNameINTEL = ffiPtrcharPtruintIOV glGetPerfQueryIdByNameINTELFunPtr
+
+glGetPerfQueryIdByNameINTELFunPtr :: FunPtr (Ptr GLchar -> Ptr GLuint -> IO ())
+glGetPerfQueryIdByNameINTELFunPtr = unsafePerformIO (getProcAddress "glGetPerfQueryIdByNameINTEL")
+
+{-# NOINLINE glGetPerfQueryIdByNameINTELFunPtr #-}
+
+glGetPerfQueryInfoINTEL :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> m ()
+glGetPerfQueryInfoINTEL = ffiuintuintPtrcharPtruintPtruintPtruintPtruintIOV glGetPerfQueryInfoINTELFunPtr
+
+glGetPerfQueryInfoINTELFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> IO ())
+glGetPerfQueryInfoINTELFunPtr = unsafePerformIO (getProcAddress "glGetPerfQueryInfoINTEL")
+
+{-# NOINLINE glGetPerfQueryInfoINTELFunPtr #-}
+
+pattern GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL = 0x94FC :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = 0x94FB :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL = 0x94FA :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL = 0x94F8 :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL = 0x94F9 :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = 0x94FF :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL = 0x94F1 :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL = 0x94F2 :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_EVENT_INTEL = 0x94F0 :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = 0x94FE :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_RAW_INTEL = 0x94F4 :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL = 0x94F3 :: GLenum
+
+pattern GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL = 0x94F5 :: GLenum
+
+pattern GL_PERFQUERY_DONOT_FLUSH_INTEL = 0x83F9 :: GLenum
+
+pattern GL_PERFQUERY_FLUSH_INTEL = 0x83FA :: GLenum
+
+pattern GL_PERFQUERY_GLOBAL_CONTEXT_INTEL = 0x00000001 :: GLenum
+
+pattern GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = 0x9500 :: GLenum
+
+pattern GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = 0x94FD :: GLenum
+
+pattern GL_PERFQUERY_SINGLE_CONTEXT_INTEL = 0x00000000 :: GLenum
+
+pattern GL_PERFQUERY_WAIT_INTEL = 0x83FB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR (
+  -- * KHR Extensions
+    module Graphics.GL.Raw.Extension.KHR.BlendEquationAdvanced
+  , module Graphics.GL.Raw.Extension.KHR.BlendEquationAdvancedCoherent
+  , module Graphics.GL.Raw.Extension.KHR.ContextFlushControl
+  , module Graphics.GL.Raw.Extension.KHR.Debug
+  , module Graphics.GL.Raw.Extension.KHR.RobustBufferAccessBehavior
+  , module Graphics.GL.Raw.Extension.KHR.Robustness
+  , module Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcHdr
+  , module Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcLdr
+) where
+
+import Graphics.GL.Raw.Extension.KHR.BlendEquationAdvanced
+import Graphics.GL.Raw.Extension.KHR.BlendEquationAdvancedCoherent
+import Graphics.GL.Raw.Extension.KHR.ContextFlushControl
+import Graphics.GL.Raw.Extension.KHR.Debug
+import Graphics.GL.Raw.Extension.KHR.RobustBufferAccessBehavior
+import Graphics.GL.Raw.Extension.KHR.Robustness
+import Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcHdr
+import Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcLdr
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/BlendEquationAdvanced.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/BlendEquationAdvanced.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/BlendEquationAdvanced.hs
@@ -0,0 +1,73 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.BlendEquationAdvanced (
+  -- * Extension Support
+    gl_KHR_blend_equation_advanced
+
+  -- * GL_KHR_blend_equation_advanced
+  , glBlendBarrierKHR
+  , pattern GL_COLORBURN_KHR
+  , pattern GL_COLORDODGE_KHR
+  , pattern GL_DARKEN_KHR
+  , pattern GL_DIFFERENCE_KHR
+  , pattern GL_EXCLUSION_KHR
+  , pattern GL_HARDLIGHT_KHR
+  , pattern GL_HSL_COLOR_KHR
+  , pattern GL_HSL_HUE_KHR
+  , pattern GL_HSL_LUMINOSITY_KHR
+  , pattern GL_HSL_SATURATION_KHR
+  , pattern GL_LIGHTEN_KHR
+  , pattern GL_MULTIPLY_KHR
+  , pattern GL_OVERLAY_KHR
+  , pattern GL_SCREEN_KHR
+  , pattern GL_SOFTLIGHT_KHR
+) 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_KHR_blend_equation_advanced :: Bool
+gl_KHR_blend_equation_advanced = member "GL_KHR_blend_equation_advanced" extensions
+
+glBlendBarrierKHR :: MonadIO m => m ()
+glBlendBarrierKHR = ffiIOV glBlendBarrierKHRFunPtr
+
+glBlendBarrierKHRFunPtr :: FunPtr (IO ())
+glBlendBarrierKHRFunPtr = unsafePerformIO (getProcAddress "glBlendBarrierKHR")
+
+{-# NOINLINE glBlendBarrierKHRFunPtr #-}
+
+pattern GL_COLORBURN_KHR = 0x929A :: GLenum
+
+pattern GL_COLORDODGE_KHR = 0x9299 :: GLenum
+
+pattern GL_DARKEN_KHR = 0x9297 :: GLenum
+
+pattern GL_DIFFERENCE_KHR = 0x929E :: GLenum
+
+pattern GL_EXCLUSION_KHR = 0x92A0 :: GLenum
+
+pattern GL_HARDLIGHT_KHR = 0x929B :: GLenum
+
+pattern GL_HSL_COLOR_KHR = 0x92AF :: GLenum
+
+pattern GL_HSL_HUE_KHR = 0x92AD :: GLenum
+
+pattern GL_HSL_LUMINOSITY_KHR = 0x92B0 :: GLenum
+
+pattern GL_HSL_SATURATION_KHR = 0x92AE :: GLenum
+
+pattern GL_LIGHTEN_KHR = 0x9298 :: GLenum
+
+pattern GL_MULTIPLY_KHR = 0x9294 :: GLenum
+
+pattern GL_OVERLAY_KHR = 0x9296 :: GLenum
+
+pattern GL_SCREEN_KHR = 0x9295 :: GLenum
+
+pattern GL_SOFTLIGHT_KHR = 0x929C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/BlendEquationAdvancedCoherent.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/BlendEquationAdvancedCoherent.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/BlendEquationAdvancedCoherent.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.BlendEquationAdvancedCoherent (
+  -- * Extension Support
+    gl_KHR_blend_equation_advanced_coherent
+
+  -- * GL_KHR_blend_equation_advanced_coherent
+  , pattern GL_BLEND_ADVANCED_COHERENT_KHR
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_KHR_blend_equation_advanced_coherent :: Bool
+gl_KHR_blend_equation_advanced_coherent = member "GL_KHR_blend_equation_advanced_coherent" extensions
+
+pattern GL_BLEND_ADVANCED_COHERENT_KHR = 0x9285 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/ContextFlushControl.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/ContextFlushControl.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/ContextFlushControl.hs
@@ -0,0 +1,25 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.ContextFlushControl (
+  -- * Extension Support
+    gl_KHR_context_flush_control
+
+  -- * GL_KHR_context_flush_control
+  , pattern GL_CONTEXT_RELEASE_BEHAVIOR
+  , pattern GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH
+  , pattern GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR
+  , pattern GL_CONTEXT_RELEASE_BEHAVIOR_KHR
+  , pattern GL_NONE
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_KHR_context_flush_control :: Bool
+gl_KHR_context_flush_control = member "GL_KHR_context_flush_control" extensions
+
+pattern GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR = 0x82FC :: GLenum
+
+pattern GL_CONTEXT_RELEASE_BEHAVIOR_KHR = 0x82FB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/Debug.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/Debug.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/Debug.hs
@@ -0,0 +1,288 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.Debug (
+  -- * Extension Support
+    gl_KHR_debug
+
+  -- * GL_KHR_debug
+  , glDebugMessageCallback
+  , glDebugMessageCallbackKHR
+  , glDebugMessageControl
+  , glDebugMessageControlKHR
+  , glDebugMessageInsert
+  , glDebugMessageInsertKHR
+  , glGetDebugMessageLog
+  , glGetDebugMessageLogKHR
+  , glGetObjectLabel
+  , glGetObjectLabelKHR
+  , glGetObjectPtrLabel
+  , glGetObjectPtrLabelKHR
+  , glGetPointerv
+  , glGetPointervKHR
+  , glObjectLabel
+  , glObjectLabelKHR
+  , glObjectPtrLabel
+  , glObjectPtrLabelKHR
+  , glPopDebugGroup
+  , glPopDebugGroupKHR
+  , glPushDebugGroup
+  , glPushDebugGroupKHR
+  , pattern GL_BUFFER
+  , pattern GL_BUFFER_KHR
+  , pattern GL_CONTEXT_FLAG_DEBUG_BIT
+  , pattern GL_CONTEXT_FLAG_DEBUG_BIT_KHR
+  , pattern GL_DEBUG_CALLBACK_FUNCTION
+  , pattern GL_DEBUG_CALLBACK_FUNCTION_KHR
+  , pattern GL_DEBUG_CALLBACK_USER_PARAM
+  , pattern GL_DEBUG_CALLBACK_USER_PARAM_KHR
+  , pattern GL_DEBUG_GROUP_STACK_DEPTH
+  , pattern GL_DEBUG_GROUP_STACK_DEPTH_KHR
+  , pattern GL_DEBUG_LOGGED_MESSAGES
+  , pattern GL_DEBUG_LOGGED_MESSAGES_KHR
+  , pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH
+  , pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR
+  , pattern GL_DEBUG_OUTPUT
+  , pattern GL_DEBUG_OUTPUT_KHR
+  , pattern GL_DEBUG_OUTPUT_SYNCHRONOUS
+  , pattern GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR
+  , pattern GL_DEBUG_SEVERITY_HIGH
+  , pattern GL_DEBUG_SEVERITY_HIGH_KHR
+  , pattern GL_DEBUG_SEVERITY_LOW
+  , pattern GL_DEBUG_SEVERITY_LOW_KHR
+  , pattern GL_DEBUG_SEVERITY_MEDIUM
+  , pattern GL_DEBUG_SEVERITY_MEDIUM_KHR
+  , pattern GL_DEBUG_SEVERITY_NOTIFICATION
+  , pattern GL_DEBUG_SEVERITY_NOTIFICATION_KHR
+  , pattern GL_DEBUG_SOURCE_API
+  , pattern GL_DEBUG_SOURCE_API_KHR
+  , pattern GL_DEBUG_SOURCE_APPLICATION
+  , pattern GL_DEBUG_SOURCE_APPLICATION_KHR
+  , pattern GL_DEBUG_SOURCE_OTHER
+  , pattern GL_DEBUG_SOURCE_OTHER_KHR
+  , pattern GL_DEBUG_SOURCE_SHADER_COMPILER
+  , pattern GL_DEBUG_SOURCE_SHADER_COMPILER_KHR
+  , pattern GL_DEBUG_SOURCE_THIRD_PARTY
+  , pattern GL_DEBUG_SOURCE_THIRD_PARTY_KHR
+  , pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM
+  , pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR
+  , pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
+  , pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR
+  , pattern GL_DEBUG_TYPE_ERROR
+  , pattern GL_DEBUG_TYPE_ERROR_KHR
+  , pattern GL_DEBUG_TYPE_MARKER
+  , pattern GL_DEBUG_TYPE_MARKER_KHR
+  , pattern GL_DEBUG_TYPE_OTHER
+  , pattern GL_DEBUG_TYPE_OTHER_KHR
+  , pattern GL_DEBUG_TYPE_PERFORMANCE
+  , pattern GL_DEBUG_TYPE_PERFORMANCE_KHR
+  , pattern GL_DEBUG_TYPE_POP_GROUP
+  , pattern GL_DEBUG_TYPE_POP_GROUP_KHR
+  , pattern GL_DEBUG_TYPE_PORTABILITY
+  , pattern GL_DEBUG_TYPE_PORTABILITY_KHR
+  , pattern GL_DEBUG_TYPE_PUSH_GROUP
+  , pattern GL_DEBUG_TYPE_PUSH_GROUP_KHR
+  , pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
+  , pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR
+  , pattern GL_DISPLAY_LIST
+  , pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH
+  , pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR
+  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES
+  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES_KHR
+  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH
+  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH_KHR
+  , pattern GL_MAX_LABEL_LENGTH
+  , pattern GL_MAX_LABEL_LENGTH_KHR
+  , pattern GL_PROGRAM
+  , pattern GL_PROGRAM_KHR
+  , pattern GL_PROGRAM_PIPELINE
+  , pattern GL_QUERY
+  , pattern GL_QUERY_KHR
+  , pattern GL_SAMPLER
+  , pattern GL_SAMPLER_KHR
+  , pattern GL_SHADER
+  , pattern GL_SHADER_KHR
+  , pattern GL_STACK_OVERFLOW
+  , pattern GL_STACK_OVERFLOW_KHR
+  , pattern GL_STACK_UNDERFLOW
+  , pattern GL_STACK_UNDERFLOW_KHR
+  , pattern GL_VERTEX_ARRAY
+  , pattern GL_VERTEX_ARRAY_KHR
+) 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_KHR_debug :: Bool
+gl_KHR_debug = member "GL_KHR_debug" extensions
+
+glDebugMessageCallbackKHR :: MonadIO m => GLDEBUGPROCKHR -> Ptr () -> m ()
+glDebugMessageCallbackKHR = ffiDEBUGPROCKHRPtrVIOV glDebugMessageCallbackKHRFunPtr
+
+glDebugMessageCallbackKHRFunPtr :: FunPtr (GLDEBUGPROCKHR -> Ptr () -> IO ())
+glDebugMessageCallbackKHRFunPtr = unsafePerformIO (getProcAddress "glDebugMessageCallbackKHR")
+
+{-# NOINLINE glDebugMessageCallbackKHRFunPtr #-}
+
+glDebugMessageControlKHR :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> m ()
+glDebugMessageControlKHR = ffienumenumenumsizeiPtruintbooleanIOV glDebugMessageControlKHRFunPtr
+
+glDebugMessageControlKHRFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ())
+glDebugMessageControlKHRFunPtr = unsafePerformIO (getProcAddress "glDebugMessageControlKHR")
+
+{-# NOINLINE glDebugMessageControlKHRFunPtr #-}
+
+glDebugMessageInsertKHR :: MonadIO m => GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> m ()
+glDebugMessageInsertKHR = ffienumenumuintenumsizeiPtrcharIOV glDebugMessageInsertKHRFunPtr
+
+glDebugMessageInsertKHRFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> IO ())
+glDebugMessageInsertKHRFunPtr = unsafePerformIO (getProcAddress "glDebugMessageInsertKHR")
+
+{-# NOINLINE glDebugMessageInsertKHRFunPtr #-}
+
+glGetDebugMessageLogKHR :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> m GLuint
+glGetDebugMessageLogKHR = ffiuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint glGetDebugMessageLogKHRFunPtr
+
+glGetDebugMessageLogKHRFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> IO GLuint)
+glGetDebugMessageLogKHRFunPtr = unsafePerformIO (getProcAddress "glGetDebugMessageLogKHR")
+
+{-# NOINLINE glGetDebugMessageLogKHRFunPtr #-}
+
+glGetObjectLabelKHR :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetObjectLabelKHR = ffienumuintsizeiPtrsizeiPtrcharIOV glGetObjectLabelKHRFunPtr
+
+glGetObjectLabelKHRFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetObjectLabelKHRFunPtr = unsafePerformIO (getProcAddress "glGetObjectLabelKHR")
+
+{-# NOINLINE glGetObjectLabelKHRFunPtr #-}
+
+glGetObjectPtrLabelKHR :: MonadIO m => Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetObjectPtrLabelKHR = ffiPtrVsizeiPtrsizeiPtrcharIOV glGetObjectPtrLabelKHRFunPtr
+
+glGetObjectPtrLabelKHRFunPtr :: FunPtr (Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetObjectPtrLabelKHRFunPtr = unsafePerformIO (getProcAddress "glGetObjectPtrLabelKHR")
+
+{-# NOINLINE glGetObjectPtrLabelKHRFunPtr #-}
+
+glGetPointervKHR :: MonadIO m => GLenum -> Ptr () -> m ()
+glGetPointervKHR = ffienumPtrVIOV glGetPointervKHRFunPtr
+
+glGetPointervKHRFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
+glGetPointervKHRFunPtr = unsafePerformIO (getProcAddress "glGetPointervKHR")
+
+{-# NOINLINE glGetPointervKHRFunPtr #-}
+
+glObjectLabelKHR :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
+glObjectLabelKHR = ffienumuintsizeiPtrcharIOV glObjectLabelKHRFunPtr
+
+glObjectLabelKHRFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ())
+glObjectLabelKHRFunPtr = unsafePerformIO (getProcAddress "glObjectLabelKHR")
+
+{-# NOINLINE glObjectLabelKHRFunPtr #-}
+
+glObjectPtrLabelKHR :: MonadIO m => Ptr () -> GLsizei -> Ptr GLchar -> m ()
+glObjectPtrLabelKHR = ffiPtrVsizeiPtrcharIOV glObjectPtrLabelKHRFunPtr
+
+glObjectPtrLabelKHRFunPtr :: FunPtr (Ptr () -> GLsizei -> Ptr GLchar -> IO ())
+glObjectPtrLabelKHRFunPtr = unsafePerformIO (getProcAddress "glObjectPtrLabelKHR")
+
+{-# NOINLINE glObjectPtrLabelKHRFunPtr #-}
+
+glPopDebugGroupKHR :: MonadIO m => m ()
+glPopDebugGroupKHR = ffiIOV glPopDebugGroupKHRFunPtr
+
+glPopDebugGroupKHRFunPtr :: FunPtr (IO ())
+glPopDebugGroupKHRFunPtr = unsafePerformIO (getProcAddress "glPopDebugGroupKHR")
+
+{-# NOINLINE glPopDebugGroupKHRFunPtr #-}
+
+glPushDebugGroupKHR :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
+glPushDebugGroupKHR = ffienumuintsizeiPtrcharIOV glPushDebugGroupKHRFunPtr
+
+glPushDebugGroupKHRFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ())
+glPushDebugGroupKHRFunPtr = unsafePerformIO (getProcAddress "glPushDebugGroupKHR")
+
+{-# NOINLINE glPushDebugGroupKHRFunPtr #-}
+
+pattern GL_BUFFER_KHR = 0x82E0 :: GLenum
+
+pattern GL_CONTEXT_FLAG_DEBUG_BIT_KHR = 0x00000002 :: GLenum
+
+pattern GL_DEBUG_CALLBACK_FUNCTION_KHR = 0x8244 :: GLenum
+
+pattern GL_DEBUG_CALLBACK_USER_PARAM_KHR = 0x8245 :: GLenum
+
+pattern GL_DEBUG_GROUP_STACK_DEPTH_KHR = 0x826D :: GLenum
+
+pattern GL_DEBUG_LOGGED_MESSAGES_KHR = 0x9145 :: GLenum
+
+pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 0x8243 :: GLenum
+
+pattern GL_DEBUG_OUTPUT_KHR = 0x92E0 :: GLenum
+
+pattern GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = 0x8242 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_HIGH_KHR = 0x9146 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_LOW_KHR = 0x9148 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_MEDIUM_KHR = 0x9147 :: GLenum
+
+pattern GL_DEBUG_SEVERITY_NOTIFICATION_KHR = 0x826B :: GLenum
+
+pattern GL_DEBUG_SOURCE_API_KHR = 0x8246 :: GLenum
+
+pattern GL_DEBUG_SOURCE_APPLICATION_KHR = 0x824A :: GLenum
+
+pattern GL_DEBUG_SOURCE_OTHER_KHR = 0x824B :: GLenum
+
+pattern GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = 0x8248 :: GLenum
+
+pattern GL_DEBUG_SOURCE_THIRD_PARTY_KHR = 0x8249 :: GLenum
+
+pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 0x8247 :: GLenum
+
+pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 0x824D :: GLenum
+
+pattern GL_DEBUG_TYPE_ERROR_KHR = 0x824C :: GLenum
+
+pattern GL_DEBUG_TYPE_MARKER_KHR = 0x8268 :: GLenum
+
+pattern GL_DEBUG_TYPE_OTHER_KHR = 0x8251 :: GLenum
+
+pattern GL_DEBUG_TYPE_PERFORMANCE_KHR = 0x8250 :: GLenum
+
+pattern GL_DEBUG_TYPE_POP_GROUP_KHR = 0x826A :: GLenum
+
+pattern GL_DEBUG_TYPE_PORTABILITY_KHR = 0x824F :: GLenum
+
+pattern GL_DEBUG_TYPE_PUSH_GROUP_KHR = 0x8269 :: GLenum
+
+pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 0x824E :: GLenum
+
+pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 0x826C :: GLenum
+
+pattern GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = 0x9144 :: GLenum
+
+pattern GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = 0x9143 :: GLenum
+
+pattern GL_MAX_LABEL_LENGTH_KHR = 0x82E8 :: GLenum
+
+pattern GL_PROGRAM_KHR = 0x82E2 :: GLenum
+
+pattern GL_QUERY_KHR = 0x82E3 :: GLenum
+
+pattern GL_SAMPLER_KHR = 0x82E6 :: GLenum
+
+pattern GL_SHADER_KHR = 0x82E1 :: GLenum
+
+pattern GL_STACK_OVERFLOW_KHR = 0x0503 :: GLenum
+
+pattern GL_STACK_UNDERFLOW_KHR = 0x0504 :: GLenum
+
+pattern GL_VERTEX_ARRAY_KHR = 0x8074 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/RobustBufferAccessBehavior.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/RobustBufferAccessBehavior.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/RobustBufferAccessBehavior.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.RobustBufferAccessBehavior (
+  -- * Extension Support
+    gl_KHR_robust_buffer_access_behavior
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_KHR_robust_buffer_access_behavior :: Bool
+gl_KHR_robust_buffer_access_behavior = member "GL_KHR_robust_buffer_access_behavior" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/Robustness.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/Robustness.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/Robustness.hs
@@ -0,0 +1,105 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.Robustness (
+  -- * Extension Support
+    gl_KHR_robustness
+
+  -- * GL_KHR_robustness
+  , glGetGraphicsResetStatus
+  , glGetGraphicsResetStatusKHR
+  , glGetnUniformfv
+  , glGetnUniformfvKHR
+  , glGetnUniformiv
+  , glGetnUniformivKHR
+  , glGetnUniformuiv
+  , glGetnUniformuivKHR
+  , glReadnPixels
+  , glReadnPixelsKHR
+  , pattern GL_CONTEXT_LOST
+  , pattern GL_CONTEXT_LOST_KHR
+  , pattern GL_CONTEXT_ROBUST_ACCESS
+  , pattern GL_CONTEXT_ROBUST_ACCESS_KHR
+  , pattern GL_GUILTY_CONTEXT_RESET
+  , pattern GL_GUILTY_CONTEXT_RESET_KHR
+  , pattern GL_INNOCENT_CONTEXT_RESET
+  , pattern GL_INNOCENT_CONTEXT_RESET_KHR
+  , pattern GL_LOSE_CONTEXT_ON_RESET
+  , pattern GL_LOSE_CONTEXT_ON_RESET_KHR
+  , pattern GL_NO_ERROR
+  , pattern GL_NO_RESET_NOTIFICATION
+  , pattern GL_NO_RESET_NOTIFICATION_KHR
+  , pattern GL_RESET_NOTIFICATION_STRATEGY
+  , pattern GL_RESET_NOTIFICATION_STRATEGY_KHR
+  , pattern GL_UNKNOWN_CONTEXT_RESET
+  , pattern GL_UNKNOWN_CONTEXT_RESET_KHR
+) 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_KHR_robustness :: Bool
+gl_KHR_robustness = member "GL_KHR_robustness" extensions
+
+glGetGraphicsResetStatusKHR :: MonadIO m => m GLenum
+glGetGraphicsResetStatusKHR = ffiIOenum glGetGraphicsResetStatusKHRFunPtr
+
+glGetGraphicsResetStatusKHRFunPtr :: FunPtr (IO GLenum)
+glGetGraphicsResetStatusKHRFunPtr = unsafePerformIO (getProcAddress "glGetGraphicsResetStatusKHR")
+
+{-# NOINLINE glGetGraphicsResetStatusKHRFunPtr #-}
+
+glGetnUniformfvKHR :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
+glGetnUniformfvKHR = ffiuintintsizeiPtrfloatIOV glGetnUniformfvKHRFunPtr
+
+glGetnUniformfvKHRFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
+glGetnUniformfvKHRFunPtr = unsafePerformIO (getProcAddress "glGetnUniformfvKHR")
+
+{-# NOINLINE glGetnUniformfvKHRFunPtr #-}
+
+glGetnUniformivKHR :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
+glGetnUniformivKHR = ffiuintintsizeiPtrintIOV glGetnUniformivKHRFunPtr
+
+glGetnUniformivKHRFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
+glGetnUniformivKHRFunPtr = unsafePerformIO (getProcAddress "glGetnUniformivKHR")
+
+{-# NOINLINE glGetnUniformivKHRFunPtr #-}
+
+glGetnUniformuivKHR :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
+glGetnUniformuivKHR = ffiuintintsizeiPtruintIOV glGetnUniformuivKHRFunPtr
+
+glGetnUniformuivKHRFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
+glGetnUniformuivKHRFunPtr = unsafePerformIO (getProcAddress "glGetnUniformuivKHR")
+
+{-# NOINLINE glGetnUniformuivKHRFunPtr #-}
+
+glReadnPixelsKHR :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glReadnPixelsKHR = ffiintintsizeisizeienumenumsizeiPtrVIOV glReadnPixelsKHRFunPtr
+
+glReadnPixelsKHRFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glReadnPixelsKHRFunPtr = unsafePerformIO (getProcAddress "glReadnPixelsKHR")
+
+{-# NOINLINE glReadnPixelsKHRFunPtr #-}
+
+pattern GL_CONTEXT_LOST_KHR = 0x0507 :: GLenum
+
+pattern GL_CONTEXT_ROBUST_ACCESS = 0x90F3 :: GLenum
+
+pattern GL_CONTEXT_ROBUST_ACCESS_KHR = 0x90F3 :: GLenum
+
+pattern GL_GUILTY_CONTEXT_RESET_KHR = 0x8253 :: GLenum
+
+pattern GL_INNOCENT_CONTEXT_RESET_KHR = 0x8254 :: GLenum
+
+pattern GL_LOSE_CONTEXT_ON_RESET_KHR = 0x8252 :: GLenum
+
+pattern GL_NO_RESET_NOTIFICATION_KHR = 0x8261 :: GLenum
+
+pattern GL_RESET_NOTIFICATION_STRATEGY_KHR = 0x8256 :: GLenum
+
+pattern GL_UNKNOWN_CONTEXT_RESET_KHR = 0x8255 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/TextureCompressionAstcHdr.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/TextureCompressionAstcHdr.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/TextureCompressionAstcHdr.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcHdr (
+  -- * Extension Support
+    gl_KHR_texture_compression_astc_hdr
+
+  -- * GL_KHR_texture_compression_astc_hdr
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x10_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x8_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x10_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x12_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_4x4_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x4_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x8_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_KHR_texture_compression_astc_hdr :: Bool
+gl_KHR_texture_compression_astc_hdr = member "GL_KHR_texture_compression_astc_hdr" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/TextureCompressionAstcLdr.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/TextureCompressionAstcLdr.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/KHR/TextureCompressionAstcLdr.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcLdr (
+  -- * Extension Support
+    gl_KHR_texture_compression_astc_ldr
+
+  -- * GL_KHR_texture_compression_astc_ldr
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x10_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x8_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x10_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x12_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_4x4_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x4_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x8_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_KHR_texture_compression_astc_ldr :: Bool
+gl_KHR_texture_compression_astc_ldr = member "GL_KHR_texture_compression_astc_ldr" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/MESA.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA.hs
@@ -0,0 +1,14 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.MESA (
+  -- * MESA Extensions
+    module Graphics.GL.Raw.Extension.MESA.PackInvert
+  , module Graphics.GL.Raw.Extension.MESA.ResizeBuffers
+  , module Graphics.GL.Raw.Extension.MESA.WindowPos
+  , module Graphics.GL.Raw.Extension.MESA.YcbcrTexture
+) where
+
+import Graphics.GL.Raw.Extension.MESA.PackInvert
+import Graphics.GL.Raw.Extension.MESA.ResizeBuffers
+import Graphics.GL.Raw.Extension.MESA.WindowPos
+import Graphics.GL.Raw.Extension.MESA.YcbcrTexture
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/PackInvert.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/PackInvert.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/PackInvert.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.MESA.PackInvert (
+  -- * Extension Support
+    gl_MESA_pack_invert
+
+  -- * GL_MESA_pack_invert
+  , pattern GL_PACK_INVERT_MESA
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_MESA_pack_invert :: Bool
+gl_MESA_pack_invert = member "GL_MESA_pack_invert" extensions
+
+pattern GL_PACK_INVERT_MESA = 0x8758 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/ResizeBuffers.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/ResizeBuffers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/ResizeBuffers.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.MESA.ResizeBuffers (
+  -- * Extension Support
+    gl_MESA_resize_buffers
+
+  -- * GL_MESA_resize_buffers
+  , glResizeBuffersMESA
+) 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 System.IO.Unsafe
+
+gl_MESA_resize_buffers :: Bool
+gl_MESA_resize_buffers = member "GL_MESA_resize_buffers" extensions
+
+glResizeBuffersMESA :: MonadIO m => m ()
+glResizeBuffersMESA = ffiIOV glResizeBuffersMESAFunPtr
+
+glResizeBuffersMESAFunPtr :: FunPtr (IO ())
+glResizeBuffersMESAFunPtr = unsafePerformIO (getProcAddress "glResizeBuffersMESA")
+
+{-# NOINLINE glResizeBuffersMESAFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/WindowPos.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/WindowPos.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/WindowPos.hs
@@ -0,0 +1,235 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.MESA.WindowPos (
+  -- * Extension Support
+    gl_MESA_window_pos
+
+  -- * GL_MESA_window_pos
+  , glWindowPos2dMESA
+  , glWindowPos2dvMESA
+  , glWindowPos2fMESA
+  , glWindowPos2fvMESA
+  , glWindowPos2iMESA
+  , glWindowPos2ivMESA
+  , glWindowPos2sMESA
+  , glWindowPos2svMESA
+  , glWindowPos3dMESA
+  , glWindowPos3dvMESA
+  , glWindowPos3fMESA
+  , glWindowPos3fvMESA
+  , glWindowPos3iMESA
+  , glWindowPos3ivMESA
+  , glWindowPos3sMESA
+  , glWindowPos3svMESA
+  , glWindowPos4dMESA
+  , glWindowPos4dvMESA
+  , glWindowPos4fMESA
+  , glWindowPos4fvMESA
+  , glWindowPos4iMESA
+  , glWindowPos4ivMESA
+  , glWindowPos4sMESA
+  , glWindowPos4svMESA
+) 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_MESA_window_pos :: Bool
+gl_MESA_window_pos = member "GL_MESA_window_pos" extensions
+
+glWindowPos2dMESA :: MonadIO m => GLdouble -> GLdouble -> m ()
+glWindowPos2dMESA = ffidoubledoubleIOV glWindowPos2dMESAFunPtr
+
+glWindowPos2dMESAFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
+glWindowPos2dMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2dMESA")
+
+{-# NOINLINE glWindowPos2dMESAFunPtr #-}
+
+glWindowPos2dvMESA :: MonadIO m => Ptr GLdouble -> m ()
+glWindowPos2dvMESA = ffiPtrdoubleIOV glWindowPos2dvMESAFunPtr
+
+glWindowPos2dvMESAFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glWindowPos2dvMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2dvMESA")
+
+{-# NOINLINE glWindowPos2dvMESAFunPtr #-}
+
+glWindowPos2fMESA :: MonadIO m => GLfloat -> GLfloat -> m ()
+glWindowPos2fMESA = ffifloatfloatIOV glWindowPos2fMESAFunPtr
+
+glWindowPos2fMESAFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
+glWindowPos2fMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2fMESA")
+
+{-# NOINLINE glWindowPos2fMESAFunPtr #-}
+
+glWindowPos2fvMESA :: MonadIO m => Ptr GLfloat -> m ()
+glWindowPos2fvMESA = ffiPtrfloatIOV glWindowPos2fvMESAFunPtr
+
+glWindowPos2fvMESAFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glWindowPos2fvMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2fvMESA")
+
+{-# NOINLINE glWindowPos2fvMESAFunPtr #-}
+
+glWindowPos2iMESA :: MonadIO m => GLint -> GLint -> m ()
+glWindowPos2iMESA = ffiintintIOV glWindowPos2iMESAFunPtr
+
+glWindowPos2iMESAFunPtr :: FunPtr (GLint -> GLint -> IO ())
+glWindowPos2iMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2iMESA")
+
+{-# NOINLINE glWindowPos2iMESAFunPtr #-}
+
+glWindowPos2ivMESA :: MonadIO m => Ptr GLint -> m ()
+glWindowPos2ivMESA = ffiPtrintIOV glWindowPos2ivMESAFunPtr
+
+glWindowPos2ivMESAFunPtr :: FunPtr (Ptr GLint -> IO ())
+glWindowPos2ivMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2ivMESA")
+
+{-# NOINLINE glWindowPos2ivMESAFunPtr #-}
+
+glWindowPos2sMESA :: MonadIO m => GLshort -> GLshort -> m ()
+glWindowPos2sMESA = ffishortshortIOV glWindowPos2sMESAFunPtr
+
+glWindowPos2sMESAFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
+glWindowPos2sMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2sMESA")
+
+{-# NOINLINE glWindowPos2sMESAFunPtr #-}
+
+glWindowPos2svMESA :: MonadIO m => Ptr GLshort -> m ()
+glWindowPos2svMESA = ffiPtrshortIOV glWindowPos2svMESAFunPtr
+
+glWindowPos2svMESAFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glWindowPos2svMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos2svMESA")
+
+{-# NOINLINE glWindowPos2svMESAFunPtr #-}
+
+glWindowPos3dMESA :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
+glWindowPos3dMESA = ffidoubledoubledoubleIOV glWindowPos3dMESAFunPtr
+
+glWindowPos3dMESAFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
+glWindowPos3dMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3dMESA")
+
+{-# NOINLINE glWindowPos3dMESAFunPtr #-}
+
+glWindowPos3dvMESA :: MonadIO m => Ptr GLdouble -> m ()
+glWindowPos3dvMESA = ffiPtrdoubleIOV glWindowPos3dvMESAFunPtr
+
+glWindowPos3dvMESAFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glWindowPos3dvMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3dvMESA")
+
+{-# NOINLINE glWindowPos3dvMESAFunPtr #-}
+
+glWindowPos3fMESA :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
+glWindowPos3fMESA = ffifloatfloatfloatIOV glWindowPos3fMESAFunPtr
+
+glWindowPos3fMESAFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
+glWindowPos3fMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3fMESA")
+
+{-# NOINLINE glWindowPos3fMESAFunPtr #-}
+
+glWindowPos3fvMESA :: MonadIO m => Ptr GLfloat -> m ()
+glWindowPos3fvMESA = ffiPtrfloatIOV glWindowPos3fvMESAFunPtr
+
+glWindowPos3fvMESAFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glWindowPos3fvMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3fvMESA")
+
+{-# NOINLINE glWindowPos3fvMESAFunPtr #-}
+
+glWindowPos3iMESA :: MonadIO m => GLint -> GLint -> GLint -> m ()
+glWindowPos3iMESA = ffiintintintIOV glWindowPos3iMESAFunPtr
+
+glWindowPos3iMESAFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
+glWindowPos3iMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3iMESA")
+
+{-# NOINLINE glWindowPos3iMESAFunPtr #-}
+
+glWindowPos3ivMESA :: MonadIO m => Ptr GLint -> m ()
+glWindowPos3ivMESA = ffiPtrintIOV glWindowPos3ivMESAFunPtr
+
+glWindowPos3ivMESAFunPtr :: FunPtr (Ptr GLint -> IO ())
+glWindowPos3ivMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3ivMESA")
+
+{-# NOINLINE glWindowPos3ivMESAFunPtr #-}
+
+glWindowPos3sMESA :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
+glWindowPos3sMESA = ffishortshortshortIOV glWindowPos3sMESAFunPtr
+
+glWindowPos3sMESAFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
+glWindowPos3sMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3sMESA")
+
+{-# NOINLINE glWindowPos3sMESAFunPtr #-}
+
+glWindowPos3svMESA :: MonadIO m => Ptr GLshort -> m ()
+glWindowPos3svMESA = ffiPtrshortIOV glWindowPos3svMESAFunPtr
+
+glWindowPos3svMESAFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glWindowPos3svMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos3svMESA")
+
+{-# NOINLINE glWindowPos3svMESAFunPtr #-}
+
+glWindowPos4dMESA :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glWindowPos4dMESA = ffidoubledoubledoubledoubleIOV glWindowPos4dMESAFunPtr
+
+glWindowPos4dMESAFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glWindowPos4dMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4dMESA")
+
+{-# NOINLINE glWindowPos4dMESAFunPtr #-}
+
+glWindowPos4dvMESA :: MonadIO m => Ptr GLdouble -> m ()
+glWindowPos4dvMESA = ffiPtrdoubleIOV glWindowPos4dvMESAFunPtr
+
+glWindowPos4dvMESAFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glWindowPos4dvMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4dvMESA")
+
+{-# NOINLINE glWindowPos4dvMESAFunPtr #-}
+
+glWindowPos4fMESA :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glWindowPos4fMESA = ffifloatfloatfloatfloatIOV glWindowPos4fMESAFunPtr
+
+glWindowPos4fMESAFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glWindowPos4fMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4fMESA")
+
+{-# NOINLINE glWindowPos4fMESAFunPtr #-}
+
+glWindowPos4fvMESA :: MonadIO m => Ptr GLfloat -> m ()
+glWindowPos4fvMESA = ffiPtrfloatIOV glWindowPos4fvMESAFunPtr
+
+glWindowPos4fvMESAFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glWindowPos4fvMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4fvMESA")
+
+{-# NOINLINE glWindowPos4fvMESAFunPtr #-}
+
+glWindowPos4iMESA :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
+glWindowPos4iMESA = ffiintintintintIOV glWindowPos4iMESAFunPtr
+
+glWindowPos4iMESAFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
+glWindowPos4iMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4iMESA")
+
+{-# NOINLINE glWindowPos4iMESAFunPtr #-}
+
+glWindowPos4ivMESA :: MonadIO m => Ptr GLint -> m ()
+glWindowPos4ivMESA = ffiPtrintIOV glWindowPos4ivMESAFunPtr
+
+glWindowPos4ivMESAFunPtr :: FunPtr (Ptr GLint -> IO ())
+glWindowPos4ivMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4ivMESA")
+
+{-# NOINLINE glWindowPos4ivMESAFunPtr #-}
+
+glWindowPos4sMESA :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
+glWindowPos4sMESA = ffishortshortshortshortIOV glWindowPos4sMESAFunPtr
+
+glWindowPos4sMESAFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
+glWindowPos4sMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4sMESA")
+
+{-# NOINLINE glWindowPos4sMESAFunPtr #-}
+
+glWindowPos4svMESA :: MonadIO m => Ptr GLshort -> m ()
+glWindowPos4svMESA = ffiPtrshortIOV glWindowPos4svMESAFunPtr
+
+glWindowPos4svMESAFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glWindowPos4svMESAFunPtr = unsafePerformIO (getProcAddress "glWindowPos4svMESA")
+
+{-# NOINLINE glWindowPos4svMESAFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/YcbcrTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/YcbcrTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/MESA/YcbcrTexture.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.MESA.YcbcrTexture (
+  -- * Extension Support
+    gl_MESA_ycbcr_texture
+
+  -- * GL_MESA_ycbcr_texture
+  , pattern GL_UNSIGNED_SHORT_8_8_MESA
+  , pattern GL_UNSIGNED_SHORT_8_8_REV_MESA
+  , pattern GL_YCBCR_MESA
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_MESA_ycbcr_texture :: Bool
+gl_MESA_ycbcr_texture = member "GL_MESA_ycbcr_texture" extensions
+
+pattern GL_UNSIGNED_SHORT_8_8_MESA = 0x85BA :: GLenum
+
+pattern GL_UNSIGNED_SHORT_8_8_REV_MESA = 0x85BB :: GLenum
+
+pattern GL_YCBCR_MESA = 0x8757 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/MESAX.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/MESAX.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/MESAX.hs
@@ -0,0 +1,8 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.MESAX (
+  -- * MESAX Extensions
+    module Graphics.GL.Raw.Extension.MESAX.TextureStack
+) where
+
+import Graphics.GL.Raw.Extension.MESAX.TextureStack
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/MESAX/TextureStack.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/MESAX/TextureStack.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/MESAX/TextureStack.hs
@@ -0,0 +1,33 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.MESAX.TextureStack (
+  -- * Extension Support
+    gl_MESAX_texture_stack
+
+  -- * GL_MESAX_texture_stack
+  , pattern GL_PROXY_TEXTURE_1D_STACK_MESAX
+  , pattern GL_PROXY_TEXTURE_2D_STACK_MESAX
+  , pattern GL_TEXTURE_1D_STACK_BINDING_MESAX
+  , pattern GL_TEXTURE_1D_STACK_MESAX
+  , pattern GL_TEXTURE_2D_STACK_BINDING_MESAX
+  , pattern GL_TEXTURE_2D_STACK_MESAX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_MESAX_texture_stack :: Bool
+gl_MESAX_texture_stack = member "GL_MESAX_texture_stack" extensions
+
+pattern GL_PROXY_TEXTURE_1D_STACK_MESAX = 0x875B :: GLenum
+
+pattern GL_PROXY_TEXTURE_2D_STACK_MESAX = 0x875C :: GLenum
+
+pattern GL_TEXTURE_1D_STACK_BINDING_MESAX = 0x875D :: GLenum
+
+pattern GL_TEXTURE_1D_STACK_MESAX = 0x8759 :: GLenum
+
+pattern GL_TEXTURE_2D_STACK_BINDING_MESAX = 0x875E :: GLenum
+
+pattern GL_TEXTURE_2D_STACK_MESAX = 0x875A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV.hs
@@ -0,0 +1,234 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV (
+  -- * NV Extensions
+    module Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirect
+  , module Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirectCount
+  , module Graphics.GL.Raw.Extension.NV.BindlessTexture
+  , module Graphics.GL.Raw.Extension.NV.BlendEquationAdvanced
+  , module Graphics.GL.Raw.Extension.NV.BlendEquationAdvancedCoherent
+  , module Graphics.GL.Raw.Extension.NV.BlendSquare
+  , module Graphics.GL.Raw.Extension.NV.ComputeProgram5
+  , module Graphics.GL.Raw.Extension.NV.ConditionalRender
+  , module Graphics.GL.Raw.Extension.NV.ConservativeRaster
+  , module Graphics.GL.Raw.Extension.NV.CopyBuffer
+  , module Graphics.GL.Raw.Extension.NV.CopyDepthToColor
+  , module Graphics.GL.Raw.Extension.NV.CopyImage
+  , module Graphics.GL.Raw.Extension.NV.CoverageSample
+  , module Graphics.GL.Raw.Extension.NV.DeepTexture3D
+  , module Graphics.GL.Raw.Extension.NV.DepthBufferFloat
+  , module Graphics.GL.Raw.Extension.NV.DepthClamp
+  , module Graphics.GL.Raw.Extension.NV.DepthNonlinear
+  , module Graphics.GL.Raw.Extension.NV.DrawBuffers
+  , module Graphics.GL.Raw.Extension.NV.DrawInstanced
+  , module Graphics.GL.Raw.Extension.NV.DrawTexture
+  , module Graphics.GL.Raw.Extension.NV.Evaluators
+  , module Graphics.GL.Raw.Extension.NV.ExplicitAttribLocation
+  , module Graphics.GL.Raw.Extension.NV.ExplicitMultisample
+  , module Graphics.GL.Raw.Extension.NV.FboColorAttachments
+  , module Graphics.GL.Raw.Extension.NV.Fence
+  , module Graphics.GL.Raw.Extension.NV.FillRectangle
+  , module Graphics.GL.Raw.Extension.NV.FloatBuffer
+  , module Graphics.GL.Raw.Extension.NV.FogDistance
+  , module Graphics.GL.Raw.Extension.NV.FragmentCoverageToColor
+  , module Graphics.GL.Raw.Extension.NV.FragmentProgram
+  , module Graphics.GL.Raw.Extension.NV.FragmentProgram2
+  , module Graphics.GL.Raw.Extension.NV.FragmentProgram4
+  , module Graphics.GL.Raw.Extension.NV.FragmentProgramOption
+  , module Graphics.GL.Raw.Extension.NV.FragmentShaderInterlock
+  , module Graphics.GL.Raw.Extension.NV.FramebufferBlit
+  , module Graphics.GL.Raw.Extension.NV.FramebufferMixedSamples
+  , module Graphics.GL.Raw.Extension.NV.FramebufferMultisample
+  , module Graphics.GL.Raw.Extension.NV.FramebufferMultisampleCoverage
+  , module Graphics.GL.Raw.Extension.NV.GenerateMipmapSRGB
+  , module Graphics.GL.Raw.Extension.NV.GeometryProgram4
+  , module Graphics.GL.Raw.Extension.NV.GeometryShader4
+  , module Graphics.GL.Raw.Extension.NV.GeometryShaderPassthrough
+  , module Graphics.GL.Raw.Extension.NV.GpuProgram4
+  , module Graphics.GL.Raw.Extension.NV.GpuProgram5
+  , module Graphics.GL.Raw.Extension.NV.GpuProgram5MemExtended
+  , module Graphics.GL.Raw.Extension.NV.GpuShader5
+  , module Graphics.GL.Raw.Extension.NV.HalfFloat
+  , module Graphics.GL.Raw.Extension.NV.InstancedArrays
+  , module Graphics.GL.Raw.Extension.NV.InternalformatSampleQuery
+  , module Graphics.GL.Raw.Extension.NV.LightMaxExponent
+  , module Graphics.GL.Raw.Extension.NV.MultisampleCoverage
+  , module Graphics.GL.Raw.Extension.NV.MultisampleFilterHint
+  , module Graphics.GL.Raw.Extension.NV.NonSquareMatrices
+  , module Graphics.GL.Raw.Extension.NV.OcclusionQuery
+  , module Graphics.GL.Raw.Extension.NV.PackedDepthStencil
+  , module Graphics.GL.Raw.Extension.NV.ParameterBufferObject
+  , module Graphics.GL.Raw.Extension.NV.ParameterBufferObject2
+  , module Graphics.GL.Raw.Extension.NV.PathRendering
+  , module Graphics.GL.Raw.Extension.NV.PathRenderingSharedEdge
+  , module Graphics.GL.Raw.Extension.NV.PixelDataRange
+  , module Graphics.GL.Raw.Extension.NV.PointSprite
+  , module Graphics.GL.Raw.Extension.NV.PresentVideo
+  , module Graphics.GL.Raw.Extension.NV.PrimitiveRestart
+  , module Graphics.GL.Raw.Extension.NV.ReadBuffer
+  , module Graphics.GL.Raw.Extension.NV.ReadBufferFront
+  , module Graphics.GL.Raw.Extension.NV.ReadDepth
+  , module Graphics.GL.Raw.Extension.NV.ReadDepthStencil
+  , module Graphics.GL.Raw.Extension.NV.ReadStencil
+  , module Graphics.GL.Raw.Extension.NV.RegisterCombiners
+  , module Graphics.GL.Raw.Extension.NV.RegisterCombiners2
+  , module Graphics.GL.Raw.Extension.NV.SRGBFormats
+  , module Graphics.GL.Raw.Extension.NV.SampleLocations
+  , module Graphics.GL.Raw.Extension.NV.SampleMaskOverrideCoverage
+  , module Graphics.GL.Raw.Extension.NV.ShaderAtomicCounters
+  , module Graphics.GL.Raw.Extension.NV.ShaderAtomicFloat
+  , module Graphics.GL.Raw.Extension.NV.ShaderAtomicFp16Vector
+  , module Graphics.GL.Raw.Extension.NV.ShaderAtomicInt64
+  , module Graphics.GL.Raw.Extension.NV.ShaderBufferLoad
+  , module Graphics.GL.Raw.Extension.NV.ShaderBufferStore
+  , module Graphics.GL.Raw.Extension.NV.ShaderStorageBufferObject
+  , module Graphics.GL.Raw.Extension.NV.ShaderThreadGroup
+  , module Graphics.GL.Raw.Extension.NV.ShaderThreadShuffle
+  , module Graphics.GL.Raw.Extension.NV.ShadowSamplersArray
+  , module Graphics.GL.Raw.Extension.NV.ShadowSamplersCube
+  , module Graphics.GL.Raw.Extension.NV.TessellationProgram5
+  , module Graphics.GL.Raw.Extension.NV.TexgenEmboss
+  , module Graphics.GL.Raw.Extension.NV.TexgenReflection
+  , module Graphics.GL.Raw.Extension.NV.TextureBarrier
+  , module Graphics.GL.Raw.Extension.NV.TextureBorderClamp
+  , module Graphics.GL.Raw.Extension.NV.TextureCompressionS3tcUpdate
+  , module Graphics.GL.Raw.Extension.NV.TextureCompressionVtc
+  , module Graphics.GL.Raw.Extension.NV.TextureEnvCombine4
+  , module Graphics.GL.Raw.Extension.NV.TextureExpandNormal
+  , module Graphics.GL.Raw.Extension.NV.TextureMultisample
+  , module Graphics.GL.Raw.Extension.NV.TextureNpot2DMipmap
+  , module Graphics.GL.Raw.Extension.NV.TextureRectangle
+  , module Graphics.GL.Raw.Extension.NV.TextureShader
+  , module Graphics.GL.Raw.Extension.NV.TextureShader2
+  , module Graphics.GL.Raw.Extension.NV.TextureShader3
+  , module Graphics.GL.Raw.Extension.NV.TransformFeedback
+  , module Graphics.GL.Raw.Extension.NV.TransformFeedback2
+  , module Graphics.GL.Raw.Extension.NV.UniformBufferUnifiedMemory
+  , module Graphics.GL.Raw.Extension.NV.VdpauInterop
+  , module Graphics.GL.Raw.Extension.NV.VertexArrayRange
+  , module Graphics.GL.Raw.Extension.NV.VertexArrayRange2
+  , module Graphics.GL.Raw.Extension.NV.VertexAttribInteger64bit
+  , module Graphics.GL.Raw.Extension.NV.VertexBufferUnifiedMemory
+  , module Graphics.GL.Raw.Extension.NV.VertexProgram
+  , module Graphics.GL.Raw.Extension.NV.VertexProgram11
+  , module Graphics.GL.Raw.Extension.NV.VertexProgram2
+  , module Graphics.GL.Raw.Extension.NV.VertexProgram2Option
+  , module Graphics.GL.Raw.Extension.NV.VertexProgram3
+  , module Graphics.GL.Raw.Extension.NV.VertexProgram4
+  , module Graphics.GL.Raw.Extension.NV.VideoCapture
+) where
+
+import Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirect
+import Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirectCount
+import Graphics.GL.Raw.Extension.NV.BindlessTexture
+import Graphics.GL.Raw.Extension.NV.BlendEquationAdvanced
+import Graphics.GL.Raw.Extension.NV.BlendEquationAdvancedCoherent
+import Graphics.GL.Raw.Extension.NV.BlendSquare
+import Graphics.GL.Raw.Extension.NV.ComputeProgram5
+import Graphics.GL.Raw.Extension.NV.ConditionalRender
+import Graphics.GL.Raw.Extension.NV.ConservativeRaster
+import Graphics.GL.Raw.Extension.NV.CopyBuffer
+import Graphics.GL.Raw.Extension.NV.CopyDepthToColor
+import Graphics.GL.Raw.Extension.NV.CopyImage
+import Graphics.GL.Raw.Extension.NV.CoverageSample
+import Graphics.GL.Raw.Extension.NV.DeepTexture3D
+import Graphics.GL.Raw.Extension.NV.DepthBufferFloat
+import Graphics.GL.Raw.Extension.NV.DepthClamp
+import Graphics.GL.Raw.Extension.NV.DepthNonlinear
+import Graphics.GL.Raw.Extension.NV.DrawBuffers
+import Graphics.GL.Raw.Extension.NV.DrawInstanced
+import Graphics.GL.Raw.Extension.NV.DrawTexture
+import Graphics.GL.Raw.Extension.NV.Evaluators
+import Graphics.GL.Raw.Extension.NV.ExplicitAttribLocation
+import Graphics.GL.Raw.Extension.NV.ExplicitMultisample
+import Graphics.GL.Raw.Extension.NV.FboColorAttachments
+import Graphics.GL.Raw.Extension.NV.Fence
+import Graphics.GL.Raw.Extension.NV.FillRectangle
+import Graphics.GL.Raw.Extension.NV.FloatBuffer
+import Graphics.GL.Raw.Extension.NV.FogDistance
+import Graphics.GL.Raw.Extension.NV.FragmentCoverageToColor
+import Graphics.GL.Raw.Extension.NV.FragmentProgram
+import Graphics.GL.Raw.Extension.NV.FragmentProgram2
+import Graphics.GL.Raw.Extension.NV.FragmentProgram4
+import Graphics.GL.Raw.Extension.NV.FragmentProgramOption
+import Graphics.GL.Raw.Extension.NV.FragmentShaderInterlock
+import Graphics.GL.Raw.Extension.NV.FramebufferBlit
+import Graphics.GL.Raw.Extension.NV.FramebufferMixedSamples
+import Graphics.GL.Raw.Extension.NV.FramebufferMultisample
+import Graphics.GL.Raw.Extension.NV.FramebufferMultisampleCoverage
+import Graphics.GL.Raw.Extension.NV.GenerateMipmapSRGB
+import Graphics.GL.Raw.Extension.NV.GeometryProgram4
+import Graphics.GL.Raw.Extension.NV.GeometryShader4
+import Graphics.GL.Raw.Extension.NV.GeometryShaderPassthrough
+import Graphics.GL.Raw.Extension.NV.GpuProgram4
+import Graphics.GL.Raw.Extension.NV.GpuProgram5
+import Graphics.GL.Raw.Extension.NV.GpuProgram5MemExtended
+import Graphics.GL.Raw.Extension.NV.GpuShader5
+import Graphics.GL.Raw.Extension.NV.HalfFloat
+import Graphics.GL.Raw.Extension.NV.InstancedArrays
+import Graphics.GL.Raw.Extension.NV.InternalformatSampleQuery
+import Graphics.GL.Raw.Extension.NV.LightMaxExponent
+import Graphics.GL.Raw.Extension.NV.MultisampleCoverage
+import Graphics.GL.Raw.Extension.NV.MultisampleFilterHint
+import Graphics.GL.Raw.Extension.NV.NonSquareMatrices
+import Graphics.GL.Raw.Extension.NV.OcclusionQuery
+import Graphics.GL.Raw.Extension.NV.PackedDepthStencil
+import Graphics.GL.Raw.Extension.NV.ParameterBufferObject
+import Graphics.GL.Raw.Extension.NV.ParameterBufferObject2
+import Graphics.GL.Raw.Extension.NV.PathRendering
+import Graphics.GL.Raw.Extension.NV.PathRenderingSharedEdge
+import Graphics.GL.Raw.Extension.NV.PixelDataRange
+import Graphics.GL.Raw.Extension.NV.PointSprite
+import Graphics.GL.Raw.Extension.NV.PresentVideo
+import Graphics.GL.Raw.Extension.NV.PrimitiveRestart
+import Graphics.GL.Raw.Extension.NV.ReadBuffer
+import Graphics.GL.Raw.Extension.NV.ReadBufferFront
+import Graphics.GL.Raw.Extension.NV.ReadDepth
+import Graphics.GL.Raw.Extension.NV.ReadDepthStencil
+import Graphics.GL.Raw.Extension.NV.ReadStencil
+import Graphics.GL.Raw.Extension.NV.RegisterCombiners
+import Graphics.GL.Raw.Extension.NV.RegisterCombiners2
+import Graphics.GL.Raw.Extension.NV.SRGBFormats
+import Graphics.GL.Raw.Extension.NV.SampleLocations
+import Graphics.GL.Raw.Extension.NV.SampleMaskOverrideCoverage
+import Graphics.GL.Raw.Extension.NV.ShaderAtomicCounters
+import Graphics.GL.Raw.Extension.NV.ShaderAtomicFloat
+import Graphics.GL.Raw.Extension.NV.ShaderAtomicFp16Vector
+import Graphics.GL.Raw.Extension.NV.ShaderAtomicInt64
+import Graphics.GL.Raw.Extension.NV.ShaderBufferLoad
+import Graphics.GL.Raw.Extension.NV.ShaderBufferStore
+import Graphics.GL.Raw.Extension.NV.ShaderStorageBufferObject
+import Graphics.GL.Raw.Extension.NV.ShaderThreadGroup
+import Graphics.GL.Raw.Extension.NV.ShaderThreadShuffle
+import Graphics.GL.Raw.Extension.NV.ShadowSamplersArray
+import Graphics.GL.Raw.Extension.NV.ShadowSamplersCube
+import Graphics.GL.Raw.Extension.NV.TessellationProgram5
+import Graphics.GL.Raw.Extension.NV.TexgenEmboss
+import Graphics.GL.Raw.Extension.NV.TexgenReflection
+import Graphics.GL.Raw.Extension.NV.TextureBarrier
+import Graphics.GL.Raw.Extension.NV.TextureBorderClamp
+import Graphics.GL.Raw.Extension.NV.TextureCompressionS3tcUpdate
+import Graphics.GL.Raw.Extension.NV.TextureCompressionVtc
+import Graphics.GL.Raw.Extension.NV.TextureEnvCombine4
+import Graphics.GL.Raw.Extension.NV.TextureExpandNormal
+import Graphics.GL.Raw.Extension.NV.TextureMultisample
+import Graphics.GL.Raw.Extension.NV.TextureNpot2DMipmap
+import Graphics.GL.Raw.Extension.NV.TextureRectangle
+import Graphics.GL.Raw.Extension.NV.TextureShader
+import Graphics.GL.Raw.Extension.NV.TextureShader2
+import Graphics.GL.Raw.Extension.NV.TextureShader3
+import Graphics.GL.Raw.Extension.NV.TransformFeedback
+import Graphics.GL.Raw.Extension.NV.TransformFeedback2
+import Graphics.GL.Raw.Extension.NV.UniformBufferUnifiedMemory
+import Graphics.GL.Raw.Extension.NV.VdpauInterop
+import Graphics.GL.Raw.Extension.NV.VertexArrayRange
+import Graphics.GL.Raw.Extension.NV.VertexArrayRange2
+import Graphics.GL.Raw.Extension.NV.VertexAttribInteger64bit
+import Graphics.GL.Raw.Extension.NV.VertexBufferUnifiedMemory
+import Graphics.GL.Raw.Extension.NV.VertexProgram
+import Graphics.GL.Raw.Extension.NV.VertexProgram11
+import Graphics.GL.Raw.Extension.NV.VertexProgram2
+import Graphics.GL.Raw.Extension.NV.VertexProgram2Option
+import Graphics.GL.Raw.Extension.NV.VertexProgram3
+import Graphics.GL.Raw.Extension.NV.VertexProgram4
+import Graphics.GL.Raw.Extension.NV.VideoCapture
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessMultiDrawIndirect.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessMultiDrawIndirect.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessMultiDrawIndirect.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirect (
+  -- * Extension Support
+    gl_NV_bindless_multi_draw_indirect
+
+  -- * GL_NV_bindless_multi_draw_indirect
+  , glMultiDrawArraysIndirectBindlessNV
+  , glMultiDrawElementsIndirectBindlessNV
+) 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_NV_bindless_multi_draw_indirect :: Bool
+gl_NV_bindless_multi_draw_indirect = member "GL_NV_bindless_multi_draw_indirect" extensions
+
+glMultiDrawArraysIndirectBindlessNV :: MonadIO m => GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> m ()
+glMultiDrawArraysIndirectBindlessNV = ffienumPtrVsizeisizeiintIOV glMultiDrawArraysIndirectBindlessNVFunPtr
+
+glMultiDrawArraysIndirectBindlessNVFunPtr :: FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ())
+glMultiDrawArraysIndirectBindlessNVFunPtr = unsafePerformIO (getProcAddress "glMultiDrawArraysIndirectBindlessNV")
+
+{-# NOINLINE glMultiDrawArraysIndirectBindlessNVFunPtr #-}
+
+glMultiDrawElementsIndirectBindlessNV :: MonadIO m => GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> m ()
+glMultiDrawElementsIndirectBindlessNV = ffienumenumPtrVsizeisizeiintIOV glMultiDrawElementsIndirectBindlessNVFunPtr
+
+glMultiDrawElementsIndirectBindlessNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ())
+glMultiDrawElementsIndirectBindlessNVFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementsIndirectBindlessNV")
+
+{-# NOINLINE glMultiDrawElementsIndirectBindlessNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessMultiDrawIndirectCount.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessMultiDrawIndirectCount.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessMultiDrawIndirectCount.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirectCount (
+  -- * Extension Support
+    gl_NV_bindless_multi_draw_indirect_count
+
+  -- * GL_NV_bindless_multi_draw_indirect_count
+  , glMultiDrawArraysIndirectBindlessCountNV
+  , glMultiDrawElementsIndirectBindlessCountNV
+) 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_NV_bindless_multi_draw_indirect_count :: Bool
+gl_NV_bindless_multi_draw_indirect_count = member "GL_NV_bindless_multi_draw_indirect_count" extensions
+
+glMultiDrawArraysIndirectBindlessCountNV :: MonadIO m => GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> m ()
+glMultiDrawArraysIndirectBindlessCountNV = ffienumPtrVsizeisizeisizeiintIOV glMultiDrawArraysIndirectBindlessCountNVFunPtr
+
+glMultiDrawArraysIndirectBindlessCountNVFunPtr :: FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ())
+glMultiDrawArraysIndirectBindlessCountNVFunPtr = unsafePerformIO (getProcAddress "glMultiDrawArraysIndirectBindlessCountNV")
+
+{-# NOINLINE glMultiDrawArraysIndirectBindlessCountNVFunPtr #-}
+
+glMultiDrawElementsIndirectBindlessCountNV :: MonadIO m => GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> m ()
+glMultiDrawElementsIndirectBindlessCountNV = ffienumenumPtrVsizeisizeisizeiintIOV glMultiDrawElementsIndirectBindlessCountNVFunPtr
+
+glMultiDrawElementsIndirectBindlessCountNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ())
+glMultiDrawElementsIndirectBindlessCountNVFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementsIndirectBindlessCountNV")
+
+{-# NOINLINE glMultiDrawElementsIndirectBindlessCountNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BindlessTexture.hs
@@ -0,0 +1,136 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.BindlessTexture (
+  -- * Extension Support
+    gl_NV_bindless_texture
+
+  -- * GL_NV_bindless_texture
+  , glGetImageHandleNV
+  , glGetTextureHandleNV
+  , glGetTextureSamplerHandleNV
+  , glIsImageHandleResidentNV
+  , glIsTextureHandleResidentNV
+  , glMakeImageHandleNonResidentNV
+  , glMakeImageHandleResidentNV
+  , glMakeTextureHandleNonResidentNV
+  , glMakeTextureHandleResidentNV
+  , glProgramUniformHandleui64NV
+  , glProgramUniformHandleui64vNV
+  , glUniformHandleui64NV
+  , glUniformHandleui64vNV
+) 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_NV_bindless_texture :: Bool
+gl_NV_bindless_texture = member "GL_NV_bindless_texture" extensions
+
+glGetImageHandleNV :: MonadIO m => GLuint -> GLint -> GLboolean -> GLint -> GLenum -> m GLuint64
+glGetImageHandleNV = ffiuintintbooleanintenumIOuint64 glGetImageHandleNVFunPtr
+
+glGetImageHandleNVFunPtr :: FunPtr (GLuint -> GLint -> GLboolean -> GLint -> GLenum -> IO GLuint64)
+glGetImageHandleNVFunPtr = unsafePerformIO (getProcAddress "glGetImageHandleNV")
+
+{-# NOINLINE glGetImageHandleNVFunPtr #-}
+
+glGetTextureHandleNV :: MonadIO m => GLuint -> m GLuint64
+glGetTextureHandleNV = ffiuintIOuint64 glGetTextureHandleNVFunPtr
+
+glGetTextureHandleNVFunPtr :: FunPtr (GLuint -> IO GLuint64)
+glGetTextureHandleNVFunPtr = unsafePerformIO (getProcAddress "glGetTextureHandleNV")
+
+{-# NOINLINE glGetTextureHandleNVFunPtr #-}
+
+glGetTextureSamplerHandleNV :: MonadIO m => GLuint -> GLuint -> m GLuint64
+glGetTextureSamplerHandleNV = ffiuintuintIOuint64 glGetTextureSamplerHandleNVFunPtr
+
+glGetTextureSamplerHandleNVFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
+glGetTextureSamplerHandleNVFunPtr = unsafePerformIO (getProcAddress "glGetTextureSamplerHandleNV")
+
+{-# NOINLINE glGetTextureSamplerHandleNVFunPtr #-}
+
+glIsImageHandleResidentNV :: MonadIO m => GLuint64 -> m GLboolean
+glIsImageHandleResidentNV = ffiuint64IOboolean glIsImageHandleResidentNVFunPtr
+
+glIsImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
+glIsImageHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsImageHandleResidentNV")
+
+{-# NOINLINE glIsImageHandleResidentNVFunPtr #-}
+
+glIsTextureHandleResidentNV :: MonadIO m => GLuint64 -> m GLboolean
+glIsTextureHandleResidentNV = ffiuint64IOboolean glIsTextureHandleResidentNVFunPtr
+
+glIsTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO GLboolean)
+glIsTextureHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsTextureHandleResidentNV")
+
+{-# NOINLINE glIsTextureHandleResidentNVFunPtr #-}
+
+glMakeImageHandleNonResidentNV :: MonadIO m => GLuint64 -> m ()
+glMakeImageHandleNonResidentNV = ffiuint64IOV glMakeImageHandleNonResidentNVFunPtr
+
+glMakeImageHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
+glMakeImageHandleNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeImageHandleNonResidentNV")
+
+{-# NOINLINE glMakeImageHandleNonResidentNVFunPtr #-}
+
+glMakeImageHandleResidentNV :: MonadIO m => GLuint64 -> GLenum -> m ()
+glMakeImageHandleResidentNV = ffiuint64enumIOV glMakeImageHandleResidentNVFunPtr
+
+glMakeImageHandleResidentNVFunPtr :: FunPtr (GLuint64 -> GLenum -> IO ())
+glMakeImageHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeImageHandleResidentNV")
+
+{-# NOINLINE glMakeImageHandleResidentNVFunPtr #-}
+
+glMakeTextureHandleNonResidentNV :: MonadIO m => GLuint64 -> m ()
+glMakeTextureHandleNonResidentNV = ffiuint64IOV glMakeTextureHandleNonResidentNVFunPtr
+
+glMakeTextureHandleNonResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
+glMakeTextureHandleNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeTextureHandleNonResidentNV")
+
+{-# NOINLINE glMakeTextureHandleNonResidentNVFunPtr #-}
+
+glMakeTextureHandleResidentNV :: MonadIO m => GLuint64 -> m ()
+glMakeTextureHandleResidentNV = ffiuint64IOV glMakeTextureHandleResidentNVFunPtr
+
+glMakeTextureHandleResidentNVFunPtr :: FunPtr (GLuint64 -> IO ())
+glMakeTextureHandleResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeTextureHandleResidentNV")
+
+{-# NOINLINE glMakeTextureHandleResidentNVFunPtr #-}
+
+glProgramUniformHandleui64NV :: MonadIO m => GLuint -> GLint -> GLuint64 -> m ()
+glProgramUniformHandleui64NV = ffiuintintuint64IOV glProgramUniformHandleui64NVFunPtr
+
+glProgramUniformHandleui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
+glProgramUniformHandleui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64NV")
+
+{-# NOINLINE glProgramUniformHandleui64NVFunPtr #-}
+
+glProgramUniformHandleui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glProgramUniformHandleui64vNV = ffiuintintsizeiPtruint64IOV glProgramUniformHandleui64vNVFunPtr
+
+glProgramUniformHandleui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glProgramUniformHandleui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64vNV")
+
+{-# NOINLINE glProgramUniformHandleui64vNVFunPtr #-}
+
+glUniformHandleui64NV :: MonadIO m => GLint -> GLuint64 -> m ()
+glUniformHandleui64NV = ffiintuint64IOV glUniformHandleui64NVFunPtr
+
+glUniformHandleui64NVFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
+glUniformHandleui64NVFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64NV")
+
+{-# NOINLINE glUniformHandleui64NVFunPtr #-}
+
+glUniformHandleui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glUniformHandleui64vNV = ffiintsizeiPtruint64IOV glUniformHandleui64vNVFunPtr
+
+glUniformHandleui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glUniformHandleui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64vNV")
+
+{-# NOINLINE glUniformHandleui64vNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendEquationAdvanced.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendEquationAdvanced.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendEquationAdvanced.hs
@@ -0,0 +1,187 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.BlendEquationAdvanced (
+  -- * Extension Support
+    gl_NV_blend_equation_advanced
+
+  -- * GL_NV_blend_equation_advanced
+  , glBlendBarrierNV
+  , glBlendParameteriNV
+  , pattern GL_BLEND_OVERLAP_NV
+  , pattern GL_BLEND_PREMULTIPLIED_SRC_NV
+  , pattern GL_BLUE_NV
+  , pattern GL_COLORBURN_NV
+  , pattern GL_COLORDODGE_NV
+  , pattern GL_CONJOINT_NV
+  , pattern GL_CONTRAST_NV
+  , pattern GL_DARKEN_NV
+  , pattern GL_DIFFERENCE_NV
+  , pattern GL_DISJOINT_NV
+  , pattern GL_DST_ATOP_NV
+  , pattern GL_DST_IN_NV
+  , pattern GL_DST_NV
+  , pattern GL_DST_OUT_NV
+  , pattern GL_DST_OVER_NV
+  , pattern GL_EXCLUSION_NV
+  , pattern GL_GREEN_NV
+  , pattern GL_HARDLIGHT_NV
+  , pattern GL_HARDMIX_NV
+  , pattern GL_HSL_COLOR_NV
+  , pattern GL_HSL_HUE_NV
+  , pattern GL_HSL_LUMINOSITY_NV
+  , pattern GL_HSL_SATURATION_NV
+  , pattern GL_INVERT
+  , pattern GL_INVERT_OVG_NV
+  , pattern GL_INVERT_RGB_NV
+  , pattern GL_LIGHTEN_NV
+  , pattern GL_LINEARBURN_NV
+  , pattern GL_LINEARDODGE_NV
+  , pattern GL_LINEARLIGHT_NV
+  , pattern GL_MINUS_CLAMPED_NV
+  , pattern GL_MINUS_NV
+  , pattern GL_MULTIPLY_NV
+  , pattern GL_OVERLAY_NV
+  , pattern GL_PINLIGHT_NV
+  , pattern GL_PLUS_CLAMPED_ALPHA_NV
+  , pattern GL_PLUS_CLAMPED_NV
+  , pattern GL_PLUS_DARKER_NV
+  , pattern GL_PLUS_NV
+  , pattern GL_RED_NV
+  , pattern GL_SCREEN_NV
+  , pattern GL_SOFTLIGHT_NV
+  , pattern GL_SRC_ATOP_NV
+  , pattern GL_SRC_IN_NV
+  , pattern GL_SRC_NV
+  , pattern GL_SRC_OUT_NV
+  , pattern GL_SRC_OVER_NV
+  , pattern GL_UNCORRELATED_NV
+  , pattern GL_VIVIDLIGHT_NV
+  , pattern GL_XOR_NV
+  , pattern GL_ZERO
+) 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_NV_blend_equation_advanced :: Bool
+gl_NV_blend_equation_advanced = member "GL_NV_blend_equation_advanced" extensions
+
+glBlendBarrierNV :: MonadIO m => m ()
+glBlendBarrierNV = ffiIOV glBlendBarrierNVFunPtr
+
+glBlendBarrierNVFunPtr :: FunPtr (IO ())
+glBlendBarrierNVFunPtr = unsafePerformIO (getProcAddress "glBlendBarrierNV")
+
+{-# NOINLINE glBlendBarrierNVFunPtr #-}
+
+glBlendParameteriNV :: MonadIO m => GLenum -> GLint -> m ()
+glBlendParameteriNV = ffienumintIOV glBlendParameteriNVFunPtr
+
+glBlendParameteriNVFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glBlendParameteriNVFunPtr = unsafePerformIO (getProcAddress "glBlendParameteriNV")
+
+{-# NOINLINE glBlendParameteriNVFunPtr #-}
+
+pattern GL_BLEND_OVERLAP_NV = 0x9281 :: GLenum
+
+pattern GL_BLEND_PREMULTIPLIED_SRC_NV = 0x9280 :: GLenum
+
+pattern GL_BLUE_NV = 0x1905 :: GLenum
+
+pattern GL_COLORBURN_NV = 0x929A :: GLenum
+
+pattern GL_COLORDODGE_NV = 0x9299 :: GLenum
+
+pattern GL_CONJOINT_NV = 0x9284 :: GLenum
+
+pattern GL_CONTRAST_NV = 0x92A1 :: GLenum
+
+pattern GL_DARKEN_NV = 0x9297 :: GLenum
+
+pattern GL_DIFFERENCE_NV = 0x929E :: GLenum
+
+pattern GL_DISJOINT_NV = 0x9283 :: GLenum
+
+pattern GL_DST_ATOP_NV = 0x928F :: GLenum
+
+pattern GL_DST_IN_NV = 0x928B :: GLenum
+
+pattern GL_DST_NV = 0x9287 :: GLenum
+
+pattern GL_DST_OUT_NV = 0x928D :: GLenum
+
+pattern GL_DST_OVER_NV = 0x9289 :: GLenum
+
+pattern GL_EXCLUSION_NV = 0x92A0 :: GLenum
+
+pattern GL_GREEN_NV = 0x1904 :: GLenum
+
+pattern GL_HARDLIGHT_NV = 0x929B :: GLenum
+
+pattern GL_HARDMIX_NV = 0x92A9 :: GLenum
+
+pattern GL_HSL_COLOR_NV = 0x92AF :: GLenum
+
+pattern GL_HSL_HUE_NV = 0x92AD :: GLenum
+
+pattern GL_HSL_LUMINOSITY_NV = 0x92B0 :: GLenum
+
+pattern GL_HSL_SATURATION_NV = 0x92AE :: GLenum
+
+pattern GL_INVERT_OVG_NV = 0x92B4 :: GLenum
+
+pattern GL_INVERT_RGB_NV = 0x92A3 :: GLenum
+
+pattern GL_LIGHTEN_NV = 0x9298 :: GLenum
+
+pattern GL_LINEARBURN_NV = 0x92A5 :: GLenum
+
+pattern GL_LINEARDODGE_NV = 0x92A4 :: GLenum
+
+pattern GL_LINEARLIGHT_NV = 0x92A7 :: GLenum
+
+pattern GL_MINUS_CLAMPED_NV = 0x92B3 :: GLenum
+
+pattern GL_MINUS_NV = 0x929F :: GLenum
+
+pattern GL_MULTIPLY_NV = 0x9294 :: GLenum
+
+pattern GL_OVERLAY_NV = 0x9296 :: GLenum
+
+pattern GL_PINLIGHT_NV = 0x92A8 :: GLenum
+
+pattern GL_PLUS_CLAMPED_ALPHA_NV = 0x92B2 :: GLenum
+
+pattern GL_PLUS_CLAMPED_NV = 0x92B1 :: GLenum
+
+pattern GL_PLUS_DARKER_NV = 0x9292 :: GLenum
+
+pattern GL_PLUS_NV = 0x9291 :: GLenum
+
+pattern GL_RED_NV = 0x1903 :: GLenum
+
+pattern GL_SCREEN_NV = 0x9295 :: GLenum
+
+pattern GL_SOFTLIGHT_NV = 0x929C :: GLenum
+
+pattern GL_SRC_ATOP_NV = 0x928E :: GLenum
+
+pattern GL_SRC_IN_NV = 0x928A :: GLenum
+
+pattern GL_SRC_NV = 0x9286 :: GLenum
+
+pattern GL_SRC_OUT_NV = 0x928C :: GLenum
+
+pattern GL_SRC_OVER_NV = 0x9288 :: GLenum
+
+pattern GL_UNCORRELATED_NV = 0x9282 :: GLenum
+
+pattern GL_VIVIDLIGHT_NV = 0x92A6 :: GLenum
+
+pattern GL_XOR_NV = 0x1506 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendEquationAdvancedCoherent.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendEquationAdvancedCoherent.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendEquationAdvancedCoherent.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.BlendEquationAdvancedCoherent (
+  -- * Extension Support
+    gl_NV_blend_equation_advanced_coherent
+
+  -- * GL_NV_blend_equation_advanced_coherent
+  , pattern GL_BLEND_ADVANCED_COHERENT_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_blend_equation_advanced_coherent :: Bool
+gl_NV_blend_equation_advanced_coherent = member "GL_NV_blend_equation_advanced_coherent" extensions
+
+pattern GL_BLEND_ADVANCED_COHERENT_NV = 0x9285 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendSquare.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendSquare.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/BlendSquare.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.BlendSquare (
+  -- * Extension Support
+    gl_NV_blend_square
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_blend_square :: Bool
+gl_NV_blend_square = member "GL_NV_blend_square" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ComputeProgram5.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ComputeProgram5.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ComputeProgram5.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ComputeProgram5 (
+  -- * Extension Support
+    gl_NV_compute_program5
+
+  -- * GL_NV_compute_program5
+  , pattern GL_COMPUTE_PROGRAM_NV
+  , pattern GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_compute_program5 :: Bool
+gl_NV_compute_program5 = member "GL_NV_compute_program5" extensions
+
+pattern GL_COMPUTE_PROGRAM_NV = 0x90FB :: GLenum
+
+pattern GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x90FC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ConditionalRender.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ConditionalRender.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ConditionalRender.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ConditionalRender (
+  -- * Extension Support
+    gl_NV_conditional_render
+
+  -- * GL_NV_conditional_render
+  , glBeginConditionalRenderNV
+  , glEndConditionalRenderNV
+  , pattern GL_QUERY_BY_REGION_NO_WAIT_NV
+  , pattern GL_QUERY_BY_REGION_WAIT_NV
+  , pattern GL_QUERY_NO_WAIT_NV
+  , pattern GL_QUERY_WAIT_NV
+) 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_NV_conditional_render :: Bool
+gl_NV_conditional_render = member "GL_NV_conditional_render" extensions
+
+glBeginConditionalRenderNV :: MonadIO m => GLuint -> GLenum -> m ()
+glBeginConditionalRenderNV = ffiuintenumIOV glBeginConditionalRenderNVFunPtr
+
+glBeginConditionalRenderNVFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glBeginConditionalRenderNVFunPtr = unsafePerformIO (getProcAddress "glBeginConditionalRenderNV")
+
+{-# NOINLINE glBeginConditionalRenderNVFunPtr #-}
+
+glEndConditionalRenderNV :: MonadIO m => m ()
+glEndConditionalRenderNV = ffiIOV glEndConditionalRenderNVFunPtr
+
+glEndConditionalRenderNVFunPtr :: FunPtr (IO ())
+glEndConditionalRenderNVFunPtr = unsafePerformIO (getProcAddress "glEndConditionalRenderNV")
+
+{-# NOINLINE glEndConditionalRenderNVFunPtr #-}
+
+pattern GL_QUERY_BY_REGION_NO_WAIT_NV = 0x8E16 :: GLenum
+
+pattern GL_QUERY_BY_REGION_WAIT_NV = 0x8E15 :: GLenum
+
+pattern GL_QUERY_NO_WAIT_NV = 0x8E14 :: GLenum
+
+pattern GL_QUERY_WAIT_NV = 0x8E13 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ConservativeRaster.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ConservativeRaster.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ConservativeRaster.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ConservativeRaster (
+  -- * Extension Support
+    gl_NV_conservative_raster
+
+  -- * GL_NV_conservative_raster
+  , glSubpixelPrecisionBiasNV
+  , pattern GL_CONSERVATIVE_RASTERIZATION_NV
+  , pattern GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV
+  , pattern GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV
+  , pattern GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV
+) 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_NV_conservative_raster :: Bool
+gl_NV_conservative_raster = member "GL_NV_conservative_raster" extensions
+
+glSubpixelPrecisionBiasNV :: MonadIO m => GLuint -> GLuint -> m ()
+glSubpixelPrecisionBiasNV = ffiuintuintIOV glSubpixelPrecisionBiasNVFunPtr
+
+glSubpixelPrecisionBiasNVFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glSubpixelPrecisionBiasNVFunPtr = unsafePerformIO (getProcAddress "glSubpixelPrecisionBiasNV")
+
+{-# NOINLINE glSubpixelPrecisionBiasNVFunPtr #-}
+
+pattern GL_CONSERVATIVE_RASTERIZATION_NV = 0x9346 :: GLenum
+
+pattern GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = 0x9349 :: GLenum
+
+pattern GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV = 0x9347 :: GLenum
+
+pattern GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = 0x9348 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyBuffer.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.CopyBuffer (
+  -- * Extension Support
+    gl_NV_copy_buffer
+
+  -- * GL_NV_copy_buffer
+  , glCopyBufferSubDataNV
+  , pattern GL_COPY_READ_BUFFER_NV
+  , pattern GL_COPY_WRITE_BUFFER_NV
+) 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_NV_copy_buffer :: Bool
+gl_NV_copy_buffer = member "GL_NV_copy_buffer" extensions
+
+glCopyBufferSubDataNV :: MonadIO m => GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+glCopyBufferSubDataNV = ffienumenumintptrintptrsizeiptrIOV glCopyBufferSubDataNVFunPtr
+
+glCopyBufferSubDataNVFunPtr :: FunPtr (GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> IO ())
+glCopyBufferSubDataNVFunPtr = unsafePerformIO (getProcAddress "glCopyBufferSubDataNV")
+
+{-# NOINLINE glCopyBufferSubDataNVFunPtr #-}
+
+pattern GL_COPY_READ_BUFFER_NV = 0x8F36 :: GLenum
+
+pattern GL_COPY_WRITE_BUFFER_NV = 0x8F37 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyDepthToColor.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyDepthToColor.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyDepthToColor.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.CopyDepthToColor (
+  -- * Extension Support
+    gl_NV_copy_depth_to_color
+
+  -- * GL_NV_copy_depth_to_color
+  , pattern GL_DEPTH_STENCIL_TO_BGRA_NV
+  , pattern GL_DEPTH_STENCIL_TO_RGBA_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_copy_depth_to_color :: Bool
+gl_NV_copy_depth_to_color = member "GL_NV_copy_depth_to_color" extensions
+
+pattern GL_DEPTH_STENCIL_TO_BGRA_NV = 0x886F :: GLenum
+
+pattern GL_DEPTH_STENCIL_TO_RGBA_NV = 0x886E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyImage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyImage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CopyImage.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.CopyImage (
+  -- * Extension Support
+    gl_NV_copy_image
+
+  -- * GL_NV_copy_image
+  , glCopyImageSubDataNV
+) 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_NV_copy_image :: Bool
+gl_NV_copy_image = member "GL_NV_copy_image" extensions
+
+glCopyImageSubDataNV :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> m ()
+glCopyImageSubDataNV = ffiuintenumintintintintuintenumintintintintsizeisizeisizeiIOV glCopyImageSubDataNVFunPtr
+
+glCopyImageSubDataNVFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ())
+glCopyImageSubDataNVFunPtr = unsafePerformIO (getProcAddress "glCopyImageSubDataNV")
+
+{-# NOINLINE glCopyImageSubDataNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CoverageSample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CoverageSample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/CoverageSample.hs
@@ -0,0 +1,64 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.CoverageSample (
+  -- * Extension Support
+    gl_NV_coverage_sample
+
+  -- * GL_NV_coverage_sample
+  , glCoverageMaskNV
+  , glCoverageOperationNV
+  , pattern GL_COVERAGE_ALL_FRAGMENTS_NV
+  , pattern GL_COVERAGE_ATTACHMENT_NV
+  , pattern GL_COVERAGE_AUTOMATIC_NV
+  , pattern GL_COVERAGE_BUFFERS_NV
+  , pattern GL_COVERAGE_BUFFER_BIT_NV
+  , pattern GL_COVERAGE_COMPONENT4_NV
+  , pattern GL_COVERAGE_COMPONENT_NV
+  , pattern GL_COVERAGE_EDGE_FRAGMENTS_NV
+  , pattern GL_COVERAGE_SAMPLES_NV
+) 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_NV_coverage_sample :: Bool
+gl_NV_coverage_sample = member "GL_NV_coverage_sample" extensions
+
+glCoverageMaskNV :: MonadIO m => GLboolean -> m ()
+glCoverageMaskNV = ffibooleanIOV glCoverageMaskNVFunPtr
+
+glCoverageMaskNVFunPtr :: FunPtr (GLboolean -> IO ())
+glCoverageMaskNVFunPtr = unsafePerformIO (getProcAddress "glCoverageMaskNV")
+
+{-# NOINLINE glCoverageMaskNVFunPtr #-}
+
+glCoverageOperationNV :: MonadIO m => GLenum -> m ()
+glCoverageOperationNV = ffienumIOV glCoverageOperationNVFunPtr
+
+glCoverageOperationNVFunPtr :: FunPtr (GLenum -> IO ())
+glCoverageOperationNVFunPtr = unsafePerformIO (getProcAddress "glCoverageOperationNV")
+
+{-# NOINLINE glCoverageOperationNVFunPtr #-}
+
+pattern GL_COVERAGE_ALL_FRAGMENTS_NV = 0x8ED5 :: GLenum
+
+pattern GL_COVERAGE_ATTACHMENT_NV = 0x8ED2 :: GLenum
+
+pattern GL_COVERAGE_AUTOMATIC_NV = 0x8ED7 :: GLenum
+
+pattern GL_COVERAGE_BUFFERS_NV = 0x8ED3 :: GLenum
+
+pattern GL_COVERAGE_BUFFER_BIT_NV = 0x00008000 :: GLenum
+
+pattern GL_COVERAGE_COMPONENT4_NV = 0x8ED1 :: GLenum
+
+pattern GL_COVERAGE_COMPONENT_NV = 0x8ED0 :: GLenum
+
+pattern GL_COVERAGE_EDGE_FRAGMENTS_NV = 0x8ED6 :: GLenum
+
+pattern GL_COVERAGE_SAMPLES_NV = 0x8ED4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DeepTexture3D.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DeepTexture3D.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DeepTexture3D.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.DeepTexture3D (
+  -- * Extension Support
+    gl_NV_deep_texture3D
+
+  -- * GL_NV_deep_texture3D
+  , pattern GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV
+  , pattern GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_deep_texture3D :: Bool
+gl_NV_deep_texture3D = member "GL_NV_deep_texture3D" extensions
+
+pattern GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV = 0x90D1 :: GLenum
+
+pattern GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x90D0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthBufferFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthBufferFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthBufferFloat.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.DepthBufferFloat (
+  -- * Extension Support
+    gl_NV_depth_buffer_float
+
+  -- * GL_NV_depth_buffer_float
+  , glClearDepthdNV
+  , glDepthBoundsdNV
+  , glDepthRangedNV
+  , pattern GL_DEPTH32F_STENCIL8_NV
+  , pattern GL_DEPTH_BUFFER_FLOAT_MODE_NV
+  , pattern GL_DEPTH_COMPONENT32F_NV
+  , pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV
+) 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_NV_depth_buffer_float :: Bool
+gl_NV_depth_buffer_float = member "GL_NV_depth_buffer_float" extensions
+
+glClearDepthdNV :: MonadIO m => GLdouble -> m ()
+glClearDepthdNV = ffidoubleIOV glClearDepthdNVFunPtr
+
+glClearDepthdNVFunPtr :: FunPtr (GLdouble -> IO ())
+glClearDepthdNVFunPtr = unsafePerformIO (getProcAddress "glClearDepthdNV")
+
+{-# NOINLINE glClearDepthdNVFunPtr #-}
+
+glDepthBoundsdNV :: MonadIO m => GLdouble -> GLdouble -> m ()
+glDepthBoundsdNV = ffidoubledoubleIOV glDepthBoundsdNVFunPtr
+
+glDepthBoundsdNVFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
+glDepthBoundsdNVFunPtr = unsafePerformIO (getProcAddress "glDepthBoundsdNV")
+
+{-# NOINLINE glDepthBoundsdNVFunPtr #-}
+
+glDepthRangedNV :: MonadIO m => GLdouble -> GLdouble -> m ()
+glDepthRangedNV = ffidoubledoubleIOV glDepthRangedNVFunPtr
+
+glDepthRangedNVFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
+glDepthRangedNVFunPtr = unsafePerformIO (getProcAddress "glDepthRangedNV")
+
+{-# NOINLINE glDepthRangedNVFunPtr #-}
+
+pattern GL_DEPTH32F_STENCIL8_NV = 0x8DAC :: GLenum
+
+pattern GL_DEPTH_BUFFER_FLOAT_MODE_NV = 0x8DAF :: GLenum
+
+pattern GL_DEPTH_COMPONENT32F_NV = 0x8DAB :: GLenum
+
+pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV = 0x8DAD :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthClamp.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.DepthClamp (
+  -- * Extension Support
+    gl_NV_depth_clamp
+
+  -- * GL_NV_depth_clamp
+  , pattern GL_DEPTH_CLAMP_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_depth_clamp :: Bool
+gl_NV_depth_clamp = member "GL_NV_depth_clamp" extensions
+
+pattern GL_DEPTH_CLAMP_NV = 0x864F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthNonlinear.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthNonlinear.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DepthNonlinear.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.DepthNonlinear (
+  -- * Extension Support
+    gl_NV_depth_nonlinear
+
+  -- * GL_NV_depth_nonlinear
+  , pattern GL_DEPTH_COMPONENT16_NONLINEAR_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_depth_nonlinear :: Bool
+gl_NV_depth_nonlinear = member "GL_NV_depth_nonlinear" extensions
+
+pattern GL_DEPTH_COMPONENT16_NONLINEAR_NV = 0x8E2C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawBuffers.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawBuffers.hs
@@ -0,0 +1,96 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.DrawBuffers (
+  -- * Extension Support
+    gl_NV_draw_buffers
+
+  -- * GL_NV_draw_buffers
+  , glDrawBuffersNV
+  , pattern GL_COLOR_ATTACHMENT0_NV
+  , pattern GL_COLOR_ATTACHMENT10_NV
+  , pattern GL_COLOR_ATTACHMENT11_NV
+  , pattern GL_COLOR_ATTACHMENT12_NV
+  , pattern GL_COLOR_ATTACHMENT13_NV
+  , pattern GL_COLOR_ATTACHMENT14_NV
+  , pattern GL_COLOR_ATTACHMENT15_NV
+  , pattern GL_COLOR_ATTACHMENT1_NV
+  , pattern GL_COLOR_ATTACHMENT2_NV
+  , pattern GL_COLOR_ATTACHMENT3_NV
+  , pattern GL_COLOR_ATTACHMENT4_NV
+  , pattern GL_COLOR_ATTACHMENT5_NV
+  , pattern GL_COLOR_ATTACHMENT6_NV
+  , pattern GL_COLOR_ATTACHMENT7_NV
+  , pattern GL_COLOR_ATTACHMENT8_NV
+  , pattern GL_COLOR_ATTACHMENT9_NV
+  , pattern GL_DRAW_BUFFER0_NV
+  , pattern GL_DRAW_BUFFER10_NV
+  , pattern GL_DRAW_BUFFER11_NV
+  , pattern GL_DRAW_BUFFER12_NV
+  , pattern GL_DRAW_BUFFER13_NV
+  , pattern GL_DRAW_BUFFER14_NV
+  , pattern GL_DRAW_BUFFER15_NV
+  , pattern GL_DRAW_BUFFER1_NV
+  , pattern GL_DRAW_BUFFER2_NV
+  , pattern GL_DRAW_BUFFER3_NV
+  , pattern GL_DRAW_BUFFER4_NV
+  , pattern GL_DRAW_BUFFER5_NV
+  , pattern GL_DRAW_BUFFER6_NV
+  , pattern GL_DRAW_BUFFER7_NV
+  , pattern GL_DRAW_BUFFER8_NV
+  , pattern GL_DRAW_BUFFER9_NV
+  , pattern GL_MAX_DRAW_BUFFERS_NV
+) 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_NV_draw_buffers :: Bool
+gl_NV_draw_buffers = member "GL_NV_draw_buffers" extensions
+
+glDrawBuffersNV :: MonadIO m => GLsizei -> Ptr GLenum -> m ()
+glDrawBuffersNV = ffisizeiPtrenumIOV glDrawBuffersNVFunPtr
+
+glDrawBuffersNVFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
+glDrawBuffersNVFunPtr = unsafePerformIO (getProcAddress "glDrawBuffersNV")
+
+{-# NOINLINE glDrawBuffersNVFunPtr #-}
+
+pattern GL_DRAW_BUFFER0_NV = 0x8825 :: GLenum
+
+pattern GL_DRAW_BUFFER10_NV = 0x882F :: GLenum
+
+pattern GL_DRAW_BUFFER11_NV = 0x8830 :: GLenum
+
+pattern GL_DRAW_BUFFER12_NV = 0x8831 :: GLenum
+
+pattern GL_DRAW_BUFFER13_NV = 0x8832 :: GLenum
+
+pattern GL_DRAW_BUFFER14_NV = 0x8833 :: GLenum
+
+pattern GL_DRAW_BUFFER15_NV = 0x8834 :: GLenum
+
+pattern GL_DRAW_BUFFER1_NV = 0x8826 :: GLenum
+
+pattern GL_DRAW_BUFFER2_NV = 0x8827 :: GLenum
+
+pattern GL_DRAW_BUFFER3_NV = 0x8828 :: GLenum
+
+pattern GL_DRAW_BUFFER4_NV = 0x8829 :: GLenum
+
+pattern GL_DRAW_BUFFER5_NV = 0x882A :: GLenum
+
+pattern GL_DRAW_BUFFER6_NV = 0x882B :: GLenum
+
+pattern GL_DRAW_BUFFER7_NV = 0x882C :: GLenum
+
+pattern GL_DRAW_BUFFER8_NV = 0x882D :: GLenum
+
+pattern GL_DRAW_BUFFER9_NV = 0x882E :: GLenum
+
+pattern GL_MAX_DRAW_BUFFERS_NV = 0x8824 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawInstanced.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawInstanced.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawInstanced.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.DrawInstanced (
+  -- * Extension Support
+    gl_NV_draw_instanced
+
+  -- * GL_NV_draw_instanced
+  , glDrawArraysInstancedNV
+  , glDrawElementsInstancedNV
+) 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_NV_draw_instanced :: Bool
+gl_NV_draw_instanced = member "GL_NV_draw_instanced" extensions
+
+glDrawArraysInstancedNV :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
+glDrawArraysInstancedNV = ffienumintsizeisizeiIOV glDrawArraysInstancedNVFunPtr
+
+glDrawArraysInstancedNVFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
+glDrawArraysInstancedNVFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstancedNV")
+
+{-# NOINLINE glDrawArraysInstancedNVFunPtr #-}
+
+glDrawElementsInstancedNV :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
+glDrawElementsInstancedNV = ffienumsizeienumPtrVsizeiIOV glDrawElementsInstancedNVFunPtr
+
+glDrawElementsInstancedNVFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ())
+glDrawElementsInstancedNVFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstancedNV")
+
+{-# NOINLINE glDrawElementsInstancedNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/DrawTexture.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.DrawTexture (
+  -- * Extension Support
+    gl_NV_draw_texture
+
+  -- * GL_NV_draw_texture
+  , glDrawTextureNV
+) 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_NV_draw_texture :: Bool
+gl_NV_draw_texture = member "GL_NV_draw_texture" extensions
+
+glDrawTextureNV :: MonadIO m => GLuint -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glDrawTextureNV = ffiuintuintfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV glDrawTextureNVFunPtr
+
+glDrawTextureNVFunPtr :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glDrawTextureNVFunPtr = unsafePerformIO (getProcAddress "glDrawTextureNV")
+
+{-# NOINLINE glDrawTextureNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/Evaluators.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/Evaluators.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/Evaluators.hs
@@ -0,0 +1,172 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.Evaluators (
+  -- * Extension Support
+    gl_NV_evaluators
+
+  -- * GL_NV_evaluators
+  , glEvalMapsNV
+  , glGetMapAttribParameterfvNV
+  , glGetMapAttribParameterivNV
+  , glGetMapControlPointsNV
+  , glGetMapParameterfvNV
+  , glGetMapParameterivNV
+  , glMapControlPointsNV
+  , glMapParameterfvNV
+  , glMapParameterivNV
+  , pattern GL_EVAL_2D_NV
+  , pattern GL_EVAL_FRACTIONAL_TESSELLATION_NV
+  , pattern GL_EVAL_TRIANGULAR_2D_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB0_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB10_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB11_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB12_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB13_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB14_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB15_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB1_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB2_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB3_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB4_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB5_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB6_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB7_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB8_NV
+  , pattern GL_EVAL_VERTEX_ATTRIB9_NV
+  , pattern GL_MAP_ATTRIB_U_ORDER_NV
+  , pattern GL_MAP_ATTRIB_V_ORDER_NV
+  , pattern GL_MAP_TESSELLATION_NV
+  , pattern GL_MAX_MAP_TESSELLATION_NV
+  , pattern GL_MAX_RATIONAL_EVAL_ORDER_NV
+) 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_NV_evaluators :: Bool
+gl_NV_evaluators = member "GL_NV_evaluators" extensions
+
+glEvalMapsNV :: MonadIO m => GLenum -> GLenum -> m ()
+glEvalMapsNV = ffienumenumIOV glEvalMapsNVFunPtr
+
+glEvalMapsNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glEvalMapsNVFunPtr = unsafePerformIO (getProcAddress "glEvalMapsNV")
+
+{-# NOINLINE glEvalMapsNVFunPtr #-}
+
+glGetMapAttribParameterfvNV :: MonadIO m => GLenum -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetMapAttribParameterfvNV = ffienumuintenumPtrfloatIOV glGetMapAttribParameterfvNVFunPtr
+
+glGetMapAttribParameterfvNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetMapAttribParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetMapAttribParameterfvNV")
+
+{-# NOINLINE glGetMapAttribParameterfvNVFunPtr #-}
+
+glGetMapAttribParameterivNV :: MonadIO m => GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
+glGetMapAttribParameterivNV = ffienumuintenumPtrintIOV glGetMapAttribParameterivNVFunPtr
+
+glGetMapAttribParameterivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetMapAttribParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetMapAttribParameterivNV")
+
+{-# NOINLINE glGetMapAttribParameterivNVFunPtr #-}
+
+glGetMapControlPointsNV :: MonadIO m => GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLboolean -> Ptr () -> m ()
+glGetMapControlPointsNV = ffienumuintenumsizeisizeibooleanPtrVIOV glGetMapControlPointsNVFunPtr
+
+glGetMapControlPointsNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLboolean -> Ptr () -> IO ())
+glGetMapControlPointsNVFunPtr = unsafePerformIO (getProcAddress "glGetMapControlPointsNV")
+
+{-# NOINLINE glGetMapControlPointsNVFunPtr #-}
+
+glGetMapParameterfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetMapParameterfvNV = ffienumenumPtrfloatIOV glGetMapParameterfvNVFunPtr
+
+glGetMapParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetMapParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetMapParameterfvNV")
+
+{-# NOINLINE glGetMapParameterfvNVFunPtr #-}
+
+glGetMapParameterivNV :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetMapParameterivNV = ffienumenumPtrintIOV glGetMapParameterivNVFunPtr
+
+glGetMapParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetMapParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetMapParameterivNV")
+
+{-# NOINLINE glGetMapParameterivNVFunPtr #-}
+
+glMapControlPointsNV :: MonadIO m => GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLint -> GLboolean -> Ptr () -> m ()
+glMapControlPointsNV = ffienumuintenumsizeisizeiintintbooleanPtrVIOV glMapControlPointsNVFunPtr
+
+glMapControlPointsNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLint -> GLboolean -> Ptr () -> IO ())
+glMapControlPointsNVFunPtr = unsafePerformIO (getProcAddress "glMapControlPointsNV")
+
+{-# NOINLINE glMapControlPointsNVFunPtr #-}
+
+glMapParameterfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glMapParameterfvNV = ffienumenumPtrfloatIOV glMapParameterfvNVFunPtr
+
+glMapParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glMapParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glMapParameterfvNV")
+
+{-# NOINLINE glMapParameterfvNVFunPtr #-}
+
+glMapParameterivNV :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glMapParameterivNV = ffienumenumPtrintIOV glMapParameterivNVFunPtr
+
+glMapParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glMapParameterivNVFunPtr = unsafePerformIO (getProcAddress "glMapParameterivNV")
+
+{-# NOINLINE glMapParameterivNVFunPtr #-}
+
+pattern GL_EVAL_2D_NV = 0x86C0 :: GLenum
+
+pattern GL_EVAL_FRACTIONAL_TESSELLATION_NV = 0x86C5 :: GLenum
+
+pattern GL_EVAL_TRIANGULAR_2D_NV = 0x86C1 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB0_NV = 0x86C6 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB10_NV = 0x86D0 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB11_NV = 0x86D1 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB12_NV = 0x86D2 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB13_NV = 0x86D3 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB14_NV = 0x86D4 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB15_NV = 0x86D5 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB1_NV = 0x86C7 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB2_NV = 0x86C8 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB3_NV = 0x86C9 :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB4_NV = 0x86CA :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB5_NV = 0x86CB :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB6_NV = 0x86CC :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB7_NV = 0x86CD :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB8_NV = 0x86CE :: GLenum
+
+pattern GL_EVAL_VERTEX_ATTRIB9_NV = 0x86CF :: GLenum
+
+pattern GL_MAP_ATTRIB_U_ORDER_NV = 0x86C3 :: GLenum
+
+pattern GL_MAP_ATTRIB_V_ORDER_NV = 0x86C4 :: GLenum
+
+pattern GL_MAP_TESSELLATION_NV = 0x86C2 :: GLenum
+
+pattern GL_MAX_MAP_TESSELLATION_NV = 0x86D6 :: GLenum
+
+pattern GL_MAX_RATIONAL_EVAL_ORDER_NV = 0x86D7 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ExplicitAttribLocation.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ExplicitAttribLocation.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ExplicitAttribLocation.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ExplicitAttribLocation (
+  -- * Extension Support
+    gl_NV_explicit_attrib_location
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_explicit_attrib_location :: Bool
+gl_NV_explicit_attrib_location = member "GL_NV_explicit_attrib_location" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ExplicitMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ExplicitMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ExplicitMultisample.hs
@@ -0,0 +1,76 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ExplicitMultisample (
+  -- * Extension Support
+    gl_NV_explicit_multisample
+
+  -- * GL_NV_explicit_multisample
+  , glGetMultisamplefvNV
+  , glSampleMaskIndexedNV
+  , glTexRenderbufferNV
+  , pattern GL_INT_SAMPLER_RENDERBUFFER_NV
+  , pattern GL_MAX_SAMPLE_MASK_WORDS_NV
+  , pattern GL_SAMPLER_RENDERBUFFER_NV
+  , pattern GL_SAMPLE_MASK_NV
+  , pattern GL_SAMPLE_MASK_VALUE_NV
+  , pattern GL_SAMPLE_POSITION_NV
+  , pattern GL_TEXTURE_BINDING_RENDERBUFFER_NV
+  , pattern GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV
+  , pattern GL_TEXTURE_RENDERBUFFER_NV
+  , pattern GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV
+) 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_NV_explicit_multisample :: Bool
+gl_NV_explicit_multisample = member "GL_NV_explicit_multisample" extensions
+
+glGetMultisamplefvNV :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
+glGetMultisamplefvNV = ffienumuintPtrfloatIOV glGetMultisamplefvNVFunPtr
+
+glGetMultisamplefvNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glGetMultisamplefvNVFunPtr = unsafePerformIO (getProcAddress "glGetMultisamplefvNV")
+
+{-# NOINLINE glGetMultisamplefvNVFunPtr #-}
+
+glSampleMaskIndexedNV :: MonadIO m => GLuint -> GLbitfield -> m ()
+glSampleMaskIndexedNV = ffiuintbitfieldIOV glSampleMaskIndexedNVFunPtr
+
+glSampleMaskIndexedNVFunPtr :: FunPtr (GLuint -> GLbitfield -> IO ())
+glSampleMaskIndexedNVFunPtr = unsafePerformIO (getProcAddress "glSampleMaskIndexedNV")
+
+{-# NOINLINE glSampleMaskIndexedNVFunPtr #-}
+
+glTexRenderbufferNV :: MonadIO m => GLenum -> GLuint -> m ()
+glTexRenderbufferNV = ffienumuintIOV glTexRenderbufferNVFunPtr
+
+glTexRenderbufferNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glTexRenderbufferNVFunPtr = unsafePerformIO (getProcAddress "glTexRenderbufferNV")
+
+{-# NOINLINE glTexRenderbufferNVFunPtr #-}
+
+pattern GL_INT_SAMPLER_RENDERBUFFER_NV = 0x8E57 :: GLenum
+
+pattern GL_MAX_SAMPLE_MASK_WORDS_NV = 0x8E59 :: GLenum
+
+pattern GL_SAMPLER_RENDERBUFFER_NV = 0x8E56 :: GLenum
+
+pattern GL_SAMPLE_MASK_NV = 0x8E51 :: GLenum
+
+pattern GL_SAMPLE_MASK_VALUE_NV = 0x8E52 :: GLenum
+
+pattern GL_SAMPLE_POSITION_NV = 0x8E50 :: GLenum
+
+pattern GL_TEXTURE_BINDING_RENDERBUFFER_NV = 0x8E53 :: GLenum
+
+pattern GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = 0x8E54 :: GLenum
+
+pattern GL_TEXTURE_RENDERBUFFER_NV = 0x8E55 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FboColorAttachments.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FboColorAttachments.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FboColorAttachments.hs
@@ -0,0 +1,35 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FboColorAttachments (
+  -- * Extension Support
+    gl_NV_fbo_color_attachments
+
+  -- * GL_NV_fbo_color_attachments
+  , pattern GL_COLOR_ATTACHMENT0_NV
+  , pattern GL_COLOR_ATTACHMENT10_NV
+  , pattern GL_COLOR_ATTACHMENT11_NV
+  , pattern GL_COLOR_ATTACHMENT12_NV
+  , pattern GL_COLOR_ATTACHMENT13_NV
+  , pattern GL_COLOR_ATTACHMENT14_NV
+  , pattern GL_COLOR_ATTACHMENT15_NV
+  , pattern GL_COLOR_ATTACHMENT1_NV
+  , pattern GL_COLOR_ATTACHMENT2_NV
+  , pattern GL_COLOR_ATTACHMENT3_NV
+  , pattern GL_COLOR_ATTACHMENT4_NV
+  , pattern GL_COLOR_ATTACHMENT5_NV
+  , pattern GL_COLOR_ATTACHMENT6_NV
+  , pattern GL_COLOR_ATTACHMENT7_NV
+  , pattern GL_COLOR_ATTACHMENT8_NV
+  , pattern GL_COLOR_ATTACHMENT9_NV
+  , pattern GL_MAX_COLOR_ATTACHMENTS_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_NV_fbo_color_attachments :: Bool
+gl_NV_fbo_color_attachments = member "GL_NV_fbo_color_attachments" extensions
+
+pattern GL_MAX_COLOR_ATTACHMENTS_NV = 0x8CDF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/Fence.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/Fence.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/Fence.hs
@@ -0,0 +1,91 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.Fence (
+  -- * Extension Support
+    gl_NV_fence
+
+  -- * GL_NV_fence
+  , glDeleteFencesNV
+  , glFinishFenceNV
+  , glGenFencesNV
+  , glGetFenceivNV
+  , glIsFenceNV
+  , glSetFenceNV
+  , glTestFenceNV
+  , pattern GL_ALL_COMPLETED_NV
+  , pattern GL_FENCE_CONDITION_NV
+  , pattern GL_FENCE_STATUS_NV
+) 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_NV_fence :: Bool
+gl_NV_fence = member "GL_NV_fence" extensions
+
+glDeleteFencesNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteFencesNV = ffisizeiPtruintIOV glDeleteFencesNVFunPtr
+
+glDeleteFencesNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteFencesNVFunPtr = unsafePerformIO (getProcAddress "glDeleteFencesNV")
+
+{-# NOINLINE glDeleteFencesNVFunPtr #-}
+
+glFinishFenceNV :: MonadIO m => GLuint -> m ()
+glFinishFenceNV = ffiuintIOV glFinishFenceNVFunPtr
+
+glFinishFenceNVFunPtr :: FunPtr (GLuint -> IO ())
+glFinishFenceNVFunPtr = unsafePerformIO (getProcAddress "glFinishFenceNV")
+
+{-# NOINLINE glFinishFenceNVFunPtr #-}
+
+glGenFencesNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenFencesNV = ffisizeiPtruintIOV glGenFencesNVFunPtr
+
+glGenFencesNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenFencesNVFunPtr = unsafePerformIO (getProcAddress "glGenFencesNV")
+
+{-# NOINLINE glGenFencesNVFunPtr #-}
+
+glGetFenceivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetFenceivNV = ffiuintenumPtrintIOV glGetFenceivNVFunPtr
+
+glGetFenceivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetFenceivNVFunPtr = unsafePerformIO (getProcAddress "glGetFenceivNV")
+
+{-# NOINLINE glGetFenceivNVFunPtr #-}
+
+glIsFenceNV :: MonadIO m => GLuint -> m GLboolean
+glIsFenceNV = ffiuintIOboolean glIsFenceNVFunPtr
+
+glIsFenceNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsFenceNVFunPtr = unsafePerformIO (getProcAddress "glIsFenceNV")
+
+{-# NOINLINE glIsFenceNVFunPtr #-}
+
+glSetFenceNV :: MonadIO m => GLuint -> GLenum -> m ()
+glSetFenceNV = ffiuintenumIOV glSetFenceNVFunPtr
+
+glSetFenceNVFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glSetFenceNVFunPtr = unsafePerformIO (getProcAddress "glSetFenceNV")
+
+{-# NOINLINE glSetFenceNVFunPtr #-}
+
+glTestFenceNV :: MonadIO m => GLuint -> m GLboolean
+glTestFenceNV = ffiuintIOboolean glTestFenceNVFunPtr
+
+glTestFenceNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glTestFenceNVFunPtr = unsafePerformIO (getProcAddress "glTestFenceNV")
+
+{-# NOINLINE glTestFenceNVFunPtr #-}
+
+pattern GL_ALL_COMPLETED_NV = 0x84F2 :: GLenum
+
+pattern GL_FENCE_CONDITION_NV = 0x84F4 :: GLenum
+
+pattern GL_FENCE_STATUS_NV = 0x84F3 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FillRectangle.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FillRectangle.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FillRectangle.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FillRectangle (
+  -- * Extension Support
+    gl_NV_fill_rectangle
+
+  -- * GL_NV_fill_rectangle
+  , pattern GL_FILL_RECTANGLE_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_fill_rectangle :: Bool
+gl_NV_fill_rectangle = member "GL_NV_fill_rectangle" extensions
+
+pattern GL_FILL_RECTANGLE_NV = 0x933C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FloatBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FloatBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FloatBuffer.hs
@@ -0,0 +1,60 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FloatBuffer (
+  -- * Extension Support
+    gl_NV_float_buffer
+
+  -- * GL_NV_float_buffer
+  , pattern GL_FLOAT_CLEAR_COLOR_VALUE_NV
+  , pattern GL_FLOAT_R16_NV
+  , pattern GL_FLOAT_R32_NV
+  , pattern GL_FLOAT_RG16_NV
+  , pattern GL_FLOAT_RG32_NV
+  , pattern GL_FLOAT_RGB16_NV
+  , pattern GL_FLOAT_RGB32_NV
+  , pattern GL_FLOAT_RGBA16_NV
+  , pattern GL_FLOAT_RGBA32_NV
+  , pattern GL_FLOAT_RGBA_MODE_NV
+  , pattern GL_FLOAT_RGBA_NV
+  , pattern GL_FLOAT_RGB_NV
+  , pattern GL_FLOAT_RG_NV
+  , pattern GL_FLOAT_R_NV
+  , pattern GL_TEXTURE_FLOAT_COMPONENTS_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_float_buffer :: Bool
+gl_NV_float_buffer = member "GL_NV_float_buffer" extensions
+
+pattern GL_FLOAT_CLEAR_COLOR_VALUE_NV = 0x888D :: GLenum
+
+pattern GL_FLOAT_R16_NV = 0x8884 :: GLenum
+
+pattern GL_FLOAT_R32_NV = 0x8885 :: GLenum
+
+pattern GL_FLOAT_RG16_NV = 0x8886 :: GLenum
+
+pattern GL_FLOAT_RG32_NV = 0x8887 :: GLenum
+
+pattern GL_FLOAT_RGB16_NV = 0x8888 :: GLenum
+
+pattern GL_FLOAT_RGB32_NV = 0x8889 :: GLenum
+
+pattern GL_FLOAT_RGBA16_NV = 0x888A :: GLenum
+
+pattern GL_FLOAT_RGBA32_NV = 0x888B :: GLenum
+
+pattern GL_FLOAT_RGBA_MODE_NV = 0x888E :: GLenum
+
+pattern GL_FLOAT_RGBA_NV = 0x8883 :: GLenum
+
+pattern GL_FLOAT_RGB_NV = 0x8882 :: GLenum
+
+pattern GL_FLOAT_RG_NV = 0x8881 :: GLenum
+
+pattern GL_FLOAT_R_NV = 0x8880 :: GLenum
+
+pattern GL_TEXTURE_FLOAT_COMPONENTS_NV = 0x888C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FogDistance.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FogDistance.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FogDistance.hs
@@ -0,0 +1,26 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FogDistance (
+  -- * Extension Support
+    gl_NV_fog_distance
+
+  -- * GL_NV_fog_distance
+  , pattern GL_EYE_PLANE
+  , pattern GL_EYE_PLANE_ABSOLUTE_NV
+  , pattern GL_EYE_RADIAL_NV
+  , pattern GL_FOG_DISTANCE_MODE_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_NV_fog_distance :: Bool
+gl_NV_fog_distance = member "GL_NV_fog_distance" extensions
+
+pattern GL_EYE_PLANE_ABSOLUTE_NV = 0x855C :: GLenum
+
+pattern GL_EYE_RADIAL_NV = 0x855B :: GLenum
+
+pattern GL_FOG_DISTANCE_MODE_NV = 0x855A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentCoverageToColor.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentCoverageToColor.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentCoverageToColor.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FragmentCoverageToColor (
+  -- * Extension Support
+    gl_NV_fragment_coverage_to_color
+
+  -- * GL_NV_fragment_coverage_to_color
+  , glFragmentCoverageColorNV
+  , pattern GL_FRAGMENT_COVERAGE_COLOR_NV
+  , pattern GL_FRAGMENT_COVERAGE_TO_COLOR_NV
+) 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_NV_fragment_coverage_to_color :: Bool
+gl_NV_fragment_coverage_to_color = member "GL_NV_fragment_coverage_to_color" extensions
+
+glFragmentCoverageColorNV :: MonadIO m => GLuint -> m ()
+glFragmentCoverageColorNV = ffiuintIOV glFragmentCoverageColorNVFunPtr
+
+glFragmentCoverageColorNVFunPtr :: FunPtr (GLuint -> IO ())
+glFragmentCoverageColorNVFunPtr = unsafePerformIO (getProcAddress "glFragmentCoverageColorNV")
+
+{-# NOINLINE glFragmentCoverageColorNVFunPtr #-}
+
+pattern GL_FRAGMENT_COVERAGE_COLOR_NV = 0x92DE :: GLenum
+
+pattern GL_FRAGMENT_COVERAGE_TO_COLOR_NV = 0x92DD :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram.hs
@@ -0,0 +1,91 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FragmentProgram (
+  -- * Extension Support
+    gl_NV_fragment_program
+
+  -- * GL_NV_fragment_program
+  , glGetProgramNamedParameterdvNV
+  , glGetProgramNamedParameterfvNV
+  , glProgramNamedParameter4dNV
+  , glProgramNamedParameter4dvNV
+  , glProgramNamedParameter4fNV
+  , glProgramNamedParameter4fvNV
+  , pattern GL_FRAGMENT_PROGRAM_BINDING_NV
+  , pattern GL_FRAGMENT_PROGRAM_NV
+  , pattern GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
+  , pattern GL_MAX_TEXTURE_COORDS_NV
+  , pattern GL_MAX_TEXTURE_IMAGE_UNITS_NV
+  , pattern GL_PROGRAM_ERROR_STRING_NV
+) 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_NV_fragment_program :: Bool
+gl_NV_fragment_program = member "GL_NV_fragment_program" extensions
+
+glGetProgramNamedParameterdvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
+glGetProgramNamedParameterdvNV = ffiuintsizeiPtrubytePtrdoubleIOV glGetProgramNamedParameterdvNVFunPtr
+
+glGetProgramNamedParameterdvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
+glGetProgramNamedParameterdvNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramNamedParameterdvNV")
+
+{-# NOINLINE glGetProgramNamedParameterdvNVFunPtr #-}
+
+glGetProgramNamedParameterfvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
+glGetProgramNamedParameterfvNV = ffiuintsizeiPtrubytePtrfloatIOV glGetProgramNamedParameterfvNVFunPtr
+
+glGetProgramNamedParameterfvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
+glGetProgramNamedParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramNamedParameterfvNV")
+
+{-# NOINLINE glGetProgramNamedParameterfvNVFunPtr #-}
+
+glProgramNamedParameter4dNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glProgramNamedParameter4dNV = ffiuintsizeiPtrubytedoubledoubledoubledoubleIOV glProgramNamedParameter4dNVFunPtr
+
+glProgramNamedParameter4dNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glProgramNamedParameter4dNVFunPtr = unsafePerformIO (getProcAddress "glProgramNamedParameter4dNV")
+
+{-# NOINLINE glProgramNamedParameter4dNVFunPtr #-}
+
+glProgramNamedParameter4dvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
+glProgramNamedParameter4dvNV = ffiuintsizeiPtrubytePtrdoubleIOV glProgramNamedParameter4dvNVFunPtr
+
+glProgramNamedParameter4dvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
+glProgramNamedParameter4dvNVFunPtr = unsafePerformIO (getProcAddress "glProgramNamedParameter4dvNV")
+
+{-# NOINLINE glProgramNamedParameter4dvNVFunPtr #-}
+
+glProgramNamedParameter4fNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glProgramNamedParameter4fNV = ffiuintsizeiPtrubytefloatfloatfloatfloatIOV glProgramNamedParameter4fNVFunPtr
+
+glProgramNamedParameter4fNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glProgramNamedParameter4fNVFunPtr = unsafePerformIO (getProcAddress "glProgramNamedParameter4fNV")
+
+{-# NOINLINE glProgramNamedParameter4fNVFunPtr #-}
+
+glProgramNamedParameter4fvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
+glProgramNamedParameter4fvNV = ffiuintsizeiPtrubytePtrfloatIOV glProgramNamedParameter4fvNVFunPtr
+
+glProgramNamedParameter4fvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
+glProgramNamedParameter4fvNVFunPtr = unsafePerformIO (getProcAddress "glProgramNamedParameter4fvNV")
+
+{-# NOINLINE glProgramNamedParameter4fvNVFunPtr #-}
+
+pattern GL_FRAGMENT_PROGRAM_BINDING_NV = 0x8873 :: GLenum
+
+pattern GL_FRAGMENT_PROGRAM_NV = 0x8870 :: GLenum
+
+pattern GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868 :: GLenum
+
+pattern GL_MAX_TEXTURE_COORDS_NV = 0x8871 :: GLenum
+
+pattern GL_MAX_TEXTURE_IMAGE_UNITS_NV = 0x8872 :: GLenum
+
+pattern GL_PROGRAM_ERROR_STRING_NV = 0x8874 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram2.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FragmentProgram2 (
+  -- * Extension Support
+    gl_NV_fragment_program2
+
+  -- * GL_NV_fragment_program2
+  , pattern GL_MAX_PROGRAM_CALL_DEPTH_NV
+  , pattern GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV
+  , pattern GL_MAX_PROGRAM_IF_DEPTH_NV
+  , pattern GL_MAX_PROGRAM_LOOP_COUNT_NV
+  , pattern GL_MAX_PROGRAM_LOOP_DEPTH_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_NV_fragment_program2 :: Bool
+gl_NV_fragment_program2 = member "GL_NV_fragment_program2" extensions
+
+pattern GL_MAX_PROGRAM_IF_DEPTH_NV = 0x88F6 :: GLenum
+
+pattern GL_MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8 :: GLenum
+
+pattern GL_MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgram4.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FragmentProgram4 (
+  -- * Extension Support
+    gl_NV_fragment_program4
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_fragment_program4 :: Bool
+gl_NV_fragment_program4 = member "GL_NV_fragment_program4" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgramOption.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgramOption.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentProgramOption.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FragmentProgramOption (
+  -- * Extension Support
+    gl_NV_fragment_program_option
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_fragment_program_option :: Bool
+gl_NV_fragment_program_option = member "GL_NV_fragment_program_option" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentShaderInterlock.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentShaderInterlock.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FragmentShaderInterlock.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FragmentShaderInterlock (
+  -- * Extension Support
+    gl_NV_fragment_shader_interlock
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_fragment_shader_interlock :: Bool
+gl_NV_fragment_shader_interlock = member "GL_NV_fragment_shader_interlock" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferBlit.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferBlit.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferBlit.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FramebufferBlit (
+  -- * Extension Support
+    gl_NV_framebuffer_blit
+
+  -- * GL_NV_framebuffer_blit
+  , glBlitFramebufferNV
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING_NV
+  , pattern GL_DRAW_FRAMEBUFFER_NV
+  , pattern GL_READ_FRAMEBUFFER_BINDING_NV
+  , pattern GL_READ_FRAMEBUFFER_NV
+) 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_NV_framebuffer_blit :: Bool
+gl_NV_framebuffer_blit = member "GL_NV_framebuffer_blit" extensions
+
+glBlitFramebufferNV :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
+glBlitFramebufferNV = ffiintintintintintintintintbitfieldenumIOV glBlitFramebufferNVFunPtr
+
+glBlitFramebufferNVFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ())
+glBlitFramebufferNVFunPtr = unsafePerformIO (getProcAddress "glBlitFramebufferNV")
+
+{-# NOINLINE glBlitFramebufferNVFunPtr #-}
+
+pattern GL_DRAW_FRAMEBUFFER_BINDING_NV = 0x8CA6 :: GLenum
+
+pattern GL_DRAW_FRAMEBUFFER_NV = 0x8CA9 :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_BINDING_NV = 0x8CAA :: GLenum
+
+pattern GL_READ_FRAMEBUFFER_NV = 0x8CA8 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMixedSamples.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMixedSamples.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMixedSamples.hs
@@ -0,0 +1,76 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FramebufferMixedSamples (
+  -- * Extension Support
+    gl_NV_framebuffer_mixed_samples
+
+  -- * GL_NV_framebuffer_mixed_samples
+  , glCoverageModulationNV
+  , glCoverageModulationTableNV
+  , glGetCoverageModulationTableNV
+  , glRasterSamplesEXT
+  , pattern GL_COLOR_SAMPLES_NV
+  , pattern GL_COVERAGE_MODULATION_NV
+  , pattern GL_COVERAGE_MODULATION_TABLE_NV
+  , pattern GL_COVERAGE_MODULATION_TABLE_SIZE_NV
+  , pattern GL_DEPTH_SAMPLES_NV
+  , pattern GL_EFFECTIVE_RASTER_SAMPLES_EXT
+  , pattern GL_MAX_RASTER_SAMPLES_EXT
+  , pattern GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV
+  , pattern GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV
+  , pattern GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT
+  , pattern GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT
+  , pattern GL_RASTER_MULTISAMPLE_EXT
+  , pattern GL_RASTER_SAMPLES_EXT
+  , pattern GL_STENCIL_SAMPLES_NV
+) 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_NV_framebuffer_mixed_samples :: Bool
+gl_NV_framebuffer_mixed_samples = member "GL_NV_framebuffer_mixed_samples" extensions
+
+glCoverageModulationNV :: MonadIO m => GLenum -> m ()
+glCoverageModulationNV = ffienumIOV glCoverageModulationNVFunPtr
+
+glCoverageModulationNVFunPtr :: FunPtr (GLenum -> IO ())
+glCoverageModulationNVFunPtr = unsafePerformIO (getProcAddress "glCoverageModulationNV")
+
+{-# NOINLINE glCoverageModulationNVFunPtr #-}
+
+glCoverageModulationTableNV :: MonadIO m => GLsizei -> Ptr GLfloat -> m ()
+glCoverageModulationTableNV = ffisizeiPtrfloatIOV glCoverageModulationTableNVFunPtr
+
+glCoverageModulationTableNVFunPtr :: FunPtr (GLsizei -> Ptr GLfloat -> IO ())
+glCoverageModulationTableNVFunPtr = unsafePerformIO (getProcAddress "glCoverageModulationTableNV")
+
+{-# NOINLINE glCoverageModulationTableNVFunPtr #-}
+
+glGetCoverageModulationTableNV :: MonadIO m => GLsizei -> Ptr GLfloat -> m ()
+glGetCoverageModulationTableNV = ffisizeiPtrfloatIOV glGetCoverageModulationTableNVFunPtr
+
+glGetCoverageModulationTableNVFunPtr :: FunPtr (GLsizei -> Ptr GLfloat -> IO ())
+glGetCoverageModulationTableNVFunPtr = unsafePerformIO (getProcAddress "glGetCoverageModulationTableNV")
+
+{-# NOINLINE glGetCoverageModulationTableNVFunPtr #-}
+
+pattern GL_COVERAGE_MODULATION_NV = 0x9332 :: GLenum
+
+pattern GL_COVERAGE_MODULATION_TABLE_NV = 0x9331 :: GLenum
+
+pattern GL_COVERAGE_MODULATION_TABLE_SIZE_NV = 0x9333 :: GLenum
+
+pattern GL_DEPTH_SAMPLES_NV = 0x932D :: GLenum
+
+pattern GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV = 0x932F :: GLenum
+
+pattern GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV = 0x9330 :: GLenum
+
+pattern GL_STENCIL_SAMPLES_NV = 0x932E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMultisample.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FramebufferMultisample (
+  -- * Extension Support
+    gl_NV_framebuffer_multisample
+
+  -- * GL_NV_framebuffer_multisample
+  , glRenderbufferStorageMultisampleNV
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV
+  , pattern GL_MAX_SAMPLES_NV
+  , pattern GL_RENDERBUFFER_SAMPLES_NV
+) 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_NV_framebuffer_multisample :: Bool
+gl_NV_framebuffer_multisample = member "GL_NV_framebuffer_multisample" extensions
+
+glRenderbufferStorageMultisampleNV :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+glRenderbufferStorageMultisampleNV = ffienumsizeienumsizeisizeiIOV glRenderbufferStorageMultisampleNVFunPtr
+
+glRenderbufferStorageMultisampleNVFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+glRenderbufferStorageMultisampleNVFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageMultisampleNV")
+
+{-# NOINLINE glRenderbufferStorageMultisampleNVFunPtr #-}
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV = 0x8D56 :: GLenum
+
+pattern GL_MAX_SAMPLES_NV = 0x8D57 :: GLenum
+
+pattern GL_RENDERBUFFER_SAMPLES_NV = 0x8CAB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMultisampleCoverage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMultisampleCoverage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/FramebufferMultisampleCoverage.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.FramebufferMultisampleCoverage (
+  -- * Extension Support
+    gl_NV_framebuffer_multisample_coverage
+
+  -- * GL_NV_framebuffer_multisample_coverage
+  , glRenderbufferStorageMultisampleCoverageNV
+  , pattern GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV
+  , pattern GL_MULTISAMPLE_COVERAGE_MODES_NV
+  , pattern GL_RENDERBUFFER_COLOR_SAMPLES_NV
+  , pattern GL_RENDERBUFFER_COVERAGE_SAMPLES_NV
+) 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_NV_framebuffer_multisample_coverage :: Bool
+gl_NV_framebuffer_multisample_coverage = member "GL_NV_framebuffer_multisample_coverage" extensions
+
+glRenderbufferStorageMultisampleCoverageNV :: MonadIO m => GLenum -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+glRenderbufferStorageMultisampleCoverageNV = ffienumsizeisizeienumsizeisizeiIOV glRenderbufferStorageMultisampleCoverageNVFunPtr
+
+glRenderbufferStorageMultisampleCoverageNVFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+glRenderbufferStorageMultisampleCoverageNVFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageMultisampleCoverageNV")
+
+{-# NOINLINE glRenderbufferStorageMultisampleCoverageNVFunPtr #-}
+
+pattern GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11 :: GLenum
+
+pattern GL_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E12 :: GLenum
+
+pattern GL_RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10 :: GLenum
+
+pattern GL_RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GenerateMipmapSRGB.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GenerateMipmapSRGB.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GenerateMipmapSRGB.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GenerateMipmapSRGB (
+  -- * Extension Support
+    gl_NV_generate_mipmap_sRGB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_generate_mipmap_sRGB :: Bool
+gl_NV_generate_mipmap_sRGB = member "GL_NV_generate_mipmap_sRGB" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryProgram4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryProgram4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryProgram4.hs
@@ -0,0 +1,62 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GeometryProgram4 (
+  -- * Extension Support
+    gl_NV_geometry_program4
+
+  -- * GL_NV_geometry_program4
+  , glFramebufferTextureEXT
+  , glFramebufferTextureFaceEXT
+  , glFramebufferTextureLayerEXT
+  , glProgramVertexLimitNV
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT
+  , pattern GL_GEOMETRY_INPUT_TYPE_EXT
+  , pattern GL_GEOMETRY_OUTPUT_TYPE_EXT
+  , pattern GL_GEOMETRY_PROGRAM_NV
+  , pattern GL_GEOMETRY_VERTICES_OUT_EXT
+  , pattern GL_LINES_ADJACENCY_EXT
+  , pattern GL_LINE_STRIP_ADJACENCY_EXT
+  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT
+  , pattern GL_MAX_PROGRAM_OUTPUT_VERTICES_NV
+  , pattern GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV
+  , pattern GL_PROGRAM_POINT_SIZE_EXT
+  , pattern GL_TRIANGLES_ADJACENCY_EXT
+  , pattern GL_TRIANGLE_STRIP_ADJACENCY_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_NV_geometry_program4 :: Bool
+gl_NV_geometry_program4 = member "GL_NV_geometry_program4" extensions
+
+glFramebufferTextureFaceEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLenum -> m ()
+glFramebufferTextureFaceEXT = ffienumenumuintintenumIOV glFramebufferTextureFaceEXTFunPtr
+
+glFramebufferTextureFaceEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ())
+glFramebufferTextureFaceEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureFaceEXT")
+
+{-# NOINLINE glFramebufferTextureFaceEXTFunPtr #-}
+
+glProgramVertexLimitNV :: MonadIO m => GLenum -> GLint -> m ()
+glProgramVertexLimitNV = ffienumintIOV glProgramVertexLimitNVFunPtr
+
+glProgramVertexLimitNVFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glProgramVertexLimitNVFunPtr = unsafePerformIO (getProcAddress "glProgramVertexLimitNV")
+
+{-# NOINLINE glProgramVertexLimitNVFunPtr #-}
+
+pattern GL_GEOMETRY_PROGRAM_NV = 0x8C26 :: GLenum
+
+pattern GL_MAX_PROGRAM_OUTPUT_VERTICES_NV = 0x8C27 :: GLenum
+
+pattern GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = 0x8C28 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryShader4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryShader4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryShader4.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GeometryShader4 (
+  -- * Extension Support
+    gl_NV_geometry_shader4
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_geometry_shader4 :: Bool
+gl_NV_geometry_shader4 = member "GL_NV_geometry_shader4" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryShaderPassthrough.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryShaderPassthrough.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GeometryShaderPassthrough.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GeometryShaderPassthrough (
+  -- * Extension Support
+    gl_NV_geometry_shader_passthrough
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_geometry_shader_passthrough :: Bool
+gl_NV_geometry_shader_passthrough = member "GL_NV_geometry_shader_passthrough" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram4.hs
@@ -0,0 +1,187 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GpuProgram4 (
+  -- * Extension Support
+    gl_NV_gpu_program4
+
+  -- * GL_NV_gpu_program4
+  , glGetProgramEnvParameterIivNV
+  , glGetProgramEnvParameterIuivNV
+  , glGetProgramLocalParameterIivNV
+  , glGetProgramLocalParameterIuivNV
+  , glProgramEnvParameterI4iNV
+  , glProgramEnvParameterI4ivNV
+  , glProgramEnvParameterI4uiNV
+  , glProgramEnvParameterI4uivNV
+  , glProgramEnvParametersI4ivNV
+  , glProgramEnvParametersI4uivNV
+  , glProgramLocalParameterI4iNV
+  , glProgramLocalParameterI4ivNV
+  , glProgramLocalParameterI4uiNV
+  , glProgramLocalParameterI4uivNV
+  , glProgramLocalParametersI4ivNV
+  , glProgramLocalParametersI4uivNV
+  , pattern GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV
+  , pattern GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV
+  , pattern GL_MAX_PROGRAM_GENERIC_RESULTS_NV
+  , pattern GL_MAX_PROGRAM_RESULT_COMPONENTS_NV
+  , pattern GL_MAX_PROGRAM_TEXEL_OFFSET_NV
+  , pattern GL_MIN_PROGRAM_TEXEL_OFFSET_NV
+  , pattern GL_PROGRAM_ATTRIB_COMPONENTS_NV
+  , pattern GL_PROGRAM_RESULT_COMPONENTS_NV
+) 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_NV_gpu_program4 :: Bool
+gl_NV_gpu_program4 = member "GL_NV_gpu_program4" extensions
+
+glGetProgramEnvParameterIivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
+glGetProgramEnvParameterIivNV = ffienumuintPtrintIOV glGetProgramEnvParameterIivNVFunPtr
+
+glGetProgramEnvParameterIivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
+glGetProgramEnvParameterIivNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramEnvParameterIivNV")
+
+{-# NOINLINE glGetProgramEnvParameterIivNVFunPtr #-}
+
+glGetProgramEnvParameterIuivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
+glGetProgramEnvParameterIuivNV = ffienumuintPtruintIOV glGetProgramEnvParameterIuivNVFunPtr
+
+glGetProgramEnvParameterIuivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
+glGetProgramEnvParameterIuivNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramEnvParameterIuivNV")
+
+{-# NOINLINE glGetProgramEnvParameterIuivNVFunPtr #-}
+
+glGetProgramLocalParameterIivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
+glGetProgramLocalParameterIivNV = ffienumuintPtrintIOV glGetProgramLocalParameterIivNVFunPtr
+
+glGetProgramLocalParameterIivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
+glGetProgramLocalParameterIivNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramLocalParameterIivNV")
+
+{-# NOINLINE glGetProgramLocalParameterIivNVFunPtr #-}
+
+glGetProgramLocalParameterIuivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
+glGetProgramLocalParameterIuivNV = ffienumuintPtruintIOV glGetProgramLocalParameterIuivNVFunPtr
+
+glGetProgramLocalParameterIuivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
+glGetProgramLocalParameterIuivNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramLocalParameterIuivNV")
+
+{-# NOINLINE glGetProgramLocalParameterIuivNVFunPtr #-}
+
+glProgramEnvParameterI4iNV :: MonadIO m => GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+glProgramEnvParameterI4iNV = ffienumuintintintintintIOV glProgramEnvParameterI4iNVFunPtr
+
+glProgramEnvParameterI4iNVFunPtr :: FunPtr (GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
+glProgramEnvParameterI4iNVFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameterI4iNV")
+
+{-# NOINLINE glProgramEnvParameterI4iNVFunPtr #-}
+
+glProgramEnvParameterI4ivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
+glProgramEnvParameterI4ivNV = ffienumuintPtrintIOV glProgramEnvParameterI4ivNVFunPtr
+
+glProgramEnvParameterI4ivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
+glProgramEnvParameterI4ivNVFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameterI4ivNV")
+
+{-# NOINLINE glProgramEnvParameterI4ivNVFunPtr #-}
+
+glProgramEnvParameterI4uiNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glProgramEnvParameterI4uiNV = ffienumuintuintuintuintuintIOV glProgramEnvParameterI4uiNVFunPtr
+
+glProgramEnvParameterI4uiNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glProgramEnvParameterI4uiNVFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameterI4uiNV")
+
+{-# NOINLINE glProgramEnvParameterI4uiNVFunPtr #-}
+
+glProgramEnvParameterI4uivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
+glProgramEnvParameterI4uivNV = ffienumuintPtruintIOV glProgramEnvParameterI4uivNVFunPtr
+
+glProgramEnvParameterI4uivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
+glProgramEnvParameterI4uivNVFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameterI4uivNV")
+
+{-# NOINLINE glProgramEnvParameterI4uivNVFunPtr #-}
+
+glProgramEnvParametersI4ivNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLint -> m ()
+glProgramEnvParametersI4ivNV = ffienumuintsizeiPtrintIOV glProgramEnvParametersI4ivNVFunPtr
+
+glProgramEnvParametersI4ivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ())
+glProgramEnvParametersI4ivNVFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParametersI4ivNV")
+
+{-# NOINLINE glProgramEnvParametersI4ivNVFunPtr #-}
+
+glProgramEnvParametersI4uivNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+glProgramEnvParametersI4uivNV = ffienumuintsizeiPtruintIOV glProgramEnvParametersI4uivNVFunPtr
+
+glProgramEnvParametersI4uivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
+glProgramEnvParametersI4uivNVFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParametersI4uivNV")
+
+{-# NOINLINE glProgramEnvParametersI4uivNVFunPtr #-}
+
+glProgramLocalParameterI4iNV :: MonadIO m => GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+glProgramLocalParameterI4iNV = ffienumuintintintintintIOV glProgramLocalParameterI4iNVFunPtr
+
+glProgramLocalParameterI4iNVFunPtr :: FunPtr (GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
+glProgramLocalParameterI4iNVFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameterI4iNV")
+
+{-# NOINLINE glProgramLocalParameterI4iNVFunPtr #-}
+
+glProgramLocalParameterI4ivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
+glProgramLocalParameterI4ivNV = ffienumuintPtrintIOV glProgramLocalParameterI4ivNVFunPtr
+
+glProgramLocalParameterI4ivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
+glProgramLocalParameterI4ivNVFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameterI4ivNV")
+
+{-# NOINLINE glProgramLocalParameterI4ivNVFunPtr #-}
+
+glProgramLocalParameterI4uiNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glProgramLocalParameterI4uiNV = ffienumuintuintuintuintuintIOV glProgramLocalParameterI4uiNVFunPtr
+
+glProgramLocalParameterI4uiNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glProgramLocalParameterI4uiNVFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameterI4uiNV")
+
+{-# NOINLINE glProgramLocalParameterI4uiNVFunPtr #-}
+
+glProgramLocalParameterI4uivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
+glProgramLocalParameterI4uivNV = ffienumuintPtruintIOV glProgramLocalParameterI4uivNVFunPtr
+
+glProgramLocalParameterI4uivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
+glProgramLocalParameterI4uivNVFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameterI4uivNV")
+
+{-# NOINLINE glProgramLocalParameterI4uivNVFunPtr #-}
+
+glProgramLocalParametersI4ivNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLint -> m ()
+glProgramLocalParametersI4ivNV = ffienumuintsizeiPtrintIOV glProgramLocalParametersI4ivNVFunPtr
+
+glProgramLocalParametersI4ivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ())
+glProgramLocalParametersI4ivNVFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParametersI4ivNV")
+
+{-# NOINLINE glProgramLocalParametersI4ivNVFunPtr #-}
+
+glProgramLocalParametersI4uivNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+glProgramLocalParametersI4uivNV = ffienumuintsizeiPtruintIOV glProgramLocalParametersI4uivNVFunPtr
+
+glProgramLocalParametersI4uivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
+glProgramLocalParametersI4uivNVFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParametersI4uivNV")
+
+{-# NOINLINE glProgramLocalParametersI4uivNVFunPtr #-}
+
+pattern GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8908 :: GLenum
+
+pattern GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV = 0x8DA5 :: GLenum
+
+pattern GL_MAX_PROGRAM_GENERIC_RESULTS_NV = 0x8DA6 :: GLenum
+
+pattern GL_MAX_PROGRAM_RESULT_COMPONENTS_NV = 0x8909 :: GLenum
+
+pattern GL_MAX_PROGRAM_TEXEL_OFFSET_NV = 0x8905 :: GLenum
+
+pattern GL_MIN_PROGRAM_TEXEL_OFFSET_NV = 0x8904 :: GLenum
+
+pattern GL_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8906 :: GLenum
+
+pattern GL_PROGRAM_RESULT_COMPONENTS_NV = 0x8907 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram5.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram5.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram5.hs
@@ -0,0 +1,61 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GpuProgram5 (
+  -- * Extension Support
+    gl_NV_gpu_program5
+
+  -- * GL_NV_gpu_program5
+  , glGetProgramSubroutineParameteruivNV
+  , glProgramSubroutineParametersuivNV
+  , pattern GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV
+  , pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV
+  , pattern GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV
+  , pattern GL_MAX_PROGRAM_SUBROUTINE_NUM_NV
+  , pattern GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV
+  , pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV
+  , pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV
+  , pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV
+) 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_NV_gpu_program5 :: Bool
+gl_NV_gpu_program5 = member "GL_NV_gpu_program5" extensions
+
+glGetProgramSubroutineParameteruivNV :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
+glGetProgramSubroutineParameteruivNV = ffienumuintPtruintIOV glGetProgramSubroutineParameteruivNVFunPtr
+
+glGetProgramSubroutineParameteruivNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
+glGetProgramSubroutineParameteruivNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramSubroutineParameteruivNV")
+
+{-# NOINLINE glGetProgramSubroutineParameteruivNVFunPtr #-}
+
+glProgramSubroutineParametersuivNV :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
+glProgramSubroutineParametersuivNV = ffienumsizeiPtruintIOV glProgramSubroutineParametersuivNVFunPtr
+
+glProgramSubroutineParametersuivNVFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
+glProgramSubroutineParametersuivNVFunPtr = unsafePerformIO (getProcAddress "glProgramSubroutineParametersuivNV")
+
+{-# NOINLINE glProgramSubroutineParametersuivNVFunPtr #-}
+
+pattern GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = 0x8E5D :: GLenum
+
+pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5C :: GLenum
+
+pattern GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = 0x8E5A :: GLenum
+
+pattern GL_MAX_PROGRAM_SUBROUTINE_NUM_NV = 0x8F45 :: GLenum
+
+pattern GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = 0x8F44 :: GLenum
+
+pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5F :: GLenum
+
+pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5B :: GLenum
+
+pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram5MemExtended.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram5MemExtended.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuProgram5MemExtended.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GpuProgram5MemExtended (
+  -- * Extension Support
+    gl_NV_gpu_program5_mem_extended
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_gpu_program5_mem_extended :: Bool
+gl_NV_gpu_program5_mem_extended = member "GL_NV_gpu_program5_mem_extended" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuShader5.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuShader5.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/GpuShader5.hs
@@ -0,0 +1,77 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.GpuShader5 (
+  -- * Extension Support
+    gl_NV_gpu_shader5
+
+  -- * GL_NV_gpu_shader5
+  , glGetUniformi64vNV
+  , glProgramUniform1i64NV
+  , glProgramUniform1i64vNV
+  , glProgramUniform1ui64NV
+  , glProgramUniform1ui64vNV
+  , glProgramUniform2i64NV
+  , glProgramUniform2i64vNV
+  , glProgramUniform2ui64NV
+  , glProgramUniform2ui64vNV
+  , glProgramUniform3i64NV
+  , glProgramUniform3i64vNV
+  , glProgramUniform3ui64NV
+  , glProgramUniform3ui64vNV
+  , glProgramUniform4i64NV
+  , glProgramUniform4i64vNV
+  , glProgramUniform4ui64NV
+  , glProgramUniform4ui64vNV
+  , glUniform1i64NV
+  , glUniform1i64vNV
+  , glUniform1ui64NV
+  , glUniform1ui64vNV
+  , glUniform2i64NV
+  , glUniform2i64vNV
+  , glUniform2ui64NV
+  , glUniform2ui64vNV
+  , glUniform3i64NV
+  , glUniform3i64vNV
+  , glUniform3ui64NV
+  , glUniform3ui64vNV
+  , glUniform4i64NV
+  , glUniform4i64vNV
+  , glUniform4ui64NV
+  , glUniform4ui64vNV
+  , pattern GL_FLOAT16_NV
+  , pattern GL_FLOAT16_VEC2_NV
+  , pattern GL_FLOAT16_VEC3_NV
+  , pattern GL_FLOAT16_VEC4_NV
+  , pattern GL_INT16_NV
+  , pattern GL_INT16_VEC2_NV
+  , pattern GL_INT16_VEC3_NV
+  , pattern GL_INT16_VEC4_NV
+  , pattern GL_INT64_NV
+  , pattern GL_INT64_VEC2_NV
+  , pattern GL_INT64_VEC3_NV
+  , pattern GL_INT64_VEC4_NV
+  , pattern GL_INT8_NV
+  , pattern GL_INT8_VEC2_NV
+  , pattern GL_INT8_VEC3_NV
+  , pattern GL_INT8_VEC4_NV
+  , pattern GL_PATCHES
+  , pattern GL_UNSIGNED_INT16_NV
+  , pattern GL_UNSIGNED_INT16_VEC2_NV
+  , pattern GL_UNSIGNED_INT16_VEC3_NV
+  , pattern GL_UNSIGNED_INT16_VEC4_NV
+  , pattern GL_UNSIGNED_INT64_NV
+  , pattern GL_UNSIGNED_INT64_VEC2_NV
+  , pattern GL_UNSIGNED_INT64_VEC3_NV
+  , pattern GL_UNSIGNED_INT64_VEC4_NV
+  , pattern GL_UNSIGNED_INT8_NV
+  , pattern GL_UNSIGNED_INT8_VEC2_NV
+  , pattern GL_UNSIGNED_INT8_VEC3_NV
+  , pattern GL_UNSIGNED_INT8_VEC4_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_NV_gpu_shader5 :: Bool
+gl_NV_gpu_shader5 = member "GL_NV_gpu_shader5" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/HalfFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/HalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/HalfFloat.hs
@@ -0,0 +1,436 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.HalfFloat (
+  -- * Extension Support
+    gl_NV_half_float
+
+  -- * GL_NV_half_float
+  , glColor3hNV
+  , glColor3hvNV
+  , glColor4hNV
+  , glColor4hvNV
+  , glFogCoordhNV
+  , glFogCoordhvNV
+  , glMultiTexCoord1hNV
+  , glMultiTexCoord1hvNV
+  , glMultiTexCoord2hNV
+  , glMultiTexCoord2hvNV
+  , glMultiTexCoord3hNV
+  , glMultiTexCoord3hvNV
+  , glMultiTexCoord4hNV
+  , glMultiTexCoord4hvNV
+  , glNormal3hNV
+  , glNormal3hvNV
+  , glSecondaryColor3hNV
+  , glSecondaryColor3hvNV
+  , glTexCoord1hNV
+  , glTexCoord1hvNV
+  , glTexCoord2hNV
+  , glTexCoord2hvNV
+  , glTexCoord3hNV
+  , glTexCoord3hvNV
+  , glTexCoord4hNV
+  , glTexCoord4hvNV
+  , glVertex2hNV
+  , glVertex2hvNV
+  , glVertex3hNV
+  , glVertex3hvNV
+  , glVertex4hNV
+  , glVertex4hvNV
+  , glVertexAttrib1hNV
+  , glVertexAttrib1hvNV
+  , glVertexAttrib2hNV
+  , glVertexAttrib2hvNV
+  , glVertexAttrib3hNV
+  , glVertexAttrib3hvNV
+  , glVertexAttrib4hNV
+  , glVertexAttrib4hvNV
+  , glVertexAttribs1hvNV
+  , glVertexAttribs2hvNV
+  , glVertexAttribs3hvNV
+  , glVertexAttribs4hvNV
+  , glVertexWeighthNV
+  , glVertexWeighthvNV
+  , pattern GL_HALF_FLOAT_NV
+) 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_NV_half_float :: Bool
+gl_NV_half_float = member "GL_NV_half_float" extensions
+
+glColor3hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glColor3hNV = ffihalfNVhalfNVhalfNVIOV glColor3hNVFunPtr
+
+glColor3hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glColor3hNVFunPtr = unsafePerformIO (getProcAddress "glColor3hNV")
+
+{-# NOINLINE glColor3hNVFunPtr #-}
+
+glColor3hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glColor3hvNV = ffiPtrhalfNVIOV glColor3hvNVFunPtr
+
+glColor3hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glColor3hvNVFunPtr = unsafePerformIO (getProcAddress "glColor3hvNV")
+
+{-# NOINLINE glColor3hvNVFunPtr #-}
+
+glColor4hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glColor4hNV = ffihalfNVhalfNVhalfNVhalfNVIOV glColor4hNVFunPtr
+
+glColor4hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glColor4hNVFunPtr = unsafePerformIO (getProcAddress "glColor4hNV")
+
+{-# NOINLINE glColor4hNVFunPtr #-}
+
+glColor4hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glColor4hvNV = ffiPtrhalfNVIOV glColor4hvNVFunPtr
+
+glColor4hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glColor4hvNVFunPtr = unsafePerformIO (getProcAddress "glColor4hvNV")
+
+{-# NOINLINE glColor4hvNVFunPtr #-}
+
+glFogCoordhNV :: MonadIO m => GLhalfNV -> m ()
+glFogCoordhNV = ffihalfNVIOV glFogCoordhNVFunPtr
+
+glFogCoordhNVFunPtr :: FunPtr (GLhalfNV -> IO ())
+glFogCoordhNVFunPtr = unsafePerformIO (getProcAddress "glFogCoordhNV")
+
+{-# NOINLINE glFogCoordhNVFunPtr #-}
+
+glFogCoordhvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glFogCoordhvNV = ffiPtrhalfNVIOV glFogCoordhvNVFunPtr
+
+glFogCoordhvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glFogCoordhvNVFunPtr = unsafePerformIO (getProcAddress "glFogCoordhvNV")
+
+{-# NOINLINE glFogCoordhvNVFunPtr #-}
+
+glMultiTexCoord1hNV :: MonadIO m => GLenum -> GLhalfNV -> m ()
+glMultiTexCoord1hNV = ffienumhalfNVIOV glMultiTexCoord1hNVFunPtr
+
+glMultiTexCoord1hNVFunPtr :: FunPtr (GLenum -> GLhalfNV -> IO ())
+glMultiTexCoord1hNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1hNV")
+
+{-# NOINLINE glMultiTexCoord1hNVFunPtr #-}
+
+glMultiTexCoord1hvNV :: MonadIO m => GLenum -> Ptr GLhalfNV -> m ()
+glMultiTexCoord1hvNV = ffienumPtrhalfNVIOV glMultiTexCoord1hvNVFunPtr
+
+glMultiTexCoord1hvNVFunPtr :: FunPtr (GLenum -> Ptr GLhalfNV -> IO ())
+glMultiTexCoord1hvNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1hvNV")
+
+{-# NOINLINE glMultiTexCoord1hvNVFunPtr #-}
+
+glMultiTexCoord2hNV :: MonadIO m => GLenum -> GLhalfNV -> GLhalfNV -> m ()
+glMultiTexCoord2hNV = ffienumhalfNVhalfNVIOV glMultiTexCoord2hNVFunPtr
+
+glMultiTexCoord2hNVFunPtr :: FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> IO ())
+glMultiTexCoord2hNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2hNV")
+
+{-# NOINLINE glMultiTexCoord2hNVFunPtr #-}
+
+glMultiTexCoord2hvNV :: MonadIO m => GLenum -> Ptr GLhalfNV -> m ()
+glMultiTexCoord2hvNV = ffienumPtrhalfNVIOV glMultiTexCoord2hvNVFunPtr
+
+glMultiTexCoord2hvNVFunPtr :: FunPtr (GLenum -> Ptr GLhalfNV -> IO ())
+glMultiTexCoord2hvNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2hvNV")
+
+{-# NOINLINE glMultiTexCoord2hvNVFunPtr #-}
+
+glMultiTexCoord3hNV :: MonadIO m => GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glMultiTexCoord3hNV = ffienumhalfNVhalfNVhalfNVIOV glMultiTexCoord3hNVFunPtr
+
+glMultiTexCoord3hNVFunPtr :: FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glMultiTexCoord3hNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3hNV")
+
+{-# NOINLINE glMultiTexCoord3hNVFunPtr #-}
+
+glMultiTexCoord3hvNV :: MonadIO m => GLenum -> Ptr GLhalfNV -> m ()
+glMultiTexCoord3hvNV = ffienumPtrhalfNVIOV glMultiTexCoord3hvNVFunPtr
+
+glMultiTexCoord3hvNVFunPtr :: FunPtr (GLenum -> Ptr GLhalfNV -> IO ())
+glMultiTexCoord3hvNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3hvNV")
+
+{-# NOINLINE glMultiTexCoord3hvNVFunPtr #-}
+
+glMultiTexCoord4hNV :: MonadIO m => GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glMultiTexCoord4hNV = ffienumhalfNVhalfNVhalfNVhalfNVIOV glMultiTexCoord4hNVFunPtr
+
+glMultiTexCoord4hNVFunPtr :: FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glMultiTexCoord4hNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4hNV")
+
+{-# NOINLINE glMultiTexCoord4hNVFunPtr #-}
+
+glMultiTexCoord4hvNV :: MonadIO m => GLenum -> Ptr GLhalfNV -> m ()
+glMultiTexCoord4hvNV = ffienumPtrhalfNVIOV glMultiTexCoord4hvNVFunPtr
+
+glMultiTexCoord4hvNVFunPtr :: FunPtr (GLenum -> Ptr GLhalfNV -> IO ())
+glMultiTexCoord4hvNVFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4hvNV")
+
+{-# NOINLINE glMultiTexCoord4hvNVFunPtr #-}
+
+glNormal3hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glNormal3hNV = ffihalfNVhalfNVhalfNVIOV glNormal3hNVFunPtr
+
+glNormal3hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glNormal3hNVFunPtr = unsafePerformIO (getProcAddress "glNormal3hNV")
+
+{-# NOINLINE glNormal3hNVFunPtr #-}
+
+glNormal3hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glNormal3hvNV = ffiPtrhalfNVIOV glNormal3hvNVFunPtr
+
+glNormal3hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glNormal3hvNVFunPtr = unsafePerformIO (getProcAddress "glNormal3hvNV")
+
+{-# NOINLINE glNormal3hvNVFunPtr #-}
+
+glSecondaryColor3hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glSecondaryColor3hNV = ffihalfNVhalfNVhalfNVIOV glSecondaryColor3hNVFunPtr
+
+glSecondaryColor3hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glSecondaryColor3hNVFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3hNV")
+
+{-# NOINLINE glSecondaryColor3hNVFunPtr #-}
+
+glSecondaryColor3hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glSecondaryColor3hvNV = ffiPtrhalfNVIOV glSecondaryColor3hvNVFunPtr
+
+glSecondaryColor3hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glSecondaryColor3hvNVFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3hvNV")
+
+{-# NOINLINE glSecondaryColor3hvNVFunPtr #-}
+
+glTexCoord1hNV :: MonadIO m => GLhalfNV -> m ()
+glTexCoord1hNV = ffihalfNVIOV glTexCoord1hNVFunPtr
+
+glTexCoord1hNVFunPtr :: FunPtr (GLhalfNV -> IO ())
+glTexCoord1hNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord1hNV")
+
+{-# NOINLINE glTexCoord1hNVFunPtr #-}
+
+glTexCoord1hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glTexCoord1hvNV = ffiPtrhalfNVIOV glTexCoord1hvNVFunPtr
+
+glTexCoord1hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glTexCoord1hvNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord1hvNV")
+
+{-# NOINLINE glTexCoord1hvNVFunPtr #-}
+
+glTexCoord2hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> m ()
+glTexCoord2hNV = ffihalfNVhalfNVIOV glTexCoord2hNVFunPtr
+
+glTexCoord2hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> IO ())
+glTexCoord2hNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord2hNV")
+
+{-# NOINLINE glTexCoord2hNVFunPtr #-}
+
+glTexCoord2hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glTexCoord2hvNV = ffiPtrhalfNVIOV glTexCoord2hvNVFunPtr
+
+glTexCoord2hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glTexCoord2hvNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord2hvNV")
+
+{-# NOINLINE glTexCoord2hvNVFunPtr #-}
+
+glTexCoord3hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glTexCoord3hNV = ffihalfNVhalfNVhalfNVIOV glTexCoord3hNVFunPtr
+
+glTexCoord3hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glTexCoord3hNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord3hNV")
+
+{-# NOINLINE glTexCoord3hNVFunPtr #-}
+
+glTexCoord3hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glTexCoord3hvNV = ffiPtrhalfNVIOV glTexCoord3hvNVFunPtr
+
+glTexCoord3hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glTexCoord3hvNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord3hvNV")
+
+{-# NOINLINE glTexCoord3hvNVFunPtr #-}
+
+glTexCoord4hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glTexCoord4hNV = ffihalfNVhalfNVhalfNVhalfNVIOV glTexCoord4hNVFunPtr
+
+glTexCoord4hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glTexCoord4hNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord4hNV")
+
+{-# NOINLINE glTexCoord4hNVFunPtr #-}
+
+glTexCoord4hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glTexCoord4hvNV = ffiPtrhalfNVIOV glTexCoord4hvNVFunPtr
+
+glTexCoord4hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glTexCoord4hvNVFunPtr = unsafePerformIO (getProcAddress "glTexCoord4hvNV")
+
+{-# NOINLINE glTexCoord4hvNVFunPtr #-}
+
+glVertex2hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> m ()
+glVertex2hNV = ffihalfNVhalfNVIOV glVertex2hNVFunPtr
+
+glVertex2hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> IO ())
+glVertex2hNVFunPtr = unsafePerformIO (getProcAddress "glVertex2hNV")
+
+{-# NOINLINE glVertex2hNVFunPtr #-}
+
+glVertex2hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glVertex2hvNV = ffiPtrhalfNVIOV glVertex2hvNVFunPtr
+
+glVertex2hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glVertex2hvNVFunPtr = unsafePerformIO (getProcAddress "glVertex2hvNV")
+
+{-# NOINLINE glVertex2hvNVFunPtr #-}
+
+glVertex3hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glVertex3hNV = ffihalfNVhalfNVhalfNVIOV glVertex3hNVFunPtr
+
+glVertex3hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glVertex3hNVFunPtr = unsafePerformIO (getProcAddress "glVertex3hNV")
+
+{-# NOINLINE glVertex3hNVFunPtr #-}
+
+glVertex3hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glVertex3hvNV = ffiPtrhalfNVIOV glVertex3hvNVFunPtr
+
+glVertex3hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glVertex3hvNVFunPtr = unsafePerformIO (getProcAddress "glVertex3hvNV")
+
+{-# NOINLINE glVertex3hvNVFunPtr #-}
+
+glVertex4hNV :: MonadIO m => GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glVertex4hNV = ffihalfNVhalfNVhalfNVhalfNVIOV glVertex4hNVFunPtr
+
+glVertex4hNVFunPtr :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glVertex4hNVFunPtr = unsafePerformIO (getProcAddress "glVertex4hNV")
+
+{-# NOINLINE glVertex4hNVFunPtr #-}
+
+glVertex4hvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glVertex4hvNV = ffiPtrhalfNVIOV glVertex4hvNVFunPtr
+
+glVertex4hvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glVertex4hvNVFunPtr = unsafePerformIO (getProcAddress "glVertex4hvNV")
+
+{-# NOINLINE glVertex4hvNVFunPtr #-}
+
+glVertexAttrib1hNV :: MonadIO m => GLuint -> GLhalfNV -> m ()
+glVertexAttrib1hNV = ffiuinthalfNVIOV glVertexAttrib1hNVFunPtr
+
+glVertexAttrib1hNVFunPtr :: FunPtr (GLuint -> GLhalfNV -> IO ())
+glVertexAttrib1hNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1hNV")
+
+{-# NOINLINE glVertexAttrib1hNVFunPtr #-}
+
+glVertexAttrib1hvNV :: MonadIO m => GLuint -> Ptr GLhalfNV -> m ()
+glVertexAttrib1hvNV = ffiuintPtrhalfNVIOV glVertexAttrib1hvNVFunPtr
+
+glVertexAttrib1hvNVFunPtr :: FunPtr (GLuint -> Ptr GLhalfNV -> IO ())
+glVertexAttrib1hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1hvNV")
+
+{-# NOINLINE glVertexAttrib1hvNVFunPtr #-}
+
+glVertexAttrib2hNV :: MonadIO m => GLuint -> GLhalfNV -> GLhalfNV -> m ()
+glVertexAttrib2hNV = ffiuinthalfNVhalfNVIOV glVertexAttrib2hNVFunPtr
+
+glVertexAttrib2hNVFunPtr :: FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> IO ())
+glVertexAttrib2hNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2hNV")
+
+{-# NOINLINE glVertexAttrib2hNVFunPtr #-}
+
+glVertexAttrib2hvNV :: MonadIO m => GLuint -> Ptr GLhalfNV -> m ()
+glVertexAttrib2hvNV = ffiuintPtrhalfNVIOV glVertexAttrib2hvNVFunPtr
+
+glVertexAttrib2hvNVFunPtr :: FunPtr (GLuint -> Ptr GLhalfNV -> IO ())
+glVertexAttrib2hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2hvNV")
+
+{-# NOINLINE glVertexAttrib2hvNVFunPtr #-}
+
+glVertexAttrib3hNV :: MonadIO m => GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glVertexAttrib3hNV = ffiuinthalfNVhalfNVhalfNVIOV glVertexAttrib3hNVFunPtr
+
+glVertexAttrib3hNVFunPtr :: FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glVertexAttrib3hNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3hNV")
+
+{-# NOINLINE glVertexAttrib3hNVFunPtr #-}
+
+glVertexAttrib3hvNV :: MonadIO m => GLuint -> Ptr GLhalfNV -> m ()
+glVertexAttrib3hvNV = ffiuintPtrhalfNVIOV glVertexAttrib3hvNVFunPtr
+
+glVertexAttrib3hvNVFunPtr :: FunPtr (GLuint -> Ptr GLhalfNV -> IO ())
+glVertexAttrib3hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3hvNV")
+
+{-# NOINLINE glVertexAttrib3hvNVFunPtr #-}
+
+glVertexAttrib4hNV :: MonadIO m => GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+glVertexAttrib4hNV = ffiuinthalfNVhalfNVhalfNVhalfNVIOV glVertexAttrib4hNVFunPtr
+
+glVertexAttrib4hNVFunPtr :: FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ())
+glVertexAttrib4hNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4hNV")
+
+{-# NOINLINE glVertexAttrib4hNVFunPtr #-}
+
+glVertexAttrib4hvNV :: MonadIO m => GLuint -> Ptr GLhalfNV -> m ()
+glVertexAttrib4hvNV = ffiuintPtrhalfNVIOV glVertexAttrib4hvNVFunPtr
+
+glVertexAttrib4hvNVFunPtr :: FunPtr (GLuint -> Ptr GLhalfNV -> IO ())
+glVertexAttrib4hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4hvNV")
+
+{-# NOINLINE glVertexAttrib4hvNVFunPtr #-}
+
+glVertexAttribs1hvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLhalfNV -> m ()
+glVertexAttribs1hvNV = ffiuintsizeiPtrhalfNVIOV glVertexAttribs1hvNVFunPtr
+
+glVertexAttribs1hvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLhalfNV -> IO ())
+glVertexAttribs1hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs1hvNV")
+
+{-# NOINLINE glVertexAttribs1hvNVFunPtr #-}
+
+glVertexAttribs2hvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLhalfNV -> m ()
+glVertexAttribs2hvNV = ffiuintsizeiPtrhalfNVIOV glVertexAttribs2hvNVFunPtr
+
+glVertexAttribs2hvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLhalfNV -> IO ())
+glVertexAttribs2hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs2hvNV")
+
+{-# NOINLINE glVertexAttribs2hvNVFunPtr #-}
+
+glVertexAttribs3hvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLhalfNV -> m ()
+glVertexAttribs3hvNV = ffiuintsizeiPtrhalfNVIOV glVertexAttribs3hvNVFunPtr
+
+glVertexAttribs3hvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLhalfNV -> IO ())
+glVertexAttribs3hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs3hvNV")
+
+{-# NOINLINE glVertexAttribs3hvNVFunPtr #-}
+
+glVertexAttribs4hvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLhalfNV -> m ()
+glVertexAttribs4hvNV = ffiuintsizeiPtrhalfNVIOV glVertexAttribs4hvNVFunPtr
+
+glVertexAttribs4hvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLhalfNV -> IO ())
+glVertexAttribs4hvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs4hvNV")
+
+{-# NOINLINE glVertexAttribs4hvNVFunPtr #-}
+
+glVertexWeighthNV :: MonadIO m => GLhalfNV -> m ()
+glVertexWeighthNV = ffihalfNVIOV glVertexWeighthNVFunPtr
+
+glVertexWeighthNVFunPtr :: FunPtr (GLhalfNV -> IO ())
+glVertexWeighthNVFunPtr = unsafePerformIO (getProcAddress "glVertexWeighthNV")
+
+{-# NOINLINE glVertexWeighthNVFunPtr #-}
+
+glVertexWeighthvNV :: MonadIO m => Ptr GLhalfNV -> m ()
+glVertexWeighthvNV = ffiPtrhalfNVIOV glVertexWeighthvNVFunPtr
+
+glVertexWeighthvNVFunPtr :: FunPtr (Ptr GLhalfNV -> IO ())
+glVertexWeighthvNVFunPtr = unsafePerformIO (getProcAddress "glVertexWeighthvNV")
+
+{-# NOINLINE glVertexWeighthvNVFunPtr #-}
+
+pattern GL_HALF_FLOAT_NV = 0x140B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/InstancedArrays.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/InstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/InstancedArrays.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.InstancedArrays (
+  -- * Extension Support
+    gl_NV_instanced_arrays
+
+  -- * GL_NV_instanced_arrays
+  , glVertexAttribDivisorNV
+  , pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV
+) 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_NV_instanced_arrays :: Bool
+gl_NV_instanced_arrays = member "GL_NV_instanced_arrays" extensions
+
+glVertexAttribDivisorNV :: MonadIO m => GLuint -> GLuint -> m ()
+glVertexAttribDivisorNV = ffiuintuintIOV glVertexAttribDivisorNVFunPtr
+
+glVertexAttribDivisorNVFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glVertexAttribDivisorNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribDivisorNV")
+
+{-# NOINLINE glVertexAttribDivisorNVFunPtr #-}
+
+pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV = 0x88FE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/InternalformatSampleQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/InternalformatSampleQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/InternalformatSampleQuery.hs
@@ -0,0 +1,44 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.InternalformatSampleQuery (
+  -- * Extension Support
+    gl_NV_internalformat_sample_query
+
+  -- * GL_NV_internalformat_sample_query
+  , glGetInternalformatSampleivNV
+  , pattern GL_CONFORMANT_NV
+  , pattern GL_MULTISAMPLES_NV
+  , pattern GL_RENDERBUFFER
+  , pattern GL_SUPERSAMPLE_SCALE_X_NV
+  , pattern GL_SUPERSAMPLE_SCALE_Y_NV
+  , pattern GL_TEXTURE_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_2D_MULTISAMPLE_ARRAY
+) 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_NV_internalformat_sample_query :: Bool
+gl_NV_internalformat_sample_query = member "GL_NV_internalformat_sample_query" extensions
+
+glGetInternalformatSampleivNV :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLenum -> GLsizei -> Ptr GLint -> m ()
+glGetInternalformatSampleivNV = ffienumenumsizeienumsizeiPtrintIOV glGetInternalformatSampleivNVFunPtr
+
+glGetInternalformatSampleivNVFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLsizei -> Ptr GLint -> IO ())
+glGetInternalformatSampleivNVFunPtr = unsafePerformIO (getProcAddress "glGetInternalformatSampleivNV")
+
+{-# NOINLINE glGetInternalformatSampleivNVFunPtr #-}
+
+pattern GL_CONFORMANT_NV = 0x9374 :: GLenum
+
+pattern GL_MULTISAMPLES_NV = 0x9371 :: GLenum
+
+pattern GL_SUPERSAMPLE_SCALE_X_NV = 0x9372 :: GLenum
+
+pattern GL_SUPERSAMPLE_SCALE_Y_NV = 0x9373 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/LightMaxExponent.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/LightMaxExponent.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/LightMaxExponent.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.LightMaxExponent (
+  -- * Extension Support
+    gl_NV_light_max_exponent
+
+  -- * GL_NV_light_max_exponent
+  , pattern GL_MAX_SHININESS_NV
+  , pattern GL_MAX_SPOT_EXPONENT_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_light_max_exponent :: Bool
+gl_NV_light_max_exponent = member "GL_NV_light_max_exponent" extensions
+
+pattern GL_MAX_SHININESS_NV = 0x8504 :: GLenum
+
+pattern GL_MAX_SPOT_EXPONENT_NV = 0x8505 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/MultisampleCoverage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/MultisampleCoverage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/MultisampleCoverage.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.MultisampleCoverage (
+  -- * Extension Support
+    gl_NV_multisample_coverage
+
+  -- * GL_NV_multisample_coverage
+  , pattern GL_COLOR_SAMPLES_NV
+  , pattern GL_SAMPLES_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_NV_multisample_coverage :: Bool
+gl_NV_multisample_coverage = member "GL_NV_multisample_coverage" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/MultisampleFilterHint.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/MultisampleFilterHint.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/MultisampleFilterHint.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.MultisampleFilterHint (
+  -- * Extension Support
+    gl_NV_multisample_filter_hint
+
+  -- * GL_NV_multisample_filter_hint
+  , pattern GL_MULTISAMPLE_FILTER_HINT_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_multisample_filter_hint :: Bool
+gl_NV_multisample_filter_hint = member "GL_NV_multisample_filter_hint" extensions
+
+pattern GL_MULTISAMPLE_FILTER_HINT_NV = 0x8534 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/NonSquareMatrices.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/NonSquareMatrices.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/NonSquareMatrices.hs
@@ -0,0 +1,91 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.NonSquareMatrices (
+  -- * Extension Support
+    gl_NV_non_square_matrices
+
+  -- * GL_NV_non_square_matrices
+  , glUniformMatrix2x3fvNV
+  , glUniformMatrix2x4fvNV
+  , glUniformMatrix3x2fvNV
+  , glUniformMatrix3x4fvNV
+  , glUniformMatrix4x2fvNV
+  , glUniformMatrix4x3fvNV
+  , pattern GL_FLOAT_MAT2x3_NV
+  , pattern GL_FLOAT_MAT2x4_NV
+  , pattern GL_FLOAT_MAT3x2_NV
+  , pattern GL_FLOAT_MAT3x4_NV
+  , pattern GL_FLOAT_MAT4x2_NV
+  , pattern GL_FLOAT_MAT4x3_NV
+) 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_NV_non_square_matrices :: Bool
+gl_NV_non_square_matrices = member "GL_NV_non_square_matrices" extensions
+
+glUniformMatrix2x3fvNV :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix2x3fvNV = ffiintsizeibooleanPtrfloatIOV glUniformMatrix2x3fvNVFunPtr
+
+glUniformMatrix2x3fvNVFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix2x3fvNVFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2x3fvNV")
+
+{-# NOINLINE glUniformMatrix2x3fvNVFunPtr #-}
+
+glUniformMatrix2x4fvNV :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix2x4fvNV = ffiintsizeibooleanPtrfloatIOV glUniformMatrix2x4fvNVFunPtr
+
+glUniformMatrix2x4fvNVFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix2x4fvNVFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2x4fvNV")
+
+{-# NOINLINE glUniformMatrix2x4fvNVFunPtr #-}
+
+glUniformMatrix3x2fvNV :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix3x2fvNV = ffiintsizeibooleanPtrfloatIOV glUniformMatrix3x2fvNVFunPtr
+
+glUniformMatrix3x2fvNVFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix3x2fvNVFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3x2fvNV")
+
+{-# NOINLINE glUniformMatrix3x2fvNVFunPtr #-}
+
+glUniformMatrix3x4fvNV :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix3x4fvNV = ffiintsizeibooleanPtrfloatIOV glUniformMatrix3x4fvNVFunPtr
+
+glUniformMatrix3x4fvNVFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix3x4fvNVFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3x4fvNV")
+
+{-# NOINLINE glUniformMatrix3x4fvNVFunPtr #-}
+
+glUniformMatrix4x2fvNV :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix4x2fvNV = ffiintsizeibooleanPtrfloatIOV glUniformMatrix4x2fvNVFunPtr
+
+glUniformMatrix4x2fvNVFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix4x2fvNVFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4x2fvNV")
+
+{-# NOINLINE glUniformMatrix4x2fvNVFunPtr #-}
+
+glUniformMatrix4x3fvNV :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+glUniformMatrix4x3fvNV = ffiintsizeibooleanPtrfloatIOV glUniformMatrix4x3fvNVFunPtr
+
+glUniformMatrix4x3fvNVFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
+glUniformMatrix4x3fvNVFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4x3fvNV")
+
+{-# NOINLINE glUniformMatrix4x3fvNVFunPtr #-}
+
+pattern GL_FLOAT_MAT2x3_NV = 0x8B65 :: GLenum
+
+pattern GL_FLOAT_MAT2x4_NV = 0x8B66 :: GLenum
+
+pattern GL_FLOAT_MAT3x2_NV = 0x8B67 :: GLenum
+
+pattern GL_FLOAT_MAT3x4_NV = 0x8B68 :: GLenum
+
+pattern GL_FLOAT_MAT4x2_NV = 0x8B69 :: GLenum
+
+pattern GL_FLOAT_MAT4x3_NV = 0x8B6A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/OcclusionQuery.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/OcclusionQuery.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/OcclusionQuery.hs
@@ -0,0 +1,94 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.OcclusionQuery (
+  -- * Extension Support
+    gl_NV_occlusion_query
+
+  -- * GL_NV_occlusion_query
+  , glBeginOcclusionQueryNV
+  , glDeleteOcclusionQueriesNV
+  , glEndOcclusionQueryNV
+  , glGenOcclusionQueriesNV
+  , glGetOcclusionQueryivNV
+  , glGetOcclusionQueryuivNV
+  , glIsOcclusionQueryNV
+  , pattern GL_CURRENT_OCCLUSION_QUERY_ID_NV
+  , pattern GL_PIXEL_COUNTER_BITS_NV
+  , pattern GL_PIXEL_COUNT_AVAILABLE_NV
+  , pattern GL_PIXEL_COUNT_NV
+) 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_NV_occlusion_query :: Bool
+gl_NV_occlusion_query = member "GL_NV_occlusion_query" extensions
+
+glBeginOcclusionQueryNV :: MonadIO m => GLuint -> m ()
+glBeginOcclusionQueryNV = ffiuintIOV glBeginOcclusionQueryNVFunPtr
+
+glBeginOcclusionQueryNVFunPtr :: FunPtr (GLuint -> IO ())
+glBeginOcclusionQueryNVFunPtr = unsafePerformIO (getProcAddress "glBeginOcclusionQueryNV")
+
+{-# NOINLINE glBeginOcclusionQueryNVFunPtr #-}
+
+glDeleteOcclusionQueriesNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteOcclusionQueriesNV = ffisizeiPtruintIOV glDeleteOcclusionQueriesNVFunPtr
+
+glDeleteOcclusionQueriesNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteOcclusionQueriesNVFunPtr = unsafePerformIO (getProcAddress "glDeleteOcclusionQueriesNV")
+
+{-# NOINLINE glDeleteOcclusionQueriesNVFunPtr #-}
+
+glEndOcclusionQueryNV :: MonadIO m => m ()
+glEndOcclusionQueryNV = ffiIOV glEndOcclusionQueryNVFunPtr
+
+glEndOcclusionQueryNVFunPtr :: FunPtr (IO ())
+glEndOcclusionQueryNVFunPtr = unsafePerformIO (getProcAddress "glEndOcclusionQueryNV")
+
+{-# NOINLINE glEndOcclusionQueryNVFunPtr #-}
+
+glGenOcclusionQueriesNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenOcclusionQueriesNV = ffisizeiPtruintIOV glGenOcclusionQueriesNVFunPtr
+
+glGenOcclusionQueriesNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenOcclusionQueriesNVFunPtr = unsafePerformIO (getProcAddress "glGenOcclusionQueriesNV")
+
+{-# NOINLINE glGenOcclusionQueriesNVFunPtr #-}
+
+glGetOcclusionQueryivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetOcclusionQueryivNV = ffiuintenumPtrintIOV glGetOcclusionQueryivNVFunPtr
+
+glGetOcclusionQueryivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetOcclusionQueryivNVFunPtr = unsafePerformIO (getProcAddress "glGetOcclusionQueryivNV")
+
+{-# NOINLINE glGetOcclusionQueryivNVFunPtr #-}
+
+glGetOcclusionQueryuivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
+glGetOcclusionQueryuivNV = ffiuintenumPtruintIOV glGetOcclusionQueryuivNVFunPtr
+
+glGetOcclusionQueryuivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
+glGetOcclusionQueryuivNVFunPtr = unsafePerformIO (getProcAddress "glGetOcclusionQueryuivNV")
+
+{-# NOINLINE glGetOcclusionQueryuivNVFunPtr #-}
+
+glIsOcclusionQueryNV :: MonadIO m => GLuint -> m GLboolean
+glIsOcclusionQueryNV = ffiuintIOboolean glIsOcclusionQueryNVFunPtr
+
+glIsOcclusionQueryNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsOcclusionQueryNVFunPtr = unsafePerformIO (getProcAddress "glIsOcclusionQueryNV")
+
+{-# NOINLINE glIsOcclusionQueryNVFunPtr #-}
+
+pattern GL_CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865 :: GLenum
+
+pattern GL_PIXEL_COUNTER_BITS_NV = 0x8864 :: GLenum
+
+pattern GL_PIXEL_COUNT_AVAILABLE_NV = 0x8867 :: GLenum
+
+pattern GL_PIXEL_COUNT_NV = 0x8866 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PackedDepthStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PackedDepthStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PackedDepthStencil.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.PackedDepthStencil (
+  -- * Extension Support
+    gl_NV_packed_depth_stencil
+
+  -- * GL_NV_packed_depth_stencil
+  , pattern GL_DEPTH_STENCIL_NV
+  , pattern GL_UNSIGNED_INT_24_8_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_packed_depth_stencil :: Bool
+gl_NV_packed_depth_stencil = member "GL_NV_packed_depth_stencil" extensions
+
+pattern GL_DEPTH_STENCIL_NV = 0x84F9 :: GLenum
+
+pattern GL_UNSIGNED_INT_24_8_NV = 0x84FA :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ParameterBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ParameterBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ParameterBufferObject.hs
@@ -0,0 +1,61 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ParameterBufferObject (
+  -- * Extension Support
+    gl_NV_parameter_buffer_object
+
+  -- * GL_NV_parameter_buffer_object
+  , glProgramBufferParametersIivNV
+  , glProgramBufferParametersIuivNV
+  , glProgramBufferParametersfvNV
+  , pattern GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV
+  , pattern GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV
+  , pattern GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV
+  , pattern GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV
+  , pattern GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV
+) 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_NV_parameter_buffer_object :: Bool
+gl_NV_parameter_buffer_object = member "GL_NV_parameter_buffer_object" extensions
+
+glProgramBufferParametersIivNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLint -> m ()
+glProgramBufferParametersIivNV = ffienumuintuintsizeiPtrintIOV glProgramBufferParametersIivNVFunPtr
+
+glProgramBufferParametersIivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLint -> IO ())
+glProgramBufferParametersIivNVFunPtr = unsafePerformIO (getProcAddress "glProgramBufferParametersIivNV")
+
+{-# NOINLINE glProgramBufferParametersIivNVFunPtr #-}
+
+glProgramBufferParametersIuivNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+glProgramBufferParametersIuivNV = ffienumuintuintsizeiPtruintIOV glProgramBufferParametersIuivNVFunPtr
+
+glProgramBufferParametersIuivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
+glProgramBufferParametersIuivNVFunPtr = unsafePerformIO (getProcAddress "glProgramBufferParametersIuivNV")
+
+{-# NOINLINE glProgramBufferParametersIuivNVFunPtr #-}
+
+glProgramBufferParametersfvNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glProgramBufferParametersfvNV = ffienumuintuintsizeiPtrfloatIOV glProgramBufferParametersfvNVFunPtr
+
+glProgramBufferParametersfvNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glProgramBufferParametersfvNVFunPtr = unsafePerformIO (getProcAddress "glProgramBufferParametersfvNV")
+
+{-# NOINLINE glProgramBufferParametersfvNVFunPtr #-}
+
+pattern GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA4 :: GLenum
+
+pattern GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA3 :: GLenum
+
+pattern GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = 0x8DA0 :: GLenum
+
+pattern GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = 0x8DA1 :: GLenum
+
+pattern GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ParameterBufferObject2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ParameterBufferObject2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ParameterBufferObject2.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ParameterBufferObject2 (
+  -- * Extension Support
+    gl_NV_parameter_buffer_object2
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_parameter_buffer_object2 :: Bool
+gl_NV_parameter_buffer_object2 = member "GL_NV_parameter_buffer_object2" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PathRendering.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PathRendering.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PathRendering.hs
@@ -0,0 +1,1082 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.PathRendering (
+  -- * Extension Support
+    gl_NV_path_rendering
+
+  -- * GL_NV_path_rendering
+  , glCopyPathNV
+  , glCoverFillPathInstancedNV
+  , glCoverFillPathNV
+  , glCoverStrokePathInstancedNV
+  , glCoverStrokePathNV
+  , glDeletePathsNV
+  , glGenPathsNV
+  , glGetPathColorGenfvNV
+  , glGetPathColorGenivNV
+  , glGetPathCommandsNV
+  , glGetPathCoordsNV
+  , glGetPathDashArrayNV
+  , glGetPathLengthNV
+  , glGetPathMetricRangeNV
+  , glGetPathMetricsNV
+  , glGetPathParameterfvNV
+  , glGetPathParameterivNV
+  , glGetPathSpacingNV
+  , glGetPathTexGenfvNV
+  , glGetPathTexGenivNV
+  , glGetProgramResourcefvNV
+  , glInterpolatePathsNV
+  , glIsPathNV
+  , glIsPointInFillPathNV
+  , glIsPointInStrokePathNV
+  , glMatrixLoad3x2fNV
+  , glMatrixLoad3x3fNV
+  , glMatrixLoadTranspose3x3fNV
+  , glMatrixMult3x2fNV
+  , glMatrixMult3x3fNV
+  , glMatrixMultTranspose3x3fNV
+  , glPathColorGenNV
+  , glPathCommandsNV
+  , glPathCoordsNV
+  , glPathCoverDepthFuncNV
+  , glPathDashArrayNV
+  , glPathFogGenNV
+  , glPathGlyphIndexArrayNV
+  , glPathGlyphIndexRangeNV
+  , glPathGlyphRangeNV
+  , glPathGlyphsNV
+  , glPathMemoryGlyphIndexArrayNV
+  , glPathParameterfNV
+  , glPathParameterfvNV
+  , glPathParameteriNV
+  , glPathParameterivNV
+  , glPathStencilDepthOffsetNV
+  , glPathStencilFuncNV
+  , glPathStringNV
+  , glPathSubCommandsNV
+  , glPathSubCoordsNV
+  , glPathTexGenNV
+  , glPointAlongPathNV
+  , glProgramPathFragmentInputGenNV
+  , glStencilFillPathInstancedNV
+  , glStencilFillPathNV
+  , glStencilStrokePathInstancedNV
+  , glStencilStrokePathNV
+  , glStencilThenCoverFillPathInstancedNV
+  , glStencilThenCoverFillPathNV
+  , glStencilThenCoverStrokePathInstancedNV
+  , glStencilThenCoverStrokePathNV
+  , glTransformPathNV
+  , glWeightPathsNV
+  , pattern GL_2_BYTES_NV
+  , pattern GL_3_BYTES_NV
+  , pattern GL_4_BYTES_NV
+  , pattern GL_ACCUM_ADJACENT_PAIRS_NV
+  , pattern GL_ADJACENT_PAIRS_NV
+  , pattern GL_AFFINE_2D_NV
+  , pattern GL_AFFINE_3D_NV
+  , pattern GL_ARC_TO_NV
+  , pattern GL_BEVEL_NV
+  , pattern GL_BOLD_BIT_NV
+  , pattern GL_BOUNDING_BOX_NV
+  , pattern GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV
+  , pattern GL_CIRCULAR_CCW_ARC_TO_NV
+  , pattern GL_CIRCULAR_CW_ARC_TO_NV
+  , pattern GL_CIRCULAR_TANGENT_ARC_TO_NV
+  , pattern GL_CLOSE_PATH_NV
+  , pattern GL_CONIC_CURVE_TO_NV
+  , pattern GL_CONSTANT_NV
+  , pattern GL_CONVEX_HULL_NV
+  , pattern GL_COUNT_DOWN_NV
+  , pattern GL_COUNT_UP_NV
+  , pattern GL_CUBIC_CURVE_TO_NV
+  , pattern GL_DUP_FIRST_CUBIC_CURVE_TO_NV
+  , pattern GL_DUP_LAST_CUBIC_CURVE_TO_NV
+  , pattern GL_EYE_LINEAR_NV
+  , pattern GL_FILE_NAME_NV
+  , pattern GL_FIRST_TO_REST_NV
+  , pattern GL_FONT_ASCENDER_BIT_NV
+  , pattern GL_FONT_DESCENDER_BIT_NV
+  , pattern GL_FONT_GLYPHS_AVAILABLE_NV
+  , pattern GL_FONT_HAS_KERNING_BIT_NV
+  , pattern GL_FONT_HEIGHT_BIT_NV
+  , pattern GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV
+  , pattern GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV
+  , pattern GL_FONT_NUM_GLYPH_INDICES_BIT_NV
+  , pattern GL_FONT_TARGET_UNAVAILABLE_NV
+  , pattern GL_FONT_UNAVAILABLE_NV
+  , pattern GL_FONT_UNDERLINE_POSITION_BIT_NV
+  , pattern GL_FONT_UNDERLINE_THICKNESS_BIT_NV
+  , pattern GL_FONT_UNINTELLIGIBLE_NV
+  , pattern GL_FONT_UNITS_PER_EM_BIT_NV
+  , pattern GL_FONT_X_MAX_BOUNDS_BIT_NV
+  , pattern GL_FONT_X_MIN_BOUNDS_BIT_NV
+  , pattern GL_FONT_Y_MAX_BOUNDS_BIT_NV
+  , pattern GL_FONT_Y_MIN_BOUNDS_BIT_NV
+  , pattern GL_FRAGMENT_INPUT_NV
+  , pattern GL_GLYPH_HAS_KERNING_BIT_NV
+  , pattern GL_GLYPH_HEIGHT_BIT_NV
+  , pattern GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV
+  , pattern GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV
+  , pattern GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV
+  , pattern GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV
+  , pattern GL_GLYPH_VERTICAL_BEARING_X_BIT_NV
+  , pattern GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV
+  , pattern GL_GLYPH_WIDTH_BIT_NV
+  , pattern GL_HORIZONTAL_LINE_TO_NV
+  , pattern GL_ITALIC_BIT_NV
+  , pattern GL_LARGE_CCW_ARC_TO_NV
+  , pattern GL_LARGE_CW_ARC_TO_NV
+  , pattern GL_LINE_TO_NV
+  , pattern GL_MITER_REVERT_NV
+  , pattern GL_MITER_TRUNCATE_NV
+  , pattern GL_MOVE_TO_CONTINUES_NV
+  , pattern GL_MOVE_TO_NV
+  , pattern GL_MOVE_TO_RESETS_NV
+  , pattern GL_OBJECT_LINEAR_NV
+  , pattern GL_PATH_CLIENT_LENGTH_NV
+  , pattern GL_PATH_COMMAND_COUNT_NV
+  , pattern GL_PATH_COMPUTED_LENGTH_NV
+  , pattern GL_PATH_COORD_COUNT_NV
+  , pattern GL_PATH_COVER_DEPTH_FUNC_NV
+  , pattern GL_PATH_DASH_ARRAY_COUNT_NV
+  , pattern GL_PATH_DASH_CAPS_NV
+  , pattern GL_PATH_DASH_OFFSET_NV
+  , pattern GL_PATH_DASH_OFFSET_RESET_NV
+  , pattern GL_PATH_END_CAPS_NV
+  , pattern GL_PATH_ERROR_POSITION_NV
+  , pattern GL_PATH_FILL_BOUNDING_BOX_NV
+  , pattern GL_PATH_FILL_COVER_MODE_NV
+  , pattern GL_PATH_FILL_MASK_NV
+  , pattern GL_PATH_FILL_MODE_NV
+  , pattern GL_PATH_FOG_GEN_MODE_NV
+  , pattern GL_PATH_FORMAT_PS_NV
+  , pattern GL_PATH_FORMAT_SVG_NV
+  , pattern GL_PATH_GEN_COEFF_NV
+  , pattern GL_PATH_GEN_COLOR_FORMAT_NV
+  , pattern GL_PATH_GEN_COMPONENTS_NV
+  , pattern GL_PATH_GEN_MODE_NV
+  , pattern GL_PATH_INITIAL_DASH_CAP_NV
+  , pattern GL_PATH_INITIAL_END_CAP_NV
+  , pattern GL_PATH_JOIN_STYLE_NV
+  , pattern GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV
+  , pattern GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV
+  , pattern GL_PATH_MITER_LIMIT_NV
+  , pattern GL_PATH_MODELVIEW_MATRIX_NV
+  , pattern GL_PATH_MODELVIEW_NV
+  , pattern GL_PATH_MODELVIEW_STACK_DEPTH_NV
+  , pattern GL_PATH_OBJECT_BOUNDING_BOX_NV
+  , pattern GL_PATH_PROJECTION_MATRIX_NV
+  , pattern GL_PATH_PROJECTION_NV
+  , pattern GL_PATH_PROJECTION_STACK_DEPTH_NV
+  , pattern GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV
+  , pattern GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV
+  , pattern GL_PATH_STENCIL_FUNC_NV
+  , pattern GL_PATH_STENCIL_REF_NV
+  , pattern GL_PATH_STENCIL_VALUE_MASK_NV
+  , pattern GL_PATH_STROKE_BOUNDING_BOX_NV
+  , pattern GL_PATH_STROKE_COVER_MODE_NV
+  , pattern GL_PATH_STROKE_MASK_NV
+  , pattern GL_PATH_STROKE_WIDTH_NV
+  , pattern GL_PATH_TERMINAL_DASH_CAP_NV
+  , pattern GL_PATH_TERMINAL_END_CAP_NV
+  , pattern GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV
+  , pattern GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV
+  , pattern GL_PRIMARY_COLOR
+  , pattern GL_PRIMARY_COLOR_NV
+  , pattern GL_QUADRATIC_CURVE_TO_NV
+  , pattern GL_RECT_NV
+  , pattern GL_RELATIVE_ARC_TO_NV
+  , pattern GL_RELATIVE_CONIC_CURVE_TO_NV
+  , pattern GL_RELATIVE_CUBIC_CURVE_TO_NV
+  , pattern GL_RELATIVE_HORIZONTAL_LINE_TO_NV
+  , pattern GL_RELATIVE_LARGE_CCW_ARC_TO_NV
+  , pattern GL_RELATIVE_LARGE_CW_ARC_TO_NV
+  , pattern GL_RELATIVE_LINE_TO_NV
+  , pattern GL_RELATIVE_MOVE_TO_NV
+  , pattern GL_RELATIVE_QUADRATIC_CURVE_TO_NV
+  , pattern GL_RELATIVE_RECT_NV
+  , pattern GL_RELATIVE_ROUNDED_RECT2_NV
+  , pattern GL_RELATIVE_ROUNDED_RECT4_NV
+  , pattern GL_RELATIVE_ROUNDED_RECT8_NV
+  , pattern GL_RELATIVE_ROUNDED_RECT_NV
+  , pattern GL_RELATIVE_SMALL_CCW_ARC_TO_NV
+  , pattern GL_RELATIVE_SMALL_CW_ARC_TO_NV
+  , pattern GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV
+  , pattern GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV
+  , pattern GL_RELATIVE_VERTICAL_LINE_TO_NV
+  , pattern GL_RESTART_PATH_NV
+  , pattern GL_ROUNDED_RECT2_NV
+  , pattern GL_ROUNDED_RECT4_NV
+  , pattern GL_ROUNDED_RECT8_NV
+  , pattern GL_ROUNDED_RECT_NV
+  , pattern GL_ROUND_NV
+  , pattern GL_SECONDARY_COLOR_NV
+  , pattern GL_SKIP_MISSING_GLYPH_NV
+  , pattern GL_SMALL_CCW_ARC_TO_NV
+  , pattern GL_SMALL_CW_ARC_TO_NV
+  , pattern GL_SMOOTH_CUBIC_CURVE_TO_NV
+  , pattern GL_SMOOTH_QUADRATIC_CURVE_TO_NV
+  , pattern GL_SQUARE_NV
+  , pattern GL_STANDARD_FONT_FORMAT_NV
+  , pattern GL_STANDARD_FONT_NAME_NV
+  , pattern GL_SYSTEM_FONT_NAME_NV
+  , pattern GL_TRANSLATE_2D_NV
+  , pattern GL_TRANSLATE_3D_NV
+  , pattern GL_TRANSLATE_X_NV
+  , pattern GL_TRANSLATE_Y_NV
+  , pattern GL_TRANSPOSE_AFFINE_2D_NV
+  , pattern GL_TRANSPOSE_AFFINE_3D_NV
+  , pattern GL_TRIANGULAR_NV
+  , pattern GL_USE_MISSING_GLYPH_NV
+  , pattern GL_UTF16_NV
+  , pattern GL_UTF8_NV
+  , pattern GL_VERTICAL_LINE_TO_NV
+) 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_NV_path_rendering :: Bool
+gl_NV_path_rendering = member "GL_NV_path_rendering" extensions
+
+glCopyPathNV :: MonadIO m => GLuint -> GLuint -> m ()
+glCopyPathNV = ffiuintuintIOV glCopyPathNVFunPtr
+
+glCopyPathNVFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glCopyPathNVFunPtr = unsafePerformIO (getProcAddress "glCopyPathNV")
+
+{-# NOINLINE glCopyPathNVFunPtr #-}
+
+glCoverFillPathInstancedNV :: MonadIO m => GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glCoverFillPathInstancedNV = ffisizeienumPtrVuintenumenumPtrfloatIOV glCoverFillPathInstancedNVFunPtr
+
+glCoverFillPathInstancedNVFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glCoverFillPathInstancedNVFunPtr = unsafePerformIO (getProcAddress "glCoverFillPathInstancedNV")
+
+{-# NOINLINE glCoverFillPathInstancedNVFunPtr #-}
+
+glCoverFillPathNV :: MonadIO m => GLuint -> GLenum -> m ()
+glCoverFillPathNV = ffiuintenumIOV glCoverFillPathNVFunPtr
+
+glCoverFillPathNVFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glCoverFillPathNVFunPtr = unsafePerformIO (getProcAddress "glCoverFillPathNV")
+
+{-# NOINLINE glCoverFillPathNVFunPtr #-}
+
+glCoverStrokePathInstancedNV :: MonadIO m => GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glCoverStrokePathInstancedNV = ffisizeienumPtrVuintenumenumPtrfloatIOV glCoverStrokePathInstancedNVFunPtr
+
+glCoverStrokePathInstancedNVFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glCoverStrokePathInstancedNVFunPtr = unsafePerformIO (getProcAddress "glCoverStrokePathInstancedNV")
+
+{-# NOINLINE glCoverStrokePathInstancedNVFunPtr #-}
+
+glCoverStrokePathNV :: MonadIO m => GLuint -> GLenum -> m ()
+glCoverStrokePathNV = ffiuintenumIOV glCoverStrokePathNVFunPtr
+
+glCoverStrokePathNVFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glCoverStrokePathNVFunPtr = unsafePerformIO (getProcAddress "glCoverStrokePathNV")
+
+{-# NOINLINE glCoverStrokePathNVFunPtr #-}
+
+glDeletePathsNV :: MonadIO m => GLuint -> GLsizei -> m ()
+glDeletePathsNV = ffiuintsizeiIOV glDeletePathsNVFunPtr
+
+glDeletePathsNVFunPtr :: FunPtr (GLuint -> GLsizei -> IO ())
+glDeletePathsNVFunPtr = unsafePerformIO (getProcAddress "glDeletePathsNV")
+
+{-# NOINLINE glDeletePathsNVFunPtr #-}
+
+glGenPathsNV :: MonadIO m => GLsizei -> m GLuint
+glGenPathsNV = ffisizeiIOuint glGenPathsNVFunPtr
+
+glGenPathsNVFunPtr :: FunPtr (GLsizei -> IO GLuint)
+glGenPathsNVFunPtr = unsafePerformIO (getProcAddress "glGenPathsNV")
+
+{-# NOINLINE glGenPathsNVFunPtr #-}
+
+glGetPathColorGenfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetPathColorGenfvNV = ffienumenumPtrfloatIOV glGetPathColorGenfvNVFunPtr
+
+glGetPathColorGenfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetPathColorGenfvNVFunPtr = unsafePerformIO (getProcAddress "glGetPathColorGenfvNV")
+
+{-# NOINLINE glGetPathColorGenfvNVFunPtr #-}
+
+glGetPathColorGenivNV :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetPathColorGenivNV = ffienumenumPtrintIOV glGetPathColorGenivNVFunPtr
+
+glGetPathColorGenivNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetPathColorGenivNVFunPtr = unsafePerformIO (getProcAddress "glGetPathColorGenivNV")
+
+{-# NOINLINE glGetPathColorGenivNVFunPtr #-}
+
+glGetPathCommandsNV :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
+glGetPathCommandsNV = ffiuintPtrubyteIOV glGetPathCommandsNVFunPtr
+
+glGetPathCommandsNVFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
+glGetPathCommandsNVFunPtr = unsafePerformIO (getProcAddress "glGetPathCommandsNV")
+
+{-# NOINLINE glGetPathCommandsNVFunPtr #-}
+
+glGetPathCoordsNV :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glGetPathCoordsNV = ffiuintPtrfloatIOV glGetPathCoordsNVFunPtr
+
+glGetPathCoordsNVFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glGetPathCoordsNVFunPtr = unsafePerformIO (getProcAddress "glGetPathCoordsNV")
+
+{-# NOINLINE glGetPathCoordsNVFunPtr #-}
+
+glGetPathDashArrayNV :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glGetPathDashArrayNV = ffiuintPtrfloatIOV glGetPathDashArrayNVFunPtr
+
+glGetPathDashArrayNVFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glGetPathDashArrayNVFunPtr = unsafePerformIO (getProcAddress "glGetPathDashArrayNV")
+
+{-# NOINLINE glGetPathDashArrayNVFunPtr #-}
+
+glGetPathLengthNV :: MonadIO m => GLuint -> GLsizei -> GLsizei -> m GLfloat
+glGetPathLengthNV = ffiuintsizeisizeiIOfloat glGetPathLengthNVFunPtr
+
+glGetPathLengthNVFunPtr :: FunPtr (GLuint -> GLsizei -> GLsizei -> IO GLfloat)
+glGetPathLengthNVFunPtr = unsafePerformIO (getProcAddress "glGetPathLengthNV")
+
+{-# NOINLINE glGetPathLengthNVFunPtr #-}
+
+glGetPathMetricRangeNV :: MonadIO m => GLbitfield -> GLuint -> GLsizei -> GLsizei -> Ptr GLfloat -> m ()
+glGetPathMetricRangeNV = ffibitfielduintsizeisizeiPtrfloatIOV glGetPathMetricRangeNVFunPtr
+
+glGetPathMetricRangeNVFunPtr :: FunPtr (GLbitfield -> GLuint -> GLsizei -> GLsizei -> Ptr GLfloat -> IO ())
+glGetPathMetricRangeNVFunPtr = unsafePerformIO (getProcAddress "glGetPathMetricRangeNV")
+
+{-# NOINLINE glGetPathMetricRangeNVFunPtr #-}
+
+glGetPathMetricsNV :: MonadIO m => GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glGetPathMetricsNV = ffibitfieldsizeienumPtrVuintsizeiPtrfloatIOV glGetPathMetricsNVFunPtr
+
+glGetPathMetricsNVFunPtr :: FunPtr (GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glGetPathMetricsNVFunPtr = unsafePerformIO (getProcAddress "glGetPathMetricsNV")
+
+{-# NOINLINE glGetPathMetricsNVFunPtr #-}
+
+glGetPathParameterfvNV :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetPathParameterfvNV = ffiuintenumPtrfloatIOV glGetPathParameterfvNVFunPtr
+
+glGetPathParameterfvNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetPathParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetPathParameterfvNV")
+
+{-# NOINLINE glGetPathParameterfvNVFunPtr #-}
+
+glGetPathParameterivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetPathParameterivNV = ffiuintenumPtrintIOV glGetPathParameterivNVFunPtr
+
+glGetPathParameterivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetPathParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetPathParameterivNV")
+
+{-# NOINLINE glGetPathParameterivNVFunPtr #-}
+
+glGetPathSpacingNV :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLfloat -> GLfloat -> GLenum -> Ptr GLfloat -> m ()
+glGetPathSpacingNV = ffienumsizeienumPtrVuintfloatfloatenumPtrfloatIOV glGetPathSpacingNVFunPtr
+
+glGetPathSpacingNVFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLfloat -> GLfloat -> GLenum -> Ptr GLfloat -> IO ())
+glGetPathSpacingNVFunPtr = unsafePerformIO (getProcAddress "glGetPathSpacingNV")
+
+{-# NOINLINE glGetPathSpacingNVFunPtr #-}
+
+glGetPathTexGenfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetPathTexGenfvNV = ffienumenumPtrfloatIOV glGetPathTexGenfvNVFunPtr
+
+glGetPathTexGenfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetPathTexGenfvNVFunPtr = unsafePerformIO (getProcAddress "glGetPathTexGenfvNV")
+
+{-# NOINLINE glGetPathTexGenfvNVFunPtr #-}
+
+glGetPathTexGenivNV :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetPathTexGenivNV = ffienumenumPtrintIOV glGetPathTexGenivNVFunPtr
+
+glGetPathTexGenivNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetPathTexGenivNVFunPtr = unsafePerformIO (getProcAddress "glGetPathTexGenivNV")
+
+{-# NOINLINE glGetPathTexGenivNVFunPtr #-}
+
+glGetProgramResourcefvNV :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLfloat -> m ()
+glGetProgramResourcefvNV = ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrfloatIOV glGetProgramResourcefvNVFunPtr
+
+glGetProgramResourcefvNVFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLfloat -> IO ())
+glGetProgramResourcefvNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramResourcefvNV")
+
+{-# NOINLINE glGetProgramResourcefvNVFunPtr #-}
+
+glInterpolatePathsNV :: MonadIO m => GLuint -> GLuint -> GLuint -> GLfloat -> m ()
+glInterpolatePathsNV = ffiuintuintuintfloatIOV glInterpolatePathsNVFunPtr
+
+glInterpolatePathsNVFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLfloat -> IO ())
+glInterpolatePathsNVFunPtr = unsafePerformIO (getProcAddress "glInterpolatePathsNV")
+
+{-# NOINLINE glInterpolatePathsNVFunPtr #-}
+
+glIsPathNV :: MonadIO m => GLuint -> m GLboolean
+glIsPathNV = ffiuintIOboolean glIsPathNVFunPtr
+
+glIsPathNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsPathNVFunPtr = unsafePerformIO (getProcAddress "glIsPathNV")
+
+{-# NOINLINE glIsPathNVFunPtr #-}
+
+glIsPointInFillPathNV :: MonadIO m => GLuint -> GLuint -> GLfloat -> GLfloat -> m GLboolean
+glIsPointInFillPathNV = ffiuintuintfloatfloatIOboolean glIsPointInFillPathNVFunPtr
+
+glIsPointInFillPathNVFunPtr :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> IO GLboolean)
+glIsPointInFillPathNVFunPtr = unsafePerformIO (getProcAddress "glIsPointInFillPathNV")
+
+{-# NOINLINE glIsPointInFillPathNVFunPtr #-}
+
+glIsPointInStrokePathNV :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m GLboolean
+glIsPointInStrokePathNV = ffiuintfloatfloatIOboolean glIsPointInStrokePathNVFunPtr
+
+glIsPointInStrokePathNVFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO GLboolean)
+glIsPointInStrokePathNVFunPtr = unsafePerformIO (getProcAddress "glIsPointInStrokePathNV")
+
+{-# NOINLINE glIsPointInStrokePathNVFunPtr #-}
+
+glMatrixLoad3x2fNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixLoad3x2fNV = ffienumPtrfloatIOV glMatrixLoad3x2fNVFunPtr
+
+glMatrixLoad3x2fNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixLoad3x2fNVFunPtr = unsafePerformIO (getProcAddress "glMatrixLoad3x2fNV")
+
+{-# NOINLINE glMatrixLoad3x2fNVFunPtr #-}
+
+glMatrixLoad3x3fNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixLoad3x3fNV = ffienumPtrfloatIOV glMatrixLoad3x3fNVFunPtr
+
+glMatrixLoad3x3fNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixLoad3x3fNVFunPtr = unsafePerformIO (getProcAddress "glMatrixLoad3x3fNV")
+
+{-# NOINLINE glMatrixLoad3x3fNVFunPtr #-}
+
+glMatrixLoadTranspose3x3fNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixLoadTranspose3x3fNV = ffienumPtrfloatIOV glMatrixLoadTranspose3x3fNVFunPtr
+
+glMatrixLoadTranspose3x3fNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixLoadTranspose3x3fNVFunPtr = unsafePerformIO (getProcAddress "glMatrixLoadTranspose3x3fNV")
+
+{-# NOINLINE glMatrixLoadTranspose3x3fNVFunPtr #-}
+
+glMatrixMult3x2fNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixMult3x2fNV = ffienumPtrfloatIOV glMatrixMult3x2fNVFunPtr
+
+glMatrixMult3x2fNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixMult3x2fNVFunPtr = unsafePerformIO (getProcAddress "glMatrixMult3x2fNV")
+
+{-# NOINLINE glMatrixMult3x2fNVFunPtr #-}
+
+glMatrixMult3x3fNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixMult3x3fNV = ffienumPtrfloatIOV glMatrixMult3x3fNVFunPtr
+
+glMatrixMult3x3fNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixMult3x3fNVFunPtr = unsafePerformIO (getProcAddress "glMatrixMult3x3fNV")
+
+{-# NOINLINE glMatrixMult3x3fNVFunPtr #-}
+
+glMatrixMultTranspose3x3fNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glMatrixMultTranspose3x3fNV = ffienumPtrfloatIOV glMatrixMultTranspose3x3fNVFunPtr
+
+glMatrixMultTranspose3x3fNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glMatrixMultTranspose3x3fNVFunPtr = unsafePerformIO (getProcAddress "glMatrixMultTranspose3x3fNV")
+
+{-# NOINLINE glMatrixMultTranspose3x3fNVFunPtr #-}
+
+glPathColorGenNV :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glPathColorGenNV = ffienumenumenumPtrfloatIOV glPathColorGenNVFunPtr
+
+glPathColorGenNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glPathColorGenNVFunPtr = unsafePerformIO (getProcAddress "glPathColorGenNV")
+
+{-# NOINLINE glPathColorGenNVFunPtr #-}
+
+glPathCommandsNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> m ()
+glPathCommandsNV = ffiuintsizeiPtrubytesizeienumPtrVIOV glPathCommandsNVFunPtr
+
+glPathCommandsNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ())
+glPathCommandsNVFunPtr = unsafePerformIO (getProcAddress "glPathCommandsNV")
+
+{-# NOINLINE glPathCommandsNVFunPtr #-}
+
+glPathCoordsNV :: MonadIO m => GLuint -> GLsizei -> GLenum -> Ptr () -> m ()
+glPathCoordsNV = ffiuintsizeienumPtrVIOV glPathCoordsNVFunPtr
+
+glPathCoordsNVFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> Ptr () -> IO ())
+glPathCoordsNVFunPtr = unsafePerformIO (getProcAddress "glPathCoordsNV")
+
+{-# NOINLINE glPathCoordsNVFunPtr #-}
+
+glPathCoverDepthFuncNV :: MonadIO m => GLenum -> m ()
+glPathCoverDepthFuncNV = ffienumIOV glPathCoverDepthFuncNVFunPtr
+
+glPathCoverDepthFuncNVFunPtr :: FunPtr (GLenum -> IO ())
+glPathCoverDepthFuncNVFunPtr = unsafePerformIO (getProcAddress "glPathCoverDepthFuncNV")
+
+{-# NOINLINE glPathCoverDepthFuncNVFunPtr #-}
+
+glPathDashArrayNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glPathDashArrayNV = ffiuintsizeiPtrfloatIOV glPathDashArrayNVFunPtr
+
+glPathDashArrayNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glPathDashArrayNVFunPtr = unsafePerformIO (getProcAddress "glPathDashArrayNV")
+
+{-# NOINLINE glPathDashArrayNVFunPtr #-}
+
+glPathFogGenNV :: MonadIO m => GLenum -> m ()
+glPathFogGenNV = ffienumIOV glPathFogGenNVFunPtr
+
+glPathFogGenNVFunPtr :: FunPtr (GLenum -> IO ())
+glPathFogGenNVFunPtr = unsafePerformIO (getProcAddress "glPathFogGenNV")
+
+{-# NOINLINE glPathFogGenNVFunPtr #-}
+
+glPathGlyphIndexArrayNV :: MonadIO m => GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLuint -> GLfloat -> m GLenum
+glPathGlyphIndexArrayNV = ffiuintenumPtrVbitfielduintsizeiuintfloatIOenum glPathGlyphIndexArrayNVFunPtr
+
+glPathGlyphIndexArrayNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum)
+glPathGlyphIndexArrayNVFunPtr = unsafePerformIO (getProcAddress "glPathGlyphIndexArrayNV")
+
+{-# NOINLINE glPathGlyphIndexArrayNVFunPtr #-}
+
+glPathGlyphIndexRangeNV :: MonadIO m => GLenum -> Ptr () -> GLbitfield -> GLuint -> GLfloat -> GLuint -> m GLenum
+glPathGlyphIndexRangeNV = ffienumPtrVbitfielduintfloatuintIOenum glPathGlyphIndexRangeNVFunPtr
+
+glPathGlyphIndexRangeNVFunPtr :: FunPtr (GLenum -> Ptr () -> GLbitfield -> GLuint -> GLfloat -> GLuint -> IO GLenum)
+glPathGlyphIndexRangeNVFunPtr = unsafePerformIO (getProcAddress "glPathGlyphIndexRangeNV")
+
+{-# NOINLINE glPathGlyphIndexRangeNVFunPtr #-}
+
+glPathGlyphRangeNV :: MonadIO m => GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLenum -> GLuint -> GLfloat -> m ()
+glPathGlyphRangeNV = ffiuintenumPtrVbitfielduintsizeienumuintfloatIOV glPathGlyphRangeNVFunPtr
+
+glPathGlyphRangeNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLenum -> GLuint -> GLfloat -> IO ())
+glPathGlyphRangeNVFunPtr = unsafePerformIO (getProcAddress "glPathGlyphRangeNV")
+
+{-# NOINLINE glPathGlyphRangeNVFunPtr #-}
+
+glPathGlyphsNV :: MonadIO m => GLuint -> GLenum -> Ptr () -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLenum -> GLuint -> GLfloat -> m ()
+glPathGlyphsNV = ffiuintenumPtrVbitfieldsizeienumPtrVenumuintfloatIOV glPathGlyphsNVFunPtr
+
+glPathGlyphsNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLenum -> GLuint -> GLfloat -> IO ())
+glPathGlyphsNVFunPtr = unsafePerformIO (getProcAddress "glPathGlyphsNV")
+
+{-# NOINLINE glPathGlyphsNVFunPtr #-}
+
+glPathMemoryGlyphIndexArrayNV :: MonadIO m => GLuint -> GLenum -> GLsizeiptr -> Ptr () -> GLsizei -> GLuint -> GLsizei -> GLuint -> GLfloat -> m GLenum
+glPathMemoryGlyphIndexArrayNV = ffiuintenumsizeiptrPtrVsizeiuintsizeiuintfloatIOenum glPathMemoryGlyphIndexArrayNVFunPtr
+
+glPathMemoryGlyphIndexArrayNVFunPtr :: FunPtr (GLuint -> GLenum -> GLsizeiptr -> Ptr () -> GLsizei -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum)
+glPathMemoryGlyphIndexArrayNVFunPtr = unsafePerformIO (getProcAddress "glPathMemoryGlyphIndexArrayNV")
+
+{-# NOINLINE glPathMemoryGlyphIndexArrayNVFunPtr #-}
+
+glPathParameterfNV :: MonadIO m => GLuint -> GLenum -> GLfloat -> m ()
+glPathParameterfNV = ffiuintenumfloatIOV glPathParameterfNVFunPtr
+
+glPathParameterfNVFunPtr :: FunPtr (GLuint -> GLenum -> GLfloat -> IO ())
+glPathParameterfNVFunPtr = unsafePerformIO (getProcAddress "glPathParameterfNV")
+
+{-# NOINLINE glPathParameterfNVFunPtr #-}
+
+glPathParameterfvNV :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glPathParameterfvNV = ffiuintenumPtrfloatIOV glPathParameterfvNVFunPtr
+
+glPathParameterfvNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glPathParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glPathParameterfvNV")
+
+{-# NOINLINE glPathParameterfvNVFunPtr #-}
+
+glPathParameteriNV :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
+glPathParameteriNV = ffiuintenumintIOV glPathParameteriNVFunPtr
+
+glPathParameteriNVFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
+glPathParameteriNVFunPtr = unsafePerformIO (getProcAddress "glPathParameteriNV")
+
+{-# NOINLINE glPathParameteriNVFunPtr #-}
+
+glPathParameterivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glPathParameterivNV = ffiuintenumPtrintIOV glPathParameterivNVFunPtr
+
+glPathParameterivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glPathParameterivNVFunPtr = unsafePerformIO (getProcAddress "glPathParameterivNV")
+
+{-# NOINLINE glPathParameterivNVFunPtr #-}
+
+glPathStencilDepthOffsetNV :: MonadIO m => GLfloat -> GLfloat -> m ()
+glPathStencilDepthOffsetNV = ffifloatfloatIOV glPathStencilDepthOffsetNVFunPtr
+
+glPathStencilDepthOffsetNVFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
+glPathStencilDepthOffsetNVFunPtr = unsafePerformIO (getProcAddress "glPathStencilDepthOffsetNV")
+
+{-# NOINLINE glPathStencilDepthOffsetNVFunPtr #-}
+
+glPathStencilFuncNV :: MonadIO m => GLenum -> GLint -> GLuint -> m ()
+glPathStencilFuncNV = ffienumintuintIOV glPathStencilFuncNVFunPtr
+
+glPathStencilFuncNVFunPtr :: FunPtr (GLenum -> GLint -> GLuint -> IO ())
+glPathStencilFuncNVFunPtr = unsafePerformIO (getProcAddress "glPathStencilFuncNV")
+
+{-# NOINLINE glPathStencilFuncNVFunPtr #-}
+
+glPathStringNV :: MonadIO m => GLuint -> GLenum -> GLsizei -> Ptr () -> m ()
+glPathStringNV = ffiuintenumsizeiPtrVIOV glPathStringNVFunPtr
+
+glPathStringNVFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glPathStringNVFunPtr = unsafePerformIO (getProcAddress "glPathStringNV")
+
+{-# NOINLINE glPathStringNVFunPtr #-}
+
+glPathSubCommandsNV :: MonadIO m => GLuint -> GLsizei -> GLsizei -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> m ()
+glPathSubCommandsNV = ffiuintsizeisizeisizeiPtrubytesizeienumPtrVIOV glPathSubCommandsNVFunPtr
+
+glPathSubCommandsNVFunPtr :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ())
+glPathSubCommandsNVFunPtr = unsafePerformIO (getProcAddress "glPathSubCommandsNV")
+
+{-# NOINLINE glPathSubCommandsNVFunPtr #-}
+
+glPathSubCoordsNV :: MonadIO m => GLuint -> GLsizei -> GLsizei -> GLenum -> Ptr () -> m ()
+glPathSubCoordsNV = ffiuintsizeisizeienumPtrVIOV glPathSubCoordsNVFunPtr
+
+glPathSubCoordsNVFunPtr :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLenum -> Ptr () -> IO ())
+glPathSubCoordsNVFunPtr = unsafePerformIO (getProcAddress "glPathSubCoordsNV")
+
+{-# NOINLINE glPathSubCoordsNVFunPtr #-}
+
+glPathTexGenNV :: MonadIO m => GLenum -> GLenum -> GLint -> Ptr GLfloat -> m ()
+glPathTexGenNV = ffienumenumintPtrfloatIOV glPathTexGenNVFunPtr
+
+glPathTexGenNVFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> Ptr GLfloat -> IO ())
+glPathTexGenNVFunPtr = unsafePerformIO (getProcAddress "glPathTexGenNV")
+
+{-# NOINLINE glPathTexGenNVFunPtr #-}
+
+glPointAlongPathNV :: MonadIO m => GLuint -> GLsizei -> GLsizei -> GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m GLboolean
+glPointAlongPathNV = ffiuintsizeisizeifloatPtrfloatPtrfloatPtrfloatPtrfloatIOboolean glPointAlongPathNVFunPtr
+
+glPointAlongPathNVFunPtr :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO GLboolean)
+glPointAlongPathNVFunPtr = unsafePerformIO (getProcAddress "glPointAlongPathNV")
+
+{-# NOINLINE glPointAlongPathNVFunPtr #-}
+
+glProgramPathFragmentInputGenNV :: MonadIO m => GLuint -> GLint -> GLenum -> GLint -> Ptr GLfloat -> m ()
+glProgramPathFragmentInputGenNV = ffiuintintenumintPtrfloatIOV glProgramPathFragmentInputGenNVFunPtr
+
+glProgramPathFragmentInputGenNVFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLint -> Ptr GLfloat -> IO ())
+glProgramPathFragmentInputGenNVFunPtr = unsafePerformIO (getProcAddress "glProgramPathFragmentInputGenNV")
+
+{-# NOINLINE glProgramPathFragmentInputGenNVFunPtr #-}
+
+glStencilFillPathInstancedNV :: MonadIO m => GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+glStencilFillPathInstancedNV = ffisizeienumPtrVuintenumuintenumPtrfloatIOV glStencilFillPathInstancedNVFunPtr
+
+glStencilFillPathInstancedNVFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glStencilFillPathInstancedNVFunPtr = unsafePerformIO (getProcAddress "glStencilFillPathInstancedNV")
+
+{-# NOINLINE glStencilFillPathInstancedNVFunPtr #-}
+
+glStencilFillPathNV :: MonadIO m => GLuint -> GLenum -> GLuint -> m ()
+glStencilFillPathNV = ffiuintenumuintIOV glStencilFillPathNVFunPtr
+
+glStencilFillPathNVFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> IO ())
+glStencilFillPathNVFunPtr = unsafePerformIO (getProcAddress "glStencilFillPathNV")
+
+{-# NOINLINE glStencilFillPathNVFunPtr #-}
+
+glStencilStrokePathInstancedNV :: MonadIO m => GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+glStencilStrokePathInstancedNV = ffisizeienumPtrVuintintuintenumPtrfloatIOV glStencilStrokePathInstancedNVFunPtr
+
+glStencilStrokePathInstancedNVFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glStencilStrokePathInstancedNVFunPtr = unsafePerformIO (getProcAddress "glStencilStrokePathInstancedNV")
+
+{-# NOINLINE glStencilStrokePathInstancedNVFunPtr #-}
+
+glStencilStrokePathNV :: MonadIO m => GLuint -> GLint -> GLuint -> m ()
+glStencilStrokePathNV = ffiuintintuintIOV glStencilStrokePathNVFunPtr
+
+glStencilStrokePathNVFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> IO ())
+glStencilStrokePathNVFunPtr = unsafePerformIO (getProcAddress "glStencilStrokePathNV")
+
+{-# NOINLINE glStencilStrokePathNVFunPtr #-}
+
+glStencilThenCoverFillPathInstancedNV :: MonadIO m => GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glStencilThenCoverFillPathInstancedNV = ffisizeienumPtrVuintenumuintenumenumPtrfloatIOV glStencilThenCoverFillPathInstancedNVFunPtr
+
+glStencilThenCoverFillPathInstancedNVFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glStencilThenCoverFillPathInstancedNVFunPtr = unsafePerformIO (getProcAddress "glStencilThenCoverFillPathInstancedNV")
+
+{-# NOINLINE glStencilThenCoverFillPathInstancedNVFunPtr #-}
+
+glStencilThenCoverFillPathNV :: MonadIO m => GLuint -> GLenum -> GLuint -> GLenum -> m ()
+glStencilThenCoverFillPathNV = ffiuintenumuintenumIOV glStencilThenCoverFillPathNVFunPtr
+
+glStencilThenCoverFillPathNVFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> IO ())
+glStencilThenCoverFillPathNVFunPtr = unsafePerformIO (getProcAddress "glStencilThenCoverFillPathNV")
+
+{-# NOINLINE glStencilThenCoverFillPathNVFunPtr #-}
+
+glStencilThenCoverStrokePathInstancedNV :: MonadIO m => GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glStencilThenCoverStrokePathInstancedNV = ffisizeienumPtrVuintintuintenumenumPtrfloatIOV glStencilThenCoverStrokePathInstancedNVFunPtr
+
+glStencilThenCoverStrokePathInstancedNVFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glStencilThenCoverStrokePathInstancedNVFunPtr = unsafePerformIO (getProcAddress "glStencilThenCoverStrokePathInstancedNV")
+
+{-# NOINLINE glStencilThenCoverStrokePathInstancedNVFunPtr #-}
+
+glStencilThenCoverStrokePathNV :: MonadIO m => GLuint -> GLint -> GLuint -> GLenum -> m ()
+glStencilThenCoverStrokePathNV = ffiuintintuintenumIOV glStencilThenCoverStrokePathNVFunPtr
+
+glStencilThenCoverStrokePathNVFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLenum -> IO ())
+glStencilThenCoverStrokePathNVFunPtr = unsafePerformIO (getProcAddress "glStencilThenCoverStrokePathNV")
+
+{-# NOINLINE glStencilThenCoverStrokePathNVFunPtr #-}
+
+glTransformPathNV :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+glTransformPathNV = ffiuintuintenumPtrfloatIOV glTransformPathNVFunPtr
+
+glTransformPathNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glTransformPathNVFunPtr = unsafePerformIO (getProcAddress "glTransformPathNV")
+
+{-# NOINLINE glTransformPathNVFunPtr #-}
+
+glWeightPathsNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> m ()
+glWeightPathsNV = ffiuintsizeiPtruintPtrfloatIOV glWeightPathsNVFunPtr
+
+glWeightPathsNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ())
+glWeightPathsNVFunPtr = unsafePerformIO (getProcAddress "glWeightPathsNV")
+
+{-# NOINLINE glWeightPathsNVFunPtr #-}
+
+pattern GL_2_BYTES_NV = 0x1407 :: GLenum
+
+pattern GL_3_BYTES_NV = 0x1408 :: GLenum
+
+pattern GL_4_BYTES_NV = 0x1409 :: GLenum
+
+pattern GL_ACCUM_ADJACENT_PAIRS_NV = 0x90AD :: GLenum
+
+pattern GL_ADJACENT_PAIRS_NV = 0x90AE :: GLenum
+
+pattern GL_AFFINE_2D_NV = 0x9092 :: GLenum
+
+pattern GL_AFFINE_3D_NV = 0x9094 :: GLenum
+
+pattern GL_ARC_TO_NV = 0xFE :: GLenum
+
+pattern GL_BEVEL_NV = 0x90A6 :: GLenum
+
+pattern GL_BOLD_BIT_NV = 0x01 :: GLenum
+
+pattern GL_BOUNDING_BOX_NV = 0x908D :: GLenum
+
+pattern GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV = 0x909C :: GLenum
+
+pattern GL_CIRCULAR_CCW_ARC_TO_NV = 0xF8 :: GLenum
+
+pattern GL_CIRCULAR_CW_ARC_TO_NV = 0xFA :: GLenum
+
+pattern GL_CIRCULAR_TANGENT_ARC_TO_NV = 0xFC :: GLenum
+
+pattern GL_CLOSE_PATH_NV = 0x00 :: GLenum
+
+pattern GL_CONIC_CURVE_TO_NV = 0x1A :: GLenum
+
+pattern GL_CONSTANT_NV = 0x8576 :: GLenum
+
+pattern GL_CONVEX_HULL_NV = 0x908B :: GLenum
+
+pattern GL_COUNT_DOWN_NV = 0x9089 :: GLenum
+
+pattern GL_COUNT_UP_NV = 0x9088 :: GLenum
+
+pattern GL_CUBIC_CURVE_TO_NV = 0x0C :: GLenum
+
+pattern GL_DUP_FIRST_CUBIC_CURVE_TO_NV = 0xF2 :: GLenum
+
+pattern GL_DUP_LAST_CUBIC_CURVE_TO_NV = 0xF4 :: GLenum
+
+pattern GL_EYE_LINEAR_NV = 0x2400 :: GLenum
+
+pattern GL_FILE_NAME_NV = 0x9074 :: GLenum
+
+pattern GL_FIRST_TO_REST_NV = 0x90AF :: GLenum
+
+pattern GL_FONT_ASCENDER_BIT_NV = 0x00200000 :: GLenum
+
+pattern GL_FONT_DESCENDER_BIT_NV = 0x00400000 :: GLenum
+
+pattern GL_FONT_GLYPHS_AVAILABLE_NV = 0x9368 :: GLenum
+
+pattern GL_FONT_HAS_KERNING_BIT_NV = 0x10000000 :: GLenum
+
+pattern GL_FONT_HEIGHT_BIT_NV = 0x00800000 :: GLenum
+
+pattern GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000 :: GLenum
+
+pattern GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV = 0x01000000 :: GLenum
+
+pattern GL_FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000 :: GLenum
+
+pattern GL_FONT_TARGET_UNAVAILABLE_NV = 0x9369 :: GLenum
+
+pattern GL_FONT_UNAVAILABLE_NV = 0x936A :: GLenum
+
+pattern GL_FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000 :: GLenum
+
+pattern GL_FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000 :: GLenum
+
+pattern GL_FONT_UNINTELLIGIBLE_NV = 0x936B :: GLenum
+
+pattern GL_FONT_UNITS_PER_EM_BIT_NV = 0x00100000 :: GLenum
+
+pattern GL_FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000 :: GLenum
+
+pattern GL_FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000 :: GLenum
+
+pattern GL_FONT_Y_MAX_BOUNDS_BIT_NV = 0x00080000 :: GLenum
+
+pattern GL_FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000 :: GLenum
+
+pattern GL_FRAGMENT_INPUT_NV = 0x936D :: GLenum
+
+pattern GL_GLYPH_HAS_KERNING_BIT_NV = 0x100 :: GLenum
+
+pattern GL_GLYPH_HEIGHT_BIT_NV = 0x02 :: GLenum
+
+pattern GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV = 0x10 :: GLenum
+
+pattern GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV = 0x04 :: GLenum
+
+pattern GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV = 0x08 :: GLenum
+
+pattern GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x80 :: GLenum
+
+pattern GL_GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x20 :: GLenum
+
+pattern GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x40 :: GLenum
+
+pattern GL_GLYPH_WIDTH_BIT_NV = 0x01 :: GLenum
+
+pattern GL_HORIZONTAL_LINE_TO_NV = 0x06 :: GLenum
+
+pattern GL_ITALIC_BIT_NV = 0x02 :: GLenum
+
+pattern GL_LARGE_CCW_ARC_TO_NV = 0x16 :: GLenum
+
+pattern GL_LARGE_CW_ARC_TO_NV = 0x18 :: GLenum
+
+pattern GL_LINE_TO_NV = 0x04 :: GLenum
+
+pattern GL_MITER_REVERT_NV = 0x90A7 :: GLenum
+
+pattern GL_MITER_TRUNCATE_NV = 0x90A8 :: GLenum
+
+pattern GL_MOVE_TO_CONTINUES_NV = 0x90B6 :: GLenum
+
+pattern GL_MOVE_TO_NV = 0x02 :: GLenum
+
+pattern GL_MOVE_TO_RESETS_NV = 0x90B5 :: GLenum
+
+pattern GL_OBJECT_LINEAR_NV = 0x2401 :: GLenum
+
+pattern GL_PATH_CLIENT_LENGTH_NV = 0x907F :: GLenum
+
+pattern GL_PATH_COMMAND_COUNT_NV = 0x909D :: GLenum
+
+pattern GL_PATH_COMPUTED_LENGTH_NV = 0x90A0 :: GLenum
+
+pattern GL_PATH_COORD_COUNT_NV = 0x909E :: GLenum
+
+pattern GL_PATH_COVER_DEPTH_FUNC_NV = 0x90BF :: GLenum
+
+pattern GL_PATH_DASH_ARRAY_COUNT_NV = 0x909F :: GLenum
+
+pattern GL_PATH_DASH_CAPS_NV = 0x907B :: GLenum
+
+pattern GL_PATH_DASH_OFFSET_NV = 0x907E :: GLenum
+
+pattern GL_PATH_DASH_OFFSET_RESET_NV = 0x90B4 :: GLenum
+
+pattern GL_PATH_END_CAPS_NV = 0x9076 :: GLenum
+
+pattern GL_PATH_ERROR_POSITION_NV = 0x90AB :: GLenum
+
+pattern GL_PATH_FILL_BOUNDING_BOX_NV = 0x90A1 :: GLenum
+
+pattern GL_PATH_FILL_COVER_MODE_NV = 0x9082 :: GLenum
+
+pattern GL_PATH_FILL_MASK_NV = 0x9081 :: GLenum
+
+pattern GL_PATH_FILL_MODE_NV = 0x9080 :: GLenum
+
+pattern GL_PATH_FOG_GEN_MODE_NV = 0x90AC :: GLenum
+
+pattern GL_PATH_FORMAT_PS_NV = 0x9071 :: GLenum
+
+pattern GL_PATH_FORMAT_SVG_NV = 0x9070 :: GLenum
+
+pattern GL_PATH_GEN_COEFF_NV = 0x90B1 :: GLenum
+
+pattern GL_PATH_GEN_COLOR_FORMAT_NV = 0x90B2 :: GLenum
+
+pattern GL_PATH_GEN_COMPONENTS_NV = 0x90B3 :: GLenum
+
+pattern GL_PATH_GEN_MODE_NV = 0x90B0 :: GLenum
+
+pattern GL_PATH_INITIAL_DASH_CAP_NV = 0x907C :: GLenum
+
+pattern GL_PATH_INITIAL_END_CAP_NV = 0x9077 :: GLenum
+
+pattern GL_PATH_JOIN_STYLE_NV = 0x9079 :: GLenum
+
+pattern GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV = 0x0D36 :: GLenum
+
+pattern GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV = 0x0D38 :: GLenum
+
+pattern GL_PATH_MITER_LIMIT_NV = 0x907A :: GLenum
+
+pattern GL_PATH_MODELVIEW_MATRIX_NV = 0x0BA6 :: GLenum
+
+pattern GL_PATH_MODELVIEW_NV = 0x1700 :: GLenum
+
+pattern GL_PATH_MODELVIEW_STACK_DEPTH_NV = 0x0BA3 :: GLenum
+
+pattern GL_PATH_OBJECT_BOUNDING_BOX_NV = 0x908A :: GLenum
+
+pattern GL_PATH_PROJECTION_MATRIX_NV = 0x0BA7 :: GLenum
+
+pattern GL_PATH_PROJECTION_NV = 0x1701 :: GLenum
+
+pattern GL_PATH_PROJECTION_STACK_DEPTH_NV = 0x0BA4 :: GLenum
+
+pattern GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x90BD :: GLenum
+
+pattern GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x90BE :: GLenum
+
+pattern GL_PATH_STENCIL_FUNC_NV = 0x90B7 :: GLenum
+
+pattern GL_PATH_STENCIL_REF_NV = 0x90B8 :: GLenum
+
+pattern GL_PATH_STENCIL_VALUE_MASK_NV = 0x90B9 :: GLenum
+
+pattern GL_PATH_STROKE_BOUNDING_BOX_NV = 0x90A2 :: GLenum
+
+pattern GL_PATH_STROKE_COVER_MODE_NV = 0x9083 :: GLenum
+
+pattern GL_PATH_STROKE_MASK_NV = 0x9084 :: GLenum
+
+pattern GL_PATH_STROKE_WIDTH_NV = 0x9075 :: GLenum
+
+pattern GL_PATH_TERMINAL_DASH_CAP_NV = 0x907D :: GLenum
+
+pattern GL_PATH_TERMINAL_END_CAP_NV = 0x9078 :: GLenum
+
+pattern GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV = 0x84E3 :: GLenum
+
+pattern GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV = 0x84E4 :: GLenum
+
+pattern GL_QUADRATIC_CURVE_TO_NV = 0x0A :: GLenum
+
+pattern GL_RECT_NV = 0xF6 :: GLenum
+
+pattern GL_RELATIVE_ARC_TO_NV = 0xFF :: GLenum
+
+pattern GL_RELATIVE_CONIC_CURVE_TO_NV = 0x1B :: GLenum
+
+pattern GL_RELATIVE_CUBIC_CURVE_TO_NV = 0x0D :: GLenum
+
+pattern GL_RELATIVE_HORIZONTAL_LINE_TO_NV = 0x07 :: GLenum
+
+pattern GL_RELATIVE_LARGE_CCW_ARC_TO_NV = 0x17 :: GLenum
+
+pattern GL_RELATIVE_LARGE_CW_ARC_TO_NV = 0x19 :: GLenum
+
+pattern GL_RELATIVE_LINE_TO_NV = 0x05 :: GLenum
+
+pattern GL_RELATIVE_MOVE_TO_NV = 0x03 :: GLenum
+
+pattern GL_RELATIVE_QUADRATIC_CURVE_TO_NV = 0x0B :: GLenum
+
+pattern GL_RELATIVE_RECT_NV = 0xF7 :: GLenum
+
+pattern GL_RELATIVE_ROUNDED_RECT2_NV = 0xEB :: GLenum
+
+pattern GL_RELATIVE_ROUNDED_RECT4_NV = 0xED :: GLenum
+
+pattern GL_RELATIVE_ROUNDED_RECT8_NV = 0xEF :: GLenum
+
+pattern GL_RELATIVE_ROUNDED_RECT_NV = 0xE9 :: GLenum
+
+pattern GL_RELATIVE_SMALL_CCW_ARC_TO_NV = 0x13 :: GLenum
+
+pattern GL_RELATIVE_SMALL_CW_ARC_TO_NV = 0x15 :: GLenum
+
+pattern GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = 0x11 :: GLenum
+
+pattern GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0F :: GLenum
+
+pattern GL_RELATIVE_VERTICAL_LINE_TO_NV = 0x09 :: GLenum
+
+pattern GL_RESTART_PATH_NV = 0xF0 :: GLenum
+
+pattern GL_ROUNDED_RECT2_NV = 0xEA :: GLenum
+
+pattern GL_ROUNDED_RECT4_NV = 0xEC :: GLenum
+
+pattern GL_ROUNDED_RECT8_NV = 0xEE :: GLenum
+
+pattern GL_ROUNDED_RECT_NV = 0xE8 :: GLenum
+
+pattern GL_ROUND_NV = 0x90A4 :: GLenum
+
+pattern GL_SKIP_MISSING_GLYPH_NV = 0x90A9 :: GLenum
+
+pattern GL_SMALL_CCW_ARC_TO_NV = 0x12 :: GLenum
+
+pattern GL_SMALL_CW_ARC_TO_NV = 0x14 :: GLenum
+
+pattern GL_SMOOTH_CUBIC_CURVE_TO_NV = 0x10 :: GLenum
+
+pattern GL_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0E :: GLenum
+
+pattern GL_SQUARE_NV = 0x90A3 :: GLenum
+
+pattern GL_STANDARD_FONT_FORMAT_NV = 0x936C :: GLenum
+
+pattern GL_STANDARD_FONT_NAME_NV = 0x9072 :: GLenum
+
+pattern GL_SYSTEM_FONT_NAME_NV = 0x9073 :: GLenum
+
+pattern GL_TRANSLATE_2D_NV = 0x9090 :: GLenum
+
+pattern GL_TRANSLATE_3D_NV = 0x9091 :: GLenum
+
+pattern GL_TRANSLATE_X_NV = 0x908E :: GLenum
+
+pattern GL_TRANSLATE_Y_NV = 0x908F :: GLenum
+
+pattern GL_TRANSPOSE_AFFINE_2D_NV = 0x9096 :: GLenum
+
+pattern GL_TRANSPOSE_AFFINE_3D_NV = 0x9098 :: GLenum
+
+pattern GL_TRIANGULAR_NV = 0x90A5 :: GLenum
+
+pattern GL_USE_MISSING_GLYPH_NV = 0x90AA :: GLenum
+
+pattern GL_UTF16_NV = 0x909B :: GLenum
+
+pattern GL_UTF8_NV = 0x909A :: GLenum
+
+pattern GL_VERTICAL_LINE_TO_NV = 0x08 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PathRenderingSharedEdge.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PathRenderingSharedEdge.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PathRenderingSharedEdge.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.PathRenderingSharedEdge (
+  -- * Extension Support
+    gl_NV_path_rendering_shared_edge
+
+  -- * GL_NV_path_rendering_shared_edge
+  , pattern GL_SHARED_EDGE_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_path_rendering_shared_edge :: Bool
+gl_NV_path_rendering_shared_edge = member "GL_NV_path_rendering_shared_edge" extensions
+
+pattern GL_SHARED_EDGE_NV = 0xC0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PixelDataRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PixelDataRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PixelDataRange.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.PixelDataRange (
+  -- * Extension Support
+    gl_NV_pixel_data_range
+
+  -- * GL_NV_pixel_data_range
+  , glFlushPixelDataRangeNV
+  , glPixelDataRangeNV
+  , pattern GL_READ_PIXEL_DATA_RANGE_LENGTH_NV
+  , pattern GL_READ_PIXEL_DATA_RANGE_NV
+  , pattern GL_READ_PIXEL_DATA_RANGE_POINTER_NV
+  , pattern GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV
+  , pattern GL_WRITE_PIXEL_DATA_RANGE_NV
+  , pattern GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV
+) 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_NV_pixel_data_range :: Bool
+gl_NV_pixel_data_range = member "GL_NV_pixel_data_range" extensions
+
+glFlushPixelDataRangeNV :: MonadIO m => GLenum -> m ()
+glFlushPixelDataRangeNV = ffienumIOV glFlushPixelDataRangeNVFunPtr
+
+glFlushPixelDataRangeNVFunPtr :: FunPtr (GLenum -> IO ())
+glFlushPixelDataRangeNVFunPtr = unsafePerformIO (getProcAddress "glFlushPixelDataRangeNV")
+
+{-# NOINLINE glFlushPixelDataRangeNVFunPtr #-}
+
+glPixelDataRangeNV :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
+glPixelDataRangeNV = ffienumsizeiPtrVIOV glPixelDataRangeNVFunPtr
+
+glPixelDataRangeNVFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
+glPixelDataRangeNVFunPtr = unsafePerformIO (getProcAddress "glPixelDataRangeNV")
+
+{-# NOINLINE glPixelDataRangeNVFunPtr #-}
+
+pattern GL_READ_PIXEL_DATA_RANGE_LENGTH_NV = 0x887B :: GLenum
+
+pattern GL_READ_PIXEL_DATA_RANGE_NV = 0x8879 :: GLenum
+
+pattern GL_READ_PIXEL_DATA_RANGE_POINTER_NV = 0x887D :: GLenum
+
+pattern GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A :: GLenum
+
+pattern GL_WRITE_PIXEL_DATA_RANGE_NV = 0x8878 :: GLenum
+
+pattern GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV = 0x887C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PointSprite.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PointSprite.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PointSprite.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.PointSprite (
+  -- * Extension Support
+    gl_NV_point_sprite
+
+  -- * GL_NV_point_sprite
+  , glPointParameteriNV
+  , glPointParameterivNV
+  , pattern GL_COORD_REPLACE_NV
+  , pattern GL_POINT_SPRITE_NV
+  , pattern GL_POINT_SPRITE_R_MODE_NV
+) 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_NV_point_sprite :: Bool
+gl_NV_point_sprite = member "GL_NV_point_sprite" extensions
+
+glPointParameteriNV :: MonadIO m => GLenum -> GLint -> m ()
+glPointParameteriNV = ffienumintIOV glPointParameteriNVFunPtr
+
+glPointParameteriNVFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glPointParameteriNVFunPtr = unsafePerformIO (getProcAddress "glPointParameteriNV")
+
+{-# NOINLINE glPointParameteriNVFunPtr #-}
+
+glPointParameterivNV :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glPointParameterivNV = ffienumPtrintIOV glPointParameterivNVFunPtr
+
+glPointParameterivNVFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glPointParameterivNVFunPtr = unsafePerformIO (getProcAddress "glPointParameterivNV")
+
+{-# NOINLINE glPointParameterivNVFunPtr #-}
+
+pattern GL_COORD_REPLACE_NV = 0x8862 :: GLenum
+
+pattern GL_POINT_SPRITE_NV = 0x8861 :: GLenum
+
+pattern GL_POINT_SPRITE_R_MODE_NV = 0x8863 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PresentVideo.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PresentVideo.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PresentVideo.hs
@@ -0,0 +1,91 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.PresentVideo (
+  -- * Extension Support
+    gl_NV_present_video
+
+  -- * GL_NV_present_video
+  , glGetVideoi64vNV
+  , glGetVideoivNV
+  , glGetVideoui64vNV
+  , glGetVideouivNV
+  , glPresentFrameDualFillNV
+  , glPresentFrameKeyedNV
+  , pattern GL_CURRENT_TIME_NV
+  , pattern GL_FIELDS_NV
+  , pattern GL_FRAME_NV
+  , pattern GL_NUM_FILL_STREAMS_NV
+  , pattern GL_PRESENT_DURATION_NV
+  , pattern GL_PRESENT_TIME_NV
+) 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_NV_present_video :: Bool
+gl_NV_present_video = member "GL_NV_present_video" extensions
+
+glGetVideoi64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint64EXT -> m ()
+glGetVideoi64vNV = ffiuintenumPtrint64EXTIOV glGetVideoi64vNVFunPtr
+
+glGetVideoi64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64EXT -> IO ())
+glGetVideoi64vNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoi64vNV")
+
+{-# NOINLINE glGetVideoi64vNVFunPtr #-}
+
+glGetVideoivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVideoivNV = ffiuintenumPtrintIOV glGetVideoivNVFunPtr
+
+glGetVideoivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVideoivNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoivNV")
+
+{-# NOINLINE glGetVideoivNVFunPtr #-}
+
+glGetVideoui64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
+glGetVideoui64vNV = ffiuintenumPtruint64EXTIOV glGetVideoui64vNVFunPtr
+
+glGetVideoui64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ())
+glGetVideoui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoui64vNV")
+
+{-# NOINLINE glGetVideoui64vNVFunPtr #-}
+
+glGetVideouivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
+glGetVideouivNV = ffiuintenumPtruintIOV glGetVideouivNVFunPtr
+
+glGetVideouivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
+glGetVideouivNVFunPtr = unsafePerformIO (getProcAddress "glGetVideouivNV")
+
+{-# NOINLINE glGetVideouivNVFunPtr #-}
+
+glPresentFrameDualFillNV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> m ()
+glPresentFrameDualFillNV = ffiuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV glPresentFrameDualFillNVFunPtr
+
+glPresentFrameDualFillNVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> IO ())
+glPresentFrameDualFillNVFunPtr = unsafePerformIO (getProcAddress "glPresentFrameDualFillNV")
+
+{-# NOINLINE glPresentFrameDualFillNVFunPtr #-}
+
+glPresentFrameKeyedNV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> m ()
+glPresentFrameKeyedNV = ffiuintuint64EXTuintuintenumenumuintuintenumuintuintIOV glPresentFrameKeyedNVFunPtr
+
+glPresentFrameKeyedNVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> IO ())
+glPresentFrameKeyedNVFunPtr = unsafePerformIO (getProcAddress "glPresentFrameKeyedNV")
+
+{-# NOINLINE glPresentFrameKeyedNVFunPtr #-}
+
+pattern GL_CURRENT_TIME_NV = 0x8E28 :: GLenum
+
+pattern GL_FIELDS_NV = 0x8E27 :: GLenum
+
+pattern GL_FRAME_NV = 0x8E26 :: GLenum
+
+pattern GL_NUM_FILL_STREAMS_NV = 0x8E29 :: GLenum
+
+pattern GL_PRESENT_DURATION_NV = 0x8E2B :: GLenum
+
+pattern GL_PRESENT_TIME_NV = 0x8E2A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PrimitiveRestart.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PrimitiveRestart.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/PrimitiveRestart.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.PrimitiveRestart (
+  -- * Extension Support
+    gl_NV_primitive_restart
+
+  -- * GL_NV_primitive_restart
+  , glPrimitiveRestartIndexNV
+  , glPrimitiveRestartNV
+  , pattern GL_PRIMITIVE_RESTART_INDEX_NV
+  , pattern GL_PRIMITIVE_RESTART_NV
+) 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_NV_primitive_restart :: Bool
+gl_NV_primitive_restart = member "GL_NV_primitive_restart" extensions
+
+glPrimitiveRestartIndexNV :: MonadIO m => GLuint -> m ()
+glPrimitiveRestartIndexNV = ffiuintIOV glPrimitiveRestartIndexNVFunPtr
+
+glPrimitiveRestartIndexNVFunPtr :: FunPtr (GLuint -> IO ())
+glPrimitiveRestartIndexNVFunPtr = unsafePerformIO (getProcAddress "glPrimitiveRestartIndexNV")
+
+{-# NOINLINE glPrimitiveRestartIndexNVFunPtr #-}
+
+glPrimitiveRestartNV :: MonadIO m => m ()
+glPrimitiveRestartNV = ffiIOV glPrimitiveRestartNVFunPtr
+
+glPrimitiveRestartNVFunPtr :: FunPtr (IO ())
+glPrimitiveRestartNVFunPtr = unsafePerformIO (getProcAddress "glPrimitiveRestartNV")
+
+{-# NOINLINE glPrimitiveRestartNVFunPtr #-}
+
+pattern GL_PRIMITIVE_RESTART_INDEX_NV = 0x8559 :: GLenum
+
+pattern GL_PRIMITIVE_RESTART_NV = 0x8558 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadBuffer.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ReadBuffer (
+  -- * Extension Support
+    gl_NV_read_buffer
+
+  -- * GL_NV_read_buffer
+  , glReadBufferNV
+  , pattern GL_READ_BUFFER_NV
+) 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_NV_read_buffer :: Bool
+gl_NV_read_buffer = member "GL_NV_read_buffer" extensions
+
+glReadBufferNV :: MonadIO m => GLenum -> m ()
+glReadBufferNV = ffienumIOV glReadBufferNVFunPtr
+
+glReadBufferNVFunPtr :: FunPtr (GLenum -> IO ())
+glReadBufferNVFunPtr = unsafePerformIO (getProcAddress "glReadBufferNV")
+
+{-# NOINLINE glReadBufferNVFunPtr #-}
+
+pattern GL_READ_BUFFER_NV = 0x0C02 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadBufferFront.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadBufferFront.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadBufferFront.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ReadBufferFront (
+  -- * Extension Support
+    gl_NV_read_buffer_front
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_read_buffer_front :: Bool
+gl_NV_read_buffer_front = member "GL_NV_read_buffer_front" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadDepth.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadDepth.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadDepth.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ReadDepth (
+  -- * Extension Support
+    gl_NV_read_depth
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_read_depth :: Bool
+gl_NV_read_depth = member "GL_NV_read_depth" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadDepthStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadDepthStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadDepthStencil.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ReadDepthStencil (
+  -- * Extension Support
+    gl_NV_read_depth_stencil
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_read_depth_stencil :: Bool
+gl_NV_read_depth_stencil = member "GL_NV_read_depth_stencil" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ReadStencil.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ReadStencil (
+  -- * Extension Support
+    gl_NV_read_stencil
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_read_stencil :: Bool
+gl_NV_read_stencil = member "GL_NV_read_stencil" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/RegisterCombiners.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/RegisterCombiners.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/RegisterCombiners.hs
@@ -0,0 +1,291 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.RegisterCombiners (
+  -- * Extension Support
+    gl_NV_register_combiners
+
+  -- * GL_NV_register_combiners
+  , glCombinerInputNV
+  , glCombinerOutputNV
+  , glCombinerParameterfNV
+  , glCombinerParameterfvNV
+  , glCombinerParameteriNV
+  , glCombinerParameterivNV
+  , glFinalCombinerInputNV
+  , glGetCombinerInputParameterfvNV
+  , glGetCombinerInputParameterivNV
+  , glGetCombinerOutputParameterfvNV
+  , glGetCombinerOutputParameterivNV
+  , glGetFinalCombinerInputParameterfvNV
+  , glGetFinalCombinerInputParameterivNV
+  , pattern GL_BIAS_BY_NEGATIVE_ONE_HALF_NV
+  , pattern GL_COLOR_SUM_CLAMP_NV
+  , pattern GL_COMBINER0_NV
+  , pattern GL_COMBINER1_NV
+  , pattern GL_COMBINER2_NV
+  , pattern GL_COMBINER3_NV
+  , pattern GL_COMBINER4_NV
+  , pattern GL_COMBINER5_NV
+  , pattern GL_COMBINER6_NV
+  , pattern GL_COMBINER7_NV
+  , pattern GL_COMBINER_AB_DOT_PRODUCT_NV
+  , pattern GL_COMBINER_AB_OUTPUT_NV
+  , pattern GL_COMBINER_BIAS_NV
+  , pattern GL_COMBINER_CD_DOT_PRODUCT_NV
+  , pattern GL_COMBINER_CD_OUTPUT_NV
+  , pattern GL_COMBINER_COMPONENT_USAGE_NV
+  , pattern GL_COMBINER_INPUT_NV
+  , pattern GL_COMBINER_MAPPING_NV
+  , pattern GL_COMBINER_MUX_SUM_NV
+  , pattern GL_COMBINER_SCALE_NV
+  , pattern GL_COMBINER_SUM_OUTPUT_NV
+  , pattern GL_CONSTANT_COLOR0_NV
+  , pattern GL_CONSTANT_COLOR1_NV
+  , pattern GL_DISCARD_NV
+  , pattern GL_EXPAND_NEGATE_NV
+  , pattern GL_EXPAND_NORMAL_NV
+  , pattern GL_E_TIMES_F_NV
+  , pattern GL_FOG
+  , pattern GL_HALF_BIAS_NEGATE_NV
+  , pattern GL_HALF_BIAS_NORMAL_NV
+  , pattern GL_MAX_GENERAL_COMBINERS_NV
+  , pattern GL_NONE
+  , pattern GL_NUM_GENERAL_COMBINERS_NV
+  , pattern GL_PRIMARY_COLOR_NV
+  , pattern GL_REGISTER_COMBINERS_NV
+  , pattern GL_SCALE_BY_FOUR_NV
+  , pattern GL_SCALE_BY_ONE_HALF_NV
+  , pattern GL_SCALE_BY_TWO_NV
+  , pattern GL_SECONDARY_COLOR_NV
+  , pattern GL_SIGNED_IDENTITY_NV
+  , pattern GL_SIGNED_NEGATE_NV
+  , pattern GL_SPARE0_NV
+  , pattern GL_SPARE0_PLUS_SECONDARY_COLOR_NV
+  , pattern GL_SPARE1_NV
+  , pattern GL_TEXTURE0_ARB
+  , pattern GL_TEXTURE1_ARB
+  , pattern GL_UNSIGNED_IDENTITY_NV
+  , pattern GL_UNSIGNED_INVERT_NV
+  , pattern GL_VARIABLE_A_NV
+  , pattern GL_VARIABLE_B_NV
+  , pattern GL_VARIABLE_C_NV
+  , pattern GL_VARIABLE_D_NV
+  , pattern GL_VARIABLE_E_NV
+  , pattern GL_VARIABLE_F_NV
+  , pattern GL_VARIABLE_G_NV
+  , pattern GL_ZERO
+) 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_NV_register_combiners :: Bool
+gl_NV_register_combiners = member "GL_NV_register_combiners" extensions
+
+glCombinerInputNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glCombinerInputNV = ffienumenumenumenumenumenumIOV glCombinerInputNVFunPtr
+
+glCombinerInputNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glCombinerInputNVFunPtr = unsafePerformIO (getProcAddress "glCombinerInputNV")
+
+{-# NOINLINE glCombinerInputNVFunPtr #-}
+
+glCombinerOutputNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> m ()
+glCombinerOutputNV = ffienumenumenumenumenumenumenumbooleanbooleanbooleanIOV glCombinerOutputNVFunPtr
+
+glCombinerOutputNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> IO ())
+glCombinerOutputNVFunPtr = unsafePerformIO (getProcAddress "glCombinerOutputNV")
+
+{-# NOINLINE glCombinerOutputNVFunPtr #-}
+
+glCombinerParameterfNV :: MonadIO m => GLenum -> GLfloat -> m ()
+glCombinerParameterfNV = ffienumfloatIOV glCombinerParameterfNVFunPtr
+
+glCombinerParameterfNVFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glCombinerParameterfNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameterfNV")
+
+{-# NOINLINE glCombinerParameterfNVFunPtr #-}
+
+glCombinerParameterfvNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glCombinerParameterfvNV = ffienumPtrfloatIOV glCombinerParameterfvNVFunPtr
+
+glCombinerParameterfvNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glCombinerParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameterfvNV")
+
+{-# NOINLINE glCombinerParameterfvNVFunPtr #-}
+
+glCombinerParameteriNV :: MonadIO m => GLenum -> GLint -> m ()
+glCombinerParameteriNV = ffienumintIOV glCombinerParameteriNVFunPtr
+
+glCombinerParameteriNVFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glCombinerParameteriNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameteriNV")
+
+{-# NOINLINE glCombinerParameteriNVFunPtr #-}
+
+glCombinerParameterivNV :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glCombinerParameterivNV = ffienumPtrintIOV glCombinerParameterivNVFunPtr
+
+glCombinerParameterivNVFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glCombinerParameterivNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameterivNV")
+
+{-# NOINLINE glCombinerParameterivNVFunPtr #-}
+
+glFinalCombinerInputNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glFinalCombinerInputNV = ffienumenumenumenumIOV glFinalCombinerInputNVFunPtr
+
+glFinalCombinerInputNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glFinalCombinerInputNVFunPtr = unsafePerformIO (getProcAddress "glFinalCombinerInputNV")
+
+{-# NOINLINE glFinalCombinerInputNVFunPtr #-}
+
+glGetCombinerInputParameterfvNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetCombinerInputParameterfvNV = ffienumenumenumenumPtrfloatIOV glGetCombinerInputParameterfvNVFunPtr
+
+glGetCombinerInputParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetCombinerInputParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerInputParameterfvNV")
+
+{-# NOINLINE glGetCombinerInputParameterfvNVFunPtr #-}
+
+glGetCombinerInputParameterivNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetCombinerInputParameterivNV = ffienumenumenumenumPtrintIOV glGetCombinerInputParameterivNVFunPtr
+
+glGetCombinerInputParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetCombinerInputParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerInputParameterivNV")
+
+{-# NOINLINE glGetCombinerInputParameterivNVFunPtr #-}
+
+glGetCombinerOutputParameterfvNV :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetCombinerOutputParameterfvNV = ffienumenumenumPtrfloatIOV glGetCombinerOutputParameterfvNVFunPtr
+
+glGetCombinerOutputParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetCombinerOutputParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerOutputParameterfvNV")
+
+{-# NOINLINE glGetCombinerOutputParameterfvNVFunPtr #-}
+
+glGetCombinerOutputParameterivNV :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetCombinerOutputParameterivNV = ffienumenumenumPtrintIOV glGetCombinerOutputParameterivNVFunPtr
+
+glGetCombinerOutputParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetCombinerOutputParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerOutputParameterivNV")
+
+{-# NOINLINE glGetCombinerOutputParameterivNVFunPtr #-}
+
+glGetFinalCombinerInputParameterfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetFinalCombinerInputParameterfvNV = ffienumenumPtrfloatIOV glGetFinalCombinerInputParameterfvNVFunPtr
+
+glGetFinalCombinerInputParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetFinalCombinerInputParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetFinalCombinerInputParameterfvNV")
+
+{-# NOINLINE glGetFinalCombinerInputParameterfvNVFunPtr #-}
+
+glGetFinalCombinerInputParameterivNV :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetFinalCombinerInputParameterivNV = ffienumenumPtrintIOV glGetFinalCombinerInputParameterivNVFunPtr
+
+glGetFinalCombinerInputParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetFinalCombinerInputParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetFinalCombinerInputParameterivNV")
+
+{-# NOINLINE glGetFinalCombinerInputParameterivNVFunPtr #-}
+
+pattern GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541 :: GLenum
+
+pattern GL_COLOR_SUM_CLAMP_NV = 0x854F :: GLenum
+
+pattern GL_COMBINER0_NV = 0x8550 :: GLenum
+
+pattern GL_COMBINER1_NV = 0x8551 :: GLenum
+
+pattern GL_COMBINER2_NV = 0x8552 :: GLenum
+
+pattern GL_COMBINER3_NV = 0x8553 :: GLenum
+
+pattern GL_COMBINER4_NV = 0x8554 :: GLenum
+
+pattern GL_COMBINER5_NV = 0x8555 :: GLenum
+
+pattern GL_COMBINER6_NV = 0x8556 :: GLenum
+
+pattern GL_COMBINER7_NV = 0x8557 :: GLenum
+
+pattern GL_COMBINER_AB_DOT_PRODUCT_NV = 0x8545 :: GLenum
+
+pattern GL_COMBINER_AB_OUTPUT_NV = 0x854A :: GLenum
+
+pattern GL_COMBINER_BIAS_NV = 0x8549 :: GLenum
+
+pattern GL_COMBINER_CD_DOT_PRODUCT_NV = 0x8546 :: GLenum
+
+pattern GL_COMBINER_CD_OUTPUT_NV = 0x854B :: GLenum
+
+pattern GL_COMBINER_COMPONENT_USAGE_NV = 0x8544 :: GLenum
+
+pattern GL_COMBINER_INPUT_NV = 0x8542 :: GLenum
+
+pattern GL_COMBINER_MAPPING_NV = 0x8543 :: GLenum
+
+pattern GL_COMBINER_MUX_SUM_NV = 0x8547 :: GLenum
+
+pattern GL_COMBINER_SCALE_NV = 0x8548 :: GLenum
+
+pattern GL_COMBINER_SUM_OUTPUT_NV = 0x854C :: GLenum
+
+pattern GL_CONSTANT_COLOR0_NV = 0x852A :: GLenum
+
+pattern GL_CONSTANT_COLOR1_NV = 0x852B :: GLenum
+
+pattern GL_DISCARD_NV = 0x8530 :: GLenum
+
+pattern GL_EXPAND_NEGATE_NV = 0x8539 :: GLenum
+
+pattern GL_EXPAND_NORMAL_NV = 0x8538 :: GLenum
+
+pattern GL_E_TIMES_F_NV = 0x8531 :: GLenum
+
+pattern GL_HALF_BIAS_NEGATE_NV = 0x853B :: GLenum
+
+pattern GL_HALF_BIAS_NORMAL_NV = 0x853A :: GLenum
+
+pattern GL_MAX_GENERAL_COMBINERS_NV = 0x854D :: GLenum
+
+pattern GL_NUM_GENERAL_COMBINERS_NV = 0x854E :: GLenum
+
+pattern GL_REGISTER_COMBINERS_NV = 0x8522 :: GLenum
+
+pattern GL_SCALE_BY_FOUR_NV = 0x853F :: GLenum
+
+pattern GL_SCALE_BY_ONE_HALF_NV = 0x8540 :: GLenum
+
+pattern GL_SCALE_BY_TWO_NV = 0x853E :: GLenum
+
+pattern GL_SIGNED_IDENTITY_NV = 0x853C :: GLenum
+
+pattern GL_SIGNED_NEGATE_NV = 0x853D :: GLenum
+
+pattern GL_SPARE0_NV = 0x852E :: GLenum
+
+pattern GL_SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532 :: GLenum
+
+pattern GL_SPARE1_NV = 0x852F :: GLenum
+
+pattern GL_UNSIGNED_IDENTITY_NV = 0x8536 :: GLenum
+
+pattern GL_UNSIGNED_INVERT_NV = 0x8537 :: GLenum
+
+pattern GL_VARIABLE_A_NV = 0x8523 :: GLenum
+
+pattern GL_VARIABLE_B_NV = 0x8524 :: GLenum
+
+pattern GL_VARIABLE_C_NV = 0x8525 :: GLenum
+
+pattern GL_VARIABLE_D_NV = 0x8526 :: GLenum
+
+pattern GL_VARIABLE_E_NV = 0x8527 :: GLenum
+
+pattern GL_VARIABLE_F_NV = 0x8528 :: GLenum
+
+pattern GL_VARIABLE_G_NV = 0x8529 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/RegisterCombiners2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/RegisterCombiners2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/RegisterCombiners2.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.RegisterCombiners2 (
+  -- * Extension Support
+    gl_NV_register_combiners2
+
+  -- * GL_NV_register_combiners2
+  , glCombinerStageParameterfvNV
+  , glGetCombinerStageParameterfvNV
+  , pattern GL_PER_STAGE_CONSTANTS_NV
+) 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_NV_register_combiners2 :: Bool
+gl_NV_register_combiners2 = member "GL_NV_register_combiners2" extensions
+
+glCombinerStageParameterfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glCombinerStageParameterfvNV = ffienumenumPtrfloatIOV glCombinerStageParameterfvNVFunPtr
+
+glCombinerStageParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glCombinerStageParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glCombinerStageParameterfvNV")
+
+{-# NOINLINE glCombinerStageParameterfvNVFunPtr #-}
+
+glGetCombinerStageParameterfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetCombinerStageParameterfvNV = ffienumenumPtrfloatIOV glGetCombinerStageParameterfvNVFunPtr
+
+glGetCombinerStageParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetCombinerStageParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerStageParameterfvNV")
+
+{-# NOINLINE glGetCombinerStageParameterfvNVFunPtr #-}
+
+pattern GL_PER_STAGE_CONSTANTS_NV = 0x8535 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SRGBFormats.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SRGBFormats.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SRGBFormats.hs
@@ -0,0 +1,45 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.SRGBFormats (
+  -- * Extension Support
+    gl_NV_sRGB_formats
+
+  -- * GL_NV_sRGB_formats
+  , pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV
+  , pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV
+  , pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV
+  , pattern GL_COMPRESSED_SRGB_S3TC_DXT1_NV
+  , pattern GL_ETC1_SRGB8_NV
+  , pattern GL_SLUMINANCE8_ALPHA8_NV
+  , pattern GL_SLUMINANCE8_NV
+  , pattern GL_SLUMINANCE_ALPHA_NV
+  , pattern GL_SLUMINANCE_NV
+  , pattern GL_SRGB8_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_sRGB_formats :: Bool
+gl_NV_sRGB_formats = member "GL_NV_sRGB_formats" extensions
+
+pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV = 0x8C4D :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV = 0x8C4E :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV = 0x8C4F :: GLenum
+
+pattern GL_COMPRESSED_SRGB_S3TC_DXT1_NV = 0x8C4C :: GLenum
+
+pattern GL_ETC1_SRGB8_NV = 0x88EE :: GLenum
+
+pattern GL_SLUMINANCE8_ALPHA8_NV = 0x8C45 :: GLenum
+
+pattern GL_SLUMINANCE8_NV = 0x8C47 :: GLenum
+
+pattern GL_SLUMINANCE_ALPHA_NV = 0x8C44 :: GLenum
+
+pattern GL_SLUMINANCE_NV = 0x8C46 :: GLenum
+
+pattern GL_SRGB8_NV = 0x8C41 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SampleLocations.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SampleLocations.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SampleLocations.hs
@@ -0,0 +1,70 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.SampleLocations (
+  -- * Extension Support
+    gl_NV_sample_locations
+
+  -- * GL_NV_sample_locations
+  , glFramebufferSampleLocationsfvNV
+  , glNamedFramebufferSampleLocationsfvNV
+  , glResolveDepthValuesNV
+  , pattern GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV
+  , pattern GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV
+  , pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_NV
+  , pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV
+  , pattern GL_SAMPLE_LOCATION_NV
+  , pattern GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV
+  , pattern GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV
+  , pattern GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV
+) 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_NV_sample_locations :: Bool
+gl_NV_sample_locations = member "GL_NV_sample_locations" extensions
+
+glFramebufferSampleLocationsfvNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glFramebufferSampleLocationsfvNV = ffienumuintsizeiPtrfloatIOV glFramebufferSampleLocationsfvNVFunPtr
+
+glFramebufferSampleLocationsfvNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glFramebufferSampleLocationsfvNVFunPtr = unsafePerformIO (getProcAddress "glFramebufferSampleLocationsfvNV")
+
+{-# NOINLINE glFramebufferSampleLocationsfvNVFunPtr #-}
+
+glNamedFramebufferSampleLocationsfvNV :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glNamedFramebufferSampleLocationsfvNV = ffiuintuintsizeiPtrfloatIOV glNamedFramebufferSampleLocationsfvNVFunPtr
+
+glNamedFramebufferSampleLocationsfvNVFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glNamedFramebufferSampleLocationsfvNVFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferSampleLocationsfvNV")
+
+{-# NOINLINE glNamedFramebufferSampleLocationsfvNVFunPtr #-}
+
+glResolveDepthValuesNV :: MonadIO m => m ()
+glResolveDepthValuesNV = ffiIOV glResolveDepthValuesNVFunPtr
+
+glResolveDepthValuesNVFunPtr :: FunPtr (IO ())
+glResolveDepthValuesNVFunPtr = unsafePerformIO (getProcAddress "glResolveDepthValuesNV")
+
+{-# NOINLINE glResolveDepthValuesNVFunPtr #-}
+
+pattern GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = 0x9342 :: GLenum
+
+pattern GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = 0x9343 :: GLenum
+
+pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9341 :: GLenum
+
+pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = 0x9340 :: GLenum
+
+pattern GL_SAMPLE_LOCATION_NV = 0x8E50 :: GLenum
+
+pattern GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = 0x933F :: GLenum
+
+pattern GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = 0x933E :: GLenum
+
+pattern GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV = 0x933D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SampleMaskOverrideCoverage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SampleMaskOverrideCoverage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/SampleMaskOverrideCoverage.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.SampleMaskOverrideCoverage (
+  -- * Extension Support
+    gl_NV_sample_mask_override_coverage
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_sample_mask_override_coverage :: Bool
+gl_NV_sample_mask_override_coverage = member "GL_NV_sample_mask_override_coverage" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicCounters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicCounters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicCounters.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderAtomicCounters (
+  -- * Extension Support
+    gl_NV_shader_atomic_counters
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_shader_atomic_counters :: Bool
+gl_NV_shader_atomic_counters = member "GL_NV_shader_atomic_counters" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicFloat.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderAtomicFloat (
+  -- * Extension Support
+    gl_NV_shader_atomic_float
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_shader_atomic_float :: Bool
+gl_NV_shader_atomic_float = member "GL_NV_shader_atomic_float" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicFp16Vector.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicFp16Vector.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicFp16Vector.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderAtomicFp16Vector (
+  -- * Extension Support
+    gl_NV_shader_atomic_fp16_vector
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_shader_atomic_fp16_vector :: Bool
+gl_NV_shader_atomic_fp16_vector = member "GL_NV_shader_atomic_fp16_vector" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicInt64.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicInt64.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderAtomicInt64.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderAtomicInt64 (
+  -- * Extension Support
+    gl_NV_shader_atomic_int64
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_shader_atomic_int64 :: Bool
+gl_NV_shader_atomic_int64 = member "GL_NV_shader_atomic_int64" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderBufferLoad.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderBufferLoad.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderBufferLoad.hs
@@ -0,0 +1,147 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderBufferLoad (
+  -- * Extension Support
+    gl_NV_shader_buffer_load
+
+  -- * GL_NV_shader_buffer_load
+  , glGetBufferParameterui64vNV
+  , glGetIntegerui64vNV
+  , glGetNamedBufferParameterui64vNV
+  , glGetUniformui64vNV
+  , glIsBufferResidentNV
+  , glIsNamedBufferResidentNV
+  , glMakeBufferNonResidentNV
+  , glMakeBufferResidentNV
+  , glMakeNamedBufferNonResidentNV
+  , glMakeNamedBufferResidentNV
+  , glProgramUniformui64NV
+  , glProgramUniformui64vNV
+  , glUniformui64NV
+  , glUniformui64vNV
+  , pattern GL_BUFFER_GPU_ADDRESS_NV
+  , pattern GL_GPU_ADDRESS_NV
+  , pattern GL_MAX_SHADER_BUFFER_ADDRESS_NV
+) 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_NV_shader_buffer_load :: Bool
+gl_NV_shader_buffer_load = member "GL_NV_shader_buffer_load" extensions
+
+glGetBufferParameterui64vNV :: MonadIO m => GLenum -> GLenum -> Ptr GLuint64EXT -> m ()
+glGetBufferParameterui64vNV = ffienumenumPtruint64EXTIOV glGetBufferParameterui64vNVFunPtr
+
+glGetBufferParameterui64vNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint64EXT -> IO ())
+glGetBufferParameterui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetBufferParameterui64vNV")
+
+{-# NOINLINE glGetBufferParameterui64vNVFunPtr #-}
+
+glGetIntegerui64vNV :: MonadIO m => GLenum -> Ptr GLuint64EXT -> m ()
+glGetIntegerui64vNV = ffienumPtruint64EXTIOV glGetIntegerui64vNVFunPtr
+
+glGetIntegerui64vNVFunPtr :: FunPtr (GLenum -> Ptr GLuint64EXT -> IO ())
+glGetIntegerui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetIntegerui64vNV")
+
+{-# NOINLINE glGetIntegerui64vNVFunPtr #-}
+
+glGetNamedBufferParameterui64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
+glGetNamedBufferParameterui64vNV = ffiuintenumPtruint64EXTIOV glGetNamedBufferParameterui64vNVFunPtr
+
+glGetNamedBufferParameterui64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ())
+glGetNamedBufferParameterui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferParameterui64vNV")
+
+{-# NOINLINE glGetNamedBufferParameterui64vNVFunPtr #-}
+
+glIsBufferResidentNV :: MonadIO m => GLenum -> m GLboolean
+glIsBufferResidentNV = ffienumIOboolean glIsBufferResidentNVFunPtr
+
+glIsBufferResidentNVFunPtr :: FunPtr (GLenum -> IO GLboolean)
+glIsBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsBufferResidentNV")
+
+{-# NOINLINE glIsBufferResidentNVFunPtr #-}
+
+glIsNamedBufferResidentNV :: MonadIO m => GLuint -> m GLboolean
+glIsNamedBufferResidentNV = ffiuintIOboolean glIsNamedBufferResidentNVFunPtr
+
+glIsNamedBufferResidentNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsNamedBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glIsNamedBufferResidentNV")
+
+{-# NOINLINE glIsNamedBufferResidentNVFunPtr #-}
+
+glMakeBufferNonResidentNV :: MonadIO m => GLenum -> m ()
+glMakeBufferNonResidentNV = ffienumIOV glMakeBufferNonResidentNVFunPtr
+
+glMakeBufferNonResidentNVFunPtr :: FunPtr (GLenum -> IO ())
+glMakeBufferNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeBufferNonResidentNV")
+
+{-# NOINLINE glMakeBufferNonResidentNVFunPtr #-}
+
+glMakeBufferResidentNV :: MonadIO m => GLenum -> GLenum -> m ()
+glMakeBufferResidentNV = ffienumenumIOV glMakeBufferResidentNVFunPtr
+
+glMakeBufferResidentNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glMakeBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeBufferResidentNV")
+
+{-# NOINLINE glMakeBufferResidentNVFunPtr #-}
+
+glMakeNamedBufferNonResidentNV :: MonadIO m => GLuint -> m ()
+glMakeNamedBufferNonResidentNV = ffiuintIOV glMakeNamedBufferNonResidentNVFunPtr
+
+glMakeNamedBufferNonResidentNVFunPtr :: FunPtr (GLuint -> IO ())
+glMakeNamedBufferNonResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeNamedBufferNonResidentNV")
+
+{-# NOINLINE glMakeNamedBufferNonResidentNVFunPtr #-}
+
+glMakeNamedBufferResidentNV :: MonadIO m => GLuint -> GLenum -> m ()
+glMakeNamedBufferResidentNV = ffiuintenumIOV glMakeNamedBufferResidentNVFunPtr
+
+glMakeNamedBufferResidentNVFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glMakeNamedBufferResidentNVFunPtr = unsafePerformIO (getProcAddress "glMakeNamedBufferResidentNV")
+
+{-# NOINLINE glMakeNamedBufferResidentNVFunPtr #-}
+
+glProgramUniformui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> m ()
+glProgramUniformui64NV = ffiuintintuint64EXTIOV glProgramUniformui64NVFunPtr
+
+glProgramUniformui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ())
+glProgramUniformui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformui64NV")
+
+{-# NOINLINE glProgramUniformui64NVFunPtr #-}
+
+glProgramUniformui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
+glProgramUniformui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniformui64vNVFunPtr
+
+glProgramUniformui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
+glProgramUniformui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniformui64vNV")
+
+{-# NOINLINE glProgramUniformui64vNVFunPtr #-}
+
+glUniformui64NV :: MonadIO m => GLint -> GLuint64EXT -> m ()
+glUniformui64NV = ffiintuint64EXTIOV glUniformui64NVFunPtr
+
+glUniformui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> IO ())
+glUniformui64NVFunPtr = unsafePerformIO (getProcAddress "glUniformui64NV")
+
+{-# NOINLINE glUniformui64NVFunPtr #-}
+
+glUniformui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
+glUniformui64vNV = ffiintsizeiPtruint64EXTIOV glUniformui64vNVFunPtr
+
+glUniformui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
+glUniformui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniformui64vNV")
+
+{-# NOINLINE glUniformui64vNVFunPtr #-}
+
+pattern GL_BUFFER_GPU_ADDRESS_NV = 0x8F1D :: GLenum
+
+pattern GL_GPU_ADDRESS_NV = 0x8F34 :: GLenum
+
+pattern GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderBufferStore.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderBufferStore.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderBufferStore.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderBufferStore (
+  -- * Extension Support
+    gl_NV_shader_buffer_store
+
+  -- * GL_NV_shader_buffer_store
+  , pattern GL_READ_WRITE
+  , pattern GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV
+  , pattern GL_WRITE_ONLY
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_NV_shader_buffer_store :: Bool
+gl_NV_shader_buffer_store = member "GL_NV_shader_buffer_store" extensions
+
+pattern GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV = 0x00000010 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderStorageBufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderStorageBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderStorageBufferObject.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderStorageBufferObject (
+  -- * Extension Support
+    gl_NV_shader_storage_buffer_object
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_shader_storage_buffer_object :: Bool
+gl_NV_shader_storage_buffer_object = member "GL_NV_shader_storage_buffer_object" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderThreadGroup.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderThreadGroup.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderThreadGroup.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderThreadGroup (
+  -- * Extension Support
+    gl_NV_shader_thread_group
+
+  -- * GL_NV_shader_thread_group
+  , pattern GL_SM_COUNT_NV
+  , pattern GL_WARPS_PER_SM_NV
+  , pattern GL_WARP_SIZE_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_shader_thread_group :: Bool
+gl_NV_shader_thread_group = member "GL_NV_shader_thread_group" extensions
+
+pattern GL_SM_COUNT_NV = 0x933B :: GLenum
+
+pattern GL_WARPS_PER_SM_NV = 0x933A :: GLenum
+
+pattern GL_WARP_SIZE_NV = 0x9339 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderThreadShuffle.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderThreadShuffle.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShaderThreadShuffle.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShaderThreadShuffle (
+  -- * Extension Support
+    gl_NV_shader_thread_shuffle
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_shader_thread_shuffle :: Bool
+gl_NV_shader_thread_shuffle = member "GL_NV_shader_thread_shuffle" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShadowSamplersArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShadowSamplersArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShadowSamplersArray.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShadowSamplersArray (
+  -- * Extension Support
+    gl_NV_shadow_samplers_array
+
+  -- * GL_NV_shadow_samplers_array
+  , pattern GL_SAMPLER_2D_ARRAY_SHADOW_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_shadow_samplers_array :: Bool
+gl_NV_shadow_samplers_array = member "GL_NV_shadow_samplers_array" extensions
+
+pattern GL_SAMPLER_2D_ARRAY_SHADOW_NV = 0x8DC4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShadowSamplersCube.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShadowSamplersCube.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/ShadowSamplersCube.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.ShadowSamplersCube (
+  -- * Extension Support
+    gl_NV_shadow_samplers_cube
+
+  -- * GL_NV_shadow_samplers_cube
+  , pattern GL_SAMPLER_CUBE_SHADOW_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_shadow_samplers_cube :: Bool
+gl_NV_shadow_samplers_cube = member "GL_NV_shadow_samplers_cube" extensions
+
+pattern GL_SAMPLER_CUBE_SHADOW_NV = 0x8DC5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TessellationProgram5.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TessellationProgram5.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TessellationProgram5.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TessellationProgram5 (
+  -- * Extension Support
+    gl_NV_tessellation_program5
+
+  -- * GL_NV_tessellation_program5
+  , pattern GL_MAX_PROGRAM_PATCH_ATTRIBS_NV
+  , pattern GL_TESS_CONTROL_PROGRAM_NV
+  , pattern GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV
+  , pattern GL_TESS_EVALUATION_PROGRAM_NV
+  , pattern GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_tessellation_program5 :: Bool
+gl_NV_tessellation_program5 = member "GL_NV_tessellation_program5" extensions
+
+pattern GL_MAX_PROGRAM_PATCH_ATTRIBS_NV = 0x86D8 :: GLenum
+
+pattern GL_TESS_CONTROL_PROGRAM_NV = 0x891E :: GLenum
+
+pattern GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = 0x8C74 :: GLenum
+
+pattern GL_TESS_EVALUATION_PROGRAM_NV = 0x891F :: GLenum
+
+pattern GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = 0x8C75 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TexgenEmboss.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TexgenEmboss.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TexgenEmboss.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TexgenEmboss (
+  -- * Extension Support
+    gl_NV_texgen_emboss
+
+  -- * GL_NV_texgen_emboss
+  , pattern GL_EMBOSS_CONSTANT_NV
+  , pattern GL_EMBOSS_LIGHT_NV
+  , pattern GL_EMBOSS_MAP_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texgen_emboss :: Bool
+gl_NV_texgen_emboss = member "GL_NV_texgen_emboss" extensions
+
+pattern GL_EMBOSS_CONSTANT_NV = 0x855E :: GLenum
+
+pattern GL_EMBOSS_LIGHT_NV = 0x855D :: GLenum
+
+pattern GL_EMBOSS_MAP_NV = 0x855F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TexgenReflection.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TexgenReflection.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TexgenReflection.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TexgenReflection (
+  -- * Extension Support
+    gl_NV_texgen_reflection
+
+  -- * GL_NV_texgen_reflection
+  , pattern GL_NORMAL_MAP_NV
+  , pattern GL_REFLECTION_MAP_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texgen_reflection :: Bool
+gl_NV_texgen_reflection = member "GL_NV_texgen_reflection" extensions
+
+pattern GL_NORMAL_MAP_NV = 0x8511 :: GLenum
+
+pattern GL_REFLECTION_MAP_NV = 0x8512 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureBarrier.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureBarrier.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureBarrier.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureBarrier (
+  -- * Extension Support
+    gl_NV_texture_barrier
+
+  -- * GL_NV_texture_barrier
+  , glTextureBarrierNV
+) 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 System.IO.Unsafe
+
+gl_NV_texture_barrier :: Bool
+gl_NV_texture_barrier = member "GL_NV_texture_barrier" extensions
+
+glTextureBarrierNV :: MonadIO m => m ()
+glTextureBarrierNV = ffiIOV glTextureBarrierNVFunPtr
+
+glTextureBarrierNVFunPtr :: FunPtr (IO ())
+glTextureBarrierNVFunPtr = unsafePerformIO (getProcAddress "glTextureBarrierNV")
+
+{-# NOINLINE glTextureBarrierNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureBorderClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureBorderClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureBorderClamp.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureBorderClamp (
+  -- * Extension Support
+    gl_NV_texture_border_clamp
+
+  -- * GL_NV_texture_border_clamp
+  , pattern GL_CLAMP_TO_BORDER_NV
+  , pattern GL_TEXTURE_BORDER_COLOR_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texture_border_clamp :: Bool
+gl_NV_texture_border_clamp = member "GL_NV_texture_border_clamp" extensions
+
+pattern GL_CLAMP_TO_BORDER_NV = 0x812D :: GLenum
+
+pattern GL_TEXTURE_BORDER_COLOR_NV = 0x1004 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureCompressionS3tcUpdate.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureCompressionS3tcUpdate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureCompressionS3tcUpdate.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureCompressionS3tcUpdate (
+  -- * Extension Support
+    gl_NV_texture_compression_s3tc_update
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_texture_compression_s3tc_update :: Bool
+gl_NV_texture_compression_s3tc_update = member "GL_NV_texture_compression_s3tc_update" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureCompressionVtc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureCompressionVtc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureCompressionVtc.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureCompressionVtc (
+  -- * Extension Support
+    gl_NV_texture_compression_vtc
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_texture_compression_vtc :: Bool
+gl_NV_texture_compression_vtc = member "GL_NV_texture_compression_vtc" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureEnvCombine4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureEnvCombine4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureEnvCombine4.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureEnvCombine4 (
+  -- * Extension Support
+    gl_NV_texture_env_combine4
+
+  -- * GL_NV_texture_env_combine4
+  , pattern GL_COMBINE4_NV
+  , pattern GL_OPERAND3_ALPHA_NV
+  , pattern GL_OPERAND3_RGB_NV
+  , pattern GL_SOURCE3_ALPHA_NV
+  , pattern GL_SOURCE3_RGB_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texture_env_combine4 :: Bool
+gl_NV_texture_env_combine4 = member "GL_NV_texture_env_combine4" extensions
+
+pattern GL_COMBINE4_NV = 0x8503 :: GLenum
+
+pattern GL_OPERAND3_ALPHA_NV = 0x859B :: GLenum
+
+pattern GL_OPERAND3_RGB_NV = 0x8593 :: GLenum
+
+pattern GL_SOURCE3_ALPHA_NV = 0x858B :: GLenum
+
+pattern GL_SOURCE3_RGB_NV = 0x8583 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureExpandNormal.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureExpandNormal.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureExpandNormal.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureExpandNormal (
+  -- * Extension Support
+    gl_NV_texture_expand_normal
+
+  -- * GL_NV_texture_expand_normal
+  , pattern GL_TEXTURE_UNSIGNED_REMAP_MODE_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texture_expand_normal :: Bool
+gl_NV_texture_expand_normal = member "GL_NV_texture_expand_normal" extensions
+
+pattern GL_TEXTURE_UNSIGNED_REMAP_MODE_NV = 0x888F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureMultisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureMultisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureMultisample.hs
@@ -0,0 +1,79 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureMultisample (
+  -- * Extension Support
+    gl_NV_texture_multisample
+
+  -- * GL_NV_texture_multisample
+  , glTexImage2DMultisampleCoverageNV
+  , glTexImage3DMultisampleCoverageNV
+  , glTextureImage2DMultisampleCoverageNV
+  , glTextureImage2DMultisampleNV
+  , glTextureImage3DMultisampleCoverageNV
+  , glTextureImage3DMultisampleNV
+  , pattern GL_TEXTURE_COLOR_SAMPLES_NV
+  , pattern GL_TEXTURE_COVERAGE_SAMPLES_NV
+) 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_NV_texture_multisample :: Bool
+gl_NV_texture_multisample = member "GL_NV_texture_multisample" extensions
+
+glTexImage2DMultisampleCoverageNV :: MonadIO m => GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTexImage2DMultisampleCoverageNV = ffienumsizeisizeiintsizeisizeibooleanIOV glTexImage2DMultisampleCoverageNVFunPtr
+
+glTexImage2DMultisampleCoverageNVFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTexImage2DMultisampleCoverageNVFunPtr = unsafePerformIO (getProcAddress "glTexImage2DMultisampleCoverageNV")
+
+{-# NOINLINE glTexImage2DMultisampleCoverageNVFunPtr #-}
+
+glTexImage3DMultisampleCoverageNV :: MonadIO m => GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTexImage3DMultisampleCoverageNV = ffienumsizeisizeiintsizeisizeisizeibooleanIOV glTexImage3DMultisampleCoverageNVFunPtr
+
+glTexImage3DMultisampleCoverageNVFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTexImage3DMultisampleCoverageNVFunPtr = unsafePerformIO (getProcAddress "glTexImage3DMultisampleCoverageNV")
+
+{-# NOINLINE glTexImage3DMultisampleCoverageNVFunPtr #-}
+
+glTextureImage2DMultisampleCoverageNV :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTextureImage2DMultisampleCoverageNV = ffiuintenumsizeisizeiintsizeisizeibooleanIOV glTextureImage2DMultisampleCoverageNVFunPtr
+
+glTextureImage2DMultisampleCoverageNVFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTextureImage2DMultisampleCoverageNVFunPtr = unsafePerformIO (getProcAddress "glTextureImage2DMultisampleCoverageNV")
+
+{-# NOINLINE glTextureImage2DMultisampleCoverageNVFunPtr #-}
+
+glTextureImage2DMultisampleNV :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTextureImage2DMultisampleNV = ffiuintenumsizeiintsizeisizeibooleanIOV glTextureImage2DMultisampleNVFunPtr
+
+glTextureImage2DMultisampleNVFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTextureImage2DMultisampleNVFunPtr = unsafePerformIO (getProcAddress "glTextureImage2DMultisampleNV")
+
+{-# NOINLINE glTextureImage2DMultisampleNVFunPtr #-}
+
+glTextureImage3DMultisampleCoverageNV :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTextureImage3DMultisampleCoverageNV = ffiuintenumsizeisizeiintsizeisizeisizeibooleanIOV glTextureImage3DMultisampleCoverageNVFunPtr
+
+glTextureImage3DMultisampleCoverageNVFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTextureImage3DMultisampleCoverageNVFunPtr = unsafePerformIO (getProcAddress "glTextureImage3DMultisampleCoverageNV")
+
+{-# NOINLINE glTextureImage3DMultisampleCoverageNVFunPtr #-}
+
+glTextureImage3DMultisampleNV :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTextureImage3DMultisampleNV = ffiuintenumsizeiintsizeisizeisizeibooleanIOV glTextureImage3DMultisampleNVFunPtr
+
+glTextureImage3DMultisampleNVFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTextureImage3DMultisampleNVFunPtr = unsafePerformIO (getProcAddress "glTextureImage3DMultisampleNV")
+
+{-# NOINLINE glTextureImage3DMultisampleNVFunPtr #-}
+
+pattern GL_TEXTURE_COLOR_SAMPLES_NV = 0x9046 :: GLenum
+
+pattern GL_TEXTURE_COVERAGE_SAMPLES_NV = 0x9045 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureNpot2DMipmap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureNpot2DMipmap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureNpot2DMipmap.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureNpot2DMipmap (
+  -- * Extension Support
+    gl_NV_texture_npot_2D_mipmap
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_texture_npot_2D_mipmap :: Bool
+gl_NV_texture_npot_2D_mipmap = member "GL_NV_texture_npot_2D_mipmap" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureRectangle.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureRectangle.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureRectangle.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureRectangle (
+  -- * Extension Support
+    gl_NV_texture_rectangle
+
+  -- * GL_NV_texture_rectangle
+  , pattern GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
+  , pattern GL_PROXY_TEXTURE_RECTANGLE_NV
+  , pattern GL_TEXTURE_BINDING_RECTANGLE_NV
+  , pattern GL_TEXTURE_RECTANGLE_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texture_rectangle :: Bool
+gl_NV_texture_rectangle = member "GL_NV_texture_rectangle" extensions
+
+pattern GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = 0x84F8 :: GLenum
+
+pattern GL_PROXY_TEXTURE_RECTANGLE_NV = 0x84F7 :: GLenum
+
+pattern GL_TEXTURE_BINDING_RECTANGLE_NV = 0x84F6 :: GLenum
+
+pattern GL_TEXTURE_RECTANGLE_NV = 0x84F5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader.hs
@@ -0,0 +1,234 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureShader (
+  -- * Extension Support
+    gl_NV_texture_shader
+
+  -- * GL_NV_texture_shader
+  , pattern GL_CONST_EYE_NV
+  , pattern GL_CULL_FRAGMENT_NV
+  , pattern GL_CULL_MODES_NV
+  , pattern GL_DEPENDENT_AR_TEXTURE_2D_NV
+  , pattern GL_DEPENDENT_GB_TEXTURE_2D_NV
+  , pattern GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV
+  , pattern GL_DOT_PRODUCT_DEPTH_REPLACE_NV
+  , pattern GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV
+  , pattern GL_DOT_PRODUCT_NV
+  , pattern GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV
+  , pattern GL_DOT_PRODUCT_TEXTURE_2D_NV
+  , pattern GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV
+  , pattern GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV
+  , pattern GL_DSDT8_MAG8_INTENSITY8_NV
+  , pattern GL_DSDT8_MAG8_NV
+  , pattern GL_DSDT8_NV
+  , pattern GL_DSDT_MAG_INTENSITY_NV
+  , pattern GL_DSDT_MAG_NV
+  , pattern GL_DSDT_MAG_VIB_NV
+  , pattern GL_DSDT_NV
+  , pattern GL_DS_BIAS_NV
+  , pattern GL_DS_SCALE_NV
+  , pattern GL_DT_BIAS_NV
+  , pattern GL_DT_SCALE_NV
+  , pattern GL_HILO16_NV
+  , pattern GL_HILO_NV
+  , pattern GL_HI_BIAS_NV
+  , pattern GL_HI_SCALE_NV
+  , pattern GL_LO_BIAS_NV
+  , pattern GL_LO_SCALE_NV
+  , pattern GL_MAGNITUDE_BIAS_NV
+  , pattern GL_MAGNITUDE_SCALE_NV
+  , pattern GL_OFFSET_TEXTURE_2D_BIAS_NV
+  , pattern GL_OFFSET_TEXTURE_2D_MATRIX_NV
+  , pattern GL_OFFSET_TEXTURE_2D_NV
+  , pattern GL_OFFSET_TEXTURE_2D_SCALE_NV
+  , pattern GL_OFFSET_TEXTURE_BIAS_NV
+  , pattern GL_OFFSET_TEXTURE_MATRIX_NV
+  , pattern GL_OFFSET_TEXTURE_RECTANGLE_NV
+  , pattern GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV
+  , pattern GL_OFFSET_TEXTURE_SCALE_NV
+  , pattern GL_PASS_THROUGH_NV
+  , pattern GL_PREVIOUS_TEXTURE_INPUT_NV
+  , pattern GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV
+  , pattern GL_SHADER_CONSISTENT_NV
+  , pattern GL_SHADER_OPERATION_NV
+  , pattern GL_SIGNED_ALPHA8_NV
+  , pattern GL_SIGNED_ALPHA_NV
+  , pattern GL_SIGNED_HILO16_NV
+  , pattern GL_SIGNED_HILO_NV
+  , pattern GL_SIGNED_INTENSITY8_NV
+  , pattern GL_SIGNED_INTENSITY_NV
+  , pattern GL_SIGNED_LUMINANCE8_ALPHA8_NV
+  , pattern GL_SIGNED_LUMINANCE8_NV
+  , pattern GL_SIGNED_LUMINANCE_ALPHA_NV
+  , pattern GL_SIGNED_LUMINANCE_NV
+  , pattern GL_SIGNED_RGB8_NV
+  , pattern GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV
+  , pattern GL_SIGNED_RGBA8_NV
+  , pattern GL_SIGNED_RGBA_NV
+  , pattern GL_SIGNED_RGB_NV
+  , pattern GL_SIGNED_RGB_UNSIGNED_ALPHA_NV
+  , pattern GL_TEXTURE_BORDER_VALUES_NV
+  , pattern GL_TEXTURE_DS_SIZE_NV
+  , pattern GL_TEXTURE_DT_SIZE_NV
+  , pattern GL_TEXTURE_HI_SIZE_NV
+  , pattern GL_TEXTURE_LO_SIZE_NV
+  , pattern GL_TEXTURE_MAG_SIZE_NV
+  , pattern GL_TEXTURE_SHADER_NV
+  , pattern GL_UNSIGNED_INT_8_8_S8_S8_REV_NV
+  , pattern GL_UNSIGNED_INT_S8_S8_8_8_NV
+  , pattern GL_VIBRANCE_BIAS_NV
+  , pattern GL_VIBRANCE_SCALE_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texture_shader :: Bool
+gl_NV_texture_shader = member "GL_NV_texture_shader" extensions
+
+pattern GL_CONST_EYE_NV = 0x86E5 :: GLenum
+
+pattern GL_CULL_FRAGMENT_NV = 0x86E7 :: GLenum
+
+pattern GL_CULL_MODES_NV = 0x86E0 :: GLenum
+
+pattern GL_DEPENDENT_AR_TEXTURE_2D_NV = 0x86E9 :: GLenum
+
+pattern GL_DEPENDENT_GB_TEXTURE_2D_NV = 0x86EA :: GLenum
+
+pattern GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = 0x86F3 :: GLenum
+
+pattern GL_DOT_PRODUCT_DEPTH_REPLACE_NV = 0x86ED :: GLenum
+
+pattern GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = 0x86F1 :: GLenum
+
+pattern GL_DOT_PRODUCT_NV = 0x86EC :: GLenum
+
+pattern GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = 0x86F2 :: GLenum
+
+pattern GL_DOT_PRODUCT_TEXTURE_2D_NV = 0x86EE :: GLenum
+
+pattern GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = 0x86F0 :: GLenum
+
+pattern GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = 0x864E :: GLenum
+
+pattern GL_DSDT8_MAG8_INTENSITY8_NV = 0x870B :: GLenum
+
+pattern GL_DSDT8_MAG8_NV = 0x870A :: GLenum
+
+pattern GL_DSDT8_NV = 0x8709 :: GLenum
+
+pattern GL_DSDT_MAG_INTENSITY_NV = 0x86DC :: GLenum
+
+pattern GL_DSDT_MAG_NV = 0x86F6 :: GLenum
+
+pattern GL_DSDT_MAG_VIB_NV = 0x86F7 :: GLenum
+
+pattern GL_DSDT_NV = 0x86F5 :: GLenum
+
+pattern GL_DS_BIAS_NV = 0x8716 :: GLenum
+
+pattern GL_DS_SCALE_NV = 0x8710 :: GLenum
+
+pattern GL_DT_BIAS_NV = 0x8717 :: GLenum
+
+pattern GL_DT_SCALE_NV = 0x8711 :: GLenum
+
+pattern GL_HILO16_NV = 0x86F8 :: GLenum
+
+pattern GL_HILO_NV = 0x86F4 :: GLenum
+
+pattern GL_HI_BIAS_NV = 0x8714 :: GLenum
+
+pattern GL_HI_SCALE_NV = 0x870E :: GLenum
+
+pattern GL_LO_BIAS_NV = 0x8715 :: GLenum
+
+pattern GL_LO_SCALE_NV = 0x870F :: GLenum
+
+pattern GL_MAGNITUDE_BIAS_NV = 0x8718 :: GLenum
+
+pattern GL_MAGNITUDE_SCALE_NV = 0x8712 :: GLenum
+
+pattern GL_OFFSET_TEXTURE_2D_BIAS_NV = 0x86E3 :: GLenum
+
+pattern GL_OFFSET_TEXTURE_2D_MATRIX_NV = 0x86E1 :: GLenum
+
+pattern GL_OFFSET_TEXTURE_2D_NV = 0x86E8 :: GLenum
+
+pattern GL_OFFSET_TEXTURE_2D_SCALE_NV = 0x86E2 :: GLenum
+
+pattern GL_OFFSET_TEXTURE_BIAS_NV = 0x86E3 :: GLenum
+
+pattern GL_OFFSET_TEXTURE_MATRIX_NV = 0x86E1 :: GLenum
+
+pattern GL_OFFSET_TEXTURE_RECTANGLE_NV = 0x864C :: GLenum
+
+pattern GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = 0x864D :: GLenum
+
+pattern GL_OFFSET_TEXTURE_SCALE_NV = 0x86E2 :: GLenum
+
+pattern GL_PASS_THROUGH_NV = 0x86E6 :: GLenum
+
+pattern GL_PREVIOUS_TEXTURE_INPUT_NV = 0x86E4 :: GLenum
+
+pattern GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = 0x86D9 :: GLenum
+
+pattern GL_SHADER_CONSISTENT_NV = 0x86DD :: GLenum
+
+pattern GL_SHADER_OPERATION_NV = 0x86DF :: GLenum
+
+pattern GL_SIGNED_ALPHA8_NV = 0x8706 :: GLenum
+
+pattern GL_SIGNED_ALPHA_NV = 0x8705 :: GLenum
+
+pattern GL_SIGNED_HILO16_NV = 0x86FA :: GLenum
+
+pattern GL_SIGNED_HILO_NV = 0x86F9 :: GLenum
+
+pattern GL_SIGNED_INTENSITY8_NV = 0x8708 :: GLenum
+
+pattern GL_SIGNED_INTENSITY_NV = 0x8707 :: GLenum
+
+pattern GL_SIGNED_LUMINANCE8_ALPHA8_NV = 0x8704 :: GLenum
+
+pattern GL_SIGNED_LUMINANCE8_NV = 0x8702 :: GLenum
+
+pattern GL_SIGNED_LUMINANCE_ALPHA_NV = 0x8703 :: GLenum
+
+pattern GL_SIGNED_LUMINANCE_NV = 0x8701 :: GLenum
+
+pattern GL_SIGNED_RGB8_NV = 0x86FF :: GLenum
+
+pattern GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = 0x870D :: GLenum
+
+pattern GL_SIGNED_RGBA8_NV = 0x86FC :: GLenum
+
+pattern GL_SIGNED_RGBA_NV = 0x86FB :: GLenum
+
+pattern GL_SIGNED_RGB_NV = 0x86FE :: GLenum
+
+pattern GL_SIGNED_RGB_UNSIGNED_ALPHA_NV = 0x870C :: GLenum
+
+pattern GL_TEXTURE_BORDER_VALUES_NV = 0x871A :: GLenum
+
+pattern GL_TEXTURE_DS_SIZE_NV = 0x871D :: GLenum
+
+pattern GL_TEXTURE_DT_SIZE_NV = 0x871E :: GLenum
+
+pattern GL_TEXTURE_HI_SIZE_NV = 0x871B :: GLenum
+
+pattern GL_TEXTURE_LO_SIZE_NV = 0x871C :: GLenum
+
+pattern GL_TEXTURE_MAG_SIZE_NV = 0x871F :: GLenum
+
+pattern GL_TEXTURE_SHADER_NV = 0x86DE :: GLenum
+
+pattern GL_UNSIGNED_INT_8_8_S8_S8_REV_NV = 0x86DB :: GLenum
+
+pattern GL_UNSIGNED_INT_S8_S8_8_8_NV = 0x86DA :: GLenum
+
+pattern GL_VIBRANCE_BIAS_NV = 0x8719 :: GLenum
+
+pattern GL_VIBRANCE_SCALE_NV = 0x8713 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader2.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureShader2 (
+  -- * Extension Support
+    gl_NV_texture_shader2
+
+  -- * GL_NV_texture_shader2
+  , pattern GL_DOT_PRODUCT_TEXTURE_3D_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texture_shader2 :: Bool
+gl_NV_texture_shader2 = member "GL_NV_texture_shader2" extensions
+
+pattern GL_DOT_PRODUCT_TEXTURE_3D_NV = 0x86EF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TextureShader3.hs
@@ -0,0 +1,66 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TextureShader3 (
+  -- * Extension Support
+    gl_NV_texture_shader3
+
+  -- * GL_NV_texture_shader3
+  , pattern GL_DEPENDENT_HILO_TEXTURE_2D_NV
+  , pattern GL_DEPENDENT_RGB_TEXTURE_3D_NV
+  , pattern GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV
+  , pattern GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV
+  , pattern GL_DOT_PRODUCT_PASS_THROUGH_NV
+  , pattern GL_DOT_PRODUCT_TEXTURE_1D_NV
+  , pattern GL_FORCE_BLUE_TO_ONE_NV
+  , pattern GL_HILO8_NV
+  , pattern GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV
+  , pattern GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV
+  , pattern GL_OFFSET_HILO_TEXTURE_2D_NV
+  , pattern GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV
+  , pattern GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV
+  , pattern GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV
+  , pattern GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV
+  , pattern GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV
+  , pattern GL_SIGNED_HILO8_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_texture_shader3 :: Bool
+gl_NV_texture_shader3 = member "GL_NV_texture_shader3" extensions
+
+pattern GL_DEPENDENT_HILO_TEXTURE_2D_NV = 0x8858 :: GLenum
+
+pattern GL_DEPENDENT_RGB_TEXTURE_3D_NV = 0x8859 :: GLenum
+
+pattern GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = 0x885A :: GLenum
+
+pattern GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = 0x885D :: GLenum
+
+pattern GL_DOT_PRODUCT_PASS_THROUGH_NV = 0x885B :: GLenum
+
+pattern GL_DOT_PRODUCT_TEXTURE_1D_NV = 0x885C :: GLenum
+
+pattern GL_FORCE_BLUE_TO_ONE_NV = 0x8860 :: GLenum
+
+pattern GL_HILO8_NV = 0x885E :: GLenum
+
+pattern GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = 0x8856 :: GLenum
+
+pattern GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8857 :: GLenum
+
+pattern GL_OFFSET_HILO_TEXTURE_2D_NV = 0x8854 :: GLenum
+
+pattern GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = 0x8855 :: GLenum
+
+pattern GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = 0x8850 :: GLenum
+
+pattern GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = 0x8851 :: GLenum
+
+pattern GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8852 :: GLenum
+
+pattern GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = 0x8853 :: GLenum
+
+pattern GL_SIGNED_HILO8_NV = 0x885F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TransformFeedback.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TransformFeedback.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TransformFeedback.hs
@@ -0,0 +1,220 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TransformFeedback (
+  -- * Extension Support
+    gl_NV_transform_feedback
+
+  -- * GL_NV_transform_feedback
+  , glActiveVaryingNV
+  , glBeginTransformFeedbackNV
+  , glBindBufferBaseNV
+  , glBindBufferOffsetNV
+  , glBindBufferRangeNV
+  , glEndTransformFeedbackNV
+  , glGetActiveVaryingNV
+  , glGetTransformFeedbackVaryingNV
+  , glGetVaryingLocationNV
+  , glTransformFeedbackAttribsNV
+  , glTransformFeedbackStreamAttribsNV
+  , glTransformFeedbackVaryingsNV
+  , pattern GL_ACTIVE_VARYINGS_NV
+  , pattern GL_ACTIVE_VARYING_MAX_LENGTH_NV
+  , pattern GL_BACK_PRIMARY_COLOR_NV
+  , pattern GL_BACK_SECONDARY_COLOR_NV
+  , pattern GL_CLIP_DISTANCE_NV
+  , pattern GL_GENERIC_ATTRIB_NV
+  , pattern GL_INTERLEAVED_ATTRIBS_NV
+  , pattern GL_LAYER_NV
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV
+  , pattern GL_NEXT_BUFFER_NV
+  , pattern GL_PRIMITIVES_GENERATED_NV
+  , pattern GL_PRIMITIVE_ID_NV
+  , pattern GL_RASTERIZER_DISCARD_NV
+  , pattern GL_SEPARATE_ATTRIBS_NV
+  , pattern GL_SKIP_COMPONENTS1_NV
+  , pattern GL_SKIP_COMPONENTS2_NV
+  , pattern GL_SKIP_COMPONENTS3_NV
+  , pattern GL_SKIP_COMPONENTS4_NV
+  , pattern GL_TEXTURE_COORD_NV
+  , pattern GL_TRANSFORM_FEEDBACK_ATTRIBS_NV
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_NV
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_START_NV
+  , pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV
+  , pattern GL_TRANSFORM_FEEDBACK_RECORD_NV
+  , pattern GL_TRANSFORM_FEEDBACK_VARYINGS_NV
+  , pattern GL_VERTEX_ID_NV
+) 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_NV_transform_feedback :: Bool
+gl_NV_transform_feedback = member "GL_NV_transform_feedback" extensions
+
+glActiveVaryingNV :: MonadIO m => GLuint -> Ptr GLchar -> m ()
+glActiveVaryingNV = ffiuintPtrcharIOV glActiveVaryingNVFunPtr
+
+glActiveVaryingNVFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO ())
+glActiveVaryingNVFunPtr = unsafePerformIO (getProcAddress "glActiveVaryingNV")
+
+{-# NOINLINE glActiveVaryingNVFunPtr #-}
+
+glBeginTransformFeedbackNV :: MonadIO m => GLenum -> m ()
+glBeginTransformFeedbackNV = ffienumIOV glBeginTransformFeedbackNVFunPtr
+
+glBeginTransformFeedbackNVFunPtr :: FunPtr (GLenum -> IO ())
+glBeginTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glBeginTransformFeedbackNV")
+
+{-# NOINLINE glBeginTransformFeedbackNVFunPtr #-}
+
+glBindBufferBaseNV :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
+glBindBufferBaseNV = ffienumuintuintIOV glBindBufferBaseNVFunPtr
+
+glBindBufferBaseNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
+glBindBufferBaseNVFunPtr = unsafePerformIO (getProcAddress "glBindBufferBaseNV")
+
+{-# NOINLINE glBindBufferBaseNVFunPtr #-}
+
+glBindBufferOffsetNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLintptr -> m ()
+glBindBufferOffsetNV = ffienumuintuintintptrIOV glBindBufferOffsetNVFunPtr
+
+glBindBufferOffsetNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> IO ())
+glBindBufferOffsetNVFunPtr = unsafePerformIO (getProcAddress "glBindBufferOffsetNV")
+
+{-# NOINLINE glBindBufferOffsetNVFunPtr #-}
+
+glBindBufferRangeNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+glBindBufferRangeNV = ffienumuintuintintptrsizeiptrIOV glBindBufferRangeNVFunPtr
+
+glBindBufferRangeNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
+glBindBufferRangeNVFunPtr = unsafePerformIO (getProcAddress "glBindBufferRangeNV")
+
+{-# NOINLINE glBindBufferRangeNVFunPtr #-}
+
+glEndTransformFeedbackNV :: MonadIO m => m ()
+glEndTransformFeedbackNV = ffiIOV glEndTransformFeedbackNVFunPtr
+
+glEndTransformFeedbackNVFunPtr :: FunPtr (IO ())
+glEndTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glEndTransformFeedbackNV")
+
+{-# NOINLINE glEndTransformFeedbackNVFunPtr #-}
+
+glGetActiveVaryingNV :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> m ()
+glGetActiveVaryingNV = ffiuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV glGetActiveVaryingNVFunPtr
+
+glGetActiveVaryingNVFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ())
+glGetActiveVaryingNVFunPtr = unsafePerformIO (getProcAddress "glGetActiveVaryingNV")
+
+{-# NOINLINE glGetActiveVaryingNVFunPtr #-}
+
+glGetTransformFeedbackVaryingNV :: MonadIO m => GLuint -> GLuint -> Ptr GLint -> m ()
+glGetTransformFeedbackVaryingNV = ffiuintuintPtrintIOV glGetTransformFeedbackVaryingNVFunPtr
+
+glGetTransformFeedbackVaryingNVFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ())
+glGetTransformFeedbackVaryingNVFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbackVaryingNV")
+
+{-# NOINLINE glGetTransformFeedbackVaryingNVFunPtr #-}
+
+glGetVaryingLocationNV :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
+glGetVaryingLocationNV = ffiuintPtrcharIOint glGetVaryingLocationNVFunPtr
+
+glGetVaryingLocationNVFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
+glGetVaryingLocationNVFunPtr = unsafePerformIO (getProcAddress "glGetVaryingLocationNV")
+
+{-# NOINLINE glGetVaryingLocationNVFunPtr #-}
+
+glTransformFeedbackAttribsNV :: MonadIO m => GLsizei -> Ptr GLint -> GLenum -> m ()
+glTransformFeedbackAttribsNV = ffisizeiPtrintenumIOV glTransformFeedbackAttribsNVFunPtr
+
+glTransformFeedbackAttribsNVFunPtr :: FunPtr (GLsizei -> Ptr GLint -> GLenum -> IO ())
+glTransformFeedbackAttribsNVFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackAttribsNV")
+
+{-# NOINLINE glTransformFeedbackAttribsNVFunPtr #-}
+
+glTransformFeedbackStreamAttribsNV :: MonadIO m => GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> m ()
+glTransformFeedbackStreamAttribsNV = ffisizeiPtrintsizeiPtrintenumIOV glTransformFeedbackStreamAttribsNVFunPtr
+
+glTransformFeedbackStreamAttribsNVFunPtr :: FunPtr (GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> IO ())
+glTransformFeedbackStreamAttribsNVFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackStreamAttribsNV")
+
+{-# NOINLINE glTransformFeedbackStreamAttribsNVFunPtr #-}
+
+glTransformFeedbackVaryingsNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLint -> GLenum -> m ()
+glTransformFeedbackVaryingsNV = ffiuintsizeiPtrintenumIOV glTransformFeedbackVaryingsNVFunPtr
+
+glTransformFeedbackVaryingsNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLint -> GLenum -> IO ())
+glTransformFeedbackVaryingsNVFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackVaryingsNV")
+
+{-# NOINLINE glTransformFeedbackVaryingsNVFunPtr #-}
+
+pattern GL_ACTIVE_VARYINGS_NV = 0x8C81 :: GLenum
+
+pattern GL_ACTIVE_VARYING_MAX_LENGTH_NV = 0x8C82 :: GLenum
+
+pattern GL_BACK_PRIMARY_COLOR_NV = 0x8C77 :: GLenum
+
+pattern GL_BACK_SECONDARY_COLOR_NV = 0x8C78 :: GLenum
+
+pattern GL_CLIP_DISTANCE_NV = 0x8C7A :: GLenum
+
+pattern GL_GENERIC_ATTRIB_NV = 0x8C7D :: GLenum
+
+pattern GL_INTERLEAVED_ATTRIBS_NV = 0x8C8C :: GLenum
+
+pattern GL_LAYER_NV = 0x8DAA :: GLenum
+
+pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = 0x8C8A :: GLenum
+
+pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x8C8B :: GLenum
+
+pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x8C80 :: GLenum
+
+pattern GL_NEXT_BUFFER_NV = -2 :: GLenum
+
+pattern GL_PRIMITIVES_GENERATED_NV = 0x8C87 :: GLenum
+
+pattern GL_PRIMITIVE_ID_NV = 0x8C7C :: GLenum
+
+pattern GL_RASTERIZER_DISCARD_NV = 0x8C89 :: GLenum
+
+pattern GL_SEPARATE_ATTRIBS_NV = 0x8C8D :: GLenum
+
+pattern GL_SKIP_COMPONENTS1_NV = -6 :: GLenum
+
+pattern GL_SKIP_COMPONENTS2_NV = -5 :: GLenum
+
+pattern GL_SKIP_COMPONENTS3_NV = -4 :: GLenum
+
+pattern GL_SKIP_COMPONENTS4_NV = -3 :: GLenum
+
+pattern GL_TEXTURE_COORD_NV = 0x8C79 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x8C7E :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x8C7F :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x8C85 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x8C84 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x8C88 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_RECORD_NV = 0x8C86 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_VARYINGS_NV = 0x8C83 :: GLenum
+
+pattern GL_VERTEX_ID_NV = 0x8C7B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TransformFeedback2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TransformFeedback2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/TransformFeedback2.hs
@@ -0,0 +1,94 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.TransformFeedback2 (
+  -- * Extension Support
+    gl_NV_transform_feedback2
+
+  -- * GL_NV_transform_feedback2
+  , glBindTransformFeedbackNV
+  , glDeleteTransformFeedbacksNV
+  , glDrawTransformFeedbackNV
+  , glGenTransformFeedbacksNV
+  , glIsTransformFeedbackNV
+  , glPauseTransformFeedbackNV
+  , glResumeTransformFeedbackNV
+  , pattern GL_TRANSFORM_FEEDBACK_BINDING_NV
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV
+  , pattern GL_TRANSFORM_FEEDBACK_NV
+) 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_NV_transform_feedback2 :: Bool
+gl_NV_transform_feedback2 = member "GL_NV_transform_feedback2" extensions
+
+glBindTransformFeedbackNV :: MonadIO m => GLenum -> GLuint -> m ()
+glBindTransformFeedbackNV = ffienumuintIOV glBindTransformFeedbackNVFunPtr
+
+glBindTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glBindTransformFeedbackNV")
+
+{-# NOINLINE glBindTransformFeedbackNVFunPtr #-}
+
+glDeleteTransformFeedbacksNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteTransformFeedbacksNV = ffisizeiPtruintIOV glDeleteTransformFeedbacksNVFunPtr
+
+glDeleteTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteTransformFeedbacksNVFunPtr = unsafePerformIO (getProcAddress "glDeleteTransformFeedbacksNV")
+
+{-# NOINLINE glDeleteTransformFeedbacksNVFunPtr #-}
+
+glDrawTransformFeedbackNV :: MonadIO m => GLenum -> GLuint -> m ()
+glDrawTransformFeedbackNV = ffienumuintIOV glDrawTransformFeedbackNVFunPtr
+
+glDrawTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glDrawTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedbackNV")
+
+{-# NOINLINE glDrawTransformFeedbackNVFunPtr #-}
+
+glGenTransformFeedbacksNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenTransformFeedbacksNV = ffisizeiPtruintIOV glGenTransformFeedbacksNVFunPtr
+
+glGenTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenTransformFeedbacksNVFunPtr = unsafePerformIO (getProcAddress "glGenTransformFeedbacksNV")
+
+{-# NOINLINE glGenTransformFeedbacksNVFunPtr #-}
+
+glIsTransformFeedbackNV :: MonadIO m => GLuint -> m GLboolean
+glIsTransformFeedbackNV = ffiuintIOboolean glIsTransformFeedbackNVFunPtr
+
+glIsTransformFeedbackNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glIsTransformFeedbackNV")
+
+{-# NOINLINE glIsTransformFeedbackNVFunPtr #-}
+
+glPauseTransformFeedbackNV :: MonadIO m => m ()
+glPauseTransformFeedbackNV = ffiIOV glPauseTransformFeedbackNVFunPtr
+
+glPauseTransformFeedbackNVFunPtr :: FunPtr (IO ())
+glPauseTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glPauseTransformFeedbackNV")
+
+{-# NOINLINE glPauseTransformFeedbackNVFunPtr #-}
+
+glResumeTransformFeedbackNV :: MonadIO m => m ()
+glResumeTransformFeedbackNV = ffiIOV glResumeTransformFeedbackNVFunPtr
+
+glResumeTransformFeedbackNVFunPtr :: FunPtr (IO ())
+glResumeTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glResumeTransformFeedbackNV")
+
+{-# NOINLINE glResumeTransformFeedbackNVFunPtr #-}
+
+pattern GL_TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23 :: GLenum
+
+pattern GL_TRANSFORM_FEEDBACK_NV = 0x8E22 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/UniformBufferUnifiedMemory.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/UniformBufferUnifiedMemory.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/UniformBufferUnifiedMemory.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.UniformBufferUnifiedMemory (
+  -- * Extension Support
+    gl_NV_uniform_buffer_unified_memory
+
+  -- * GL_NV_uniform_buffer_unified_memory
+  , pattern GL_UNIFORM_BUFFER_ADDRESS_NV
+  , pattern GL_UNIFORM_BUFFER_LENGTH_NV
+  , pattern GL_UNIFORM_BUFFER_UNIFIED_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_uniform_buffer_unified_memory :: Bool
+gl_NV_uniform_buffer_unified_memory = member "GL_NV_uniform_buffer_unified_memory" extensions
+
+pattern GL_UNIFORM_BUFFER_ADDRESS_NV = 0x936F :: GLenum
+
+pattern GL_UNIFORM_BUFFER_LENGTH_NV = 0x9370 :: GLenum
+
+pattern GL_UNIFORM_BUFFER_UNIFIED_NV = 0x936E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VdpauInterop.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VdpauInterop.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VdpauInterop.hs
@@ -0,0 +1,121 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VdpauInterop (
+  -- * Extension Support
+    gl_NV_vdpau_interop
+
+  -- * GL_NV_vdpau_interop
+  , glVDPAUFiniNV
+  , glVDPAUGetSurfaceivNV
+  , glVDPAUInitNV
+  , glVDPAUIsSurfaceNV
+  , glVDPAUMapSurfacesNV
+  , glVDPAURegisterOutputSurfaceNV
+  , glVDPAURegisterVideoSurfaceNV
+  , glVDPAUSurfaceAccessNV
+  , glVDPAUUnmapSurfacesNV
+  , glVDPAUUnregisterSurfaceNV
+  , pattern GL_SURFACE_MAPPED_NV
+  , pattern GL_SURFACE_REGISTERED_NV
+  , pattern GL_SURFACE_STATE_NV
+  , pattern GL_WRITE_DISCARD_NV
+) 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_NV_vdpau_interop :: Bool
+gl_NV_vdpau_interop = member "GL_NV_vdpau_interop" extensions
+
+glVDPAUFiniNV :: MonadIO m => m ()
+glVDPAUFiniNV = ffiIOV glVDPAUFiniNVFunPtr
+
+glVDPAUFiniNVFunPtr :: FunPtr (IO ())
+glVDPAUFiniNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUFiniNV")
+
+{-# NOINLINE glVDPAUFiniNVFunPtr #-}
+
+glVDPAUGetSurfaceivNV :: MonadIO m => GLvdpauSurfaceNV -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
+glVDPAUGetSurfaceivNV = ffivdpauSurfaceNVenumsizeiPtrsizeiPtrintIOV glVDPAUGetSurfaceivNVFunPtr
+
+glVDPAUGetSurfaceivNVFunPtr :: FunPtr (GLvdpauSurfaceNV -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ())
+glVDPAUGetSurfaceivNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUGetSurfaceivNV")
+
+{-# NOINLINE glVDPAUGetSurfaceivNVFunPtr #-}
+
+glVDPAUInitNV :: MonadIO m => Ptr () -> Ptr () -> m ()
+glVDPAUInitNV = ffiPtrVPtrVIOV glVDPAUInitNVFunPtr
+
+glVDPAUInitNVFunPtr :: FunPtr (Ptr () -> Ptr () -> IO ())
+glVDPAUInitNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUInitNV")
+
+{-# NOINLINE glVDPAUInitNVFunPtr #-}
+
+glVDPAUIsSurfaceNV :: MonadIO m => GLvdpauSurfaceNV -> m GLboolean
+glVDPAUIsSurfaceNV = ffivdpauSurfaceNVIOboolean glVDPAUIsSurfaceNVFunPtr
+
+glVDPAUIsSurfaceNVFunPtr :: FunPtr (GLvdpauSurfaceNV -> IO GLboolean)
+glVDPAUIsSurfaceNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUIsSurfaceNV")
+
+{-# NOINLINE glVDPAUIsSurfaceNVFunPtr #-}
+
+glVDPAUMapSurfacesNV :: MonadIO m => GLsizei -> Ptr GLvdpauSurfaceNV -> m ()
+glVDPAUMapSurfacesNV = ffisizeiPtrvdpauSurfaceNVIOV glVDPAUMapSurfacesNVFunPtr
+
+glVDPAUMapSurfacesNVFunPtr :: FunPtr (GLsizei -> Ptr GLvdpauSurfaceNV -> IO ())
+glVDPAUMapSurfacesNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUMapSurfacesNV")
+
+{-# NOINLINE glVDPAUMapSurfacesNVFunPtr #-}
+
+glVDPAURegisterOutputSurfaceNV :: MonadIO m => Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> m GLvdpauSurfaceNV
+glVDPAURegisterOutputSurfaceNV = ffiPtrVenumsizeiPtruintIOvdpauSurfaceNV glVDPAURegisterOutputSurfaceNVFunPtr
+
+glVDPAURegisterOutputSurfaceNVFunPtr :: FunPtr (Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> IO GLvdpauSurfaceNV)
+glVDPAURegisterOutputSurfaceNVFunPtr = unsafePerformIO (getProcAddress "glVDPAURegisterOutputSurfaceNV")
+
+{-# NOINLINE glVDPAURegisterOutputSurfaceNVFunPtr #-}
+
+glVDPAURegisterVideoSurfaceNV :: MonadIO m => Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> m GLvdpauSurfaceNV
+glVDPAURegisterVideoSurfaceNV = ffiPtrVenumsizeiPtruintIOvdpauSurfaceNV glVDPAURegisterVideoSurfaceNVFunPtr
+
+glVDPAURegisterVideoSurfaceNVFunPtr :: FunPtr (Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> IO GLvdpauSurfaceNV)
+glVDPAURegisterVideoSurfaceNVFunPtr = unsafePerformIO (getProcAddress "glVDPAURegisterVideoSurfaceNV")
+
+{-# NOINLINE glVDPAURegisterVideoSurfaceNVFunPtr #-}
+
+glVDPAUSurfaceAccessNV :: MonadIO m => GLvdpauSurfaceNV -> GLenum -> m ()
+glVDPAUSurfaceAccessNV = ffivdpauSurfaceNVenumIOV glVDPAUSurfaceAccessNVFunPtr
+
+glVDPAUSurfaceAccessNVFunPtr :: FunPtr (GLvdpauSurfaceNV -> GLenum -> IO ())
+glVDPAUSurfaceAccessNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUSurfaceAccessNV")
+
+{-# NOINLINE glVDPAUSurfaceAccessNVFunPtr #-}
+
+glVDPAUUnmapSurfacesNV :: MonadIO m => GLsizei -> Ptr GLvdpauSurfaceNV -> m ()
+glVDPAUUnmapSurfacesNV = ffisizeiPtrvdpauSurfaceNVIOV glVDPAUUnmapSurfacesNVFunPtr
+
+glVDPAUUnmapSurfacesNVFunPtr :: FunPtr (GLsizei -> Ptr GLvdpauSurfaceNV -> IO ())
+glVDPAUUnmapSurfacesNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUUnmapSurfacesNV")
+
+{-# NOINLINE glVDPAUUnmapSurfacesNVFunPtr #-}
+
+glVDPAUUnregisterSurfaceNV :: MonadIO m => GLvdpauSurfaceNV -> m ()
+glVDPAUUnregisterSurfaceNV = ffivdpauSurfaceNVIOV glVDPAUUnregisterSurfaceNVFunPtr
+
+glVDPAUUnregisterSurfaceNVFunPtr :: FunPtr (GLvdpauSurfaceNV -> IO ())
+glVDPAUUnregisterSurfaceNVFunPtr = unsafePerformIO (getProcAddress "glVDPAUUnregisterSurfaceNV")
+
+{-# NOINLINE glVDPAUUnregisterSurfaceNVFunPtr #-}
+
+pattern GL_SURFACE_MAPPED_NV = 0x8700 :: GLenum
+
+pattern GL_SURFACE_REGISTERED_NV = 0x86FD :: GLenum
+
+pattern GL_SURFACE_STATE_NV = 0x86EB :: GLenum
+
+pattern GL_WRITE_DISCARD_NV = 0x88BE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexArrayRange.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexArrayRange.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexArrayRange.hs
@@ -0,0 +1,52 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexArrayRange (
+  -- * Extension Support
+    gl_NV_vertex_array_range
+
+  -- * GL_NV_vertex_array_range
+  , glFlushVertexArrayRangeNV
+  , glVertexArrayRangeNV
+  , pattern GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV
+  , pattern GL_VERTEX_ARRAY_RANGE_LENGTH_NV
+  , pattern GL_VERTEX_ARRAY_RANGE_NV
+  , pattern GL_VERTEX_ARRAY_RANGE_POINTER_NV
+  , pattern GL_VERTEX_ARRAY_RANGE_VALID_NV
+) 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_NV_vertex_array_range :: Bool
+gl_NV_vertex_array_range = member "GL_NV_vertex_array_range" extensions
+
+glFlushVertexArrayRangeNV :: MonadIO m => m ()
+glFlushVertexArrayRangeNV = ffiIOV glFlushVertexArrayRangeNVFunPtr
+
+glFlushVertexArrayRangeNVFunPtr :: FunPtr (IO ())
+glFlushVertexArrayRangeNVFunPtr = unsafePerformIO (getProcAddress "glFlushVertexArrayRangeNV")
+
+{-# NOINLINE glFlushVertexArrayRangeNVFunPtr #-}
+
+glVertexArrayRangeNV :: MonadIO m => GLsizei -> Ptr () -> m ()
+glVertexArrayRangeNV = ffisizeiPtrVIOV glVertexArrayRangeNVFunPtr
+
+glVertexArrayRangeNVFunPtr :: FunPtr (GLsizei -> Ptr () -> IO ())
+glVertexArrayRangeNVFunPtr = unsafePerformIO (getProcAddress "glVertexArrayRangeNV")
+
+{-# NOINLINE glVertexArrayRangeNVFunPtr #-}
+
+pattern GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = 0x8520 :: GLenum
+
+pattern GL_VERTEX_ARRAY_RANGE_LENGTH_NV = 0x851E :: GLenum
+
+pattern GL_VERTEX_ARRAY_RANGE_NV = 0x851D :: GLenum
+
+pattern GL_VERTEX_ARRAY_RANGE_POINTER_NV = 0x8521 :: GLenum
+
+pattern GL_VERTEX_ARRAY_RANGE_VALID_NV = 0x851F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexArrayRange2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexArrayRange2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexArrayRange2.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexArrayRange2 (
+  -- * Extension Support
+    gl_NV_vertex_array_range2
+
+  -- * GL_NV_vertex_array_range2
+  , pattern GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NV_vertex_array_range2 :: Bool
+gl_NV_vertex_array_range2 = member "GL_NV_vertex_array_range2" extensions
+
+pattern GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = 0x8533 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexAttribInteger64bit.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexAttribInteger64bit.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexAttribInteger64bit.hs
@@ -0,0 +1,193 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexAttribInteger64bit (
+  -- * Extension Support
+    gl_NV_vertex_attrib_integer_64bit
+
+  -- * GL_NV_vertex_attrib_integer_64bit
+  , glGetVertexAttribLi64vNV
+  , glGetVertexAttribLui64vNV
+  , glVertexAttribL1i64NV
+  , glVertexAttribL1i64vNV
+  , glVertexAttribL1ui64NV
+  , glVertexAttribL1ui64vNV
+  , glVertexAttribL2i64NV
+  , glVertexAttribL2i64vNV
+  , glVertexAttribL2ui64NV
+  , glVertexAttribL2ui64vNV
+  , glVertexAttribL3i64NV
+  , glVertexAttribL3i64vNV
+  , glVertexAttribL3ui64NV
+  , glVertexAttribL3ui64vNV
+  , glVertexAttribL4i64NV
+  , glVertexAttribL4i64vNV
+  , glVertexAttribL4ui64NV
+  , glVertexAttribL4ui64vNV
+  , glVertexAttribLFormatNV
+  , pattern GL_INT64_NV
+  , pattern GL_UNSIGNED_INT64_NV
+) 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_NV_vertex_attrib_integer_64bit :: Bool
+gl_NV_vertex_attrib_integer_64bit = member "GL_NV_vertex_attrib_integer_64bit" extensions
+
+glGetVertexAttribLi64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint64EXT -> m ()
+glGetVertexAttribLi64vNV = ffiuintenumPtrint64EXTIOV glGetVertexAttribLi64vNVFunPtr
+
+glGetVertexAttribLi64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64EXT -> IO ())
+glGetVertexAttribLi64vNVFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribLi64vNV")
+
+{-# NOINLINE glGetVertexAttribLi64vNVFunPtr #-}
+
+glGetVertexAttribLui64vNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
+glGetVertexAttribLui64vNV = ffiuintenumPtruint64EXTIOV glGetVertexAttribLui64vNVFunPtr
+
+glGetVertexAttribLui64vNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ())
+glGetVertexAttribLui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribLui64vNV")
+
+{-# NOINLINE glGetVertexAttribLui64vNVFunPtr #-}
+
+glVertexAttribL1i64NV :: MonadIO m => GLuint -> GLint64EXT -> m ()
+glVertexAttribL1i64NV = ffiuintint64EXTIOV glVertexAttribL1i64NVFunPtr
+
+glVertexAttribL1i64NVFunPtr :: FunPtr (GLuint -> GLint64EXT -> IO ())
+glVertexAttribL1i64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1i64NV")
+
+{-# NOINLINE glVertexAttribL1i64NVFunPtr #-}
+
+glVertexAttribL1i64vNV :: MonadIO m => GLuint -> Ptr GLint64EXT -> m ()
+glVertexAttribL1i64vNV = ffiuintPtrint64EXTIOV glVertexAttribL1i64vNVFunPtr
+
+glVertexAttribL1i64vNVFunPtr :: FunPtr (GLuint -> Ptr GLint64EXT -> IO ())
+glVertexAttribL1i64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1i64vNV")
+
+{-# NOINLINE glVertexAttribL1i64vNVFunPtr #-}
+
+glVertexAttribL1ui64NV :: MonadIO m => GLuint -> GLuint64EXT -> m ()
+glVertexAttribL1ui64NV = ffiuintuint64EXTIOV glVertexAttribL1ui64NVFunPtr
+
+glVertexAttribL1ui64NVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> IO ())
+glVertexAttribL1ui64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1ui64NV")
+
+{-# NOINLINE glVertexAttribL1ui64NVFunPtr #-}
+
+glVertexAttribL1ui64vNV :: MonadIO m => GLuint -> Ptr GLuint64EXT -> m ()
+glVertexAttribL1ui64vNV = ffiuintPtruint64EXTIOV glVertexAttribL1ui64vNVFunPtr
+
+glVertexAttribL1ui64vNVFunPtr :: FunPtr (GLuint -> Ptr GLuint64EXT -> IO ())
+glVertexAttribL1ui64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1ui64vNV")
+
+{-# NOINLINE glVertexAttribL1ui64vNVFunPtr #-}
+
+glVertexAttribL2i64NV :: MonadIO m => GLuint -> GLint64EXT -> GLint64EXT -> m ()
+glVertexAttribL2i64NV = ffiuintint64EXTint64EXTIOV glVertexAttribL2i64NVFunPtr
+
+glVertexAttribL2i64NVFunPtr :: FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> IO ())
+glVertexAttribL2i64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2i64NV")
+
+{-# NOINLINE glVertexAttribL2i64NVFunPtr #-}
+
+glVertexAttribL2i64vNV :: MonadIO m => GLuint -> Ptr GLint64EXT -> m ()
+glVertexAttribL2i64vNV = ffiuintPtrint64EXTIOV glVertexAttribL2i64vNVFunPtr
+
+glVertexAttribL2i64vNVFunPtr :: FunPtr (GLuint -> Ptr GLint64EXT -> IO ())
+glVertexAttribL2i64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2i64vNV")
+
+{-# NOINLINE glVertexAttribL2i64vNVFunPtr #-}
+
+glVertexAttribL2ui64NV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint64EXT -> m ()
+glVertexAttribL2ui64NV = ffiuintuint64EXTuint64EXTIOV glVertexAttribL2ui64NVFunPtr
+
+glVertexAttribL2ui64NVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> IO ())
+glVertexAttribL2ui64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2ui64NV")
+
+{-# NOINLINE glVertexAttribL2ui64NVFunPtr #-}
+
+glVertexAttribL2ui64vNV :: MonadIO m => GLuint -> Ptr GLuint64EXT -> m ()
+glVertexAttribL2ui64vNV = ffiuintPtruint64EXTIOV glVertexAttribL2ui64vNVFunPtr
+
+glVertexAttribL2ui64vNVFunPtr :: FunPtr (GLuint -> Ptr GLuint64EXT -> IO ())
+glVertexAttribL2ui64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2ui64vNV")
+
+{-# NOINLINE glVertexAttribL2ui64vNVFunPtr #-}
+
+glVertexAttribL3i64NV :: MonadIO m => GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+glVertexAttribL3i64NV = ffiuintint64EXTint64EXTint64EXTIOV glVertexAttribL3i64NVFunPtr
+
+glVertexAttribL3i64NVFunPtr :: FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
+glVertexAttribL3i64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3i64NV")
+
+{-# NOINLINE glVertexAttribL3i64NVFunPtr #-}
+
+glVertexAttribL3i64vNV :: MonadIO m => GLuint -> Ptr GLint64EXT -> m ()
+glVertexAttribL3i64vNV = ffiuintPtrint64EXTIOV glVertexAttribL3i64vNVFunPtr
+
+glVertexAttribL3i64vNVFunPtr :: FunPtr (GLuint -> Ptr GLint64EXT -> IO ())
+glVertexAttribL3i64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3i64vNV")
+
+{-# NOINLINE glVertexAttribL3i64vNVFunPtr #-}
+
+glVertexAttribL3ui64NV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+glVertexAttribL3ui64NV = ffiuintuint64EXTuint64EXTuint64EXTIOV glVertexAttribL3ui64NVFunPtr
+
+glVertexAttribL3ui64NVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
+glVertexAttribL3ui64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3ui64NV")
+
+{-# NOINLINE glVertexAttribL3ui64NVFunPtr #-}
+
+glVertexAttribL3ui64vNV :: MonadIO m => GLuint -> Ptr GLuint64EXT -> m ()
+glVertexAttribL3ui64vNV = ffiuintPtruint64EXTIOV glVertexAttribL3ui64vNVFunPtr
+
+glVertexAttribL3ui64vNVFunPtr :: FunPtr (GLuint -> Ptr GLuint64EXT -> IO ())
+glVertexAttribL3ui64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3ui64vNV")
+
+{-# NOINLINE glVertexAttribL3ui64vNVFunPtr #-}
+
+glVertexAttribL4i64NV :: MonadIO m => GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+glVertexAttribL4i64NV = ffiuintint64EXTint64EXTint64EXTint64EXTIOV glVertexAttribL4i64NVFunPtr
+
+glVertexAttribL4i64NVFunPtr :: FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
+glVertexAttribL4i64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4i64NV")
+
+{-# NOINLINE glVertexAttribL4i64NVFunPtr #-}
+
+glVertexAttribL4i64vNV :: MonadIO m => GLuint -> Ptr GLint64EXT -> m ()
+glVertexAttribL4i64vNV = ffiuintPtrint64EXTIOV glVertexAttribL4i64vNVFunPtr
+
+glVertexAttribL4i64vNVFunPtr :: FunPtr (GLuint -> Ptr GLint64EXT -> IO ())
+glVertexAttribL4i64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4i64vNV")
+
+{-# NOINLINE glVertexAttribL4i64vNVFunPtr #-}
+
+glVertexAttribL4ui64NV :: MonadIO m => GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+glVertexAttribL4ui64NV = ffiuintuint64EXTuint64EXTuint64EXTuint64EXTIOV glVertexAttribL4ui64NVFunPtr
+
+glVertexAttribL4ui64NVFunPtr :: FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
+glVertexAttribL4ui64NVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4ui64NV")
+
+{-# NOINLINE glVertexAttribL4ui64NVFunPtr #-}
+
+glVertexAttribL4ui64vNV :: MonadIO m => GLuint -> Ptr GLuint64EXT -> m ()
+glVertexAttribL4ui64vNV = ffiuintPtruint64EXTIOV glVertexAttribL4ui64vNVFunPtr
+
+glVertexAttribL4ui64vNVFunPtr :: FunPtr (GLuint -> Ptr GLuint64EXT -> IO ())
+glVertexAttribL4ui64vNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4ui64vNV")
+
+{-# NOINLINE glVertexAttribL4ui64vNVFunPtr #-}
+
+glVertexAttribLFormatNV :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> m ()
+glVertexAttribLFormatNV = ffiuintintenumsizeiIOV glVertexAttribLFormatNVFunPtr
+
+glVertexAttribLFormatNVFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> IO ())
+glVertexAttribLFormatNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribLFormatNV")
+
+{-# NOINLINE glVertexAttribLFormatNVFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexBufferUnifiedMemory.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexBufferUnifiedMemory.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexBufferUnifiedMemory.hs
@@ -0,0 +1,202 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexBufferUnifiedMemory (
+  -- * Extension Support
+    gl_NV_vertex_buffer_unified_memory
+
+  -- * GL_NV_vertex_buffer_unified_memory
+  , glBufferAddressRangeNV
+  , glColorFormatNV
+  , glEdgeFlagFormatNV
+  , glFogCoordFormatNV
+  , glGetIntegerui64i_vNV
+  , glIndexFormatNV
+  , glNormalFormatNV
+  , glSecondaryColorFormatNV
+  , glTexCoordFormatNV
+  , glVertexAttribFormatNV
+  , glVertexAttribIFormatNV
+  , glVertexFormatNV
+  , pattern GL_COLOR_ARRAY_ADDRESS_NV
+  , pattern GL_COLOR_ARRAY_LENGTH_NV
+  , pattern GL_DRAW_INDIRECT_ADDRESS_NV
+  , pattern GL_DRAW_INDIRECT_LENGTH_NV
+  , pattern GL_DRAW_INDIRECT_UNIFIED_NV
+  , pattern GL_EDGE_FLAG_ARRAY_ADDRESS_NV
+  , pattern GL_EDGE_FLAG_ARRAY_LENGTH_NV
+  , pattern GL_ELEMENT_ARRAY_ADDRESS_NV
+  , pattern GL_ELEMENT_ARRAY_LENGTH_NV
+  , pattern GL_ELEMENT_ARRAY_UNIFIED_NV
+  , pattern GL_FOG_COORD_ARRAY_ADDRESS_NV
+  , pattern GL_FOG_COORD_ARRAY_LENGTH_NV
+  , pattern GL_INDEX_ARRAY_ADDRESS_NV
+  , pattern GL_INDEX_ARRAY_LENGTH_NV
+  , pattern GL_NORMAL_ARRAY_ADDRESS_NV
+  , pattern GL_NORMAL_ARRAY_LENGTH_NV
+  , pattern GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV
+  , pattern GL_SECONDARY_COLOR_ARRAY_LENGTH_NV
+  , pattern GL_TEXTURE_COORD_ARRAY_ADDRESS_NV
+  , pattern GL_TEXTURE_COORD_ARRAY_LENGTH_NV
+  , pattern GL_VERTEX_ARRAY_ADDRESS_NV
+  , pattern GL_VERTEX_ARRAY_LENGTH_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV
+) 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_NV_vertex_buffer_unified_memory :: Bool
+gl_NV_vertex_buffer_unified_memory = member "GL_NV_vertex_buffer_unified_memory" extensions
+
+glBufferAddressRangeNV :: MonadIO m => GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> m ()
+glBufferAddressRangeNV = ffienumuintuint64EXTsizeiptrIOV glBufferAddressRangeNVFunPtr
+
+glBufferAddressRangeNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> IO ())
+glBufferAddressRangeNVFunPtr = unsafePerformIO (getProcAddress "glBufferAddressRangeNV")
+
+{-# NOINLINE glBufferAddressRangeNVFunPtr #-}
+
+glColorFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
+glColorFormatNV = ffiintenumsizeiIOV glColorFormatNVFunPtr
+
+glColorFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
+glColorFormatNVFunPtr = unsafePerformIO (getProcAddress "glColorFormatNV")
+
+{-# NOINLINE glColorFormatNVFunPtr #-}
+
+glEdgeFlagFormatNV :: MonadIO m => GLsizei -> m ()
+glEdgeFlagFormatNV = ffisizeiIOV glEdgeFlagFormatNVFunPtr
+
+glEdgeFlagFormatNVFunPtr :: FunPtr (GLsizei -> IO ())
+glEdgeFlagFormatNVFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagFormatNV")
+
+{-# NOINLINE glEdgeFlagFormatNVFunPtr #-}
+
+glFogCoordFormatNV :: MonadIO m => GLenum -> GLsizei -> m ()
+glFogCoordFormatNV = ffienumsizeiIOV glFogCoordFormatNVFunPtr
+
+glFogCoordFormatNVFunPtr :: FunPtr (GLenum -> GLsizei -> IO ())
+glFogCoordFormatNVFunPtr = unsafePerformIO (getProcAddress "glFogCoordFormatNV")
+
+{-# NOINLINE glFogCoordFormatNVFunPtr #-}
+
+glGetIntegerui64i_vNV :: MonadIO m => GLenum -> GLuint -> Ptr GLuint64EXT -> m ()
+glGetIntegerui64i_vNV = ffienumuintPtruint64EXTIOV glGetIntegerui64i_vNVFunPtr
+
+glGetIntegerui64i_vNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint64EXT -> IO ())
+glGetIntegerui64i_vNVFunPtr = unsafePerformIO (getProcAddress "glGetIntegerui64i_vNV")
+
+{-# NOINLINE glGetIntegerui64i_vNVFunPtr #-}
+
+glIndexFormatNV :: MonadIO m => GLenum -> GLsizei -> m ()
+glIndexFormatNV = ffienumsizeiIOV glIndexFormatNVFunPtr
+
+glIndexFormatNVFunPtr :: FunPtr (GLenum -> GLsizei -> IO ())
+glIndexFormatNVFunPtr = unsafePerformIO (getProcAddress "glIndexFormatNV")
+
+{-# NOINLINE glIndexFormatNVFunPtr #-}
+
+glNormalFormatNV :: MonadIO m => GLenum -> GLsizei -> m ()
+glNormalFormatNV = ffienumsizeiIOV glNormalFormatNVFunPtr
+
+glNormalFormatNVFunPtr :: FunPtr (GLenum -> GLsizei -> IO ())
+glNormalFormatNVFunPtr = unsafePerformIO (getProcAddress "glNormalFormatNV")
+
+{-# NOINLINE glNormalFormatNVFunPtr #-}
+
+glSecondaryColorFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
+glSecondaryColorFormatNV = ffiintenumsizeiIOV glSecondaryColorFormatNVFunPtr
+
+glSecondaryColorFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
+glSecondaryColorFormatNVFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorFormatNV")
+
+{-# NOINLINE glSecondaryColorFormatNVFunPtr #-}
+
+glTexCoordFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
+glTexCoordFormatNV = ffiintenumsizeiIOV glTexCoordFormatNVFunPtr
+
+glTexCoordFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
+glTexCoordFormatNVFunPtr = unsafePerformIO (getProcAddress "glTexCoordFormatNV")
+
+{-# NOINLINE glTexCoordFormatNVFunPtr #-}
+
+glVertexAttribFormatNV :: MonadIO m => GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> m ()
+glVertexAttribFormatNV = ffiuintintenumbooleansizeiIOV glVertexAttribFormatNVFunPtr
+
+glVertexAttribFormatNVFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> IO ())
+glVertexAttribFormatNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribFormatNV")
+
+{-# NOINLINE glVertexAttribFormatNVFunPtr #-}
+
+glVertexAttribIFormatNV :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> m ()
+glVertexAttribIFormatNV = ffiuintintenumsizeiIOV glVertexAttribIFormatNVFunPtr
+
+glVertexAttribIFormatNVFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> IO ())
+glVertexAttribIFormatNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribIFormatNV")
+
+{-# NOINLINE glVertexAttribIFormatNVFunPtr #-}
+
+glVertexFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
+glVertexFormatNV = ffiintenumsizeiIOV glVertexFormatNVFunPtr
+
+glVertexFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
+glVertexFormatNVFunPtr = unsafePerformIO (getProcAddress "glVertexFormatNV")
+
+{-# NOINLINE glVertexFormatNVFunPtr #-}
+
+pattern GL_COLOR_ARRAY_ADDRESS_NV = 0x8F23 :: GLenum
+
+pattern GL_COLOR_ARRAY_LENGTH_NV = 0x8F2D :: GLenum
+
+pattern GL_DRAW_INDIRECT_ADDRESS_NV = 0x8F41 :: GLenum
+
+pattern GL_DRAW_INDIRECT_LENGTH_NV = 0x8F42 :: GLenum
+
+pattern GL_DRAW_INDIRECT_UNIFIED_NV = 0x8F40 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26 :: GLenum
+
+pattern GL_EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30 :: GLenum
+
+pattern GL_ELEMENT_ARRAY_ADDRESS_NV = 0x8F29 :: GLenum
+
+pattern GL_ELEMENT_ARRAY_LENGTH_NV = 0x8F33 :: GLenum
+
+pattern GL_ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F :: GLenum
+
+pattern GL_FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28 :: GLenum
+
+pattern GL_FOG_COORD_ARRAY_LENGTH_NV = 0x8F32 :: GLenum
+
+pattern GL_INDEX_ARRAY_ADDRESS_NV = 0x8F24 :: GLenum
+
+pattern GL_INDEX_ARRAY_LENGTH_NV = 0x8F2E :: GLenum
+
+pattern GL_NORMAL_ARRAY_ADDRESS_NV = 0x8F22 :: GLenum
+
+pattern GL_NORMAL_ARRAY_LENGTH_NV = 0x8F2C :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27 :: GLenum
+
+pattern GL_SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25 :: GLenum
+
+pattern GL_TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F :: GLenum
+
+pattern GL_VERTEX_ARRAY_ADDRESS_NV = 0x8F21 :: GLenum
+
+pattern GL_VERTEX_ARRAY_LENGTH_NV = 0x8F2B :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram.hs
@@ -0,0 +1,844 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexProgram (
+  -- * Extension Support
+    gl_NV_vertex_program
+
+  -- * GL_NV_vertex_program
+  , glAreProgramsResidentNV
+  , glBindProgramNV
+  , glDeleteProgramsNV
+  , glExecuteProgramNV
+  , glGenProgramsNV
+  , glGetProgramParameterdvNV
+  , glGetProgramParameterfvNV
+  , glGetProgramStringNV
+  , glGetProgramivNV
+  , glGetTrackMatrixivNV
+  , glGetVertexAttribPointervNV
+  , glGetVertexAttribdvNV
+  , glGetVertexAttribfvNV
+  , glGetVertexAttribivNV
+  , glIsProgramNV
+  , glLoadProgramNV
+  , glProgramParameter4dNV
+  , glProgramParameter4dvNV
+  , glProgramParameter4fNV
+  , glProgramParameter4fvNV
+  , glProgramParameters4dvNV
+  , glProgramParameters4fvNV
+  , glRequestResidentProgramsNV
+  , glTrackMatrixNV
+  , glVertexAttrib1dNV
+  , glVertexAttrib1dvNV
+  , glVertexAttrib1fNV
+  , glVertexAttrib1fvNV
+  , glVertexAttrib1sNV
+  , glVertexAttrib1svNV
+  , glVertexAttrib2dNV
+  , glVertexAttrib2dvNV
+  , glVertexAttrib2fNV
+  , glVertexAttrib2fvNV
+  , glVertexAttrib2sNV
+  , glVertexAttrib2svNV
+  , glVertexAttrib3dNV
+  , glVertexAttrib3dvNV
+  , glVertexAttrib3fNV
+  , glVertexAttrib3fvNV
+  , glVertexAttrib3sNV
+  , glVertexAttrib3svNV
+  , glVertexAttrib4dNV
+  , glVertexAttrib4dvNV
+  , glVertexAttrib4fNV
+  , glVertexAttrib4fvNV
+  , glVertexAttrib4sNV
+  , glVertexAttrib4svNV
+  , glVertexAttrib4ubNV
+  , glVertexAttrib4ubvNV
+  , glVertexAttribPointerNV
+  , glVertexAttribs1dvNV
+  , glVertexAttribs1fvNV
+  , glVertexAttribs1svNV
+  , glVertexAttribs2dvNV
+  , glVertexAttribs2fvNV
+  , glVertexAttribs2svNV
+  , glVertexAttribs3dvNV
+  , glVertexAttribs3fvNV
+  , glVertexAttribs3svNV
+  , glVertexAttribs4dvNV
+  , glVertexAttribs4fvNV
+  , glVertexAttribs4svNV
+  , glVertexAttribs4ubvNV
+  , pattern GL_ATTRIB_ARRAY_POINTER_NV
+  , pattern GL_ATTRIB_ARRAY_SIZE_NV
+  , pattern GL_ATTRIB_ARRAY_STRIDE_NV
+  , pattern GL_ATTRIB_ARRAY_TYPE_NV
+  , pattern GL_CURRENT_ATTRIB_NV
+  , pattern GL_CURRENT_MATRIX_NV
+  , pattern GL_CURRENT_MATRIX_STACK_DEPTH_NV
+  , pattern GL_IDENTITY_NV
+  , pattern GL_INVERSE_NV
+  , pattern GL_INVERSE_TRANSPOSE_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB0_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB10_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB11_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB12_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB13_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB14_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB15_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB1_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB2_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB3_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB4_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB5_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB6_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB7_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB8_4_NV
+  , pattern GL_MAP1_VERTEX_ATTRIB9_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB0_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB10_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB11_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB12_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB13_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB14_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB15_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB1_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB2_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB3_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB4_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB5_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB6_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB7_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB8_4_NV
+  , pattern GL_MAP2_VERTEX_ATTRIB9_4_NV
+  , pattern GL_MATRIX0_NV
+  , pattern GL_MATRIX1_NV
+  , pattern GL_MATRIX2_NV
+  , pattern GL_MATRIX3_NV
+  , pattern GL_MATRIX4_NV
+  , pattern GL_MATRIX5_NV
+  , pattern GL_MATRIX6_NV
+  , pattern GL_MATRIX7_NV
+  , pattern GL_MAX_TRACK_MATRICES_NV
+  , pattern GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
+  , pattern GL_MODELVIEW_PROJECTION_NV
+  , pattern GL_PROGRAM_ERROR_POSITION_NV
+  , pattern GL_PROGRAM_LENGTH_NV
+  , pattern GL_PROGRAM_PARAMETER_NV
+  , pattern GL_PROGRAM_RESIDENT_NV
+  , pattern GL_PROGRAM_STRING_NV
+  , pattern GL_PROGRAM_TARGET_NV
+  , pattern GL_TRACK_MATRIX_NV
+  , pattern GL_TRACK_MATRIX_TRANSFORM_NV
+  , pattern GL_TRANSPOSE_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY0_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY10_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY11_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY12_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY13_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY14_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY15_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY1_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY2_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY3_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY4_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY5_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY6_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY7_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY8_NV
+  , pattern GL_VERTEX_ATTRIB_ARRAY9_NV
+  , pattern GL_VERTEX_PROGRAM_BINDING_NV
+  , pattern GL_VERTEX_PROGRAM_NV
+  , pattern GL_VERTEX_PROGRAM_POINT_SIZE_NV
+  , pattern GL_VERTEX_PROGRAM_TWO_SIDE_NV
+  , pattern GL_VERTEX_STATE_PROGRAM_NV
+) 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_NV_vertex_program :: Bool
+gl_NV_vertex_program = member "GL_NV_vertex_program" extensions
+
+glAreProgramsResidentNV :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLboolean -> m GLboolean
+glAreProgramsResidentNV = ffisizeiPtruintPtrbooleanIOboolean glAreProgramsResidentNVFunPtr
+
+glAreProgramsResidentNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean)
+glAreProgramsResidentNVFunPtr = unsafePerformIO (getProcAddress "glAreProgramsResidentNV")
+
+{-# NOINLINE glAreProgramsResidentNVFunPtr #-}
+
+glBindProgramNV :: MonadIO m => GLenum -> GLuint -> m ()
+glBindProgramNV = ffienumuintIOV glBindProgramNVFunPtr
+
+glBindProgramNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindProgramNVFunPtr = unsafePerformIO (getProcAddress "glBindProgramNV")
+
+{-# NOINLINE glBindProgramNVFunPtr #-}
+
+glDeleteProgramsNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteProgramsNV = ffisizeiPtruintIOV glDeleteProgramsNVFunPtr
+
+glDeleteProgramsNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteProgramsNVFunPtr = unsafePerformIO (getProcAddress "glDeleteProgramsNV")
+
+{-# NOINLINE glDeleteProgramsNVFunPtr #-}
+
+glExecuteProgramNV :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
+glExecuteProgramNV = ffienumuintPtrfloatIOV glExecuteProgramNVFunPtr
+
+glExecuteProgramNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glExecuteProgramNVFunPtr = unsafePerformIO (getProcAddress "glExecuteProgramNV")
+
+{-# NOINLINE glExecuteProgramNVFunPtr #-}
+
+glGenProgramsNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenProgramsNV = ffisizeiPtruintIOV glGenProgramsNVFunPtr
+
+glGenProgramsNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenProgramsNVFunPtr = unsafePerformIO (getProcAddress "glGenProgramsNV")
+
+{-# NOINLINE glGenProgramsNVFunPtr #-}
+
+glGetProgramParameterdvNV :: MonadIO m => GLenum -> GLuint -> GLenum -> Ptr GLdouble -> m ()
+glGetProgramParameterdvNV = ffienumuintenumPtrdoubleIOV glGetProgramParameterdvNVFunPtr
+
+glGetProgramParameterdvNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLdouble -> IO ())
+glGetProgramParameterdvNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramParameterdvNV")
+
+{-# NOINLINE glGetProgramParameterdvNVFunPtr #-}
+
+glGetProgramParameterfvNV :: MonadIO m => GLenum -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetProgramParameterfvNV = ffienumuintenumPtrfloatIOV glGetProgramParameterfvNVFunPtr
+
+glGetProgramParameterfvNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetProgramParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramParameterfvNV")
+
+{-# NOINLINE glGetProgramParameterfvNVFunPtr #-}
+
+glGetProgramStringNV :: MonadIO m => GLuint -> GLenum -> Ptr GLubyte -> m ()
+glGetProgramStringNV = ffiuintenumPtrubyteIOV glGetProgramStringNVFunPtr
+
+glGetProgramStringNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLubyte -> IO ())
+glGetProgramStringNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramStringNV")
+
+{-# NOINLINE glGetProgramStringNVFunPtr #-}
+
+glGetProgramivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetProgramivNV = ffiuintenumPtrintIOV glGetProgramivNVFunPtr
+
+glGetProgramivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetProgramivNVFunPtr = unsafePerformIO (getProcAddress "glGetProgramivNV")
+
+{-# NOINLINE glGetProgramivNVFunPtr #-}
+
+glGetTrackMatrixivNV :: MonadIO m => GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
+glGetTrackMatrixivNV = ffienumuintenumPtrintIOV glGetTrackMatrixivNVFunPtr
+
+glGetTrackMatrixivNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetTrackMatrixivNVFunPtr = unsafePerformIO (getProcAddress "glGetTrackMatrixivNV")
+
+{-# NOINLINE glGetTrackMatrixivNVFunPtr #-}
+
+glGetVertexAttribPointervNV :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
+glGetVertexAttribPointervNV = ffiuintenumPtrVIOV glGetVertexAttribPointervNVFunPtr
+
+glGetVertexAttribPointervNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
+glGetVertexAttribPointervNVFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribPointervNV")
+
+{-# NOINLINE glGetVertexAttribPointervNVFunPtr #-}
+
+glGetVertexAttribdvNV :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
+glGetVertexAttribdvNV = ffiuintenumPtrdoubleIOV glGetVertexAttribdvNVFunPtr
+
+glGetVertexAttribdvNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
+glGetVertexAttribdvNVFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribdvNV")
+
+{-# NOINLINE glGetVertexAttribdvNVFunPtr #-}
+
+glGetVertexAttribfvNV :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetVertexAttribfvNV = ffiuintenumPtrfloatIOV glGetVertexAttribfvNVFunPtr
+
+glGetVertexAttribfvNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetVertexAttribfvNVFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribfvNV")
+
+{-# NOINLINE glGetVertexAttribfvNVFunPtr #-}
+
+glGetVertexAttribivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVertexAttribivNV = ffiuintenumPtrintIOV glGetVertexAttribivNVFunPtr
+
+glGetVertexAttribivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVertexAttribivNVFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribivNV")
+
+{-# NOINLINE glGetVertexAttribivNVFunPtr #-}
+
+glIsProgramNV :: MonadIO m => GLuint -> m GLboolean
+glIsProgramNV = ffiuintIOboolean glIsProgramNVFunPtr
+
+glIsProgramNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsProgramNVFunPtr = unsafePerformIO (getProcAddress "glIsProgramNV")
+
+{-# NOINLINE glIsProgramNVFunPtr #-}
+
+glLoadProgramNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLubyte -> m ()
+glLoadProgramNV = ffienumuintsizeiPtrubyteIOV glLoadProgramNVFunPtr
+
+glLoadProgramNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLubyte -> IO ())
+glLoadProgramNVFunPtr = unsafePerformIO (getProcAddress "glLoadProgramNV")
+
+{-# NOINLINE glLoadProgramNVFunPtr #-}
+
+glProgramParameter4dNV :: MonadIO m => GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glProgramParameter4dNV = ffienumuintdoubledoubledoubledoubleIOV glProgramParameter4dNVFunPtr
+
+glProgramParameter4dNVFunPtr :: FunPtr (GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glProgramParameter4dNVFunPtr = unsafePerformIO (getProcAddress "glProgramParameter4dNV")
+
+{-# NOINLINE glProgramParameter4dNVFunPtr #-}
+
+glProgramParameter4dvNV :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
+glProgramParameter4dvNV = ffienumuintPtrdoubleIOV glProgramParameter4dvNVFunPtr
+
+glProgramParameter4dvNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
+glProgramParameter4dvNVFunPtr = unsafePerformIO (getProcAddress "glProgramParameter4dvNV")
+
+{-# NOINLINE glProgramParameter4dvNVFunPtr #-}
+
+glProgramParameter4fNV :: MonadIO m => GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glProgramParameter4fNV = ffienumuintfloatfloatfloatfloatIOV glProgramParameter4fNVFunPtr
+
+glProgramParameter4fNVFunPtr :: FunPtr (GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glProgramParameter4fNVFunPtr = unsafePerformIO (getProcAddress "glProgramParameter4fNV")
+
+{-# NOINLINE glProgramParameter4fNVFunPtr #-}
+
+glProgramParameter4fvNV :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
+glProgramParameter4fvNV = ffienumuintPtrfloatIOV glProgramParameter4fvNVFunPtr
+
+glProgramParameter4fvNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glProgramParameter4fvNVFunPtr = unsafePerformIO (getProcAddress "glProgramParameter4fvNV")
+
+{-# NOINLINE glProgramParameter4fvNVFunPtr #-}
+
+glProgramParameters4dvNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLdouble -> m ()
+glProgramParameters4dvNV = ffienumuintsizeiPtrdoubleIOV glProgramParameters4dvNVFunPtr
+
+glProgramParameters4dvNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+glProgramParameters4dvNVFunPtr = unsafePerformIO (getProcAddress "glProgramParameters4dvNV")
+
+{-# NOINLINE glProgramParameters4dvNVFunPtr #-}
+
+glProgramParameters4fvNV :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glProgramParameters4fvNV = ffienumuintsizeiPtrfloatIOV glProgramParameters4fvNVFunPtr
+
+glProgramParameters4fvNVFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glProgramParameters4fvNVFunPtr = unsafePerformIO (getProcAddress "glProgramParameters4fvNV")
+
+{-# NOINLINE glProgramParameters4fvNVFunPtr #-}
+
+glRequestResidentProgramsNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glRequestResidentProgramsNV = ffisizeiPtruintIOV glRequestResidentProgramsNVFunPtr
+
+glRequestResidentProgramsNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glRequestResidentProgramsNVFunPtr = unsafePerformIO (getProcAddress "glRequestResidentProgramsNV")
+
+{-# NOINLINE glRequestResidentProgramsNVFunPtr #-}
+
+glTrackMatrixNV :: MonadIO m => GLenum -> GLuint -> GLenum -> GLenum -> m ()
+glTrackMatrixNV = ffienumuintenumenumIOV glTrackMatrixNVFunPtr
+
+glTrackMatrixNVFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> GLenum -> IO ())
+glTrackMatrixNVFunPtr = unsafePerformIO (getProcAddress "glTrackMatrixNV")
+
+{-# NOINLINE glTrackMatrixNVFunPtr #-}
+
+glVertexAttrib1dNV :: MonadIO m => GLuint -> GLdouble -> m ()
+glVertexAttrib1dNV = ffiuintdoubleIOV glVertexAttrib1dNVFunPtr
+
+glVertexAttrib1dNVFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
+glVertexAttrib1dNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dNV")
+
+{-# NOINLINE glVertexAttrib1dNVFunPtr #-}
+
+glVertexAttrib1dvNV :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttrib1dvNV = ffiuintPtrdoubleIOV glVertexAttrib1dvNVFunPtr
+
+glVertexAttrib1dvNVFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttrib1dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dvNV")
+
+{-# NOINLINE glVertexAttrib1dvNVFunPtr #-}
+
+glVertexAttrib1fNV :: MonadIO m => GLuint -> GLfloat -> m ()
+glVertexAttrib1fNV = ffiuintfloatIOV glVertexAttrib1fNVFunPtr
+
+glVertexAttrib1fNVFunPtr :: FunPtr (GLuint -> GLfloat -> IO ())
+glVertexAttrib1fNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fNV")
+
+{-# NOINLINE glVertexAttrib1fNVFunPtr #-}
+
+glVertexAttrib1fvNV :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glVertexAttrib1fvNV = ffiuintPtrfloatIOV glVertexAttrib1fvNVFunPtr
+
+glVertexAttrib1fvNVFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glVertexAttrib1fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fvNV")
+
+{-# NOINLINE glVertexAttrib1fvNVFunPtr #-}
+
+glVertexAttrib1sNV :: MonadIO m => GLuint -> GLshort -> m ()
+glVertexAttrib1sNV = ffiuintshortIOV glVertexAttrib1sNVFunPtr
+
+glVertexAttrib1sNVFunPtr :: FunPtr (GLuint -> GLshort -> IO ())
+glVertexAttrib1sNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1sNV")
+
+{-# NOINLINE glVertexAttrib1sNVFunPtr #-}
+
+glVertexAttrib1svNV :: MonadIO m => GLuint -> Ptr GLshort -> m ()
+glVertexAttrib1svNV = ffiuintPtrshortIOV glVertexAttrib1svNVFunPtr
+
+glVertexAttrib1svNVFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
+glVertexAttrib1svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1svNV")
+
+{-# NOINLINE glVertexAttrib1svNVFunPtr #-}
+
+glVertexAttrib2dNV :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
+glVertexAttrib2dNV = ffiuintdoubledoubleIOV glVertexAttrib2dNVFunPtr
+
+glVertexAttrib2dNVFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
+glVertexAttrib2dNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dNV")
+
+{-# NOINLINE glVertexAttrib2dNVFunPtr #-}
+
+glVertexAttrib2dvNV :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttrib2dvNV = ffiuintPtrdoubleIOV glVertexAttrib2dvNVFunPtr
+
+glVertexAttrib2dvNVFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttrib2dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dvNV")
+
+{-# NOINLINE glVertexAttrib2dvNVFunPtr #-}
+
+glVertexAttrib2fNV :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m ()
+glVertexAttrib2fNV = ffiuintfloatfloatIOV glVertexAttrib2fNVFunPtr
+
+glVertexAttrib2fNVFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ())
+glVertexAttrib2fNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fNV")
+
+{-# NOINLINE glVertexAttrib2fNVFunPtr #-}
+
+glVertexAttrib2fvNV :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glVertexAttrib2fvNV = ffiuintPtrfloatIOV glVertexAttrib2fvNVFunPtr
+
+glVertexAttrib2fvNVFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glVertexAttrib2fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fvNV")
+
+{-# NOINLINE glVertexAttrib2fvNVFunPtr #-}
+
+glVertexAttrib2sNV :: MonadIO m => GLuint -> GLshort -> GLshort -> m ()
+glVertexAttrib2sNV = ffiuintshortshortIOV glVertexAttrib2sNVFunPtr
+
+glVertexAttrib2sNVFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> IO ())
+glVertexAttrib2sNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2sNV")
+
+{-# NOINLINE glVertexAttrib2sNVFunPtr #-}
+
+glVertexAttrib2svNV :: MonadIO m => GLuint -> Ptr GLshort -> m ()
+glVertexAttrib2svNV = ffiuintPtrshortIOV glVertexAttrib2svNVFunPtr
+
+glVertexAttrib2svNVFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
+glVertexAttrib2svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2svNV")
+
+{-# NOINLINE glVertexAttrib2svNVFunPtr #-}
+
+glVertexAttrib3dNV :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
+glVertexAttrib3dNV = ffiuintdoubledoubledoubleIOV glVertexAttrib3dNVFunPtr
+
+glVertexAttrib3dNVFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glVertexAttrib3dNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dNV")
+
+{-# NOINLINE glVertexAttrib3dNVFunPtr #-}
+
+glVertexAttrib3dvNV :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttrib3dvNV = ffiuintPtrdoubleIOV glVertexAttrib3dvNVFunPtr
+
+glVertexAttrib3dvNVFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttrib3dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dvNV")
+
+{-# NOINLINE glVertexAttrib3dvNVFunPtr #-}
+
+glVertexAttrib3fNV :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
+glVertexAttrib3fNV = ffiuintfloatfloatfloatIOV glVertexAttrib3fNVFunPtr
+
+glVertexAttrib3fNVFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glVertexAttrib3fNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fNV")
+
+{-# NOINLINE glVertexAttrib3fNVFunPtr #-}
+
+glVertexAttrib3fvNV :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glVertexAttrib3fvNV = ffiuintPtrfloatIOV glVertexAttrib3fvNVFunPtr
+
+glVertexAttrib3fvNVFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glVertexAttrib3fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fvNV")
+
+{-# NOINLINE glVertexAttrib3fvNVFunPtr #-}
+
+glVertexAttrib3sNV :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> m ()
+glVertexAttrib3sNV = ffiuintshortshortshortIOV glVertexAttrib3sNVFunPtr
+
+glVertexAttrib3sNVFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> IO ())
+glVertexAttrib3sNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3sNV")
+
+{-# NOINLINE glVertexAttrib3sNVFunPtr #-}
+
+glVertexAttrib3svNV :: MonadIO m => GLuint -> Ptr GLshort -> m ()
+glVertexAttrib3svNV = ffiuintPtrshortIOV glVertexAttrib3svNVFunPtr
+
+glVertexAttrib3svNVFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
+glVertexAttrib3svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3svNV")
+
+{-# NOINLINE glVertexAttrib3svNVFunPtr #-}
+
+glVertexAttrib4dNV :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+glVertexAttrib4dNV = ffiuintdoubledoubledoubledoubleIOV glVertexAttrib4dNVFunPtr
+
+glVertexAttrib4dNVFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+glVertexAttrib4dNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4dNV")
+
+{-# NOINLINE glVertexAttrib4dNVFunPtr #-}
+
+glVertexAttrib4dvNV :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
+glVertexAttrib4dvNV = ffiuintPtrdoubleIOV glVertexAttrib4dvNVFunPtr
+
+glVertexAttrib4dvNVFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
+glVertexAttrib4dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4dvNV")
+
+{-# NOINLINE glVertexAttrib4dvNVFunPtr #-}
+
+glVertexAttrib4fNV :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glVertexAttrib4fNV = ffiuintfloatfloatfloatfloatIOV glVertexAttrib4fNVFunPtr
+
+glVertexAttrib4fNVFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glVertexAttrib4fNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4fNV")
+
+{-# NOINLINE glVertexAttrib4fNVFunPtr #-}
+
+glVertexAttrib4fvNV :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glVertexAttrib4fvNV = ffiuintPtrfloatIOV glVertexAttrib4fvNVFunPtr
+
+glVertexAttrib4fvNVFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glVertexAttrib4fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4fvNV")
+
+{-# NOINLINE glVertexAttrib4fvNVFunPtr #-}
+
+glVertexAttrib4sNV :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+glVertexAttrib4sNV = ffiuintshortshortshortshortIOV glVertexAttrib4sNVFunPtr
+
+glVertexAttrib4sNVFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
+glVertexAttrib4sNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4sNV")
+
+{-# NOINLINE glVertexAttrib4sNVFunPtr #-}
+
+glVertexAttrib4svNV :: MonadIO m => GLuint -> Ptr GLshort -> m ()
+glVertexAttrib4svNV = ffiuintPtrshortIOV glVertexAttrib4svNVFunPtr
+
+glVertexAttrib4svNVFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
+glVertexAttrib4svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4svNV")
+
+{-# NOINLINE glVertexAttrib4svNVFunPtr #-}
+
+glVertexAttrib4ubNV :: MonadIO m => GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> m ()
+glVertexAttrib4ubNV = ffiuintubyteubyteubyteubyteIOV glVertexAttrib4ubNVFunPtr
+
+glVertexAttrib4ubNVFunPtr :: FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ())
+glVertexAttrib4ubNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ubNV")
+
+{-# NOINLINE glVertexAttrib4ubNVFunPtr #-}
+
+glVertexAttrib4ubvNV :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
+glVertexAttrib4ubvNV = ffiuintPtrubyteIOV glVertexAttrib4ubvNVFunPtr
+
+glVertexAttrib4ubvNVFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
+glVertexAttrib4ubvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ubvNV")
+
+{-# NOINLINE glVertexAttrib4ubvNVFunPtr #-}
+
+glVertexAttribPointerNV :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glVertexAttribPointerNV = ffiuintintenumsizeiPtrVIOV glVertexAttribPointerNVFunPtr
+
+glVertexAttribPointerNVFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glVertexAttribPointerNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribPointerNV")
+
+{-# NOINLINE glVertexAttribPointerNVFunPtr #-}
+
+glVertexAttribs1dvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLdouble -> m ()
+glVertexAttribs1dvNV = ffiuintsizeiPtrdoubleIOV glVertexAttribs1dvNVFunPtr
+
+glVertexAttribs1dvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+glVertexAttribs1dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs1dvNV")
+
+{-# NOINLINE glVertexAttribs1dvNVFunPtr #-}
+
+glVertexAttribs1fvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glVertexAttribs1fvNV = ffiuintsizeiPtrfloatIOV glVertexAttribs1fvNVFunPtr
+
+glVertexAttribs1fvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glVertexAttribs1fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs1fvNV")
+
+{-# NOINLINE glVertexAttribs1fvNVFunPtr #-}
+
+glVertexAttribs1svNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLshort -> m ()
+glVertexAttribs1svNV = ffiuintsizeiPtrshortIOV glVertexAttribs1svNVFunPtr
+
+glVertexAttribs1svNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLshort -> IO ())
+glVertexAttribs1svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs1svNV")
+
+{-# NOINLINE glVertexAttribs1svNVFunPtr #-}
+
+glVertexAttribs2dvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLdouble -> m ()
+glVertexAttribs2dvNV = ffiuintsizeiPtrdoubleIOV glVertexAttribs2dvNVFunPtr
+
+glVertexAttribs2dvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+glVertexAttribs2dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs2dvNV")
+
+{-# NOINLINE glVertexAttribs2dvNVFunPtr #-}
+
+glVertexAttribs2fvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glVertexAttribs2fvNV = ffiuintsizeiPtrfloatIOV glVertexAttribs2fvNVFunPtr
+
+glVertexAttribs2fvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glVertexAttribs2fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs2fvNV")
+
+{-# NOINLINE glVertexAttribs2fvNVFunPtr #-}
+
+glVertexAttribs2svNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLshort -> m ()
+glVertexAttribs2svNV = ffiuintsizeiPtrshortIOV glVertexAttribs2svNVFunPtr
+
+glVertexAttribs2svNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLshort -> IO ())
+glVertexAttribs2svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs2svNV")
+
+{-# NOINLINE glVertexAttribs2svNVFunPtr #-}
+
+glVertexAttribs3dvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLdouble -> m ()
+glVertexAttribs3dvNV = ffiuintsizeiPtrdoubleIOV glVertexAttribs3dvNVFunPtr
+
+glVertexAttribs3dvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+glVertexAttribs3dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs3dvNV")
+
+{-# NOINLINE glVertexAttribs3dvNVFunPtr #-}
+
+glVertexAttribs3fvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glVertexAttribs3fvNV = ffiuintsizeiPtrfloatIOV glVertexAttribs3fvNVFunPtr
+
+glVertexAttribs3fvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glVertexAttribs3fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs3fvNV")
+
+{-# NOINLINE glVertexAttribs3fvNVFunPtr #-}
+
+glVertexAttribs3svNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLshort -> m ()
+glVertexAttribs3svNV = ffiuintsizeiPtrshortIOV glVertexAttribs3svNVFunPtr
+
+glVertexAttribs3svNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLshort -> IO ())
+glVertexAttribs3svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs3svNV")
+
+{-# NOINLINE glVertexAttribs3svNVFunPtr #-}
+
+glVertexAttribs4dvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLdouble -> m ()
+glVertexAttribs4dvNV = ffiuintsizeiPtrdoubleIOV glVertexAttribs4dvNVFunPtr
+
+glVertexAttribs4dvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+glVertexAttribs4dvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs4dvNV")
+
+{-# NOINLINE glVertexAttribs4dvNVFunPtr #-}
+
+glVertexAttribs4fvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glVertexAttribs4fvNV = ffiuintsizeiPtrfloatIOV glVertexAttribs4fvNVFunPtr
+
+glVertexAttribs4fvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glVertexAttribs4fvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs4fvNV")
+
+{-# NOINLINE glVertexAttribs4fvNVFunPtr #-}
+
+glVertexAttribs4svNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLshort -> m ()
+glVertexAttribs4svNV = ffiuintsizeiPtrshortIOV glVertexAttribs4svNVFunPtr
+
+glVertexAttribs4svNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLshort -> IO ())
+glVertexAttribs4svNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs4svNV")
+
+{-# NOINLINE glVertexAttribs4svNVFunPtr #-}
+
+glVertexAttribs4ubvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> m ()
+glVertexAttribs4ubvNV = ffiuintsizeiPtrubyteIOV glVertexAttribs4ubvNVFunPtr
+
+glVertexAttribs4ubvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> IO ())
+glVertexAttribs4ubvNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribs4ubvNV")
+
+{-# NOINLINE glVertexAttribs4ubvNVFunPtr #-}
+
+pattern GL_ATTRIB_ARRAY_POINTER_NV = 0x8645 :: GLenum
+
+pattern GL_ATTRIB_ARRAY_SIZE_NV = 0x8623 :: GLenum
+
+pattern GL_ATTRIB_ARRAY_STRIDE_NV = 0x8624 :: GLenum
+
+pattern GL_ATTRIB_ARRAY_TYPE_NV = 0x8625 :: GLenum
+
+pattern GL_CURRENT_ATTRIB_NV = 0x8626 :: GLenum
+
+pattern GL_CURRENT_MATRIX_NV = 0x8641 :: GLenum
+
+pattern GL_CURRENT_MATRIX_STACK_DEPTH_NV = 0x8640 :: GLenum
+
+pattern GL_IDENTITY_NV = 0x862A :: GLenum
+
+pattern GL_INVERSE_NV = 0x862B :: GLenum
+
+pattern GL_INVERSE_TRANSPOSE_NV = 0x862D :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB0_4_NV = 0x8660 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB10_4_NV = 0x866A :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB11_4_NV = 0x866B :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB12_4_NV = 0x866C :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB13_4_NV = 0x866D :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB14_4_NV = 0x866E :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB15_4_NV = 0x866F :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB1_4_NV = 0x8661 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB2_4_NV = 0x8662 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB3_4_NV = 0x8663 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB4_4_NV = 0x8664 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB5_4_NV = 0x8665 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB6_4_NV = 0x8666 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB7_4_NV = 0x8667 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB8_4_NV = 0x8668 :: GLenum
+
+pattern GL_MAP1_VERTEX_ATTRIB9_4_NV = 0x8669 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB0_4_NV = 0x8670 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB10_4_NV = 0x867A :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB11_4_NV = 0x867B :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB12_4_NV = 0x867C :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB13_4_NV = 0x867D :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB14_4_NV = 0x867E :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB15_4_NV = 0x867F :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB1_4_NV = 0x8671 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB2_4_NV = 0x8672 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB3_4_NV = 0x8673 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB4_4_NV = 0x8674 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB5_4_NV = 0x8675 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB6_4_NV = 0x8676 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB7_4_NV = 0x8677 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB8_4_NV = 0x8678 :: GLenum
+
+pattern GL_MAP2_VERTEX_ATTRIB9_4_NV = 0x8679 :: GLenum
+
+pattern GL_MATRIX0_NV = 0x8630 :: GLenum
+
+pattern GL_MATRIX1_NV = 0x8631 :: GLenum
+
+pattern GL_MATRIX2_NV = 0x8632 :: GLenum
+
+pattern GL_MATRIX3_NV = 0x8633 :: GLenum
+
+pattern GL_MATRIX4_NV = 0x8634 :: GLenum
+
+pattern GL_MATRIX5_NV = 0x8635 :: GLenum
+
+pattern GL_MATRIX6_NV = 0x8636 :: GLenum
+
+pattern GL_MATRIX7_NV = 0x8637 :: GLenum
+
+pattern GL_MAX_TRACK_MATRICES_NV = 0x862F :: GLenum
+
+pattern GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = 0x862E :: GLenum
+
+pattern GL_MODELVIEW_PROJECTION_NV = 0x8629 :: GLenum
+
+pattern GL_PROGRAM_ERROR_POSITION_NV = 0x864B :: GLenum
+
+pattern GL_PROGRAM_LENGTH_NV = 0x8627 :: GLenum
+
+pattern GL_PROGRAM_PARAMETER_NV = 0x8644 :: GLenum
+
+pattern GL_PROGRAM_RESIDENT_NV = 0x8647 :: GLenum
+
+pattern GL_PROGRAM_STRING_NV = 0x8628 :: GLenum
+
+pattern GL_PROGRAM_TARGET_NV = 0x8646 :: GLenum
+
+pattern GL_TRACK_MATRIX_NV = 0x8648 :: GLenum
+
+pattern GL_TRACK_MATRIX_TRANSFORM_NV = 0x8649 :: GLenum
+
+pattern GL_TRANSPOSE_NV = 0x862C :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY0_NV = 0x8650 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY10_NV = 0x865A :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY11_NV = 0x865B :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY12_NV = 0x865C :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY13_NV = 0x865D :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY14_NV = 0x865E :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY15_NV = 0x865F :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY1_NV = 0x8651 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY2_NV = 0x8652 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY3_NV = 0x8653 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY4_NV = 0x8654 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY5_NV = 0x8655 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY6_NV = 0x8656 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY7_NV = 0x8657 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY8_NV = 0x8658 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY9_NV = 0x8659 :: GLenum
+
+pattern GL_VERTEX_PROGRAM_BINDING_NV = 0x864A :: GLenum
+
+pattern GL_VERTEX_PROGRAM_NV = 0x8620 :: GLenum
+
+pattern GL_VERTEX_PROGRAM_POINT_SIZE_NV = 0x8642 :: GLenum
+
+pattern GL_VERTEX_PROGRAM_TWO_SIDE_NV = 0x8643 :: GLenum
+
+pattern GL_VERTEX_STATE_PROGRAM_NV = 0x8621 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram11.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram11.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram11.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexProgram11 (
+  -- * Extension Support
+    gl_NV_vertex_program1_1
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_vertex_program1_1 :: Bool
+gl_NV_vertex_program1_1 = member "GL_NV_vertex_program1_1" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram2.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexProgram2 (
+  -- * Extension Support
+    gl_NV_vertex_program2
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_NV_vertex_program2 :: Bool
+gl_NV_vertex_program2 = member "GL_NV_vertex_program2" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram2Option.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram2Option.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram2Option.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexProgram2Option (
+  -- * Extension Support
+    gl_NV_vertex_program2_option
+
+  -- * GL_NV_vertex_program2_option
+  , pattern GL_MAX_PROGRAM_CALL_DEPTH_NV
+  , pattern GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_NV_vertex_program2_option :: Bool
+gl_NV_vertex_program2_option = member "GL_NV_vertex_program2_option" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram3.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexProgram3 (
+  -- * Extension Support
+    gl_NV_vertex_program3
+
+  -- * GL_NV_vertex_program3
+  , pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_NV_vertex_program3 :: Bool
+gl_NV_vertex_program3 = member "GL_NV_vertex_program3" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VertexProgram4.hs
@@ -0,0 +1,229 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VertexProgram4 (
+  -- * Extension Support
+    gl_NV_vertex_program4
+
+  -- * GL_NV_vertex_program4
+  , glGetVertexAttribIivEXT
+  , glGetVertexAttribIuivEXT
+  , glVertexAttribI1iEXT
+  , glVertexAttribI1ivEXT
+  , glVertexAttribI1uiEXT
+  , glVertexAttribI1uivEXT
+  , glVertexAttribI2iEXT
+  , glVertexAttribI2ivEXT
+  , glVertexAttribI2uiEXT
+  , glVertexAttribI2uivEXT
+  , glVertexAttribI3iEXT
+  , glVertexAttribI3ivEXT
+  , glVertexAttribI3uiEXT
+  , glVertexAttribI3uivEXT
+  , glVertexAttribI4bvEXT
+  , glVertexAttribI4iEXT
+  , glVertexAttribI4ivEXT
+  , glVertexAttribI4svEXT
+  , glVertexAttribI4ubvEXT
+  , glVertexAttribI4uiEXT
+  , glVertexAttribI4uivEXT
+  , glVertexAttribI4usvEXT
+  , glVertexAttribIPointerEXT
+  , pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV
+) 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_NV_vertex_program4 :: Bool
+gl_NV_vertex_program4 = member "GL_NV_vertex_program4" extensions
+
+glGetVertexAttribIivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVertexAttribIivEXT = ffiuintenumPtrintIOV glGetVertexAttribIivEXTFunPtr
+
+glGetVertexAttribIivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVertexAttribIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIivEXT")
+
+{-# NOINLINE glGetVertexAttribIivEXTFunPtr #-}
+
+glGetVertexAttribIuivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
+glGetVertexAttribIuivEXT = ffiuintenumPtruintIOV glGetVertexAttribIuivEXTFunPtr
+
+glGetVertexAttribIuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
+glGetVertexAttribIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIuivEXT")
+
+{-# NOINLINE glGetVertexAttribIuivEXTFunPtr #-}
+
+glVertexAttribI1iEXT :: MonadIO m => GLuint -> GLint -> m ()
+glVertexAttribI1iEXT = ffiuintintIOV glVertexAttribI1iEXTFunPtr
+
+glVertexAttribI1iEXTFunPtr :: FunPtr (GLuint -> GLint -> IO ())
+glVertexAttribI1iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1iEXT")
+
+{-# NOINLINE glVertexAttribI1iEXTFunPtr #-}
+
+glVertexAttribI1ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
+glVertexAttribI1ivEXT = ffiuintPtrintIOV glVertexAttribI1ivEXTFunPtr
+
+glVertexAttribI1ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
+glVertexAttribI1ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1ivEXT")
+
+{-# NOINLINE glVertexAttribI1ivEXTFunPtr #-}
+
+glVertexAttribI1uiEXT :: MonadIO m => GLuint -> GLuint -> m ()
+glVertexAttribI1uiEXT = ffiuintuintIOV glVertexAttribI1uiEXTFunPtr
+
+glVertexAttribI1uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
+glVertexAttribI1uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1uiEXT")
+
+{-# NOINLINE glVertexAttribI1uiEXTFunPtr #-}
+
+glVertexAttribI1uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
+glVertexAttribI1uivEXT = ffiuintPtruintIOV glVertexAttribI1uivEXTFunPtr
+
+glVertexAttribI1uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
+glVertexAttribI1uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1uivEXT")
+
+{-# NOINLINE glVertexAttribI1uivEXTFunPtr #-}
+
+glVertexAttribI2iEXT :: MonadIO m => GLuint -> GLint -> GLint -> m ()
+glVertexAttribI2iEXT = ffiuintintintIOV glVertexAttribI2iEXTFunPtr
+
+glVertexAttribI2iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
+glVertexAttribI2iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2iEXT")
+
+{-# NOINLINE glVertexAttribI2iEXTFunPtr #-}
+
+glVertexAttribI2ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
+glVertexAttribI2ivEXT = ffiuintPtrintIOV glVertexAttribI2ivEXTFunPtr
+
+glVertexAttribI2ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
+glVertexAttribI2ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2ivEXT")
+
+{-# NOINLINE glVertexAttribI2ivEXTFunPtr #-}
+
+glVertexAttribI2uiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
+glVertexAttribI2uiEXT = ffiuintuintuintIOV glVertexAttribI2uiEXTFunPtr
+
+glVertexAttribI2uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
+glVertexAttribI2uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2uiEXT")
+
+{-# NOINLINE glVertexAttribI2uiEXTFunPtr #-}
+
+glVertexAttribI2uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
+glVertexAttribI2uivEXT = ffiuintPtruintIOV glVertexAttribI2uivEXTFunPtr
+
+glVertexAttribI2uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
+glVertexAttribI2uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2uivEXT")
+
+{-# NOINLINE glVertexAttribI2uivEXTFunPtr #-}
+
+glVertexAttribI3iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
+glVertexAttribI3iEXT = ffiuintintintintIOV glVertexAttribI3iEXTFunPtr
+
+glVertexAttribI3iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
+glVertexAttribI3iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3iEXT")
+
+{-# NOINLINE glVertexAttribI3iEXTFunPtr #-}
+
+glVertexAttribI3ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
+glVertexAttribI3ivEXT = ffiuintPtrintIOV glVertexAttribI3ivEXTFunPtr
+
+glVertexAttribI3ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
+glVertexAttribI3ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3ivEXT")
+
+{-# NOINLINE glVertexAttribI3ivEXTFunPtr #-}
+
+glVertexAttribI3uiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glVertexAttribI3uiEXT = ffiuintuintuintuintIOV glVertexAttribI3uiEXTFunPtr
+
+glVertexAttribI3uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glVertexAttribI3uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3uiEXT")
+
+{-# NOINLINE glVertexAttribI3uiEXTFunPtr #-}
+
+glVertexAttribI3uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
+glVertexAttribI3uivEXT = ffiuintPtruintIOV glVertexAttribI3uivEXTFunPtr
+
+glVertexAttribI3uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
+glVertexAttribI3uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3uivEXT")
+
+{-# NOINLINE glVertexAttribI3uivEXTFunPtr #-}
+
+glVertexAttribI4bvEXT :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
+glVertexAttribI4bvEXT = ffiuintPtrbyteIOV glVertexAttribI4bvEXTFunPtr
+
+glVertexAttribI4bvEXTFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
+glVertexAttribI4bvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4bvEXT")
+
+{-# NOINLINE glVertexAttribI4bvEXTFunPtr #-}
+
+glVertexAttribI4iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+glVertexAttribI4iEXT = ffiuintintintintintIOV glVertexAttribI4iEXTFunPtr
+
+glVertexAttribI4iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
+glVertexAttribI4iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4iEXT")
+
+{-# NOINLINE glVertexAttribI4iEXTFunPtr #-}
+
+glVertexAttribI4ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
+glVertexAttribI4ivEXT = ffiuintPtrintIOV glVertexAttribI4ivEXTFunPtr
+
+glVertexAttribI4ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
+glVertexAttribI4ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4ivEXT")
+
+{-# NOINLINE glVertexAttribI4ivEXTFunPtr #-}
+
+glVertexAttribI4svEXT :: MonadIO m => GLuint -> Ptr GLshort -> m ()
+glVertexAttribI4svEXT = ffiuintPtrshortIOV glVertexAttribI4svEXTFunPtr
+
+glVertexAttribI4svEXTFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
+glVertexAttribI4svEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4svEXT")
+
+{-# NOINLINE glVertexAttribI4svEXTFunPtr #-}
+
+glVertexAttribI4ubvEXT :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
+glVertexAttribI4ubvEXT = ffiuintPtrubyteIOV glVertexAttribI4ubvEXTFunPtr
+
+glVertexAttribI4ubvEXTFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
+glVertexAttribI4ubvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4ubvEXT")
+
+{-# NOINLINE glVertexAttribI4ubvEXTFunPtr #-}
+
+glVertexAttribI4uiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+glVertexAttribI4uiEXT = ffiuintuintuintuintuintIOV glVertexAttribI4uiEXTFunPtr
+
+glVertexAttribI4uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+glVertexAttribI4uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4uiEXT")
+
+{-# NOINLINE glVertexAttribI4uiEXTFunPtr #-}
+
+glVertexAttribI4uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
+glVertexAttribI4uivEXT = ffiuintPtruintIOV glVertexAttribI4uivEXTFunPtr
+
+glVertexAttribI4uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
+glVertexAttribI4uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4uivEXT")
+
+{-# NOINLINE glVertexAttribI4uivEXTFunPtr #-}
+
+glVertexAttribI4usvEXT :: MonadIO m => GLuint -> Ptr GLushort -> m ()
+glVertexAttribI4usvEXT = ffiuintPtrushortIOV glVertexAttribI4usvEXTFunPtr
+
+glVertexAttribI4usvEXTFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
+glVertexAttribI4usvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4usvEXT")
+
+{-# NOINLINE glVertexAttribI4usvEXTFunPtr #-}
+
+glVertexAttribIPointerEXT :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glVertexAttribIPointerEXT = ffiuintintenumsizeiPtrVIOV glVertexAttribIPointerEXTFunPtr
+
+glVertexAttribIPointerEXTFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glVertexAttribIPointerEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribIPointerEXT")
+
+{-# NOINLINE glVertexAttribIPointerEXTFunPtr #-}
+
+pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x88FD :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VideoCapture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VideoCapture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NV/VideoCapture.hs
@@ -0,0 +1,214 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NV.VideoCapture (
+  -- * Extension Support
+    gl_NV_video_capture
+
+  -- * GL_NV_video_capture
+  , glBeginVideoCaptureNV
+  , glBindVideoCaptureStreamBufferNV
+  , glBindVideoCaptureStreamTextureNV
+  , glEndVideoCaptureNV
+  , glGetVideoCaptureStreamdvNV
+  , glGetVideoCaptureStreamfvNV
+  , glGetVideoCaptureStreamivNV
+  , glGetVideoCaptureivNV
+  , glVideoCaptureNV
+  , glVideoCaptureStreamParameterdvNV
+  , glVideoCaptureStreamParameterfvNV
+  , glVideoCaptureStreamParameterivNV
+  , pattern GL_FAILURE_NV
+  , pattern GL_FIELD_LOWER_NV
+  , pattern GL_FIELD_UPPER_NV
+  , pattern GL_LAST_VIDEO_CAPTURE_STATUS_NV
+  , pattern GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV
+  , pattern GL_NUM_VIDEO_CAPTURE_STREAMS_NV
+  , pattern GL_PARTIAL_SUCCESS_NV
+  , pattern GL_SUCCESS_NV
+  , pattern GL_VIDEO_BUFFER_BINDING_NV
+  , pattern GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV
+  , pattern GL_VIDEO_BUFFER_NV
+  , pattern GL_VIDEO_BUFFER_PITCH_NV
+  , pattern GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV
+  , pattern GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV
+  , pattern GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV
+  , pattern GL_VIDEO_CAPTURE_FRAME_WIDTH_NV
+  , pattern GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV
+  , pattern GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV
+  , pattern GL_VIDEO_COLOR_CONVERSION_MATRIX_NV
+  , pattern GL_VIDEO_COLOR_CONVERSION_MAX_NV
+  , pattern GL_VIDEO_COLOR_CONVERSION_MIN_NV
+  , pattern GL_VIDEO_COLOR_CONVERSION_OFFSET_NV
+  , pattern GL_YCBAYCR8A_4224_NV
+  , pattern GL_YCBYCR8_422_NV
+  , pattern GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV
+  , pattern GL_Z4Y12Z4CB12Z4CR12_444_NV
+  , pattern GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV
+  , pattern GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV
+  , pattern GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV
+) 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_NV_video_capture :: Bool
+gl_NV_video_capture = member "GL_NV_video_capture" extensions
+
+glBeginVideoCaptureNV :: MonadIO m => GLuint -> m ()
+glBeginVideoCaptureNV = ffiuintIOV glBeginVideoCaptureNVFunPtr
+
+glBeginVideoCaptureNVFunPtr :: FunPtr (GLuint -> IO ())
+glBeginVideoCaptureNVFunPtr = unsafePerformIO (getProcAddress "glBeginVideoCaptureNV")
+
+{-# NOINLINE glBeginVideoCaptureNVFunPtr #-}
+
+glBindVideoCaptureStreamBufferNV :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptrARB -> m ()
+glBindVideoCaptureStreamBufferNV = ffiuintuintenumintptrARBIOV glBindVideoCaptureStreamBufferNVFunPtr
+
+glBindVideoCaptureStreamBufferNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptrARB -> IO ())
+glBindVideoCaptureStreamBufferNVFunPtr = unsafePerformIO (getProcAddress "glBindVideoCaptureStreamBufferNV")
+
+{-# NOINLINE glBindVideoCaptureStreamBufferNVFunPtr #-}
+
+glBindVideoCaptureStreamTextureNV :: MonadIO m => GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> m ()
+glBindVideoCaptureStreamTextureNV = ffiuintuintenumenumuintIOV glBindVideoCaptureStreamTextureNVFunPtr
+
+glBindVideoCaptureStreamTextureNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> IO ())
+glBindVideoCaptureStreamTextureNVFunPtr = unsafePerformIO (getProcAddress "glBindVideoCaptureStreamTextureNV")
+
+{-# NOINLINE glBindVideoCaptureStreamTextureNVFunPtr #-}
+
+glEndVideoCaptureNV :: MonadIO m => GLuint -> m ()
+glEndVideoCaptureNV = ffiuintIOV glEndVideoCaptureNVFunPtr
+
+glEndVideoCaptureNVFunPtr :: FunPtr (GLuint -> IO ())
+glEndVideoCaptureNVFunPtr = unsafePerformIO (getProcAddress "glEndVideoCaptureNV")
+
+{-# NOINLINE glEndVideoCaptureNVFunPtr #-}
+
+glGetVideoCaptureStreamdvNV :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLdouble -> m ()
+glGetVideoCaptureStreamdvNV = ffiuintuintenumPtrdoubleIOV glGetVideoCaptureStreamdvNVFunPtr
+
+glGetVideoCaptureStreamdvNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLdouble -> IO ())
+glGetVideoCaptureStreamdvNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoCaptureStreamdvNV")
+
+{-# NOINLINE glGetVideoCaptureStreamdvNVFunPtr #-}
+
+glGetVideoCaptureStreamfvNV :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetVideoCaptureStreamfvNV = ffiuintuintenumPtrfloatIOV glGetVideoCaptureStreamfvNVFunPtr
+
+glGetVideoCaptureStreamfvNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetVideoCaptureStreamfvNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoCaptureStreamfvNV")
+
+{-# NOINLINE glGetVideoCaptureStreamfvNVFunPtr #-}
+
+glGetVideoCaptureStreamivNV :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVideoCaptureStreamivNV = ffiuintuintenumPtrintIOV glGetVideoCaptureStreamivNVFunPtr
+
+glGetVideoCaptureStreamivNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVideoCaptureStreamivNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoCaptureStreamivNV")
+
+{-# NOINLINE glGetVideoCaptureStreamivNVFunPtr #-}
+
+glGetVideoCaptureivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetVideoCaptureivNV = ffiuintenumPtrintIOV glGetVideoCaptureivNVFunPtr
+
+glGetVideoCaptureivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetVideoCaptureivNVFunPtr = unsafePerformIO (getProcAddress "glGetVideoCaptureivNV")
+
+{-# NOINLINE glGetVideoCaptureivNVFunPtr #-}
+
+glVideoCaptureNV :: MonadIO m => GLuint -> Ptr GLuint -> Ptr GLuint64EXT -> m GLenum
+glVideoCaptureNV = ffiuintPtruintPtruint64EXTIOenum glVideoCaptureNVFunPtr
+
+glVideoCaptureNVFunPtr :: FunPtr (GLuint -> Ptr GLuint -> Ptr GLuint64EXT -> IO GLenum)
+glVideoCaptureNVFunPtr = unsafePerformIO (getProcAddress "glVideoCaptureNV")
+
+{-# NOINLINE glVideoCaptureNVFunPtr #-}
+
+glVideoCaptureStreamParameterdvNV :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLdouble -> m ()
+glVideoCaptureStreamParameterdvNV = ffiuintuintenumPtrdoubleIOV glVideoCaptureStreamParameterdvNVFunPtr
+
+glVideoCaptureStreamParameterdvNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLdouble -> IO ())
+glVideoCaptureStreamParameterdvNVFunPtr = unsafePerformIO (getProcAddress "glVideoCaptureStreamParameterdvNV")
+
+{-# NOINLINE glVideoCaptureStreamParameterdvNVFunPtr #-}
+
+glVideoCaptureStreamParameterfvNV :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+glVideoCaptureStreamParameterfvNV = ffiuintuintenumPtrfloatIOV glVideoCaptureStreamParameterfvNVFunPtr
+
+glVideoCaptureStreamParameterfvNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glVideoCaptureStreamParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glVideoCaptureStreamParameterfvNV")
+
+{-# NOINLINE glVideoCaptureStreamParameterfvNVFunPtr #-}
+
+glVideoCaptureStreamParameterivNV :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
+glVideoCaptureStreamParameterivNV = ffiuintuintenumPtrintIOV glVideoCaptureStreamParameterivNVFunPtr
+
+glVideoCaptureStreamParameterivNVFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
+glVideoCaptureStreamParameterivNVFunPtr = unsafePerformIO (getProcAddress "glVideoCaptureStreamParameterivNV")
+
+{-# NOINLINE glVideoCaptureStreamParameterivNVFunPtr #-}
+
+pattern GL_FAILURE_NV = 0x9030 :: GLenum
+
+pattern GL_FIELD_LOWER_NV = 0x9023 :: GLenum
+
+pattern GL_FIELD_UPPER_NV = 0x9022 :: GLenum
+
+pattern GL_LAST_VIDEO_CAPTURE_STATUS_NV = 0x9027 :: GLenum
+
+pattern GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x9025 :: GLenum
+
+pattern GL_NUM_VIDEO_CAPTURE_STREAMS_NV = 0x9024 :: GLenum
+
+pattern GL_PARTIAL_SUCCESS_NV = 0x902E :: GLenum
+
+pattern GL_SUCCESS_NV = 0x902F :: GLenum
+
+pattern GL_VIDEO_BUFFER_BINDING_NV = 0x9021 :: GLenum
+
+pattern GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x902D :: GLenum
+
+pattern GL_VIDEO_BUFFER_NV = 0x9020 :: GLenum
+
+pattern GL_VIDEO_BUFFER_PITCH_NV = 0x9028 :: GLenum
+
+pattern GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x903B :: GLenum
+
+pattern GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x903A :: GLenum
+
+pattern GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x9039 :: GLenum
+
+pattern GL_VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x9038 :: GLenum
+
+pattern GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x903C :: GLenum
+
+pattern GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x9026 :: GLenum
+
+pattern GL_VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x9029 :: GLenum
+
+pattern GL_VIDEO_COLOR_CONVERSION_MAX_NV = 0x902A :: GLenum
+
+pattern GL_VIDEO_COLOR_CONVERSION_MIN_NV = 0x902B :: GLenum
+
+pattern GL_VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x902C :: GLenum
+
+pattern GL_YCBAYCR8A_4224_NV = 0x9032 :: GLenum
+
+pattern GL_YCBYCR8_422_NV = 0x9031 :: GLenum
+
+pattern GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x9036 :: GLenum
+
+pattern GL_Z4Y12Z4CB12Z4CR12_444_NV = 0x9037 :: GLenum
+
+pattern GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x9035 :: GLenum
+
+pattern GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x9034 :: GLenum
+
+pattern GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x9033 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NVX.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NVX.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NVX.hs
@@ -0,0 +1,10 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NVX (
+  -- * NVX Extensions
+    module Graphics.GL.Raw.Extension.NVX.ConditionalRender
+  , module Graphics.GL.Raw.Extension.NVX.GpuMemoryInfo
+) where
+
+import Graphics.GL.Raw.Extension.NVX.ConditionalRender
+import Graphics.GL.Raw.Extension.NVX.GpuMemoryInfo
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NVX/ConditionalRender.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NVX/ConditionalRender.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NVX/ConditionalRender.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NVX.ConditionalRender (
+  -- * Extension Support
+    gl_NVX_conditional_render
+
+  -- * GL_NVX_conditional_render
+  , glBeginConditionalRenderNVX
+  , glEndConditionalRenderNVX
+) 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_NVX_conditional_render :: Bool
+gl_NVX_conditional_render = member "GL_NVX_conditional_render" extensions
+
+glBeginConditionalRenderNVX :: MonadIO m => GLuint -> m ()
+glBeginConditionalRenderNVX = ffiuintIOV glBeginConditionalRenderNVXFunPtr
+
+glBeginConditionalRenderNVXFunPtr :: FunPtr (GLuint -> IO ())
+glBeginConditionalRenderNVXFunPtr = unsafePerformIO (getProcAddress "glBeginConditionalRenderNVX")
+
+{-# NOINLINE glBeginConditionalRenderNVXFunPtr #-}
+
+glEndConditionalRenderNVX :: MonadIO m => m ()
+glEndConditionalRenderNVX = ffiIOV glEndConditionalRenderNVXFunPtr
+
+glEndConditionalRenderNVXFunPtr :: FunPtr (IO ())
+glEndConditionalRenderNVXFunPtr = unsafePerformIO (getProcAddress "glEndConditionalRenderNVX")
+
+{-# NOINLINE glEndConditionalRenderNVXFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/NVX/GpuMemoryInfo.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/NVX/GpuMemoryInfo.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/NVX/GpuMemoryInfo.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.NVX.GpuMemoryInfo (
+  -- * Extension Support
+    gl_NVX_gpu_memory_info
+
+  -- * GL_NVX_gpu_memory_info
+  , pattern GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX
+  , pattern GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX
+  , pattern GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX
+  , pattern GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX
+  , pattern GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_NVX_gpu_memory_info :: Bool
+gl_NVX_gpu_memory_info = member "GL_NVX_gpu_memory_info" extensions
+
+pattern GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX = 0x9049 :: GLenum
+
+pattern GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = 0x9047 :: GLenum
+
+pattern GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX = 0x904B :: GLenum
+
+pattern GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX = 0x904A :: GLenum
+
+pattern GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX = 0x9048 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES.hs
@@ -0,0 +1,118 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES (
+  -- * OES Extensions
+    module Graphics.GL.Raw.Extension.OES.BlendEquationSeparate
+  , module Graphics.GL.Raw.Extension.OES.BlendFuncSeparate
+  , module Graphics.GL.Raw.Extension.OES.BlendSubtract
+  , module Graphics.GL.Raw.Extension.OES.ByteCoordinates
+  , module Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8SubTexture
+  , module Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8Texture
+  , module Graphics.GL.Raw.Extension.OES.CompressedPalettedTexture
+  , module Graphics.GL.Raw.Extension.OES.Depth24
+  , module Graphics.GL.Raw.Extension.OES.Depth32
+  , module Graphics.GL.Raw.Extension.OES.DepthTexture
+  , module Graphics.GL.Raw.Extension.OES.DrawTexture
+  , module Graphics.GL.Raw.Extension.OES.EGLImage
+  , module Graphics.GL.Raw.Extension.OES.EGLImageExternal
+  , module Graphics.GL.Raw.Extension.OES.ElementIndexUint
+  , module Graphics.GL.Raw.Extension.OES.ExtendedMatrixPalette
+  , module Graphics.GL.Raw.Extension.OES.FboRenderMipmap
+  , module Graphics.GL.Raw.Extension.OES.FixedPoint
+  , module Graphics.GL.Raw.Extension.OES.FragmentPrecisionHigh
+  , module Graphics.GL.Raw.Extension.OES.FramebufferObject
+  , module Graphics.GL.Raw.Extension.OES.GetProgramBinary
+  , module Graphics.GL.Raw.Extension.OES.Mapbuffer
+  , module Graphics.GL.Raw.Extension.OES.MatrixGet
+  , module Graphics.GL.Raw.Extension.OES.MatrixPalette
+  , module Graphics.GL.Raw.Extension.OES.PackedDepthStencil
+  , module Graphics.GL.Raw.Extension.OES.PointSizeArray
+  , module Graphics.GL.Raw.Extension.OES.PointSprite
+  , module Graphics.GL.Raw.Extension.OES.QueryMatrix
+  , module Graphics.GL.Raw.Extension.OES.ReadFormat
+  , module Graphics.GL.Raw.Extension.OES.RequiredInternalformat
+  , module Graphics.GL.Raw.Extension.OES.Rgb8Rgba8
+  , module Graphics.GL.Raw.Extension.OES.SampleShading
+  , module Graphics.GL.Raw.Extension.OES.SampleVariables
+  , module Graphics.GL.Raw.Extension.OES.ShaderImageAtomic
+  , module Graphics.GL.Raw.Extension.OES.ShaderMultisampleInterpolation
+  , module Graphics.GL.Raw.Extension.OES.SinglePrecision
+  , module Graphics.GL.Raw.Extension.OES.StandardDerivatives
+  , module Graphics.GL.Raw.Extension.OES.Stencil1
+  , module Graphics.GL.Raw.Extension.OES.Stencil4
+  , module Graphics.GL.Raw.Extension.OES.Stencil8
+  , module Graphics.GL.Raw.Extension.OES.StencilWrap
+  , module Graphics.GL.Raw.Extension.OES.SurfacelessContext
+  , module Graphics.GL.Raw.Extension.OES.Texture3D
+  , module Graphics.GL.Raw.Extension.OES.TextureCompressionAstc
+  , module Graphics.GL.Raw.Extension.OES.TextureCubeMap
+  , module Graphics.GL.Raw.Extension.OES.TextureEnvCrossbar
+  , module Graphics.GL.Raw.Extension.OES.TextureFloat
+  , module Graphics.GL.Raw.Extension.OES.TextureFloatLinear
+  , module Graphics.GL.Raw.Extension.OES.TextureHalfFloat
+  , module Graphics.GL.Raw.Extension.OES.TextureHalfFloatLinear
+  , module Graphics.GL.Raw.Extension.OES.TextureMirroredRepeat
+  , module Graphics.GL.Raw.Extension.OES.TextureNpot
+  , module Graphics.GL.Raw.Extension.OES.TextureStencil8
+  , module Graphics.GL.Raw.Extension.OES.TextureStorageMultisample2dArray
+  , module Graphics.GL.Raw.Extension.OES.VertexArrayObject
+  , module Graphics.GL.Raw.Extension.OES.VertexHalfFloat
+  , module Graphics.GL.Raw.Extension.OES.VertexType1010102
+) where
+
+import Graphics.GL.Raw.Extension.OES.BlendEquationSeparate
+import Graphics.GL.Raw.Extension.OES.BlendFuncSeparate
+import Graphics.GL.Raw.Extension.OES.BlendSubtract
+import Graphics.GL.Raw.Extension.OES.ByteCoordinates
+import Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8SubTexture
+import Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8Texture
+import Graphics.GL.Raw.Extension.OES.CompressedPalettedTexture
+import Graphics.GL.Raw.Extension.OES.Depth24
+import Graphics.GL.Raw.Extension.OES.Depth32
+import Graphics.GL.Raw.Extension.OES.DepthTexture
+import Graphics.GL.Raw.Extension.OES.DrawTexture
+import Graphics.GL.Raw.Extension.OES.EGLImage
+import Graphics.GL.Raw.Extension.OES.EGLImageExternal
+import Graphics.GL.Raw.Extension.OES.ElementIndexUint
+import Graphics.GL.Raw.Extension.OES.ExtendedMatrixPalette
+import Graphics.GL.Raw.Extension.OES.FboRenderMipmap
+import Graphics.GL.Raw.Extension.OES.FixedPoint
+import Graphics.GL.Raw.Extension.OES.FragmentPrecisionHigh
+import Graphics.GL.Raw.Extension.OES.FramebufferObject
+import Graphics.GL.Raw.Extension.OES.GetProgramBinary
+import Graphics.GL.Raw.Extension.OES.Mapbuffer
+import Graphics.GL.Raw.Extension.OES.MatrixGet
+import Graphics.GL.Raw.Extension.OES.MatrixPalette
+import Graphics.GL.Raw.Extension.OES.PackedDepthStencil
+import Graphics.GL.Raw.Extension.OES.PointSizeArray
+import Graphics.GL.Raw.Extension.OES.PointSprite
+import Graphics.GL.Raw.Extension.OES.QueryMatrix
+import Graphics.GL.Raw.Extension.OES.ReadFormat
+import Graphics.GL.Raw.Extension.OES.RequiredInternalformat
+import Graphics.GL.Raw.Extension.OES.Rgb8Rgba8
+import Graphics.GL.Raw.Extension.OES.SampleShading
+import Graphics.GL.Raw.Extension.OES.SampleVariables
+import Graphics.GL.Raw.Extension.OES.ShaderImageAtomic
+import Graphics.GL.Raw.Extension.OES.ShaderMultisampleInterpolation
+import Graphics.GL.Raw.Extension.OES.SinglePrecision
+import Graphics.GL.Raw.Extension.OES.StandardDerivatives
+import Graphics.GL.Raw.Extension.OES.Stencil1
+import Graphics.GL.Raw.Extension.OES.Stencil4
+import Graphics.GL.Raw.Extension.OES.Stencil8
+import Graphics.GL.Raw.Extension.OES.StencilWrap
+import Graphics.GL.Raw.Extension.OES.SurfacelessContext
+import Graphics.GL.Raw.Extension.OES.Texture3D
+import Graphics.GL.Raw.Extension.OES.TextureCompressionAstc
+import Graphics.GL.Raw.Extension.OES.TextureCubeMap
+import Graphics.GL.Raw.Extension.OES.TextureEnvCrossbar
+import Graphics.GL.Raw.Extension.OES.TextureFloat
+import Graphics.GL.Raw.Extension.OES.TextureFloatLinear
+import Graphics.GL.Raw.Extension.OES.TextureHalfFloat
+import Graphics.GL.Raw.Extension.OES.TextureHalfFloatLinear
+import Graphics.GL.Raw.Extension.OES.TextureMirroredRepeat
+import Graphics.GL.Raw.Extension.OES.TextureNpot
+import Graphics.GL.Raw.Extension.OES.TextureStencil8
+import Graphics.GL.Raw.Extension.OES.TextureStorageMultisample2dArray
+import Graphics.GL.Raw.Extension.OES.VertexArrayObject
+import Graphics.GL.Raw.Extension.OES.VertexHalfFloat
+import Graphics.GL.Raw.Extension.OES.VertexType1010102
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendEquationSeparate.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendEquationSeparate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendEquationSeparate.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.BlendEquationSeparate (
+  -- * Extension Support
+    gl_OES_blend_equation_separate
+
+  -- * GL_OES_blend_equation_separate
+  , glBlendEquationSeparateOES
+  , pattern GL_BLEND_EQUATION_ALPHA_OES
+  , pattern GL_BLEND_EQUATION_RGB_OES
+) 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_OES_blend_equation_separate :: Bool
+gl_OES_blend_equation_separate = member "GL_OES_blend_equation_separate" extensions
+
+glBlendEquationSeparateOES :: MonadIO m => GLenum -> GLenum -> m ()
+glBlendEquationSeparateOES = ffienumenumIOV glBlendEquationSeparateOESFunPtr
+
+glBlendEquationSeparateOESFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glBlendEquationSeparateOESFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparateOES")
+
+{-# NOINLINE glBlendEquationSeparateOESFunPtr #-}
+
+pattern GL_BLEND_EQUATION_ALPHA_OES = 0x883D :: GLenum
+
+pattern GL_BLEND_EQUATION_RGB_OES = 0x8009 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendFuncSeparate.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendFuncSeparate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendFuncSeparate.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.BlendFuncSeparate (
+  -- * Extension Support
+    gl_OES_blend_func_separate
+
+  -- * GL_OES_blend_func_separate
+  , glBlendFuncSeparateOES
+  , pattern GL_BLEND_DST_ALPHA_OES
+  , pattern GL_BLEND_DST_RGB_OES
+  , pattern GL_BLEND_SRC_ALPHA_OES
+  , pattern GL_BLEND_SRC_RGB_OES
+) 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_OES_blend_func_separate :: Bool
+gl_OES_blend_func_separate = member "GL_OES_blend_func_separate" extensions
+
+glBlendFuncSeparateOES :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glBlendFuncSeparateOES = ffienumenumenumenumIOV glBlendFuncSeparateOESFunPtr
+
+glBlendFuncSeparateOESFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glBlendFuncSeparateOESFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparateOES")
+
+{-# NOINLINE glBlendFuncSeparateOESFunPtr #-}
+
+pattern GL_BLEND_DST_ALPHA_OES = 0x80CA :: GLenum
+
+pattern GL_BLEND_DST_RGB_OES = 0x80C8 :: GLenum
+
+pattern GL_BLEND_SRC_ALPHA_OES = 0x80CB :: GLenum
+
+pattern GL_BLEND_SRC_RGB_OES = 0x80C9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendSubtract.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendSubtract.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/BlendSubtract.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.BlendSubtract (
+  -- * Extension Support
+    gl_OES_blend_subtract
+
+  -- * GL_OES_blend_subtract
+  , glBlendEquationOES
+  , pattern GL_BLEND_EQUATION_OES
+  , pattern GL_FUNC_ADD_OES
+  , pattern GL_FUNC_REVERSE_SUBTRACT_OES
+  , pattern GL_FUNC_SUBTRACT_OES
+) 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_OES_blend_subtract :: Bool
+gl_OES_blend_subtract = member "GL_OES_blend_subtract" extensions
+
+glBlendEquationOES :: MonadIO m => GLenum -> m ()
+glBlendEquationOES = ffienumIOV glBlendEquationOESFunPtr
+
+glBlendEquationOESFunPtr :: FunPtr (GLenum -> IO ())
+glBlendEquationOESFunPtr = unsafePerformIO (getProcAddress "glBlendEquationOES")
+
+{-# NOINLINE glBlendEquationOESFunPtr #-}
+
+pattern GL_BLEND_EQUATION_OES = 0x8009 :: GLenum
+
+pattern GL_FUNC_ADD_OES = 0x8006 :: GLenum
+
+pattern GL_FUNC_REVERSE_SUBTRACT_OES = 0x800B :: GLenum
+
+pattern GL_FUNC_SUBTRACT_OES = 0x800A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ByteCoordinates.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ByteCoordinates.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ByteCoordinates.hs
@@ -0,0 +1,219 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.ByteCoordinates (
+  -- * Extension Support
+    gl_OES_byte_coordinates
+
+  -- * GL_OES_byte_coordinates
+  , glMultiTexCoord1bOES
+  , glMultiTexCoord1bvOES
+  , glMultiTexCoord2bOES
+  , glMultiTexCoord2bvOES
+  , glMultiTexCoord3bOES
+  , glMultiTexCoord3bvOES
+  , glMultiTexCoord4bOES
+  , glMultiTexCoord4bvOES
+  , glTexCoord1bOES
+  , glTexCoord1bvOES
+  , glTexCoord2bOES
+  , glTexCoord2bvOES
+  , glTexCoord3bOES
+  , glTexCoord3bvOES
+  , glTexCoord4bOES
+  , glTexCoord4bvOES
+  , glVertex2bOES
+  , glVertex2bvOES
+  , glVertex3bOES
+  , glVertex3bvOES
+  , glVertex4bOES
+  , glVertex4bvOES
+  , pattern GL_BYTE
+) 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_OES_byte_coordinates :: Bool
+gl_OES_byte_coordinates = member "GL_OES_byte_coordinates" extensions
+
+glMultiTexCoord1bOES :: MonadIO m => GLenum -> GLbyte -> m ()
+glMultiTexCoord1bOES = ffienumbyteIOV glMultiTexCoord1bOESFunPtr
+
+glMultiTexCoord1bOESFunPtr :: FunPtr (GLenum -> GLbyte -> IO ())
+glMultiTexCoord1bOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1bOES")
+
+{-# NOINLINE glMultiTexCoord1bOESFunPtr #-}
+
+glMultiTexCoord1bvOES :: MonadIO m => GLenum -> Ptr GLbyte -> m ()
+glMultiTexCoord1bvOES = ffienumPtrbyteIOV glMultiTexCoord1bvOESFunPtr
+
+glMultiTexCoord1bvOESFunPtr :: FunPtr (GLenum -> Ptr GLbyte -> IO ())
+glMultiTexCoord1bvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1bvOES")
+
+{-# NOINLINE glMultiTexCoord1bvOESFunPtr #-}
+
+glMultiTexCoord2bOES :: MonadIO m => GLenum -> GLbyte -> GLbyte -> m ()
+glMultiTexCoord2bOES = ffienumbytebyteIOV glMultiTexCoord2bOESFunPtr
+
+glMultiTexCoord2bOESFunPtr :: FunPtr (GLenum -> GLbyte -> GLbyte -> IO ())
+glMultiTexCoord2bOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2bOES")
+
+{-# NOINLINE glMultiTexCoord2bOESFunPtr #-}
+
+glMultiTexCoord2bvOES :: MonadIO m => GLenum -> Ptr GLbyte -> m ()
+glMultiTexCoord2bvOES = ffienumPtrbyteIOV glMultiTexCoord2bvOESFunPtr
+
+glMultiTexCoord2bvOESFunPtr :: FunPtr (GLenum -> Ptr GLbyte -> IO ())
+glMultiTexCoord2bvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2bvOES")
+
+{-# NOINLINE glMultiTexCoord2bvOESFunPtr #-}
+
+glMultiTexCoord3bOES :: MonadIO m => GLenum -> GLbyte -> GLbyte -> GLbyte -> m ()
+glMultiTexCoord3bOES = ffienumbytebytebyteIOV glMultiTexCoord3bOESFunPtr
+
+glMultiTexCoord3bOESFunPtr :: FunPtr (GLenum -> GLbyte -> GLbyte -> GLbyte -> IO ())
+glMultiTexCoord3bOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3bOES")
+
+{-# NOINLINE glMultiTexCoord3bOESFunPtr #-}
+
+glMultiTexCoord3bvOES :: MonadIO m => GLenum -> Ptr GLbyte -> m ()
+glMultiTexCoord3bvOES = ffienumPtrbyteIOV glMultiTexCoord3bvOESFunPtr
+
+glMultiTexCoord3bvOESFunPtr :: FunPtr (GLenum -> Ptr GLbyte -> IO ())
+glMultiTexCoord3bvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3bvOES")
+
+{-# NOINLINE glMultiTexCoord3bvOESFunPtr #-}
+
+glMultiTexCoord4bOES :: MonadIO m => GLenum -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> m ()
+glMultiTexCoord4bOES = ffienumbytebytebytebyteIOV glMultiTexCoord4bOESFunPtr
+
+glMultiTexCoord4bOESFunPtr :: FunPtr (GLenum -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ())
+glMultiTexCoord4bOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4bOES")
+
+{-# NOINLINE glMultiTexCoord4bOESFunPtr #-}
+
+glMultiTexCoord4bvOES :: MonadIO m => GLenum -> Ptr GLbyte -> m ()
+glMultiTexCoord4bvOES = ffienumPtrbyteIOV glMultiTexCoord4bvOESFunPtr
+
+glMultiTexCoord4bvOESFunPtr :: FunPtr (GLenum -> Ptr GLbyte -> IO ())
+glMultiTexCoord4bvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4bvOES")
+
+{-# NOINLINE glMultiTexCoord4bvOESFunPtr #-}
+
+glTexCoord1bOES :: MonadIO m => GLbyte -> m ()
+glTexCoord1bOES = ffibyteIOV glTexCoord1bOESFunPtr
+
+glTexCoord1bOESFunPtr :: FunPtr (GLbyte -> IO ())
+glTexCoord1bOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord1bOES")
+
+{-# NOINLINE glTexCoord1bOESFunPtr #-}
+
+glTexCoord1bvOES :: MonadIO m => Ptr GLbyte -> m ()
+glTexCoord1bvOES = ffiPtrbyteIOV glTexCoord1bvOESFunPtr
+
+glTexCoord1bvOESFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glTexCoord1bvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord1bvOES")
+
+{-# NOINLINE glTexCoord1bvOESFunPtr #-}
+
+glTexCoord2bOES :: MonadIO m => GLbyte -> GLbyte -> m ()
+glTexCoord2bOES = ffibytebyteIOV glTexCoord2bOESFunPtr
+
+glTexCoord2bOESFunPtr :: FunPtr (GLbyte -> GLbyte -> IO ())
+glTexCoord2bOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord2bOES")
+
+{-# NOINLINE glTexCoord2bOESFunPtr #-}
+
+glTexCoord2bvOES :: MonadIO m => Ptr GLbyte -> m ()
+glTexCoord2bvOES = ffiPtrbyteIOV glTexCoord2bvOESFunPtr
+
+glTexCoord2bvOESFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glTexCoord2bvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord2bvOES")
+
+{-# NOINLINE glTexCoord2bvOESFunPtr #-}
+
+glTexCoord3bOES :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
+glTexCoord3bOES = ffibytebytebyteIOV glTexCoord3bOESFunPtr
+
+glTexCoord3bOESFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
+glTexCoord3bOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord3bOES")
+
+{-# NOINLINE glTexCoord3bOESFunPtr #-}
+
+glTexCoord3bvOES :: MonadIO m => Ptr GLbyte -> m ()
+glTexCoord3bvOES = ffiPtrbyteIOV glTexCoord3bvOESFunPtr
+
+glTexCoord3bvOESFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glTexCoord3bvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord3bvOES")
+
+{-# NOINLINE glTexCoord3bvOESFunPtr #-}
+
+glTexCoord4bOES :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> GLbyte -> m ()
+glTexCoord4bOES = ffibytebytebytebyteIOV glTexCoord4bOESFunPtr
+
+glTexCoord4bOESFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ())
+glTexCoord4bOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord4bOES")
+
+{-# NOINLINE glTexCoord4bOESFunPtr #-}
+
+glTexCoord4bvOES :: MonadIO m => Ptr GLbyte -> m ()
+glTexCoord4bvOES = ffiPtrbyteIOV glTexCoord4bvOESFunPtr
+
+glTexCoord4bvOESFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glTexCoord4bvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord4bvOES")
+
+{-# NOINLINE glTexCoord4bvOESFunPtr #-}
+
+glVertex2bOES :: MonadIO m => GLbyte -> GLbyte -> m ()
+glVertex2bOES = ffibytebyteIOV glVertex2bOESFunPtr
+
+glVertex2bOESFunPtr :: FunPtr (GLbyte -> GLbyte -> IO ())
+glVertex2bOESFunPtr = unsafePerformIO (getProcAddress "glVertex2bOES")
+
+{-# NOINLINE glVertex2bOESFunPtr #-}
+
+glVertex2bvOES :: MonadIO m => Ptr GLbyte -> m ()
+glVertex2bvOES = ffiPtrbyteIOV glVertex2bvOESFunPtr
+
+glVertex2bvOESFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glVertex2bvOESFunPtr = unsafePerformIO (getProcAddress "glVertex2bvOES")
+
+{-# NOINLINE glVertex2bvOESFunPtr #-}
+
+glVertex3bOES :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
+glVertex3bOES = ffibytebytebyteIOV glVertex3bOESFunPtr
+
+glVertex3bOESFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
+glVertex3bOESFunPtr = unsafePerformIO (getProcAddress "glVertex3bOES")
+
+{-# NOINLINE glVertex3bOESFunPtr #-}
+
+glVertex3bvOES :: MonadIO m => Ptr GLbyte -> m ()
+glVertex3bvOES = ffiPtrbyteIOV glVertex3bvOESFunPtr
+
+glVertex3bvOESFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glVertex3bvOESFunPtr = unsafePerformIO (getProcAddress "glVertex3bvOES")
+
+{-# NOINLINE glVertex3bvOESFunPtr #-}
+
+glVertex4bOES :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> GLbyte -> m ()
+glVertex4bOES = ffibytebytebytebyteIOV glVertex4bOESFunPtr
+
+glVertex4bOESFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ())
+glVertex4bOESFunPtr = unsafePerformIO (getProcAddress "glVertex4bOES")
+
+{-# NOINLINE glVertex4bOESFunPtr #-}
+
+glVertex4bvOES :: MonadIO m => Ptr GLbyte -> m ()
+glVertex4bvOES = ffiPtrbyteIOV glVertex4bvOESFunPtr
+
+glVertex4bvOESFunPtr :: FunPtr (Ptr GLbyte -> IO ())
+glVertex4bvOESFunPtr = unsafePerformIO (getProcAddress "glVertex4bvOES")
+
+{-# NOINLINE glVertex4bvOESFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedETC1RGB8SubTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedETC1RGB8SubTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedETC1RGB8SubTexture.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8SubTexture (
+  -- * Extension Support
+    gl_OES_compressed_ETC1_RGB8_sub_texture
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_compressed_ETC1_RGB8_sub_texture :: Bool
+gl_OES_compressed_ETC1_RGB8_sub_texture = member "GL_OES_compressed_ETC1_RGB8_sub_texture" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedETC1RGB8Texture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedETC1RGB8Texture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedETC1RGB8Texture.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8Texture (
+  -- * Extension Support
+    gl_OES_compressed_ETC1_RGB8_texture
+
+  -- * GL_OES_compressed_ETC1_RGB8_texture
+  , pattern GL_ETC1_RGB8_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_compressed_ETC1_RGB8_texture :: Bool
+gl_OES_compressed_ETC1_RGB8_texture = member "GL_OES_compressed_ETC1_RGB8_texture" extensions
+
+pattern GL_ETC1_RGB8_OES = 0x8D64 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedPalettedTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedPalettedTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/CompressedPalettedTexture.hs
@@ -0,0 +1,45 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.CompressedPalettedTexture (
+  -- * Extension Support
+    gl_OES_compressed_paletted_texture
+
+  -- * GL_OES_compressed_paletted_texture
+  , pattern GL_PALETTE4_R5_G6_B5_OES
+  , pattern GL_PALETTE4_RGB5_A1_OES
+  , pattern GL_PALETTE4_RGB8_OES
+  , pattern GL_PALETTE4_RGBA4_OES
+  , pattern GL_PALETTE4_RGBA8_OES
+  , pattern GL_PALETTE8_R5_G6_B5_OES
+  , pattern GL_PALETTE8_RGB5_A1_OES
+  , pattern GL_PALETTE8_RGB8_OES
+  , pattern GL_PALETTE8_RGBA4_OES
+  , pattern GL_PALETTE8_RGBA8_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_compressed_paletted_texture :: Bool
+gl_OES_compressed_paletted_texture = member "GL_OES_compressed_paletted_texture" extensions
+
+pattern GL_PALETTE4_R5_G6_B5_OES = 0x8B92 :: GLenum
+
+pattern GL_PALETTE4_RGB5_A1_OES = 0x8B94 :: GLenum
+
+pattern GL_PALETTE4_RGB8_OES = 0x8B90 :: GLenum
+
+pattern GL_PALETTE4_RGBA4_OES = 0x8B93 :: GLenum
+
+pattern GL_PALETTE4_RGBA8_OES = 0x8B91 :: GLenum
+
+pattern GL_PALETTE8_R5_G6_B5_OES = 0x8B97 :: GLenum
+
+pattern GL_PALETTE8_RGB5_A1_OES = 0x8B99 :: GLenum
+
+pattern GL_PALETTE8_RGB8_OES = 0x8B95 :: GLenum
+
+pattern GL_PALETTE8_RGBA4_OES = 0x8B98 :: GLenum
+
+pattern GL_PALETTE8_RGBA8_OES = 0x8B96 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Depth24.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Depth24.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Depth24.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Depth24 (
+  -- * Extension Support
+    gl_OES_depth24
+
+  -- * GL_OES_depth24
+  , pattern GL_DEPTH_COMPONENT24_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_depth24 :: Bool
+gl_OES_depth24 = member "GL_OES_depth24" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Depth32.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Depth32.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Depth32.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Depth32 (
+  -- * Extension Support
+    gl_OES_depth32
+
+  -- * GL_OES_depth32
+  , pattern GL_DEPTH_COMPONENT32_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_depth32 :: Bool
+gl_OES_depth32 = member "GL_OES_depth32" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/DepthTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/DepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/DepthTexture.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.DepthTexture (
+  -- * Extension Support
+    gl_OES_depth_texture
+
+  -- * GL_OES_depth_texture
+  , pattern GL_DEPTH_COMPONENT
+  , pattern GL_UNSIGNED_INT
+  , pattern GL_UNSIGNED_SHORT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_depth_texture :: Bool
+gl_OES_depth_texture = member "GL_OES_depth_texture" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/DrawTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/DrawTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/DrawTexture.hs
@@ -0,0 +1,94 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.DrawTexture (
+  -- * Extension Support
+    gl_OES_draw_texture
+
+  -- * GL_OES_draw_texture
+  , glDrawTexfOES
+  , glDrawTexfvOES
+  , glDrawTexiOES
+  , glDrawTexivOES
+  , glDrawTexsOES
+  , glDrawTexsvOES
+  , glDrawTexxOES
+  , glDrawTexxvOES
+  , pattern GL_TEXTURE_CROP_RECT_OES
+) 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_OES_draw_texture :: Bool
+gl_OES_draw_texture = member "GL_OES_draw_texture" extensions
+
+glDrawTexfOES :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glDrawTexfOES = ffifloatfloatfloatfloatfloatIOV glDrawTexfOESFunPtr
+
+glDrawTexfOESFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glDrawTexfOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexfOES")
+
+{-# NOINLINE glDrawTexfOESFunPtr #-}
+
+glDrawTexfvOES :: MonadIO m => Ptr GLfloat -> m ()
+glDrawTexfvOES = ffiPtrfloatIOV glDrawTexfvOESFunPtr
+
+glDrawTexfvOESFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glDrawTexfvOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexfvOES")
+
+{-# NOINLINE glDrawTexfvOESFunPtr #-}
+
+glDrawTexiOES :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> m ()
+glDrawTexiOES = ffiintintintintintIOV glDrawTexiOESFunPtr
+
+glDrawTexiOESFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> IO ())
+glDrawTexiOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexiOES")
+
+{-# NOINLINE glDrawTexiOESFunPtr #-}
+
+glDrawTexivOES :: MonadIO m => Ptr GLint -> m ()
+glDrawTexivOES = ffiPtrintIOV glDrawTexivOESFunPtr
+
+glDrawTexivOESFunPtr :: FunPtr (Ptr GLint -> IO ())
+glDrawTexivOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexivOES")
+
+{-# NOINLINE glDrawTexivOESFunPtr #-}
+
+glDrawTexsOES :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+glDrawTexsOES = ffishortshortshortshortshortIOV glDrawTexsOESFunPtr
+
+glDrawTexsOESFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
+glDrawTexsOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexsOES")
+
+{-# NOINLINE glDrawTexsOESFunPtr #-}
+
+glDrawTexsvOES :: MonadIO m => Ptr GLshort -> m ()
+glDrawTexsvOES = ffiPtrshortIOV glDrawTexsvOESFunPtr
+
+glDrawTexsvOESFunPtr :: FunPtr (Ptr GLshort -> IO ())
+glDrawTexsvOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexsvOES")
+
+{-# NOINLINE glDrawTexsvOESFunPtr #-}
+
+glDrawTexxOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glDrawTexxOES = ffifixedfixedfixedfixedfixedIOV glDrawTexxOESFunPtr
+
+glDrawTexxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glDrawTexxOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexxOES")
+
+{-# NOINLINE glDrawTexxOESFunPtr #-}
+
+glDrawTexxvOES :: MonadIO m => Ptr GLfixed -> m ()
+glDrawTexxvOES = ffiPtrfixedIOV glDrawTexxvOESFunPtr
+
+glDrawTexxvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glDrawTexxvOESFunPtr = unsafePerformIO (getProcAddress "glDrawTexxvOES")
+
+{-# NOINLINE glDrawTexxvOESFunPtr #-}
+
+pattern GL_TEXTURE_CROP_RECT_OES = 0x8B9D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/EGLImage.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/EGLImage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/EGLImage.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.EGLImage (
+  -- * Extension Support
+    gl_OES_EGL_image
+
+  -- * GL_OES_EGL_image
+  , glEGLImageTargetRenderbufferStorageOES
+  , glEGLImageTargetTexture2DOES
+) 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_OES_EGL_image :: Bool
+gl_OES_EGL_image = member "GL_OES_EGL_image" extensions
+
+glEGLImageTargetRenderbufferStorageOES :: MonadIO m => GLenum -> GLeglImageOES -> m ()
+glEGLImageTargetRenderbufferStorageOES = ffienumeglImageOESIOV glEGLImageTargetRenderbufferStorageOESFunPtr
+
+glEGLImageTargetRenderbufferStorageOESFunPtr :: FunPtr (GLenum -> GLeglImageOES -> IO ())
+glEGLImageTargetRenderbufferStorageOESFunPtr = unsafePerformIO (getProcAddress "glEGLImageTargetRenderbufferStorageOES")
+
+{-# NOINLINE glEGLImageTargetRenderbufferStorageOESFunPtr #-}
+
+glEGLImageTargetTexture2DOES :: MonadIO m => GLenum -> GLeglImageOES -> m ()
+glEGLImageTargetTexture2DOES = ffienumeglImageOESIOV glEGLImageTargetTexture2DOESFunPtr
+
+glEGLImageTargetTexture2DOESFunPtr :: FunPtr (GLenum -> GLeglImageOES -> IO ())
+glEGLImageTargetTexture2DOESFunPtr = unsafePerformIO (getProcAddress "glEGLImageTargetTexture2DOES")
+
+{-# NOINLINE glEGLImageTargetTexture2DOESFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/EGLImageExternal.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/EGLImageExternal.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/EGLImageExternal.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.EGLImageExternal (
+  -- * Extension Support
+    gl_OES_EGL_image_external
+
+  -- * GL_OES_EGL_image_external
+  , pattern GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
+  , pattern GL_SAMPLER_EXTERNAL_OES
+  , pattern GL_TEXTURE_BINDING_EXTERNAL_OES
+  , pattern GL_TEXTURE_EXTERNAL_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_EGL_image_external :: Bool
+gl_OES_EGL_image_external = member "GL_OES_EGL_image_external" extensions
+
+pattern GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 0x8D68 :: GLenum
+
+pattern GL_SAMPLER_EXTERNAL_OES = 0x8D66 :: GLenum
+
+pattern GL_TEXTURE_BINDING_EXTERNAL_OES = 0x8D67 :: GLenum
+
+pattern GL_TEXTURE_EXTERNAL_OES = 0x8D65 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ElementIndexUint.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ElementIndexUint.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ElementIndexUint.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.ElementIndexUint (
+  -- * Extension Support
+    gl_OES_element_index_uint
+
+  -- * GL_OES_element_index_uint
+  , pattern GL_UNSIGNED_INT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_element_index_uint :: Bool
+gl_OES_element_index_uint = member "GL_OES_element_index_uint" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ExtendedMatrixPalette.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ExtendedMatrixPalette.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ExtendedMatrixPalette.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.ExtendedMatrixPalette (
+  -- * Extension Support
+    gl_OES_extended_matrix_palette
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_extended_matrix_palette :: Bool
+gl_OES_extended_matrix_palette = member "GL_OES_extended_matrix_palette" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FboRenderMipmap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FboRenderMipmap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FboRenderMipmap.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.FboRenderMipmap (
+  -- * Extension Support
+    gl_OES_fbo_render_mipmap
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_fbo_render_mipmap :: Bool
+gl_OES_fbo_render_mipmap = member "GL_OES_fbo_render_mipmap" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FixedPoint.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FixedPoint.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FixedPoint.hs
@@ -0,0 +1,971 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.FixedPoint (
+  -- * Extension Support
+    gl_OES_fixed_point
+
+  -- * GL_OES_fixed_point
+  , glAccumxOES
+  , glAlphaFuncxOES
+  , glBitmapxOES
+  , glBlendColorxOES
+  , glClearAccumxOES
+  , glClearColorxOES
+  , glClearDepthxOES
+  , glClipPlanexOES
+  , glColor3xOES
+  , glColor3xvOES
+  , glColor4xOES
+  , glColor4xvOES
+  , glConvolutionParameterxOES
+  , glConvolutionParameterxvOES
+  , glDepthRangexOES
+  , glEvalCoord1xOES
+  , glEvalCoord1xvOES
+  , glEvalCoord2xOES
+  , glEvalCoord2xvOES
+  , glFeedbackBufferxOES
+  , glFogxOES
+  , glFogxvOES
+  , glFrustumxOES
+  , glGetClipPlanexOES
+  , glGetConvolutionParameterxvOES
+  , glGetFixedvOES
+  , glGetHistogramParameterxvOES
+  , glGetLightxOES
+  , glGetLightxvOES
+  , glGetMapxvOES
+  , glGetMaterialxOES
+  , glGetMaterialxvOES
+  , glGetPixelMapxv
+  , glGetTexEnvxvOES
+  , glGetTexGenxvOES
+  , glGetTexLevelParameterxvOES
+  , glGetTexParameterxvOES
+  , glIndexxOES
+  , glIndexxvOES
+  , glLightModelxOES
+  , glLightModelxvOES
+  , glLightxOES
+  , glLightxvOES
+  , glLineWidthxOES
+  , glLoadMatrixxOES
+  , glLoadTransposeMatrixxOES
+  , glMap1xOES
+  , glMap2xOES
+  , glMapGrid1xOES
+  , glMapGrid2xOES
+  , glMaterialxOES
+  , glMaterialxvOES
+  , glMultMatrixxOES
+  , glMultTransposeMatrixxOES
+  , glMultiTexCoord1xOES
+  , glMultiTexCoord1xvOES
+  , glMultiTexCoord2xOES
+  , glMultiTexCoord2xvOES
+  , glMultiTexCoord3xOES
+  , glMultiTexCoord3xvOES
+  , glMultiTexCoord4xOES
+  , glMultiTexCoord4xvOES
+  , glNormal3xOES
+  , glNormal3xvOES
+  , glOrthoxOES
+  , glPassThroughxOES
+  , glPixelMapx
+  , glPixelStorex
+  , glPixelTransferxOES
+  , glPixelZoomxOES
+  , glPointParameterxOES
+  , glPointParameterxvOES
+  , glPointSizexOES
+  , glPolygonOffsetxOES
+  , glPrioritizeTexturesxOES
+  , glRasterPos2xOES
+  , glRasterPos2xvOES
+  , glRasterPos3xOES
+  , glRasterPos3xvOES
+  , glRasterPos4xOES
+  , glRasterPos4xvOES
+  , glRectxOES
+  , glRectxvOES
+  , glRotatexOES
+  , glSampleCoverageOES
+  , glSampleCoveragexOES
+  , glScalexOES
+  , glTexCoord1xOES
+  , glTexCoord1xvOES
+  , glTexCoord2xOES
+  , glTexCoord2xvOES
+  , glTexCoord3xOES
+  , glTexCoord3xvOES
+  , glTexCoord4xOES
+  , glTexCoord4xvOES
+  , glTexEnvxOES
+  , glTexEnvxvOES
+  , glTexGenxOES
+  , glTexGenxvOES
+  , glTexParameterxOES
+  , glTexParameterxvOES
+  , glTranslatexOES
+  , glVertex2xOES
+  , glVertex2xvOES
+  , glVertex3xOES
+  , glVertex3xvOES
+  , glVertex4xOES
+  , glVertex4xvOES
+  , pattern GL_FIXED_OES
+) 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_OES_fixed_point :: Bool
+gl_OES_fixed_point = member "GL_OES_fixed_point" extensions
+
+glAccumxOES :: MonadIO m => GLenum -> GLfixed -> m ()
+glAccumxOES = ffienumfixedIOV glAccumxOESFunPtr
+
+glAccumxOESFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glAccumxOESFunPtr = unsafePerformIO (getProcAddress "glAccumxOES")
+
+{-# NOINLINE glAccumxOESFunPtr #-}
+
+glAlphaFuncxOES :: MonadIO m => GLenum -> GLfixed -> m ()
+glAlphaFuncxOES = ffienumfixedIOV glAlphaFuncxOESFunPtr
+
+glAlphaFuncxOESFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glAlphaFuncxOESFunPtr = unsafePerformIO (getProcAddress "glAlphaFuncxOES")
+
+{-# NOINLINE glAlphaFuncxOESFunPtr #-}
+
+glBitmapxOES :: MonadIO m => GLsizei -> GLsizei -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> Ptr GLubyte -> m ()
+glBitmapxOES = ffisizeisizeifixedfixedfixedfixedPtrubyteIOV glBitmapxOESFunPtr
+
+glBitmapxOESFunPtr :: FunPtr (GLsizei -> GLsizei -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> Ptr GLubyte -> IO ())
+glBitmapxOESFunPtr = unsafePerformIO (getProcAddress "glBitmapxOES")
+
+{-# NOINLINE glBitmapxOESFunPtr #-}
+
+glBlendColorxOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glBlendColorxOES = ffifixedfixedfixedfixedIOV glBlendColorxOESFunPtr
+
+glBlendColorxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glBlendColorxOESFunPtr = unsafePerformIO (getProcAddress "glBlendColorxOES")
+
+{-# NOINLINE glBlendColorxOESFunPtr #-}
+
+glClearAccumxOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glClearAccumxOES = ffifixedfixedfixedfixedIOV glClearAccumxOESFunPtr
+
+glClearAccumxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glClearAccumxOESFunPtr = unsafePerformIO (getProcAddress "glClearAccumxOES")
+
+{-# NOINLINE glClearAccumxOESFunPtr #-}
+
+glClearColorxOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glClearColorxOES = ffifixedfixedfixedfixedIOV glClearColorxOESFunPtr
+
+glClearColorxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glClearColorxOESFunPtr = unsafePerformIO (getProcAddress "glClearColorxOES")
+
+{-# NOINLINE glClearColorxOESFunPtr #-}
+
+glClearDepthxOES :: MonadIO m => GLfixed -> m ()
+glClearDepthxOES = ffifixedIOV glClearDepthxOESFunPtr
+
+glClearDepthxOESFunPtr :: FunPtr (GLfixed -> IO ())
+glClearDepthxOESFunPtr = unsafePerformIO (getProcAddress "glClearDepthxOES")
+
+{-# NOINLINE glClearDepthxOESFunPtr #-}
+
+glClipPlanexOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glClipPlanexOES = ffienumPtrfixedIOV glClipPlanexOESFunPtr
+
+glClipPlanexOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glClipPlanexOESFunPtr = unsafePerformIO (getProcAddress "glClipPlanexOES")
+
+{-# NOINLINE glClipPlanexOESFunPtr #-}
+
+glColor3xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> m ()
+glColor3xOES = ffifixedfixedfixedIOV glColor3xOESFunPtr
+
+glColor3xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ())
+glColor3xOESFunPtr = unsafePerformIO (getProcAddress "glColor3xOES")
+
+{-# NOINLINE glColor3xOESFunPtr #-}
+
+glColor3xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glColor3xvOES = ffiPtrfixedIOV glColor3xvOESFunPtr
+
+glColor3xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glColor3xvOESFunPtr = unsafePerformIO (getProcAddress "glColor3xvOES")
+
+{-# NOINLINE glColor3xvOESFunPtr #-}
+
+glColor4xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glColor4xOES = ffifixedfixedfixedfixedIOV glColor4xOESFunPtr
+
+glColor4xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glColor4xOESFunPtr = unsafePerformIO (getProcAddress "glColor4xOES")
+
+{-# NOINLINE glColor4xOESFunPtr #-}
+
+glColor4xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glColor4xvOES = ffiPtrfixedIOV glColor4xvOESFunPtr
+
+glColor4xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glColor4xvOESFunPtr = unsafePerformIO (getProcAddress "glColor4xvOES")
+
+{-# NOINLINE glColor4xvOESFunPtr #-}
+
+glConvolutionParameterxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
+glConvolutionParameterxOES = ffienumenumfixedIOV glConvolutionParameterxOESFunPtr
+
+glConvolutionParameterxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
+glConvolutionParameterxOESFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameterxOES")
+
+{-# NOINLINE glConvolutionParameterxOESFunPtr #-}
+
+glConvolutionParameterxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glConvolutionParameterxvOES = ffienumenumPtrfixedIOV glConvolutionParameterxvOESFunPtr
+
+glConvolutionParameterxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glConvolutionParameterxvOESFunPtr = unsafePerformIO (getProcAddress "glConvolutionParameterxvOES")
+
+{-# NOINLINE glConvolutionParameterxvOESFunPtr #-}
+
+glDepthRangexOES :: MonadIO m => GLfixed -> GLfixed -> m ()
+glDepthRangexOES = ffifixedfixedIOV glDepthRangexOESFunPtr
+
+glDepthRangexOESFunPtr :: FunPtr (GLfixed -> GLfixed -> IO ())
+glDepthRangexOESFunPtr = unsafePerformIO (getProcAddress "glDepthRangexOES")
+
+{-# NOINLINE glDepthRangexOESFunPtr #-}
+
+glEvalCoord1xOES :: MonadIO m => GLfixed -> m ()
+glEvalCoord1xOES = ffifixedIOV glEvalCoord1xOESFunPtr
+
+glEvalCoord1xOESFunPtr :: FunPtr (GLfixed -> IO ())
+glEvalCoord1xOESFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1xOES")
+
+{-# NOINLINE glEvalCoord1xOESFunPtr #-}
+
+glEvalCoord1xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glEvalCoord1xvOES = ffiPtrfixedIOV glEvalCoord1xvOESFunPtr
+
+glEvalCoord1xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glEvalCoord1xvOESFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1xvOES")
+
+{-# NOINLINE glEvalCoord1xvOESFunPtr #-}
+
+glEvalCoord2xOES :: MonadIO m => GLfixed -> GLfixed -> m ()
+glEvalCoord2xOES = ffifixedfixedIOV glEvalCoord2xOESFunPtr
+
+glEvalCoord2xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> IO ())
+glEvalCoord2xOESFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2xOES")
+
+{-# NOINLINE glEvalCoord2xOESFunPtr #-}
+
+glEvalCoord2xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glEvalCoord2xvOES = ffiPtrfixedIOV glEvalCoord2xvOESFunPtr
+
+glEvalCoord2xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glEvalCoord2xvOESFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2xvOES")
+
+{-# NOINLINE glEvalCoord2xvOESFunPtr #-}
+
+glFeedbackBufferxOES :: MonadIO m => GLsizei -> GLenum -> Ptr GLfixed -> m ()
+glFeedbackBufferxOES = ffisizeienumPtrfixedIOV glFeedbackBufferxOESFunPtr
+
+glFeedbackBufferxOESFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr GLfixed -> IO ())
+glFeedbackBufferxOESFunPtr = unsafePerformIO (getProcAddress "glFeedbackBufferxOES")
+
+{-# NOINLINE glFeedbackBufferxOESFunPtr #-}
+
+glFogxOES :: MonadIO m => GLenum -> GLfixed -> m ()
+glFogxOES = ffienumfixedIOV glFogxOESFunPtr
+
+glFogxOESFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glFogxOESFunPtr = unsafePerformIO (getProcAddress "glFogxOES")
+
+{-# NOINLINE glFogxOESFunPtr #-}
+
+glFogxvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glFogxvOES = ffienumPtrfixedIOV glFogxvOESFunPtr
+
+glFogxvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glFogxvOESFunPtr = unsafePerformIO (getProcAddress "glFogxvOES")
+
+{-# NOINLINE glFogxvOESFunPtr #-}
+
+glFrustumxOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glFrustumxOES = ffifixedfixedfixedfixedfixedfixedIOV glFrustumxOESFunPtr
+
+glFrustumxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glFrustumxOESFunPtr = unsafePerformIO (getProcAddress "glFrustumxOES")
+
+{-# NOINLINE glFrustumxOESFunPtr #-}
+
+glGetClipPlanexOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glGetClipPlanexOES = ffienumPtrfixedIOV glGetClipPlanexOESFunPtr
+
+glGetClipPlanexOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glGetClipPlanexOESFunPtr = unsafePerformIO (getProcAddress "glGetClipPlanexOES")
+
+{-# NOINLINE glGetClipPlanexOESFunPtr #-}
+
+glGetConvolutionParameterxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetConvolutionParameterxvOES = ffienumenumPtrfixedIOV glGetConvolutionParameterxvOESFunPtr
+
+glGetConvolutionParameterxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetConvolutionParameterxvOESFunPtr = unsafePerformIO (getProcAddress "glGetConvolutionParameterxvOES")
+
+{-# NOINLINE glGetConvolutionParameterxvOESFunPtr #-}
+
+glGetFixedvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glGetFixedvOES = ffienumPtrfixedIOV glGetFixedvOESFunPtr
+
+glGetFixedvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glGetFixedvOESFunPtr = unsafePerformIO (getProcAddress "glGetFixedvOES")
+
+{-# NOINLINE glGetFixedvOESFunPtr #-}
+
+glGetHistogramParameterxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetHistogramParameterxvOES = ffienumenumPtrfixedIOV glGetHistogramParameterxvOESFunPtr
+
+glGetHistogramParameterxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetHistogramParameterxvOESFunPtr = unsafePerformIO (getProcAddress "glGetHistogramParameterxvOES")
+
+{-# NOINLINE glGetHistogramParameterxvOESFunPtr #-}
+
+glGetLightxOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetLightxOES = ffienumenumPtrfixedIOV glGetLightxOESFunPtr
+
+glGetLightxOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetLightxOESFunPtr = unsafePerformIO (getProcAddress "glGetLightxOES")
+
+{-# NOINLINE glGetLightxOESFunPtr #-}
+
+glGetLightxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetLightxvOES = ffienumenumPtrfixedIOV glGetLightxvOESFunPtr
+
+glGetLightxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetLightxvOESFunPtr = unsafePerformIO (getProcAddress "glGetLightxvOES")
+
+{-# NOINLINE glGetLightxvOESFunPtr #-}
+
+glGetMapxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetMapxvOES = ffienumenumPtrfixedIOV glGetMapxvOESFunPtr
+
+glGetMapxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetMapxvOESFunPtr = unsafePerformIO (getProcAddress "glGetMapxvOES")
+
+{-# NOINLINE glGetMapxvOESFunPtr #-}
+
+glGetMaterialxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
+glGetMaterialxOES = ffienumenumfixedIOV glGetMaterialxOESFunPtr
+
+glGetMaterialxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
+glGetMaterialxOESFunPtr = unsafePerformIO (getProcAddress "glGetMaterialxOES")
+
+{-# NOINLINE glGetMaterialxOESFunPtr #-}
+
+glGetMaterialxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetMaterialxvOES = ffienumenumPtrfixedIOV glGetMaterialxvOESFunPtr
+
+glGetMaterialxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetMaterialxvOESFunPtr = unsafePerformIO (getProcAddress "glGetMaterialxvOES")
+
+{-# NOINLINE glGetMaterialxvOESFunPtr #-}
+
+glGetPixelMapxv :: MonadIO m => GLenum -> GLint -> Ptr GLfixed -> m ()
+glGetPixelMapxv = ffienumintPtrfixedIOV glGetPixelMapxvFunPtr
+
+glGetPixelMapxvFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLfixed -> IO ())
+glGetPixelMapxvFunPtr = unsafePerformIO (getProcAddress "glGetPixelMapxv")
+
+{-# NOINLINE glGetPixelMapxvFunPtr #-}
+
+glGetTexEnvxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetTexEnvxvOES = ffienumenumPtrfixedIOV glGetTexEnvxvOESFunPtr
+
+glGetTexEnvxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetTexEnvxvOESFunPtr = unsafePerformIO (getProcAddress "glGetTexEnvxvOES")
+
+{-# NOINLINE glGetTexEnvxvOESFunPtr #-}
+
+glGetTexLevelParameterxvOES :: MonadIO m => GLenum -> GLint -> GLenum -> Ptr GLfixed -> m ()
+glGetTexLevelParameterxvOES = ffienumintenumPtrfixedIOV glGetTexLevelParameterxvOESFunPtr
+
+glGetTexLevelParameterxvOESFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> Ptr GLfixed -> IO ())
+glGetTexLevelParameterxvOESFunPtr = unsafePerformIO (getProcAddress "glGetTexLevelParameterxvOES")
+
+{-# NOINLINE glGetTexLevelParameterxvOESFunPtr #-}
+
+glGetTexParameterxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glGetTexParameterxvOES = ffienumenumPtrfixedIOV glGetTexParameterxvOESFunPtr
+
+glGetTexParameterxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glGetTexParameterxvOESFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterxvOES")
+
+{-# NOINLINE glGetTexParameterxvOESFunPtr #-}
+
+glIndexxOES :: MonadIO m => GLfixed -> m ()
+glIndexxOES = ffifixedIOV glIndexxOESFunPtr
+
+glIndexxOESFunPtr :: FunPtr (GLfixed -> IO ())
+glIndexxOESFunPtr = unsafePerformIO (getProcAddress "glIndexxOES")
+
+{-# NOINLINE glIndexxOESFunPtr #-}
+
+glIndexxvOES :: MonadIO m => Ptr GLfixed -> m ()
+glIndexxvOES = ffiPtrfixedIOV glIndexxvOESFunPtr
+
+glIndexxvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glIndexxvOESFunPtr = unsafePerformIO (getProcAddress "glIndexxvOES")
+
+{-# NOINLINE glIndexxvOESFunPtr #-}
+
+glLightModelxOES :: MonadIO m => GLenum -> GLfixed -> m ()
+glLightModelxOES = ffienumfixedIOV glLightModelxOESFunPtr
+
+glLightModelxOESFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glLightModelxOESFunPtr = unsafePerformIO (getProcAddress "glLightModelxOES")
+
+{-# NOINLINE glLightModelxOESFunPtr #-}
+
+glLightModelxvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glLightModelxvOES = ffienumPtrfixedIOV glLightModelxvOESFunPtr
+
+glLightModelxvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glLightModelxvOESFunPtr = unsafePerformIO (getProcAddress "glLightModelxvOES")
+
+{-# NOINLINE glLightModelxvOESFunPtr #-}
+
+glLightxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
+glLightxOES = ffienumenumfixedIOV glLightxOESFunPtr
+
+glLightxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
+glLightxOESFunPtr = unsafePerformIO (getProcAddress "glLightxOES")
+
+{-# NOINLINE glLightxOESFunPtr #-}
+
+glLightxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glLightxvOES = ffienumenumPtrfixedIOV glLightxvOESFunPtr
+
+glLightxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glLightxvOESFunPtr = unsafePerformIO (getProcAddress "glLightxvOES")
+
+{-# NOINLINE glLightxvOESFunPtr #-}
+
+glLineWidthxOES :: MonadIO m => GLfixed -> m ()
+glLineWidthxOES = ffifixedIOV glLineWidthxOESFunPtr
+
+glLineWidthxOESFunPtr :: FunPtr (GLfixed -> IO ())
+glLineWidthxOESFunPtr = unsafePerformIO (getProcAddress "glLineWidthxOES")
+
+{-# NOINLINE glLineWidthxOESFunPtr #-}
+
+glLoadMatrixxOES :: MonadIO m => Ptr GLfixed -> m ()
+glLoadMatrixxOES = ffiPtrfixedIOV glLoadMatrixxOESFunPtr
+
+glLoadMatrixxOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glLoadMatrixxOESFunPtr = unsafePerformIO (getProcAddress "glLoadMatrixxOES")
+
+{-# NOINLINE glLoadMatrixxOESFunPtr #-}
+
+glLoadTransposeMatrixxOES :: MonadIO m => Ptr GLfixed -> m ()
+glLoadTransposeMatrixxOES = ffiPtrfixedIOV glLoadTransposeMatrixxOESFunPtr
+
+glLoadTransposeMatrixxOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glLoadTransposeMatrixxOESFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixxOES")
+
+{-# NOINLINE glLoadTransposeMatrixxOESFunPtr #-}
+
+glMap1xOES :: MonadIO m => GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> m ()
+glMap1xOES = ffienumfixedfixedintintfixedIOV glMap1xOESFunPtr
+
+glMap1xOESFunPtr :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ())
+glMap1xOESFunPtr = unsafePerformIO (getProcAddress "glMap1xOES")
+
+{-# NOINLINE glMap1xOESFunPtr #-}
+
+glMap2xOES :: MonadIO m => GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> m ()
+glMap2xOES = ffienumfixedfixedintintfixedfixedintintfixedIOV glMap2xOESFunPtr
+
+glMap2xOESFunPtr :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ())
+glMap2xOESFunPtr = unsafePerformIO (getProcAddress "glMap2xOES")
+
+{-# NOINLINE glMap2xOESFunPtr #-}
+
+glMapGrid1xOES :: MonadIO m => GLint -> GLfixed -> GLfixed -> m ()
+glMapGrid1xOES = ffiintfixedfixedIOV glMapGrid1xOESFunPtr
+
+glMapGrid1xOESFunPtr :: FunPtr (GLint -> GLfixed -> GLfixed -> IO ())
+glMapGrid1xOESFunPtr = unsafePerformIO (getProcAddress "glMapGrid1xOES")
+
+{-# NOINLINE glMapGrid1xOESFunPtr #-}
+
+glMapGrid2xOES :: MonadIO m => GLint -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glMapGrid2xOES = ffiintfixedfixedfixedfixedIOV glMapGrid2xOESFunPtr
+
+glMapGrid2xOESFunPtr :: FunPtr (GLint -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glMapGrid2xOESFunPtr = unsafePerformIO (getProcAddress "glMapGrid2xOES")
+
+{-# NOINLINE glMapGrid2xOESFunPtr #-}
+
+glMaterialxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
+glMaterialxOES = ffienumenumfixedIOV glMaterialxOESFunPtr
+
+glMaterialxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
+glMaterialxOESFunPtr = unsafePerformIO (getProcAddress "glMaterialxOES")
+
+{-# NOINLINE glMaterialxOESFunPtr #-}
+
+glMaterialxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glMaterialxvOES = ffienumenumPtrfixedIOV glMaterialxvOESFunPtr
+
+glMaterialxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glMaterialxvOESFunPtr = unsafePerformIO (getProcAddress "glMaterialxvOES")
+
+{-# NOINLINE glMaterialxvOESFunPtr #-}
+
+glMultMatrixxOES :: MonadIO m => Ptr GLfixed -> m ()
+glMultMatrixxOES = ffiPtrfixedIOV glMultMatrixxOESFunPtr
+
+glMultMatrixxOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glMultMatrixxOESFunPtr = unsafePerformIO (getProcAddress "glMultMatrixxOES")
+
+{-# NOINLINE glMultMatrixxOESFunPtr #-}
+
+glMultTransposeMatrixxOES :: MonadIO m => Ptr GLfixed -> m ()
+glMultTransposeMatrixxOES = ffiPtrfixedIOV glMultTransposeMatrixxOESFunPtr
+
+glMultTransposeMatrixxOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glMultTransposeMatrixxOESFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixxOES")
+
+{-# NOINLINE glMultTransposeMatrixxOESFunPtr #-}
+
+glMultiTexCoord1xOES :: MonadIO m => GLenum -> GLfixed -> m ()
+glMultiTexCoord1xOES = ffienumfixedIOV glMultiTexCoord1xOESFunPtr
+
+glMultiTexCoord1xOESFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glMultiTexCoord1xOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1xOES")
+
+{-# NOINLINE glMultiTexCoord1xOESFunPtr #-}
+
+glMultiTexCoord1xvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glMultiTexCoord1xvOES = ffienumPtrfixedIOV glMultiTexCoord1xvOESFunPtr
+
+glMultiTexCoord1xvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glMultiTexCoord1xvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1xvOES")
+
+{-# NOINLINE glMultiTexCoord1xvOESFunPtr #-}
+
+glMultiTexCoord2xOES :: MonadIO m => GLenum -> GLfixed -> GLfixed -> m ()
+glMultiTexCoord2xOES = ffienumfixedfixedIOV glMultiTexCoord2xOESFunPtr
+
+glMultiTexCoord2xOESFunPtr :: FunPtr (GLenum -> GLfixed -> GLfixed -> IO ())
+glMultiTexCoord2xOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2xOES")
+
+{-# NOINLINE glMultiTexCoord2xOESFunPtr #-}
+
+glMultiTexCoord2xvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glMultiTexCoord2xvOES = ffienumPtrfixedIOV glMultiTexCoord2xvOESFunPtr
+
+glMultiTexCoord2xvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glMultiTexCoord2xvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2xvOES")
+
+{-# NOINLINE glMultiTexCoord2xvOESFunPtr #-}
+
+glMultiTexCoord3xOES :: MonadIO m => GLenum -> GLfixed -> GLfixed -> GLfixed -> m ()
+glMultiTexCoord3xOES = ffienumfixedfixedfixedIOV glMultiTexCoord3xOESFunPtr
+
+glMultiTexCoord3xOESFunPtr :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glMultiTexCoord3xOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3xOES")
+
+{-# NOINLINE glMultiTexCoord3xOESFunPtr #-}
+
+glMultiTexCoord3xvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glMultiTexCoord3xvOES = ffienumPtrfixedIOV glMultiTexCoord3xvOESFunPtr
+
+glMultiTexCoord3xvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glMultiTexCoord3xvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3xvOES")
+
+{-# NOINLINE glMultiTexCoord3xvOESFunPtr #-}
+
+glMultiTexCoord4xOES :: MonadIO m => GLenum -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glMultiTexCoord4xOES = ffienumfixedfixedfixedfixedIOV glMultiTexCoord4xOESFunPtr
+
+glMultiTexCoord4xOESFunPtr :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glMultiTexCoord4xOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4xOES")
+
+{-# NOINLINE glMultiTexCoord4xOESFunPtr #-}
+
+glMultiTexCoord4xvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glMultiTexCoord4xvOES = ffienumPtrfixedIOV glMultiTexCoord4xvOESFunPtr
+
+glMultiTexCoord4xvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glMultiTexCoord4xvOESFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4xvOES")
+
+{-# NOINLINE glMultiTexCoord4xvOESFunPtr #-}
+
+glNormal3xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> m ()
+glNormal3xOES = ffifixedfixedfixedIOV glNormal3xOESFunPtr
+
+glNormal3xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ())
+glNormal3xOESFunPtr = unsafePerformIO (getProcAddress "glNormal3xOES")
+
+{-# NOINLINE glNormal3xOESFunPtr #-}
+
+glNormal3xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glNormal3xvOES = ffiPtrfixedIOV glNormal3xvOESFunPtr
+
+glNormal3xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glNormal3xvOESFunPtr = unsafePerformIO (getProcAddress "glNormal3xvOES")
+
+{-# NOINLINE glNormal3xvOESFunPtr #-}
+
+glOrthoxOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glOrthoxOES = ffifixedfixedfixedfixedfixedfixedIOV glOrthoxOESFunPtr
+
+glOrthoxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glOrthoxOESFunPtr = unsafePerformIO (getProcAddress "glOrthoxOES")
+
+{-# NOINLINE glOrthoxOESFunPtr #-}
+
+glPassThroughxOES :: MonadIO m => GLfixed -> m ()
+glPassThroughxOES = ffifixedIOV glPassThroughxOESFunPtr
+
+glPassThroughxOESFunPtr :: FunPtr (GLfixed -> IO ())
+glPassThroughxOESFunPtr = unsafePerformIO (getProcAddress "glPassThroughxOES")
+
+{-# NOINLINE glPassThroughxOESFunPtr #-}
+
+glPixelMapx :: MonadIO m => GLenum -> GLint -> Ptr GLfixed -> m ()
+glPixelMapx = ffienumintPtrfixedIOV glPixelMapxFunPtr
+
+glPixelMapxFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLfixed -> IO ())
+glPixelMapxFunPtr = unsafePerformIO (getProcAddress "glPixelMapx")
+
+{-# NOINLINE glPixelMapxFunPtr #-}
+
+glPixelStorex :: MonadIO m => GLenum -> GLfixed -> m ()
+glPixelStorex = ffienumfixedIOV glPixelStorexFunPtr
+
+glPixelStorexFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glPixelStorexFunPtr = unsafePerformIO (getProcAddress "glPixelStorex")
+
+{-# NOINLINE glPixelStorexFunPtr #-}
+
+glPixelTransferxOES :: MonadIO m => GLenum -> GLfixed -> m ()
+glPixelTransferxOES = ffienumfixedIOV glPixelTransferxOESFunPtr
+
+glPixelTransferxOESFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glPixelTransferxOESFunPtr = unsafePerformIO (getProcAddress "glPixelTransferxOES")
+
+{-# NOINLINE glPixelTransferxOESFunPtr #-}
+
+glPixelZoomxOES :: MonadIO m => GLfixed -> GLfixed -> m ()
+glPixelZoomxOES = ffifixedfixedIOV glPixelZoomxOESFunPtr
+
+glPixelZoomxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> IO ())
+glPixelZoomxOESFunPtr = unsafePerformIO (getProcAddress "glPixelZoomxOES")
+
+{-# NOINLINE glPixelZoomxOESFunPtr #-}
+
+glPointParameterxOES :: MonadIO m => GLenum -> GLfixed -> m ()
+glPointParameterxOES = ffienumfixedIOV glPointParameterxOESFunPtr
+
+glPointParameterxOESFunPtr :: FunPtr (GLenum -> GLfixed -> IO ())
+glPointParameterxOESFunPtr = unsafePerformIO (getProcAddress "glPointParameterxOES")
+
+{-# NOINLINE glPointParameterxOESFunPtr #-}
+
+glPointParameterxvOES :: MonadIO m => GLenum -> Ptr GLfixed -> m ()
+glPointParameterxvOES = ffienumPtrfixedIOV glPointParameterxvOESFunPtr
+
+glPointParameterxvOESFunPtr :: FunPtr (GLenum -> Ptr GLfixed -> IO ())
+glPointParameterxvOESFunPtr = unsafePerformIO (getProcAddress "glPointParameterxvOES")
+
+{-# NOINLINE glPointParameterxvOESFunPtr #-}
+
+glPointSizexOES :: MonadIO m => GLfixed -> m ()
+glPointSizexOES = ffifixedIOV glPointSizexOESFunPtr
+
+glPointSizexOESFunPtr :: FunPtr (GLfixed -> IO ())
+glPointSizexOESFunPtr = unsafePerformIO (getProcAddress "glPointSizexOES")
+
+{-# NOINLINE glPointSizexOESFunPtr #-}
+
+glPolygonOffsetxOES :: MonadIO m => GLfixed -> GLfixed -> m ()
+glPolygonOffsetxOES = ffifixedfixedIOV glPolygonOffsetxOESFunPtr
+
+glPolygonOffsetxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> IO ())
+glPolygonOffsetxOESFunPtr = unsafePerformIO (getProcAddress "glPolygonOffsetxOES")
+
+{-# NOINLINE glPolygonOffsetxOESFunPtr #-}
+
+glPrioritizeTexturesxOES :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLfixed -> m ()
+glPrioritizeTexturesxOES = ffisizeiPtruintPtrfixedIOV glPrioritizeTexturesxOESFunPtr
+
+glPrioritizeTexturesxOESFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLfixed -> IO ())
+glPrioritizeTexturesxOESFunPtr = unsafePerformIO (getProcAddress "glPrioritizeTexturesxOES")
+
+{-# NOINLINE glPrioritizeTexturesxOESFunPtr #-}
+
+glRasterPos2xOES :: MonadIO m => GLfixed -> GLfixed -> m ()
+glRasterPos2xOES = ffifixedfixedIOV glRasterPos2xOESFunPtr
+
+glRasterPos2xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> IO ())
+glRasterPos2xOESFunPtr = unsafePerformIO (getProcAddress "glRasterPos2xOES")
+
+{-# NOINLINE glRasterPos2xOESFunPtr #-}
+
+glRasterPos2xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glRasterPos2xvOES = ffiPtrfixedIOV glRasterPos2xvOESFunPtr
+
+glRasterPos2xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glRasterPos2xvOESFunPtr = unsafePerformIO (getProcAddress "glRasterPos2xvOES")
+
+{-# NOINLINE glRasterPos2xvOESFunPtr #-}
+
+glRasterPos3xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> m ()
+glRasterPos3xOES = ffifixedfixedfixedIOV glRasterPos3xOESFunPtr
+
+glRasterPos3xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ())
+glRasterPos3xOESFunPtr = unsafePerformIO (getProcAddress "glRasterPos3xOES")
+
+{-# NOINLINE glRasterPos3xOESFunPtr #-}
+
+glRasterPos3xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glRasterPos3xvOES = ffiPtrfixedIOV glRasterPos3xvOESFunPtr
+
+glRasterPos3xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glRasterPos3xvOESFunPtr = unsafePerformIO (getProcAddress "glRasterPos3xvOES")
+
+{-# NOINLINE glRasterPos3xvOESFunPtr #-}
+
+glRasterPos4xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glRasterPos4xOES = ffifixedfixedfixedfixedIOV glRasterPos4xOESFunPtr
+
+glRasterPos4xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glRasterPos4xOESFunPtr = unsafePerformIO (getProcAddress "glRasterPos4xOES")
+
+{-# NOINLINE glRasterPos4xOESFunPtr #-}
+
+glRasterPos4xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glRasterPos4xvOES = ffiPtrfixedIOV glRasterPos4xvOESFunPtr
+
+glRasterPos4xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glRasterPos4xvOESFunPtr = unsafePerformIO (getProcAddress "glRasterPos4xvOES")
+
+{-# NOINLINE glRasterPos4xvOESFunPtr #-}
+
+glRectxOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glRectxOES = ffifixedfixedfixedfixedIOV glRectxOESFunPtr
+
+glRectxOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glRectxOESFunPtr = unsafePerformIO (getProcAddress "glRectxOES")
+
+{-# NOINLINE glRectxOESFunPtr #-}
+
+glRectxvOES :: MonadIO m => Ptr GLfixed -> Ptr GLfixed -> m ()
+glRectxvOES = ffiPtrfixedPtrfixedIOV glRectxvOESFunPtr
+
+glRectxvOESFunPtr :: FunPtr (Ptr GLfixed -> Ptr GLfixed -> IO ())
+glRectxvOESFunPtr = unsafePerformIO (getProcAddress "glRectxvOES")
+
+{-# NOINLINE glRectxvOESFunPtr #-}
+
+glRotatexOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glRotatexOES = ffifixedfixedfixedfixedIOV glRotatexOESFunPtr
+
+glRotatexOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glRotatexOESFunPtr = unsafePerformIO (getProcAddress "glRotatexOES")
+
+{-# NOINLINE glRotatexOESFunPtr #-}
+
+glSampleCoverageOES :: MonadIO m => GLfixed -> GLboolean -> m ()
+glSampleCoverageOES = ffifixedbooleanIOV glSampleCoverageOESFunPtr
+
+glSampleCoverageOESFunPtr :: FunPtr (GLfixed -> GLboolean -> IO ())
+glSampleCoverageOESFunPtr = unsafePerformIO (getProcAddress "glSampleCoverageOES")
+
+{-# NOINLINE glSampleCoverageOESFunPtr #-}
+
+glSampleCoveragexOES :: MonadIO m => GLclampx -> GLboolean -> m ()
+glSampleCoveragexOES = fficlampxbooleanIOV glSampleCoveragexOESFunPtr
+
+glSampleCoveragexOESFunPtr :: FunPtr (GLclampx -> GLboolean -> IO ())
+glSampleCoveragexOESFunPtr = unsafePerformIO (getProcAddress "glSampleCoveragexOES")
+
+{-# NOINLINE glSampleCoveragexOESFunPtr #-}
+
+glScalexOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> m ()
+glScalexOES = ffifixedfixedfixedIOV glScalexOESFunPtr
+
+glScalexOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ())
+glScalexOESFunPtr = unsafePerformIO (getProcAddress "glScalexOES")
+
+{-# NOINLINE glScalexOESFunPtr #-}
+
+glTexCoord1xOES :: MonadIO m => GLfixed -> m ()
+glTexCoord1xOES = ffifixedIOV glTexCoord1xOESFunPtr
+
+glTexCoord1xOESFunPtr :: FunPtr (GLfixed -> IO ())
+glTexCoord1xOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord1xOES")
+
+{-# NOINLINE glTexCoord1xOESFunPtr #-}
+
+glTexCoord1xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glTexCoord1xvOES = ffiPtrfixedIOV glTexCoord1xvOESFunPtr
+
+glTexCoord1xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glTexCoord1xvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord1xvOES")
+
+{-# NOINLINE glTexCoord1xvOESFunPtr #-}
+
+glTexCoord2xOES :: MonadIO m => GLfixed -> GLfixed -> m ()
+glTexCoord2xOES = ffifixedfixedIOV glTexCoord2xOESFunPtr
+
+glTexCoord2xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> IO ())
+glTexCoord2xOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord2xOES")
+
+{-# NOINLINE glTexCoord2xOESFunPtr #-}
+
+glTexCoord2xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glTexCoord2xvOES = ffiPtrfixedIOV glTexCoord2xvOESFunPtr
+
+glTexCoord2xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glTexCoord2xvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord2xvOES")
+
+{-# NOINLINE glTexCoord2xvOESFunPtr #-}
+
+glTexCoord3xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> m ()
+glTexCoord3xOES = ffifixedfixedfixedIOV glTexCoord3xOESFunPtr
+
+glTexCoord3xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ())
+glTexCoord3xOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord3xOES")
+
+{-# NOINLINE glTexCoord3xOESFunPtr #-}
+
+glTexCoord3xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glTexCoord3xvOES = ffiPtrfixedIOV glTexCoord3xvOESFunPtr
+
+glTexCoord3xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glTexCoord3xvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord3xvOES")
+
+{-# NOINLINE glTexCoord3xvOESFunPtr #-}
+
+glTexCoord4xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+glTexCoord4xOES = ffifixedfixedfixedfixedIOV glTexCoord4xOESFunPtr
+
+glTexCoord4xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ())
+glTexCoord4xOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord4xOES")
+
+{-# NOINLINE glTexCoord4xOESFunPtr #-}
+
+glTexCoord4xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glTexCoord4xvOES = ffiPtrfixedIOV glTexCoord4xvOESFunPtr
+
+glTexCoord4xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glTexCoord4xvOESFunPtr = unsafePerformIO (getProcAddress "glTexCoord4xvOES")
+
+{-# NOINLINE glTexCoord4xvOESFunPtr #-}
+
+glTexEnvxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
+glTexEnvxOES = ffienumenumfixedIOV glTexEnvxOESFunPtr
+
+glTexEnvxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
+glTexEnvxOESFunPtr = unsafePerformIO (getProcAddress "glTexEnvxOES")
+
+{-# NOINLINE glTexEnvxOESFunPtr #-}
+
+glTexEnvxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glTexEnvxvOES = ffienumenumPtrfixedIOV glTexEnvxvOESFunPtr
+
+glTexEnvxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glTexEnvxvOESFunPtr = unsafePerformIO (getProcAddress "glTexEnvxvOES")
+
+{-# NOINLINE glTexEnvxvOESFunPtr #-}
+
+glTexParameterxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
+glTexParameterxOES = ffienumenumfixedIOV glTexParameterxOESFunPtr
+
+glTexParameterxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
+glTexParameterxOESFunPtr = unsafePerformIO (getProcAddress "glTexParameterxOES")
+
+{-# NOINLINE glTexParameterxOESFunPtr #-}
+
+glTexParameterxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
+glTexParameterxvOES = ffienumenumPtrfixedIOV glTexParameterxvOESFunPtr
+
+glTexParameterxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
+glTexParameterxvOESFunPtr = unsafePerformIO (getProcAddress "glTexParameterxvOES")
+
+{-# NOINLINE glTexParameterxvOESFunPtr #-}
+
+glTranslatexOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> m ()
+glTranslatexOES = ffifixedfixedfixedIOV glTranslatexOESFunPtr
+
+glTranslatexOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ())
+glTranslatexOESFunPtr = unsafePerformIO (getProcAddress "glTranslatexOES")
+
+{-# NOINLINE glTranslatexOESFunPtr #-}
+
+glVertex2xOES :: MonadIO m => GLfixed -> m ()
+glVertex2xOES = ffifixedIOV glVertex2xOESFunPtr
+
+glVertex2xOESFunPtr :: FunPtr (GLfixed -> IO ())
+glVertex2xOESFunPtr = unsafePerformIO (getProcAddress "glVertex2xOES")
+
+{-# NOINLINE glVertex2xOESFunPtr #-}
+
+glVertex2xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glVertex2xvOES = ffiPtrfixedIOV glVertex2xvOESFunPtr
+
+glVertex2xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glVertex2xvOESFunPtr = unsafePerformIO (getProcAddress "glVertex2xvOES")
+
+{-# NOINLINE glVertex2xvOESFunPtr #-}
+
+glVertex3xOES :: MonadIO m => GLfixed -> GLfixed -> m ()
+glVertex3xOES = ffifixedfixedIOV glVertex3xOESFunPtr
+
+glVertex3xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> IO ())
+glVertex3xOESFunPtr = unsafePerformIO (getProcAddress "glVertex3xOES")
+
+{-# NOINLINE glVertex3xOESFunPtr #-}
+
+glVertex3xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glVertex3xvOES = ffiPtrfixedIOV glVertex3xvOESFunPtr
+
+glVertex3xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glVertex3xvOESFunPtr = unsafePerformIO (getProcAddress "glVertex3xvOES")
+
+{-# NOINLINE glVertex3xvOESFunPtr #-}
+
+glVertex4xOES :: MonadIO m => GLfixed -> GLfixed -> GLfixed -> m ()
+glVertex4xOES = ffifixedfixedfixedIOV glVertex4xOESFunPtr
+
+glVertex4xOESFunPtr :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ())
+glVertex4xOESFunPtr = unsafePerformIO (getProcAddress "glVertex4xOES")
+
+{-# NOINLINE glVertex4xOESFunPtr #-}
+
+glVertex4xvOES :: MonadIO m => Ptr GLfixed -> m ()
+glVertex4xvOES = ffiPtrfixedIOV glVertex4xvOESFunPtr
+
+glVertex4xvOESFunPtr :: FunPtr (Ptr GLfixed -> IO ())
+glVertex4xvOESFunPtr = unsafePerformIO (getProcAddress "glVertex4xvOES")
+
+{-# NOINLINE glVertex4xvOESFunPtr #-}
+
+pattern GL_FIXED_OES = 0x140C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FragmentPrecisionHigh.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FragmentPrecisionHigh.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FragmentPrecisionHigh.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.FragmentPrecisionHigh (
+  -- * Extension Support
+    gl_OES_fragment_precision_high
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_fragment_precision_high :: Bool
+gl_OES_fragment_precision_high = member "GL_OES_fragment_precision_high" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FramebufferObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FramebufferObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/FramebufferObject.hs
@@ -0,0 +1,246 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.FramebufferObject (
+  -- * Extension Support
+    gl_OES_framebuffer_object
+
+  -- * GL_OES_framebuffer_object
+  , glBindFramebufferOES
+  , glBindRenderbufferOES
+  , glCheckFramebufferStatusOES
+  , glDeleteFramebuffersOES
+  , glDeleteRenderbuffersOES
+  , glFramebufferRenderbufferOES
+  , glFramebufferTexture2DOES
+  , glGenFramebuffersOES
+  , glGenRenderbuffersOES
+  , glGenerateMipmapOES
+  , glGetFramebufferAttachmentParameterivOES
+  , glGetRenderbufferParameterivOES
+  , glIsFramebufferOES
+  , glIsRenderbufferOES
+  , glRenderbufferStorageOES
+  , pattern GL_COLOR_ATTACHMENT0_OES
+  , pattern GL_DEPTH_ATTACHMENT_OES
+  , pattern GL_DEPTH_COMPONENT16_OES
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES
+  , pattern GL_FRAMEBUFFER_BINDING_OES
+  , pattern GL_FRAMEBUFFER_COMPLETE_OES
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES
+  , pattern GL_FRAMEBUFFER_OES
+  , pattern GL_FRAMEBUFFER_UNSUPPORTED_OES
+  , pattern GL_INVALID_FRAMEBUFFER_OPERATION_OES
+  , pattern GL_MAX_RENDERBUFFER_SIZE_OES
+  , pattern GL_NONE_OES
+  , pattern GL_RENDERBUFFER_ALPHA_SIZE_OES
+  , pattern GL_RENDERBUFFER_BINDING_OES
+  , pattern GL_RENDERBUFFER_BLUE_SIZE_OES
+  , pattern GL_RENDERBUFFER_DEPTH_SIZE_OES
+  , pattern GL_RENDERBUFFER_GREEN_SIZE_OES
+  , pattern GL_RENDERBUFFER_HEIGHT_OES
+  , pattern GL_RENDERBUFFER_INTERNAL_FORMAT_OES
+  , pattern GL_RENDERBUFFER_OES
+  , pattern GL_RENDERBUFFER_RED_SIZE_OES
+  , pattern GL_RENDERBUFFER_STENCIL_SIZE_OES
+  , pattern GL_RENDERBUFFER_WIDTH_OES
+  , pattern GL_RGB565_OES
+  , pattern GL_RGB5_A1_OES
+  , pattern GL_RGBA4_OES
+  , pattern GL_STENCIL_ATTACHMENT_OES
+) 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_OES_framebuffer_object :: Bool
+gl_OES_framebuffer_object = member "GL_OES_framebuffer_object" extensions
+
+glBindFramebufferOES :: MonadIO m => GLenum -> GLuint -> m ()
+glBindFramebufferOES = ffienumuintIOV glBindFramebufferOESFunPtr
+
+glBindFramebufferOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindFramebufferOESFunPtr = unsafePerformIO (getProcAddress "glBindFramebufferOES")
+
+{-# NOINLINE glBindFramebufferOESFunPtr #-}
+
+glBindRenderbufferOES :: MonadIO m => GLenum -> GLuint -> m ()
+glBindRenderbufferOES = ffienumuintIOV glBindRenderbufferOESFunPtr
+
+glBindRenderbufferOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glBindRenderbufferOESFunPtr = unsafePerformIO (getProcAddress "glBindRenderbufferOES")
+
+{-# NOINLINE glBindRenderbufferOESFunPtr #-}
+
+glCheckFramebufferStatusOES :: MonadIO m => GLenum -> m GLenum
+glCheckFramebufferStatusOES = ffienumIOenum glCheckFramebufferStatusOESFunPtr
+
+glCheckFramebufferStatusOESFunPtr :: FunPtr (GLenum -> IO GLenum)
+glCheckFramebufferStatusOESFunPtr = unsafePerformIO (getProcAddress "glCheckFramebufferStatusOES")
+
+{-# NOINLINE glCheckFramebufferStatusOESFunPtr #-}
+
+glDeleteFramebuffersOES :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteFramebuffersOES = ffisizeiPtruintIOV glDeleteFramebuffersOESFunPtr
+
+glDeleteFramebuffersOESFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteFramebuffersOESFunPtr = unsafePerformIO (getProcAddress "glDeleteFramebuffersOES")
+
+{-# NOINLINE glDeleteFramebuffersOESFunPtr #-}
+
+glDeleteRenderbuffersOES :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteRenderbuffersOES = ffisizeiPtruintIOV glDeleteRenderbuffersOESFunPtr
+
+glDeleteRenderbuffersOESFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteRenderbuffersOESFunPtr = unsafePerformIO (getProcAddress "glDeleteRenderbuffersOES")
+
+{-# NOINLINE glDeleteRenderbuffersOESFunPtr #-}
+
+glFramebufferRenderbufferOES :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> m ()
+glFramebufferRenderbufferOES = ffienumenumenumuintIOV glFramebufferRenderbufferOESFunPtr
+
+glFramebufferRenderbufferOESFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO ())
+glFramebufferRenderbufferOESFunPtr = unsafePerformIO (getProcAddress "glFramebufferRenderbufferOES")
+
+{-# NOINLINE glFramebufferRenderbufferOESFunPtr #-}
+
+glFramebufferTexture2DOES :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+glFramebufferTexture2DOES = ffienumenumenumuintintIOV glFramebufferTexture2DOESFunPtr
+
+glFramebufferTexture2DOESFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glFramebufferTexture2DOESFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture2DOES")
+
+{-# NOINLINE glFramebufferTexture2DOESFunPtr #-}
+
+glGenFramebuffersOES :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenFramebuffersOES = ffisizeiPtruintIOV glGenFramebuffersOESFunPtr
+
+glGenFramebuffersOESFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenFramebuffersOESFunPtr = unsafePerformIO (getProcAddress "glGenFramebuffersOES")
+
+{-# NOINLINE glGenFramebuffersOESFunPtr #-}
+
+glGenRenderbuffersOES :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenRenderbuffersOES = ffisizeiPtruintIOV glGenRenderbuffersOESFunPtr
+
+glGenRenderbuffersOESFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenRenderbuffersOESFunPtr = unsafePerformIO (getProcAddress "glGenRenderbuffersOES")
+
+{-# NOINLINE glGenRenderbuffersOESFunPtr #-}
+
+glGenerateMipmapOES :: MonadIO m => GLenum -> m ()
+glGenerateMipmapOES = ffienumIOV glGenerateMipmapOESFunPtr
+
+glGenerateMipmapOESFunPtr :: FunPtr (GLenum -> IO ())
+glGenerateMipmapOESFunPtr = unsafePerformIO (getProcAddress "glGenerateMipmapOES")
+
+{-# NOINLINE glGenerateMipmapOESFunPtr #-}
+
+glGetFramebufferAttachmentParameterivOES :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+glGetFramebufferAttachmentParameterivOES = ffienumenumenumPtrintIOV glGetFramebufferAttachmentParameterivOESFunPtr
+
+glGetFramebufferAttachmentParameterivOESFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetFramebufferAttachmentParameterivOESFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferAttachmentParameterivOES")
+
+{-# NOINLINE glGetFramebufferAttachmentParameterivOESFunPtr #-}
+
+glGetRenderbufferParameterivOES :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetRenderbufferParameterivOES = ffienumenumPtrintIOV glGetRenderbufferParameterivOESFunPtr
+
+glGetRenderbufferParameterivOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetRenderbufferParameterivOESFunPtr = unsafePerformIO (getProcAddress "glGetRenderbufferParameterivOES")
+
+{-# NOINLINE glGetRenderbufferParameterivOESFunPtr #-}
+
+glIsFramebufferOES :: MonadIO m => GLuint -> m GLboolean
+glIsFramebufferOES = ffiuintIOboolean glIsFramebufferOESFunPtr
+
+glIsFramebufferOESFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsFramebufferOESFunPtr = unsafePerformIO (getProcAddress "glIsFramebufferOES")
+
+{-# NOINLINE glIsFramebufferOESFunPtr #-}
+
+glIsRenderbufferOES :: MonadIO m => GLuint -> m GLboolean
+glIsRenderbufferOES = ffiuintIOboolean glIsRenderbufferOESFunPtr
+
+glIsRenderbufferOESFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsRenderbufferOESFunPtr = unsafePerformIO (getProcAddress "glIsRenderbufferOES")
+
+{-# NOINLINE glIsRenderbufferOESFunPtr #-}
+
+glRenderbufferStorageOES :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
+glRenderbufferStorageOES = ffienumenumsizeisizeiIOV glRenderbufferStorageOESFunPtr
+
+glRenderbufferStorageOESFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> IO ())
+glRenderbufferStorageOESFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageOES")
+
+{-# NOINLINE glRenderbufferStorageOESFunPtr #-}
+
+pattern GL_COLOR_ATTACHMENT0_OES = 0x8CE0 :: GLenum
+
+pattern GL_DEPTH_ATTACHMENT_OES = 0x8D00 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 0x8CD1 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 0x8CD0 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 0x8CD3 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 0x8CD2 :: GLenum
+
+pattern GL_FRAMEBUFFER_BINDING_OES = 0x8CA6 :: GLenum
+
+pattern GL_FRAMEBUFFER_COMPLETE_OES = 0x8CD5 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 0x8CD6 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 0x8CD9 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 0x8CDA :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 0x8CD7 :: GLenum
+
+pattern GL_FRAMEBUFFER_OES = 0x8D40 :: GLenum
+
+pattern GL_FRAMEBUFFER_UNSUPPORTED_OES = 0x8CDD :: GLenum
+
+pattern GL_INVALID_FRAMEBUFFER_OPERATION_OES = 0x0506 :: GLenum
+
+pattern GL_MAX_RENDERBUFFER_SIZE_OES = 0x84E8 :: GLenum
+
+pattern GL_NONE_OES = 0 :: GLenum
+
+pattern GL_RENDERBUFFER_ALPHA_SIZE_OES = 0x8D53 :: GLenum
+
+pattern GL_RENDERBUFFER_BINDING_OES = 0x8CA7 :: GLenum
+
+pattern GL_RENDERBUFFER_BLUE_SIZE_OES = 0x8D52 :: GLenum
+
+pattern GL_RENDERBUFFER_DEPTH_SIZE_OES = 0x8D54 :: GLenum
+
+pattern GL_RENDERBUFFER_GREEN_SIZE_OES = 0x8D51 :: GLenum
+
+pattern GL_RENDERBUFFER_HEIGHT_OES = 0x8D43 :: GLenum
+
+pattern GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 0x8D44 :: GLenum
+
+pattern GL_RENDERBUFFER_OES = 0x8D41 :: GLenum
+
+pattern GL_RENDERBUFFER_RED_SIZE_OES = 0x8D50 :: GLenum
+
+pattern GL_RENDERBUFFER_STENCIL_SIZE_OES = 0x8D55 :: GLenum
+
+pattern GL_RENDERBUFFER_WIDTH_OES = 0x8D42 :: GLenum
+
+pattern GL_STENCIL_ATTACHMENT_OES = 0x8D20 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/GetProgramBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/GetProgramBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/GetProgramBinary.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.GetProgramBinary (
+  -- * Extension Support
+    gl_OES_get_program_binary
+
+  -- * GL_OES_get_program_binary
+  , glGetProgramBinaryOES
+  , glProgramBinaryOES
+  , pattern GL_NUM_PROGRAM_BINARY_FORMATS_OES
+  , pattern GL_PROGRAM_BINARY_FORMATS_OES
+  , pattern GL_PROGRAM_BINARY_LENGTH_OES
+) 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_OES_get_program_binary :: Bool
+gl_OES_get_program_binary = member "GL_OES_get_program_binary" extensions
+
+glGetProgramBinaryOES :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> m ()
+glGetProgramBinaryOES = ffiuintsizeiPtrsizeiPtrenumPtrVIOV glGetProgramBinaryOESFunPtr
+
+glGetProgramBinaryOESFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> IO ())
+glGetProgramBinaryOESFunPtr = unsafePerformIO (getProcAddress "glGetProgramBinaryOES")
+
+{-# NOINLINE glGetProgramBinaryOESFunPtr #-}
+
+glProgramBinaryOES :: MonadIO m => GLuint -> GLenum -> Ptr () -> GLint -> m ()
+glProgramBinaryOES = ffiuintenumPtrVintIOV glProgramBinaryOESFunPtr
+
+glProgramBinaryOESFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> GLint -> IO ())
+glProgramBinaryOESFunPtr = unsafePerformIO (getProcAddress "glProgramBinaryOES")
+
+{-# NOINLINE glProgramBinaryOESFunPtr #-}
+
+pattern GL_NUM_PROGRAM_BINARY_FORMATS_OES = 0x87FE :: GLenum
+
+pattern GL_PROGRAM_BINARY_FORMATS_OES = 0x87FF :: GLenum
+
+pattern GL_PROGRAM_BINARY_LENGTH_OES = 0x8741 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Mapbuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Mapbuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Mapbuffer.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Mapbuffer (
+  -- * Extension Support
+    gl_OES_mapbuffer
+
+  -- * GL_OES_mapbuffer
+  , glGetBufferPointervOES
+  , glMapBufferOES
+  , glUnmapBufferOES
+  , pattern GL_BUFFER_ACCESS_OES
+  , pattern GL_BUFFER_MAPPED_OES
+  , pattern GL_BUFFER_MAP_POINTER_OES
+  , pattern GL_WRITE_ONLY_OES
+) 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_OES_mapbuffer :: Bool
+gl_OES_mapbuffer = member "GL_OES_mapbuffer" extensions
+
+glGetBufferPointervOES :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
+glGetBufferPointervOES = ffienumenumPtrVIOV glGetBufferPointervOESFunPtr
+
+glGetBufferPointervOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
+glGetBufferPointervOESFunPtr = unsafePerformIO (getProcAddress "glGetBufferPointervOES")
+
+{-# NOINLINE glGetBufferPointervOESFunPtr #-}
+
+glMapBufferOES :: MonadIO m => GLenum -> GLenum -> m (Ptr ())
+glMapBufferOES = ffienumenumIOPtrV glMapBufferOESFunPtr
+
+glMapBufferOESFunPtr :: FunPtr (GLenum -> GLenum -> IO (Ptr ()))
+glMapBufferOESFunPtr = unsafePerformIO (getProcAddress "glMapBufferOES")
+
+{-# NOINLINE glMapBufferOESFunPtr #-}
+
+glUnmapBufferOES :: MonadIO m => GLenum -> m GLboolean
+glUnmapBufferOES = ffienumIOboolean glUnmapBufferOESFunPtr
+
+glUnmapBufferOESFunPtr :: FunPtr (GLenum -> IO GLboolean)
+glUnmapBufferOESFunPtr = unsafePerformIO (getProcAddress "glUnmapBufferOES")
+
+{-# NOINLINE glUnmapBufferOESFunPtr #-}
+
+pattern GL_BUFFER_ACCESS_OES = 0x88BB :: GLenum
+
+pattern GL_BUFFER_MAPPED_OES = 0x88BC :: GLenum
+
+pattern GL_BUFFER_MAP_POINTER_OES = 0x88BD :: GLenum
+
+pattern GL_WRITE_ONLY_OES = 0x88B9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/MatrixGet.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/MatrixGet.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/MatrixGet.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.MatrixGet (
+  -- * Extension Support
+    gl_OES_matrix_get
+
+  -- * GL_OES_matrix_get
+  , pattern GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES
+  , pattern GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES
+  , pattern GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_matrix_get :: Bool
+gl_OES_matrix_get = member "GL_OES_matrix_get" extensions
+
+pattern GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898D :: GLenum
+
+pattern GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898E :: GLenum
+
+pattern GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/MatrixPalette.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/MatrixPalette.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/MatrixPalette.hs
@@ -0,0 +1,103 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.MatrixPalette (
+  -- * Extension Support
+    gl_OES_matrix_palette
+
+  -- * GL_OES_matrix_palette
+  , glCurrentPaletteMatrixOES
+  , glLoadPaletteFromModelViewMatrixOES
+  , glMatrixIndexPointerOES
+  , glWeightPointerOES
+  , pattern GL_CURRENT_PALETTE_MATRIX_OES
+  , pattern GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES
+  , pattern GL_MATRIX_INDEX_ARRAY_OES
+  , pattern GL_MATRIX_INDEX_ARRAY_POINTER_OES
+  , pattern GL_MATRIX_INDEX_ARRAY_SIZE_OES
+  , pattern GL_MATRIX_INDEX_ARRAY_STRIDE_OES
+  , pattern GL_MATRIX_INDEX_ARRAY_TYPE_OES
+  , pattern GL_MATRIX_PALETTE_OES
+  , pattern GL_MAX_PALETTE_MATRICES_OES
+  , pattern GL_MAX_VERTEX_UNITS_OES
+  , pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_OES
+  , pattern GL_WEIGHT_ARRAY_OES
+  , pattern GL_WEIGHT_ARRAY_POINTER_OES
+  , pattern GL_WEIGHT_ARRAY_SIZE_OES
+  , pattern GL_WEIGHT_ARRAY_STRIDE_OES
+  , pattern GL_WEIGHT_ARRAY_TYPE_OES
+) 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_OES_matrix_palette :: Bool
+gl_OES_matrix_palette = member "GL_OES_matrix_palette" extensions
+
+glCurrentPaletteMatrixOES :: MonadIO m => GLuint -> m ()
+glCurrentPaletteMatrixOES = ffiuintIOV glCurrentPaletteMatrixOESFunPtr
+
+glCurrentPaletteMatrixOESFunPtr :: FunPtr (GLuint -> IO ())
+glCurrentPaletteMatrixOESFunPtr = unsafePerformIO (getProcAddress "glCurrentPaletteMatrixOES")
+
+{-# NOINLINE glCurrentPaletteMatrixOESFunPtr #-}
+
+glLoadPaletteFromModelViewMatrixOES :: MonadIO m => m ()
+glLoadPaletteFromModelViewMatrixOES = ffiIOV glLoadPaletteFromModelViewMatrixOESFunPtr
+
+glLoadPaletteFromModelViewMatrixOESFunPtr :: FunPtr (IO ())
+glLoadPaletteFromModelViewMatrixOESFunPtr = unsafePerformIO (getProcAddress "glLoadPaletteFromModelViewMatrixOES")
+
+{-# NOINLINE glLoadPaletteFromModelViewMatrixOESFunPtr #-}
+
+glMatrixIndexPointerOES :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glMatrixIndexPointerOES = ffiintenumsizeiPtrVIOV glMatrixIndexPointerOESFunPtr
+
+glMatrixIndexPointerOESFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glMatrixIndexPointerOESFunPtr = unsafePerformIO (getProcAddress "glMatrixIndexPointerOES")
+
+{-# NOINLINE glMatrixIndexPointerOESFunPtr #-}
+
+glWeightPointerOES :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+glWeightPointerOES = ffiintenumsizeiPtrVIOV glWeightPointerOESFunPtr
+
+glWeightPointerOESFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
+glWeightPointerOESFunPtr = unsafePerformIO (getProcAddress "glWeightPointerOES")
+
+{-# NOINLINE glWeightPointerOESFunPtr #-}
+
+pattern GL_CURRENT_PALETTE_MATRIX_OES = 0x8843 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x8B9E :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_OES = 0x8844 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_POINTER_OES = 0x8849 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_SIZE_OES = 0x8846 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 0x8848 :: GLenum
+
+pattern GL_MATRIX_INDEX_ARRAY_TYPE_OES = 0x8847 :: GLenum
+
+pattern GL_MATRIX_PALETTE_OES = 0x8840 :: GLenum
+
+pattern GL_MAX_PALETTE_MATRICES_OES = 0x8842 :: GLenum
+
+pattern GL_MAX_VERTEX_UNITS_OES = 0x86A4 :: GLenum
+
+pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 0x889E :: GLenum
+
+pattern GL_WEIGHT_ARRAY_OES = 0x86AD :: GLenum
+
+pattern GL_WEIGHT_ARRAY_POINTER_OES = 0x86AC :: GLenum
+
+pattern GL_WEIGHT_ARRAY_SIZE_OES = 0x86AB :: GLenum
+
+pattern GL_WEIGHT_ARRAY_STRIDE_OES = 0x86AA :: GLenum
+
+pattern GL_WEIGHT_ARRAY_TYPE_OES = 0x86A9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PackedDepthStencil.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PackedDepthStencil.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PackedDepthStencil.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.PackedDepthStencil (
+  -- * Extension Support
+    gl_OES_packed_depth_stencil
+
+  -- * GL_OES_packed_depth_stencil
+  , pattern GL_DEPTH24_STENCIL8_OES
+  , pattern GL_DEPTH_STENCIL_OES
+  , pattern GL_UNSIGNED_INT_24_8_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_packed_depth_stencil :: Bool
+gl_OES_packed_depth_stencil = member "GL_OES_packed_depth_stencil" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PointSizeArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PointSizeArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PointSizeArray.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.PointSizeArray (
+  -- * Extension Support
+    gl_OES_point_size_array
+
+  -- * GL_OES_point_size_array
+  , glPointSizePointerOES
+  , pattern GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES
+  , pattern GL_POINT_SIZE_ARRAY_OES
+  , pattern GL_POINT_SIZE_ARRAY_POINTER_OES
+  , pattern GL_POINT_SIZE_ARRAY_STRIDE_OES
+  , pattern GL_POINT_SIZE_ARRAY_TYPE_OES
+) 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_OES_point_size_array :: Bool
+gl_OES_point_size_array = member "GL_OES_point_size_array" extensions
+
+glPointSizePointerOES :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
+glPointSizePointerOES = ffienumsizeiPtrVIOV glPointSizePointerOESFunPtr
+
+glPointSizePointerOESFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
+glPointSizePointerOESFunPtr = unsafePerformIO (getProcAddress "glPointSizePointerOES")
+
+{-# NOINLINE glPointSizePointerOESFunPtr #-}
+
+pattern GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 0x8B9F :: GLenum
+
+pattern GL_POINT_SIZE_ARRAY_OES = 0x8B9C :: GLenum
+
+pattern GL_POINT_SIZE_ARRAY_POINTER_OES = 0x898C :: GLenum
+
+pattern GL_POINT_SIZE_ARRAY_STRIDE_OES = 0x898B :: GLenum
+
+pattern GL_POINT_SIZE_ARRAY_TYPE_OES = 0x898A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PointSprite.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PointSprite.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/PointSprite.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.PointSprite (
+  -- * Extension Support
+    gl_OES_point_sprite
+
+  -- * GL_OES_point_sprite
+  , pattern GL_COORD_REPLACE_OES
+  , pattern GL_POINT_SPRITE_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_point_sprite :: Bool
+gl_OES_point_sprite = member "GL_OES_point_sprite" extensions
+
+pattern GL_COORD_REPLACE_OES = 0x8862 :: GLenum
+
+pattern GL_POINT_SPRITE_OES = 0x8861 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/QueryMatrix.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/QueryMatrix.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/QueryMatrix.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.QueryMatrix (
+  -- * Extension Support
+    gl_OES_query_matrix
+
+  -- * GL_OES_query_matrix
+  , glQueryMatrixxOES
+) 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_OES_query_matrix :: Bool
+gl_OES_query_matrix = member "GL_OES_query_matrix" extensions
+
+glQueryMatrixxOES :: MonadIO m => Ptr GLfixed -> Ptr GLint -> m GLbitfield
+glQueryMatrixxOES = ffiPtrfixedPtrintIObitfield glQueryMatrixxOESFunPtr
+
+glQueryMatrixxOESFunPtr :: FunPtr (Ptr GLfixed -> Ptr GLint -> IO GLbitfield)
+glQueryMatrixxOESFunPtr = unsafePerformIO (getProcAddress "glQueryMatrixxOES")
+
+{-# NOINLINE glQueryMatrixxOESFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ReadFormat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ReadFormat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ReadFormat.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.ReadFormat (
+  -- * Extension Support
+    gl_OES_read_format
+
+  -- * GL_OES_read_format
+  , pattern GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
+  , pattern GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_read_format :: Bool
+gl_OES_read_format = member "GL_OES_read_format" extensions
+
+pattern GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B :: GLenum
+
+pattern GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/RequiredInternalformat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/RequiredInternalformat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/RequiredInternalformat.hs
@@ -0,0 +1,39 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.RequiredInternalformat (
+  -- * Extension Support
+    gl_OES_required_internalformat
+
+  -- * GL_OES_required_internalformat
+  , pattern GL_ALPHA8_OES
+  , pattern GL_DEPTH24_STENCIL8_OES
+  , pattern GL_DEPTH_COMPONENT16_OES
+  , pattern GL_DEPTH_COMPONENT24_OES
+  , pattern GL_DEPTH_COMPONENT32_OES
+  , pattern GL_LUMINANCE4_ALPHA4_OES
+  , pattern GL_LUMINANCE8_ALPHA8_OES
+  , pattern GL_LUMINANCE8_OES
+  , pattern GL_RGB10_A2_EXT
+  , pattern GL_RGB10_EXT
+  , pattern GL_RGB565_OES
+  , pattern GL_RGB5_A1_OES
+  , pattern GL_RGB8_OES
+  , pattern GL_RGBA4_OES
+  , pattern GL_RGBA8_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_OES_required_internalformat :: Bool
+gl_OES_required_internalformat = member "GL_OES_required_internalformat" extensions
+
+pattern GL_ALPHA8_OES = 0x803C :: GLenum
+
+pattern GL_LUMINANCE4_ALPHA4_OES = 0x8043 :: GLenum
+
+pattern GL_LUMINANCE8_ALPHA8_OES = 0x8045 :: GLenum
+
+pattern GL_LUMINANCE8_OES = 0x8040 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Rgb8Rgba8.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Rgb8Rgba8.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Rgb8Rgba8.hs
@@ -0,0 +1,17 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Rgb8Rgba8 (
+  -- * Extension Support
+    gl_OES_rgb8_rgba8
+
+  -- * GL_OES_rgb8_rgba8
+  , pattern GL_RGB8_OES
+  , pattern GL_RGBA8_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_rgb8_rgba8 :: Bool
+gl_OES_rgb8_rgba8 = member "GL_OES_rgb8_rgba8" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SampleShading.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SampleShading.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SampleShading.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.SampleShading (
+  -- * Extension Support
+    gl_OES_sample_shading
+
+  -- * GL_OES_sample_shading
+  , glMinSampleShadingOES
+  , pattern GL_MIN_SAMPLE_SHADING_VALUE_OES
+  , pattern GL_SAMPLE_SHADING_OES
+) 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_OES_sample_shading :: Bool
+gl_OES_sample_shading = member "GL_OES_sample_shading" extensions
+
+glMinSampleShadingOES :: MonadIO m => GLfloat -> m ()
+glMinSampleShadingOES = ffifloatIOV glMinSampleShadingOESFunPtr
+
+glMinSampleShadingOESFunPtr :: FunPtr (GLfloat -> IO ())
+glMinSampleShadingOESFunPtr = unsafePerformIO (getProcAddress "glMinSampleShadingOES")
+
+{-# NOINLINE glMinSampleShadingOESFunPtr #-}
+
+pattern GL_MIN_SAMPLE_SHADING_VALUE_OES = 0x8C37 :: GLenum
+
+pattern GL_SAMPLE_SHADING_OES = 0x8C36 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SampleVariables.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SampleVariables.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SampleVariables.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.SampleVariables (
+  -- * Extension Support
+    gl_OES_sample_variables
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_sample_variables :: Bool
+gl_OES_sample_variables = member "GL_OES_sample_variables" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ShaderImageAtomic.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ShaderImageAtomic.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ShaderImageAtomic.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.ShaderImageAtomic (
+  -- * Extension Support
+    gl_OES_shader_image_atomic
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_shader_image_atomic :: Bool
+gl_OES_shader_image_atomic = member "GL_OES_shader_image_atomic" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ShaderMultisampleInterpolation.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ShaderMultisampleInterpolation.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/ShaderMultisampleInterpolation.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.ShaderMultisampleInterpolation (
+  -- * Extension Support
+    gl_OES_shader_multisample_interpolation
+
+  -- * GL_OES_shader_multisample_interpolation
+  , pattern GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES
+  , pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES
+  , pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_shader_multisample_interpolation :: Bool
+gl_OES_shader_multisample_interpolation = member "GL_OES_shader_multisample_interpolation" extensions
+
+pattern GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = 0x8E5D :: GLenum
+
+pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x8E5C :: GLenum
+
+pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x8E5B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SinglePrecision.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SinglePrecision.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SinglePrecision.hs
@@ -0,0 +1,73 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.SinglePrecision (
+  -- * Extension Support
+    gl_OES_single_precision
+
+  -- * GL_OES_single_precision
+  , glClearDepthfOES
+  , glClipPlanefOES
+  , glDepthRangefOES
+  , glFrustumfOES
+  , glGetClipPlanefOES
+  , glOrthofOES
+) 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_OES_single_precision :: Bool
+gl_OES_single_precision = member "GL_OES_single_precision" extensions
+
+glClearDepthfOES :: MonadIO m => GLclampf -> m ()
+glClearDepthfOES = fficlampfIOV glClearDepthfOESFunPtr
+
+glClearDepthfOESFunPtr :: FunPtr (GLclampf -> IO ())
+glClearDepthfOESFunPtr = unsafePerformIO (getProcAddress "glClearDepthfOES")
+
+{-# NOINLINE glClearDepthfOESFunPtr #-}
+
+glClipPlanefOES :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glClipPlanefOES = ffienumPtrfloatIOV glClipPlanefOESFunPtr
+
+glClipPlanefOESFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glClipPlanefOESFunPtr = unsafePerformIO (getProcAddress "glClipPlanefOES")
+
+{-# NOINLINE glClipPlanefOESFunPtr #-}
+
+glDepthRangefOES :: MonadIO m => GLclampf -> GLclampf -> m ()
+glDepthRangefOES = fficlampfclampfIOV glDepthRangefOESFunPtr
+
+glDepthRangefOESFunPtr :: FunPtr (GLclampf -> GLclampf -> IO ())
+glDepthRangefOESFunPtr = unsafePerformIO (getProcAddress "glDepthRangefOES")
+
+{-# NOINLINE glDepthRangefOESFunPtr #-}
+
+glFrustumfOES :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glFrustumfOES = ffifloatfloatfloatfloatfloatfloatIOV glFrustumfOESFunPtr
+
+glFrustumfOESFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glFrustumfOESFunPtr = unsafePerformIO (getProcAddress "glFrustumfOES")
+
+{-# NOINLINE glFrustumfOESFunPtr #-}
+
+glGetClipPlanefOES :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glGetClipPlanefOES = ffienumPtrfloatIOV glGetClipPlanefOESFunPtr
+
+glGetClipPlanefOESFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glGetClipPlanefOESFunPtr = unsafePerformIO (getProcAddress "glGetClipPlanefOES")
+
+{-# NOINLINE glGetClipPlanefOESFunPtr #-}
+
+glOrthofOES :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glOrthofOES = ffifloatfloatfloatfloatfloatfloatIOV glOrthofOESFunPtr
+
+glOrthofOESFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glOrthofOESFunPtr = unsafePerformIO (getProcAddress "glOrthofOES")
+
+{-# NOINLINE glOrthofOESFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/StandardDerivatives.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/StandardDerivatives.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/StandardDerivatives.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.StandardDerivatives (
+  -- * Extension Support
+    gl_OES_standard_derivatives
+
+  -- * GL_OES_standard_derivatives
+  , pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_standard_derivatives :: Bool
+gl_OES_standard_derivatives = member "GL_OES_standard_derivatives" extensions
+
+pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil1.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil1.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil1.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Stencil1 (
+  -- * Extension Support
+    gl_OES_stencil1
+
+  -- * GL_OES_stencil1
+  , pattern GL_STENCIL_INDEX1_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_stencil1 :: Bool
+gl_OES_stencil1 = member "GL_OES_stencil1" extensions
+
+pattern GL_STENCIL_INDEX1_OES = 0x8D46 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil4.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Stencil4 (
+  -- * Extension Support
+    gl_OES_stencil4
+
+  -- * GL_OES_stencil4
+  , pattern GL_STENCIL_INDEX4_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_stencil4 :: Bool
+gl_OES_stencil4 = member "GL_OES_stencil4" extensions
+
+pattern GL_STENCIL_INDEX4_OES = 0x8D47 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil8.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil8.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Stencil8.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Stencil8 (
+  -- * Extension Support
+    gl_OES_stencil8
+
+  -- * GL_OES_stencil8
+  , pattern GL_STENCIL_INDEX8_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_stencil8 :: Bool
+gl_OES_stencil8 = member "GL_OES_stencil8" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/StencilWrap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/StencilWrap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/StencilWrap.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.StencilWrap (
+  -- * Extension Support
+    gl_OES_stencil_wrap
+
+  -- * GL_OES_stencil_wrap
+  , pattern GL_DECR_WRAP_OES
+  , pattern GL_INCR_WRAP_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_stencil_wrap :: Bool
+gl_OES_stencil_wrap = member "GL_OES_stencil_wrap" extensions
+
+pattern GL_DECR_WRAP_OES = 0x8508 :: GLenum
+
+pattern GL_INCR_WRAP_OES = 0x8507 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SurfacelessContext.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SurfacelessContext.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/SurfacelessContext.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.SurfacelessContext (
+  -- * Extension Support
+    gl_OES_surfaceless_context
+
+  -- * GL_OES_surfaceless_context
+  , pattern GL_FRAMEBUFFER_UNDEFINED_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_surfaceless_context :: Bool
+gl_OES_surfaceless_context = member "GL_OES_surfaceless_context" extensions
+
+pattern GL_FRAMEBUFFER_UNDEFINED_OES = 0x8219 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Texture3D.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Texture3D.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/Texture3D.hs
@@ -0,0 +1,91 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.Texture3D (
+  -- * Extension Support
+    gl_OES_texture_3D
+
+  -- * GL_OES_texture_3D
+  , glCompressedTexImage3DOES
+  , glCompressedTexSubImage3DOES
+  , glCopyTexSubImage3DOES
+  , glFramebufferTexture3DOES
+  , glTexImage3DOES
+  , glTexSubImage3DOES
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES
+  , pattern GL_MAX_3D_TEXTURE_SIZE_OES
+  , pattern GL_SAMPLER_3D_OES
+  , pattern GL_TEXTURE_3D_OES
+  , pattern GL_TEXTURE_BINDING_3D_OES
+  , pattern GL_TEXTURE_WRAP_R_OES
+) 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_OES_texture_3D :: Bool
+gl_OES_texture_3D = member "GL_OES_texture_3D" extensions
+
+glCompressedTexImage3DOES :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+glCompressedTexImage3DOES = ffienumintenumsizeisizeisizeiintsizeiPtrVIOV glCompressedTexImage3DOESFunPtr
+
+glCompressedTexImage3DOESFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
+glCompressedTexImage3DOESFunPtr = unsafePerformIO (getProcAddress "glCompressedTexImage3DOES")
+
+{-# NOINLINE glCompressedTexImage3DOESFunPtr #-}
+
+glCompressedTexSubImage3DOES :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+glCompressedTexSubImage3DOES = ffienumintintintintsizeisizeisizeienumsizeiPtrVIOV glCompressedTexSubImage3DOESFunPtr
+
+glCompressedTexSubImage3DOESFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
+glCompressedTexSubImage3DOESFunPtr = unsafePerformIO (getProcAddress "glCompressedTexSubImage3DOES")
+
+{-# NOINLINE glCompressedTexSubImage3DOESFunPtr #-}
+
+glCopyTexSubImage3DOES :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glCopyTexSubImage3DOES = ffienumintintintintintintsizeisizeiIOV glCopyTexSubImage3DOESFunPtr
+
+glCopyTexSubImage3DOESFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glCopyTexSubImage3DOESFunPtr = unsafePerformIO (getProcAddress "glCopyTexSubImage3DOES")
+
+{-# NOINLINE glCopyTexSubImage3DOESFunPtr #-}
+
+glFramebufferTexture3DOES :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+glFramebufferTexture3DOES = ffienumenumenumuintintintIOV glFramebufferTexture3DOESFunPtr
+
+glFramebufferTexture3DOESFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
+glFramebufferTexture3DOESFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture3DOES")
+
+{-# NOINLINE glFramebufferTexture3DOESFunPtr #-}
+
+glTexImage3DOES :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glTexImage3DOES = ffienumintenumsizeisizeisizeiintenumenumPtrVIOV glTexImage3DOESFunPtr
+
+glTexImage3DOESFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexImage3DOESFunPtr = unsafePerformIO (getProcAddress "glTexImage3DOES")
+
+{-# NOINLINE glTexImage3DOESFunPtr #-}
+
+glTexSubImage3DOES :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTexSubImage3DOES = ffienumintintintintsizeisizeisizeienumenumPtrVIOV glTexSubImage3DOESFunPtr
+
+glTexSubImage3DOESFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexSubImage3DOESFunPtr = unsafePerformIO (getProcAddress "glTexSubImage3DOES")
+
+{-# NOINLINE glTexSubImage3DOESFunPtr #-}
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = 0x8CD4 :: GLenum
+
+pattern GL_MAX_3D_TEXTURE_SIZE_OES = 0x8073 :: GLenum
+
+pattern GL_SAMPLER_3D_OES = 0x8B5F :: GLenum
+
+pattern GL_TEXTURE_3D_OES = 0x806F :: GLenum
+
+pattern GL_TEXTURE_BINDING_3D_OES = 0x806A :: GLenum
+
+pattern GL_TEXTURE_WRAP_R_OES = 0x8072 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureCompressionAstc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureCompressionAstc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureCompressionAstc.hs
@@ -0,0 +1,104 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureCompressionAstc (
+  -- * Extension Support
+    gl_OES_texture_compression_astc
+
+  -- * GL_OES_texture_compression_astc
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x10_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x8_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x10_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x12_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_3x3x3_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_4x3x3_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_4x4_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_4x4x3_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_4x4x4_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x4_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x4x4_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x5x4_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x5x5_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x5x5_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x6x5_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x6x6_OES
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x5_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x6_KHR
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x8_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_OES_texture_compression_astc :: Bool
+gl_OES_texture_compression_astc = member "GL_OES_texture_compression_astc" extensions
+
+pattern GL_COMPRESSED_RGBA_ASTC_3x3x3_OES = 0x93C0 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_4x3x3_OES = 0x93C1 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_4x4x3_OES = 0x93C2 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_4x4x4_OES = 0x93C3 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_5x4x4_OES = 0x93C4 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_5x5x4_OES = 0x93C5 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_5x5x5_OES = 0x93C6 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_6x5x5_OES = 0x93C7 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_6x6x5_OES = 0x93C8 :: GLenum
+
+pattern GL_COMPRESSED_RGBA_ASTC_6x6x6_OES = 0x93C9 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES = 0x93E0 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES = 0x93E1 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES = 0x93E2 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES = 0x93E3 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES = 0x93E4 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES = 0x93E5 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES = 0x93E6 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES = 0x93E7 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES = 0x93E8 :: GLenum
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES = 0x93E9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureCubeMap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureCubeMap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureCubeMap.hs
@@ -0,0 +1,116 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureCubeMap (
+  -- * Extension Support
+    gl_OES_texture_cube_map
+
+  -- * GL_OES_texture_cube_map
+  , glGetTexGenfvOES
+  , glGetTexGenivOES
+  , glGetTexGenxvOES
+  , glTexGenfOES
+  , glTexGenfvOES
+  , glTexGeniOES
+  , glTexGenivOES
+  , glTexGenxOES
+  , glTexGenxvOES
+  , pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES
+  , pattern GL_NORMAL_MAP_OES
+  , pattern GL_REFLECTION_MAP_OES
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_OES
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES
+  , pattern GL_TEXTURE_CUBE_MAP_OES
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES
+  , pattern GL_TEXTURE_GEN_MODE_OES
+  , pattern GL_TEXTURE_GEN_STR_OES
+) 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_OES_texture_cube_map :: Bool
+gl_OES_texture_cube_map = member "GL_OES_texture_cube_map" extensions
+
+glGetTexGenfvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetTexGenfvOES = ffienumenumPtrfloatIOV glGetTexGenfvOESFunPtr
+
+glGetTexGenfvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetTexGenfvOESFunPtr = unsafePerformIO (getProcAddress "glGetTexGenfvOES")
+
+{-# NOINLINE glGetTexGenfvOESFunPtr #-}
+
+glGetTexGenivOES :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetTexGenivOES = ffienumenumPtrintIOV glGetTexGenivOESFunPtr
+
+glGetTexGenivOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetTexGenivOESFunPtr = unsafePerformIO (getProcAddress "glGetTexGenivOES")
+
+{-# NOINLINE glGetTexGenivOESFunPtr #-}
+
+glTexGenfOES :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
+glTexGenfOES = ffienumenumfloatIOV glTexGenfOESFunPtr
+
+glTexGenfOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
+glTexGenfOESFunPtr = unsafePerformIO (getProcAddress "glTexGenfOES")
+
+{-# NOINLINE glTexGenfOESFunPtr #-}
+
+glTexGenfvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glTexGenfvOES = ffienumenumPtrfloatIOV glTexGenfvOESFunPtr
+
+glTexGenfvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glTexGenfvOESFunPtr = unsafePerformIO (getProcAddress "glTexGenfvOES")
+
+{-# NOINLINE glTexGenfvOESFunPtr #-}
+
+glTexGeniOES :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glTexGeniOES = ffienumenumintIOV glTexGeniOESFunPtr
+
+glTexGeniOESFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glTexGeniOESFunPtr = unsafePerformIO (getProcAddress "glTexGeniOES")
+
+{-# NOINLINE glTexGeniOESFunPtr #-}
+
+glTexGenivOES :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glTexGenivOES = ffienumenumPtrintIOV glTexGenivOESFunPtr
+
+glTexGenivOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glTexGenivOESFunPtr = unsafePerformIO (getProcAddress "glTexGenivOES")
+
+{-# NOINLINE glTexGenivOESFunPtr #-}
+
+pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES = 0x851C :: GLenum
+
+pattern GL_NORMAL_MAP_OES = 0x8511 :: GLenum
+
+pattern GL_REFLECTION_MAP_OES = 0x8512 :: GLenum
+
+pattern GL_TEXTURE_BINDING_CUBE_MAP_OES = 0x8514 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = 0x8516 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = 0x8518 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = 0x851A :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_OES = 0x8513 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES = 0x8515 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = 0x8517 :: GLenum
+
+pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = 0x8519 :: GLenum
+
+pattern GL_TEXTURE_GEN_MODE_OES = 0x2500 :: GLenum
+
+pattern GL_TEXTURE_GEN_STR_OES = 0x8D60 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureEnvCrossbar.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureEnvCrossbar.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureEnvCrossbar.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureEnvCrossbar (
+  -- * Extension Support
+    gl_OES_texture_env_crossbar
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_texture_env_crossbar :: Bool
+gl_OES_texture_env_crossbar = member "GL_OES_texture_env_crossbar" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureFloat.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureFloat (
+  -- * Extension Support
+    gl_OES_texture_float
+
+  -- * GL_OES_texture_float
+  , pattern GL_FLOAT
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_texture_float :: Bool
+gl_OES_texture_float = member "GL_OES_texture_float" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureFloatLinear.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureFloatLinear.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureFloatLinear.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureFloatLinear (
+  -- * Extension Support
+    gl_OES_texture_float_linear
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_texture_float_linear :: Bool
+gl_OES_texture_float_linear = member "GL_OES_texture_float_linear" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureHalfFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureHalfFloat.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureHalfFloat (
+  -- * Extension Support
+    gl_OES_texture_half_float
+
+  -- * GL_OES_texture_half_float
+  , pattern GL_HALF_FLOAT_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_texture_half_float :: Bool
+gl_OES_texture_half_float = member "GL_OES_texture_half_float" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureHalfFloatLinear.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureHalfFloatLinear.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureHalfFloatLinear.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureHalfFloatLinear (
+  -- * Extension Support
+    gl_OES_texture_half_float_linear
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_texture_half_float_linear :: Bool
+gl_OES_texture_half_float_linear = member "GL_OES_texture_half_float_linear" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureMirroredRepeat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureMirroredRepeat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureMirroredRepeat.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureMirroredRepeat (
+  -- * Extension Support
+    gl_OES_texture_mirrored_repeat
+
+  -- * GL_OES_texture_mirrored_repeat
+  , pattern GL_MIRRORED_REPEAT_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_texture_mirrored_repeat :: Bool
+gl_OES_texture_mirrored_repeat = member "GL_OES_texture_mirrored_repeat" extensions
+
+pattern GL_MIRRORED_REPEAT_OES = 0x8370 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureNpot.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureNpot.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureNpot.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureNpot (
+  -- * Extension Support
+    gl_OES_texture_npot
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_OES_texture_npot :: Bool
+gl_OES_texture_npot = member "GL_OES_texture_npot" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureStencil8.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureStencil8.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureStencil8.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureStencil8 (
+  -- * Extension Support
+    gl_OES_texture_stencil8
+
+  -- * GL_OES_texture_stencil8
+  , pattern GL_STENCIL_INDEX8_OES
+  , pattern GL_STENCIL_INDEX_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+gl_OES_texture_stencil8 :: Bool
+gl_OES_texture_stencil8 = member "GL_OES_texture_stencil8" extensions
+
+pattern GL_STENCIL_INDEX_OES = 0x1901 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureStorageMultisample2dArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureStorageMultisample2dArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/TextureStorageMultisample2dArray.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.TextureStorageMultisample2dArray (
+  -- * Extension Support
+    gl_OES_texture_storage_multisample_2d_array
+
+  -- * GL_OES_texture_storage_multisample_2d_array
+  , glTexStorage3DMultisampleOES
+  , pattern GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES
+  , pattern GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES
+  , pattern GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES
+) 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_OES_texture_storage_multisample_2d_array :: Bool
+gl_OES_texture_storage_multisample_2d_array = member "GL_OES_texture_storage_multisample_2d_array" extensions
+
+glTexStorage3DMultisampleOES :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTexStorage3DMultisampleOES = ffienumsizeienumsizeisizeisizeibooleanIOV glTexStorage3DMultisampleOESFunPtr
+
+glTexStorage3DMultisampleOESFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTexStorage3DMultisampleOESFunPtr = unsafePerformIO (getProcAddress "glTexStorage3DMultisampleOES")
+
+{-# NOINLINE glTexStorage3DMultisampleOESFunPtr #-}
+
+pattern GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910C :: GLenum
+
+pattern GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910B :: GLenum
+
+pattern GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = 0x9102 :: GLenum
+
+pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = 0x9105 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexArrayObject.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexArrayObject.hs
@@ -0,0 +1,58 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.VertexArrayObject (
+  -- * Extension Support
+    gl_OES_vertex_array_object
+
+  -- * GL_OES_vertex_array_object
+  , glBindVertexArrayOES
+  , glDeleteVertexArraysOES
+  , glGenVertexArraysOES
+  , glIsVertexArrayOES
+  , pattern GL_VERTEX_ARRAY_BINDING_OES
+) 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_OES_vertex_array_object :: Bool
+gl_OES_vertex_array_object = member "GL_OES_vertex_array_object" extensions
+
+glBindVertexArrayOES :: MonadIO m => GLuint -> m ()
+glBindVertexArrayOES = ffiuintIOV glBindVertexArrayOESFunPtr
+
+glBindVertexArrayOESFunPtr :: FunPtr (GLuint -> IO ())
+glBindVertexArrayOESFunPtr = unsafePerformIO (getProcAddress "glBindVertexArrayOES")
+
+{-# NOINLINE glBindVertexArrayOESFunPtr #-}
+
+glDeleteVertexArraysOES :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glDeleteVertexArraysOES = ffisizeiPtruintIOV glDeleteVertexArraysOESFunPtr
+
+glDeleteVertexArraysOESFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glDeleteVertexArraysOESFunPtr = unsafePerformIO (getProcAddress "glDeleteVertexArraysOES")
+
+{-# NOINLINE glDeleteVertexArraysOESFunPtr #-}
+
+glGenVertexArraysOES :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
+glGenVertexArraysOES = ffisizeiPtruintIOV glGenVertexArraysOESFunPtr
+
+glGenVertexArraysOESFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
+glGenVertexArraysOESFunPtr = unsafePerformIO (getProcAddress "glGenVertexArraysOES")
+
+{-# NOINLINE glGenVertexArraysOESFunPtr #-}
+
+glIsVertexArrayOES :: MonadIO m => GLuint -> m GLboolean
+glIsVertexArrayOES = ffiuintIOboolean glIsVertexArrayOESFunPtr
+
+glIsVertexArrayOESFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsVertexArrayOESFunPtr = unsafePerformIO (getProcAddress "glIsVertexArrayOES")
+
+{-# NOINLINE glIsVertexArrayOESFunPtr #-}
+
+pattern GL_VERTEX_ARRAY_BINDING_OES = 0x85B5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexHalfFloat.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexHalfFloat.hs
@@ -0,0 +1,16 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.VertexHalfFloat (
+  -- * Extension Support
+    gl_OES_vertex_half_float
+
+  -- * GL_OES_vertex_half_float
+  , pattern GL_HALF_FLOAT_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Internal.Shared
+
+gl_OES_vertex_half_float :: Bool
+gl_OES_vertex_half_float = member "GL_OES_vertex_half_float" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexType1010102.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexType1010102.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OES/VertexType1010102.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OES.VertexType1010102 (
+  -- * Extension Support
+    gl_OES_vertex_type_10_10_10_2
+
+  -- * GL_OES_vertex_type_10_10_10_2
+  , pattern GL_INT_10_10_10_2_OES
+  , pattern GL_UNSIGNED_INT_10_10_10_2_OES
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OES_vertex_type_10_10_10_2 :: Bool
+gl_OES_vertex_type_10_10_10_2 = member "GL_OES_vertex_type_10_10_10_2" extensions
+
+pattern GL_INT_10_10_10_2_OES = 0x8DF7 :: GLenum
+
+pattern GL_UNSIGNED_INT_10_10_10_2_OES = 0x8DF6 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OML.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OML.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OML.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OML (
+  -- * OML Extensions
+    module Graphics.GL.Raw.Extension.OML.Interlace
+  , module Graphics.GL.Raw.Extension.OML.Resample
+  , module Graphics.GL.Raw.Extension.OML.Subsample
+) where
+
+import Graphics.GL.Raw.Extension.OML.Interlace
+import Graphics.GL.Raw.Extension.OML.Resample
+import Graphics.GL.Raw.Extension.OML.Subsample
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Interlace.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Interlace.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Interlace.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OML.Interlace (
+  -- * Extension Support
+    gl_OML_interlace
+
+  -- * GL_OML_interlace
+  , pattern GL_INTERLACE_OML
+  , pattern GL_INTERLACE_READ_OML
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OML_interlace :: Bool
+gl_OML_interlace = member "GL_OML_interlace" extensions
+
+pattern GL_INTERLACE_OML = 0x8980 :: GLenum
+
+pattern GL_INTERLACE_READ_OML = 0x8981 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Resample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Resample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Resample.hs
@@ -0,0 +1,33 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OML.Resample (
+  -- * Extension Support
+    gl_OML_resample
+
+  -- * GL_OML_resample
+  , pattern GL_PACK_RESAMPLE_OML
+  , pattern GL_RESAMPLE_AVERAGE_OML
+  , pattern GL_RESAMPLE_DECIMATE_OML
+  , pattern GL_RESAMPLE_REPLICATE_OML
+  , pattern GL_RESAMPLE_ZERO_FILL_OML
+  , pattern GL_UNPACK_RESAMPLE_OML
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OML_resample :: Bool
+gl_OML_resample = member "GL_OML_resample" extensions
+
+pattern GL_PACK_RESAMPLE_OML = 0x8984 :: GLenum
+
+pattern GL_RESAMPLE_AVERAGE_OML = 0x8988 :: GLenum
+
+pattern GL_RESAMPLE_DECIMATE_OML = 0x8989 :: GLenum
+
+pattern GL_RESAMPLE_REPLICATE_OML = 0x8986 :: GLenum
+
+pattern GL_RESAMPLE_ZERO_FILL_OML = 0x8987 :: GLenum
+
+pattern GL_UNPACK_RESAMPLE_OML = 0x8985 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Subsample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Subsample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/OML/Subsample.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.OML.Subsample (
+  -- * Extension Support
+    gl_OML_subsample
+
+  -- * GL_OML_subsample
+  , pattern GL_FORMAT_SUBSAMPLE_244_244_OML
+  , pattern GL_FORMAT_SUBSAMPLE_24_24_OML
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_OML_subsample :: Bool
+gl_OML_subsample = member "GL_OML_subsample" extensions
+
+pattern GL_FORMAT_SUBSAMPLE_244_244_OML = 0x8983 :: GLenum
+
+pattern GL_FORMAT_SUBSAMPLE_24_24_OML = 0x8982 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/PGI.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/PGI.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/PGI.hs
@@ -0,0 +1,10 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.PGI (
+  -- * PGI Extensions
+    module Graphics.GL.Raw.Extension.PGI.MiscHints
+  , module Graphics.GL.Raw.Extension.PGI.VertexHints
+) where
+
+import Graphics.GL.Raw.Extension.PGI.MiscHints
+import Graphics.GL.Raw.Extension.PGI.VertexHints
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/PGI/MiscHints.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/PGI/MiscHints.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/PGI/MiscHints.hs
@@ -0,0 +1,88 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.PGI.MiscHints (
+  -- * Extension Support
+    gl_PGI_misc_hints
+
+  -- * GL_PGI_misc_hints
+  , glHintPGI
+  , pattern GL_ALLOW_DRAW_FRG_HINT_PGI
+  , pattern GL_ALLOW_DRAW_MEM_HINT_PGI
+  , pattern GL_ALLOW_DRAW_OBJ_HINT_PGI
+  , pattern GL_ALLOW_DRAW_WIN_HINT_PGI
+  , pattern GL_ALWAYS_FAST_HINT_PGI
+  , pattern GL_ALWAYS_SOFT_HINT_PGI
+  , pattern GL_BACK_NORMALS_HINT_PGI
+  , pattern GL_CLIP_FAR_HINT_PGI
+  , pattern GL_CLIP_NEAR_HINT_PGI
+  , pattern GL_CONSERVE_MEMORY_HINT_PGI
+  , pattern GL_FULL_STIPPLE_HINT_PGI
+  , pattern GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI
+  , pattern GL_NATIVE_GRAPHICS_END_HINT_PGI
+  , pattern GL_NATIVE_GRAPHICS_HANDLE_PGI
+  , pattern GL_PREFER_DOUBLEBUFFER_HINT_PGI
+  , pattern GL_RECLAIM_MEMORY_HINT_PGI
+  , pattern GL_STRICT_DEPTHFUNC_HINT_PGI
+  , pattern GL_STRICT_LIGHTING_HINT_PGI
+  , pattern GL_STRICT_SCISSOR_HINT_PGI
+  , pattern GL_WIDE_LINE_HINT_PGI
+) 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_PGI_misc_hints :: Bool
+gl_PGI_misc_hints = member "GL_PGI_misc_hints" extensions
+
+glHintPGI :: MonadIO m => GLenum -> GLint -> m ()
+glHintPGI = ffienumintIOV glHintPGIFunPtr
+
+glHintPGIFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glHintPGIFunPtr = unsafePerformIO (getProcAddress "glHintPGI")
+
+{-# NOINLINE glHintPGIFunPtr #-}
+
+pattern GL_ALLOW_DRAW_FRG_HINT_PGI = 0x1A210 :: GLenum
+
+pattern GL_ALLOW_DRAW_MEM_HINT_PGI = 0x1A211 :: GLenum
+
+pattern GL_ALLOW_DRAW_OBJ_HINT_PGI = 0x1A20E :: GLenum
+
+pattern GL_ALLOW_DRAW_WIN_HINT_PGI = 0x1A20F :: GLenum
+
+pattern GL_ALWAYS_FAST_HINT_PGI = 0x1A20C :: GLenum
+
+pattern GL_ALWAYS_SOFT_HINT_PGI = 0x1A20D :: GLenum
+
+pattern GL_BACK_NORMALS_HINT_PGI = 0x1A223 :: GLenum
+
+pattern GL_CLIP_FAR_HINT_PGI = 0x1A221 :: GLenum
+
+pattern GL_CLIP_NEAR_HINT_PGI = 0x1A220 :: GLenum
+
+pattern GL_CONSERVE_MEMORY_HINT_PGI = 0x1A1FD :: GLenum
+
+pattern GL_FULL_STIPPLE_HINT_PGI = 0x1A219 :: GLenum
+
+pattern GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI = 0x1A203 :: GLenum
+
+pattern GL_NATIVE_GRAPHICS_END_HINT_PGI = 0x1A204 :: GLenum
+
+pattern GL_NATIVE_GRAPHICS_HANDLE_PGI = 0x1A202 :: GLenum
+
+pattern GL_PREFER_DOUBLEBUFFER_HINT_PGI = 0x1A1F8 :: GLenum
+
+pattern GL_RECLAIM_MEMORY_HINT_PGI = 0x1A1FE :: GLenum
+
+pattern GL_STRICT_DEPTHFUNC_HINT_PGI = 0x1A216 :: GLenum
+
+pattern GL_STRICT_LIGHTING_HINT_PGI = 0x1A217 :: GLenum
+
+pattern GL_STRICT_SCISSOR_HINT_PGI = 0x1A218 :: GLenum
+
+pattern GL_WIDE_LINE_HINT_PGI = 0x1A222 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/PGI/VertexHints.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/PGI/VertexHints.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/PGI/VertexHints.hs
@@ -0,0 +1,81 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.PGI.VertexHints (
+  -- * Extension Support
+    gl_PGI_vertex_hints
+
+  -- * GL_PGI_vertex_hints
+  , pattern GL_COLOR3_BIT_PGI
+  , pattern GL_COLOR4_BIT_PGI
+  , pattern GL_EDGEFLAG_BIT_PGI
+  , pattern GL_INDEX_BIT_PGI
+  , pattern GL_MATERIAL_SIDE_HINT_PGI
+  , pattern GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI
+  , pattern GL_MAT_AMBIENT_BIT_PGI
+  , pattern GL_MAT_COLOR_INDEXES_BIT_PGI
+  , pattern GL_MAT_DIFFUSE_BIT_PGI
+  , pattern GL_MAT_EMISSION_BIT_PGI
+  , pattern GL_MAT_SHININESS_BIT_PGI
+  , pattern GL_MAT_SPECULAR_BIT_PGI
+  , pattern GL_MAX_VERTEX_HINT_PGI
+  , pattern GL_NORMAL_BIT_PGI
+  , pattern GL_TEXCOORD1_BIT_PGI
+  , pattern GL_TEXCOORD2_BIT_PGI
+  , pattern GL_TEXCOORD3_BIT_PGI
+  , pattern GL_TEXCOORD4_BIT_PGI
+  , pattern GL_VERTEX23_BIT_PGI
+  , pattern GL_VERTEX4_BIT_PGI
+  , pattern GL_VERTEX_CONSISTENT_HINT_PGI
+  , pattern GL_VERTEX_DATA_HINT_PGI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_PGI_vertex_hints :: Bool
+gl_PGI_vertex_hints = member "GL_PGI_vertex_hints" extensions
+
+pattern GL_COLOR3_BIT_PGI = 0x00010000 :: GLenum
+
+pattern GL_COLOR4_BIT_PGI = 0x00020000 :: GLenum
+
+pattern GL_EDGEFLAG_BIT_PGI = 0x00040000 :: GLenum
+
+pattern GL_INDEX_BIT_PGI = 0x00080000 :: GLenum
+
+pattern GL_MATERIAL_SIDE_HINT_PGI = 0x1A22C :: GLenum
+
+pattern GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = 0x00200000 :: GLenum
+
+pattern GL_MAT_AMBIENT_BIT_PGI = 0x00100000 :: GLenum
+
+pattern GL_MAT_COLOR_INDEXES_BIT_PGI = 0x01000000 :: GLenum
+
+pattern GL_MAT_DIFFUSE_BIT_PGI = 0x00400000 :: GLenum
+
+pattern GL_MAT_EMISSION_BIT_PGI = 0x00800000 :: GLenum
+
+pattern GL_MAT_SHININESS_BIT_PGI = 0x02000000 :: GLenum
+
+pattern GL_MAT_SPECULAR_BIT_PGI = 0x04000000 :: GLenum
+
+pattern GL_MAX_VERTEX_HINT_PGI = 0x1A22D :: GLenum
+
+pattern GL_NORMAL_BIT_PGI = 0x08000000 :: GLenum
+
+pattern GL_TEXCOORD1_BIT_PGI = 0x10000000 :: GLenum
+
+pattern GL_TEXCOORD2_BIT_PGI = 0x20000000 :: GLenum
+
+pattern GL_TEXCOORD3_BIT_PGI = 0x40000000 :: GLenum
+
+pattern GL_TEXCOORD4_BIT_PGI = 0x80000000 :: GLenum
+
+pattern GL_VERTEX23_BIT_PGI = 0x00000004 :: GLenum
+
+pattern GL_VERTEX4_BIT_PGI = 0x00000008 :: GLenum
+
+pattern GL_VERTEX_CONSISTENT_HINT_PGI = 0x1A22B :: GLenum
+
+pattern GL_VERTEX_DATA_HINT_PGI = 0x1A22A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM.hs
@@ -0,0 +1,22 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM (
+  -- * QCOM Extensions
+    module Graphics.GL.Raw.Extension.QCOM.AlphaTest
+  , module Graphics.GL.Raw.Extension.QCOM.BinningControl
+  , module Graphics.GL.Raw.Extension.QCOM.DriverControl
+  , module Graphics.GL.Raw.Extension.QCOM.ExtendedGet
+  , module Graphics.GL.Raw.Extension.QCOM.ExtendedGet2
+  , module Graphics.GL.Raw.Extension.QCOM.PerfmonGlobalMode
+  , module Graphics.GL.Raw.Extension.QCOM.TiledRendering
+  , module Graphics.GL.Raw.Extension.QCOM.WriteonlyRendering
+) where
+
+import Graphics.GL.Raw.Extension.QCOM.AlphaTest
+import Graphics.GL.Raw.Extension.QCOM.BinningControl
+import Graphics.GL.Raw.Extension.QCOM.DriverControl
+import Graphics.GL.Raw.Extension.QCOM.ExtendedGet
+import Graphics.GL.Raw.Extension.QCOM.ExtendedGet2
+import Graphics.GL.Raw.Extension.QCOM.PerfmonGlobalMode
+import Graphics.GL.Raw.Extension.QCOM.TiledRendering
+import Graphics.GL.Raw.Extension.QCOM.WriteonlyRendering
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/AlphaTest.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/AlphaTest.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/AlphaTest.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.AlphaTest (
+  -- * Extension Support
+    gl_QCOM_alpha_test
+
+  -- * GL_QCOM_alpha_test
+  , glAlphaFuncQCOM
+  , pattern GL_ALPHA_TEST_FUNC_QCOM
+  , pattern GL_ALPHA_TEST_QCOM
+  , pattern GL_ALPHA_TEST_REF_QCOM
+) 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_QCOM_alpha_test :: Bool
+gl_QCOM_alpha_test = member "GL_QCOM_alpha_test" extensions
+
+glAlphaFuncQCOM :: MonadIO m => GLenum -> GLclampf -> m ()
+glAlphaFuncQCOM = ffienumclampfIOV glAlphaFuncQCOMFunPtr
+
+glAlphaFuncQCOMFunPtr :: FunPtr (GLenum -> GLclampf -> IO ())
+glAlphaFuncQCOMFunPtr = unsafePerformIO (getProcAddress "glAlphaFuncQCOM")
+
+{-# NOINLINE glAlphaFuncQCOMFunPtr #-}
+
+pattern GL_ALPHA_TEST_FUNC_QCOM = 0x0BC1 :: GLenum
+
+pattern GL_ALPHA_TEST_QCOM = 0x0BC0 :: GLenum
+
+pattern GL_ALPHA_TEST_REF_QCOM = 0x0BC2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/BinningControl.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/BinningControl.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/BinningControl.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.BinningControl (
+  -- * Extension Support
+    gl_QCOM_binning_control
+
+  -- * GL_QCOM_binning_control
+  , pattern GL_BINNING_CONTROL_HINT_QCOM
+  , pattern GL_CPU_OPTIMIZED_QCOM
+  , pattern GL_GPU_OPTIMIZED_QCOM
+  , pattern GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_QCOM_binning_control :: Bool
+gl_QCOM_binning_control = member "GL_QCOM_binning_control" extensions
+
+pattern GL_BINNING_CONTROL_HINT_QCOM = 0x8FB0 :: GLenum
+
+pattern GL_CPU_OPTIMIZED_QCOM = 0x8FB1 :: GLenum
+
+pattern GL_GPU_OPTIMIZED_QCOM = 0x8FB2 :: GLenum
+
+pattern GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM = 0x8FB3 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/DriverControl.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/DriverControl.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/DriverControl.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.DriverControl (
+  -- * Extension Support
+    gl_QCOM_driver_control
+
+  -- * GL_QCOM_driver_control
+  , glDisableDriverControlQCOM
+  , glEnableDriverControlQCOM
+  , glGetDriverControlStringQCOM
+  , glGetDriverControlsQCOM
+) 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_QCOM_driver_control :: Bool
+gl_QCOM_driver_control = member "GL_QCOM_driver_control" extensions
+
+glDisableDriverControlQCOM :: MonadIO m => GLuint -> m ()
+glDisableDriverControlQCOM = ffiuintIOV glDisableDriverControlQCOMFunPtr
+
+glDisableDriverControlQCOMFunPtr :: FunPtr (GLuint -> IO ())
+glDisableDriverControlQCOMFunPtr = unsafePerformIO (getProcAddress "glDisableDriverControlQCOM")
+
+{-# NOINLINE glDisableDriverControlQCOMFunPtr #-}
+
+glEnableDriverControlQCOM :: MonadIO m => GLuint -> m ()
+glEnableDriverControlQCOM = ffiuintIOV glEnableDriverControlQCOMFunPtr
+
+glEnableDriverControlQCOMFunPtr :: FunPtr (GLuint -> IO ())
+glEnableDriverControlQCOMFunPtr = unsafePerformIO (getProcAddress "glEnableDriverControlQCOM")
+
+{-# NOINLINE glEnableDriverControlQCOMFunPtr #-}
+
+glGetDriverControlStringQCOM :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+glGetDriverControlStringQCOM = ffiuintsizeiPtrsizeiPtrcharIOV glGetDriverControlStringQCOMFunPtr
+
+glGetDriverControlStringQCOMFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+glGetDriverControlStringQCOMFunPtr = unsafePerformIO (getProcAddress "glGetDriverControlStringQCOM")
+
+{-# NOINLINE glGetDriverControlStringQCOMFunPtr #-}
+
+glGetDriverControlsQCOM :: MonadIO m => Ptr GLint -> GLsizei -> Ptr GLuint -> m ()
+glGetDriverControlsQCOM = ffiPtrintsizeiPtruintIOV glGetDriverControlsQCOMFunPtr
+
+glGetDriverControlsQCOMFunPtr :: FunPtr (Ptr GLint -> GLsizei -> Ptr GLuint -> IO ())
+glGetDriverControlsQCOMFunPtr = unsafePerformIO (getProcAddress "glGetDriverControlsQCOM")
+
+{-# NOINLINE glGetDriverControlsQCOMFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/ExtendedGet.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/ExtendedGet.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/ExtendedGet.hs
@@ -0,0 +1,124 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.ExtendedGet (
+  -- * Extension Support
+    gl_QCOM_extended_get
+
+  -- * GL_QCOM_extended_get
+  , glExtGetBufferPointervQCOM
+  , glExtGetBuffersQCOM
+  , glExtGetFramebuffersQCOM
+  , glExtGetRenderbuffersQCOM
+  , glExtGetTexLevelParameterivQCOM
+  , glExtGetTexSubImageQCOM
+  , glExtGetTexturesQCOM
+  , glExtTexObjectStateOverrideiQCOM
+  , pattern GL_STATE_RESTORE
+  , pattern GL_TEXTURE_DEPTH_QCOM
+  , pattern GL_TEXTURE_FORMAT_QCOM
+  , pattern GL_TEXTURE_HEIGHT_QCOM
+  , pattern GL_TEXTURE_IMAGE_VALID_QCOM
+  , pattern GL_TEXTURE_INTERNAL_FORMAT_QCOM
+  , pattern GL_TEXTURE_NUM_LEVELS_QCOM
+  , pattern GL_TEXTURE_OBJECT_VALID_QCOM
+  , pattern GL_TEXTURE_TARGET_QCOM
+  , pattern GL_TEXTURE_TYPE_QCOM
+  , pattern GL_TEXTURE_WIDTH_QCOM
+) 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_QCOM_extended_get :: Bool
+gl_QCOM_extended_get = member "GL_QCOM_extended_get" extensions
+
+glExtGetBufferPointervQCOM :: MonadIO m => GLenum -> Ptr () -> m ()
+glExtGetBufferPointervQCOM = ffienumPtrVIOV glExtGetBufferPointervQCOMFunPtr
+
+glExtGetBufferPointervQCOMFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
+glExtGetBufferPointervQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetBufferPointervQCOM")
+
+{-# NOINLINE glExtGetBufferPointervQCOMFunPtr #-}
+
+glExtGetBuffersQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
+glExtGetBuffersQCOM = ffiPtruintintPtrintIOV glExtGetBuffersQCOMFunPtr
+
+glExtGetBuffersQCOMFunPtr :: FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ())
+glExtGetBuffersQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetBuffersQCOM")
+
+{-# NOINLINE glExtGetBuffersQCOMFunPtr #-}
+
+glExtGetFramebuffersQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
+glExtGetFramebuffersQCOM = ffiPtruintintPtrintIOV glExtGetFramebuffersQCOMFunPtr
+
+glExtGetFramebuffersQCOMFunPtr :: FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ())
+glExtGetFramebuffersQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetFramebuffersQCOM")
+
+{-# NOINLINE glExtGetFramebuffersQCOMFunPtr #-}
+
+glExtGetRenderbuffersQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
+glExtGetRenderbuffersQCOM = ffiPtruintintPtrintIOV glExtGetRenderbuffersQCOMFunPtr
+
+glExtGetRenderbuffersQCOMFunPtr :: FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ())
+glExtGetRenderbuffersQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetRenderbuffersQCOM")
+
+{-# NOINLINE glExtGetRenderbuffersQCOMFunPtr #-}
+
+glExtGetTexLevelParameterivQCOM :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
+glExtGetTexLevelParameterivQCOM = ffiuintenumintenumPtrintIOV glExtGetTexLevelParameterivQCOMFunPtr
+
+glExtGetTexLevelParameterivQCOMFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ())
+glExtGetTexLevelParameterivQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetTexLevelParameterivQCOM")
+
+{-# NOINLINE glExtGetTexLevelParameterivQCOMFunPtr #-}
+
+glExtGetTexSubImageQCOM :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glExtGetTexSubImageQCOM = ffienumintintintintsizeisizeisizeienumenumPtrVIOV glExtGetTexSubImageQCOMFunPtr
+
+glExtGetTexSubImageQCOMFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glExtGetTexSubImageQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetTexSubImageQCOM")
+
+{-# NOINLINE glExtGetTexSubImageQCOMFunPtr #-}
+
+glExtGetTexturesQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
+glExtGetTexturesQCOM = ffiPtruintintPtrintIOV glExtGetTexturesQCOMFunPtr
+
+glExtGetTexturesQCOMFunPtr :: FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ())
+glExtGetTexturesQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetTexturesQCOM")
+
+{-# NOINLINE glExtGetTexturesQCOMFunPtr #-}
+
+glExtTexObjectStateOverrideiQCOM :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glExtTexObjectStateOverrideiQCOM = ffienumenumintIOV glExtTexObjectStateOverrideiQCOMFunPtr
+
+glExtTexObjectStateOverrideiQCOMFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glExtTexObjectStateOverrideiQCOMFunPtr = unsafePerformIO (getProcAddress "glExtTexObjectStateOverrideiQCOM")
+
+{-# NOINLINE glExtTexObjectStateOverrideiQCOMFunPtr #-}
+
+pattern GL_STATE_RESTORE = 0x8BDC :: GLenum
+
+pattern GL_TEXTURE_DEPTH_QCOM = 0x8BD4 :: GLenum
+
+pattern GL_TEXTURE_FORMAT_QCOM = 0x8BD6 :: GLenum
+
+pattern GL_TEXTURE_HEIGHT_QCOM = 0x8BD3 :: GLenum
+
+pattern GL_TEXTURE_IMAGE_VALID_QCOM = 0x8BD8 :: GLenum
+
+pattern GL_TEXTURE_INTERNAL_FORMAT_QCOM = 0x8BD5 :: GLenum
+
+pattern GL_TEXTURE_NUM_LEVELS_QCOM = 0x8BD9 :: GLenum
+
+pattern GL_TEXTURE_OBJECT_VALID_QCOM = 0x8BDB :: GLenum
+
+pattern GL_TEXTURE_TARGET_QCOM = 0x8BDA :: GLenum
+
+pattern GL_TEXTURE_TYPE_QCOM = 0x8BD7 :: GLenum
+
+pattern GL_TEXTURE_WIDTH_QCOM = 0x8BD2 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/ExtendedGet2.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/ExtendedGet2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/ExtendedGet2.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.ExtendedGet2 (
+  -- * Extension Support
+    gl_QCOM_extended_get2
+
+  -- * GL_QCOM_extended_get2
+  , glExtGetProgramBinarySourceQCOM
+  , glExtGetProgramsQCOM
+  , glExtGetShadersQCOM
+  , glExtIsProgramBinaryQCOM
+) 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_QCOM_extended_get2 :: Bool
+gl_QCOM_extended_get2 = member "GL_QCOM_extended_get2" extensions
+
+glExtGetProgramBinarySourceQCOM :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> Ptr GLint -> m ()
+glExtGetProgramBinarySourceQCOM = ffiuintenumPtrcharPtrintIOV glExtGetProgramBinarySourceQCOMFunPtr
+
+glExtGetProgramBinarySourceQCOMFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> Ptr GLint -> IO ())
+glExtGetProgramBinarySourceQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetProgramBinarySourceQCOM")
+
+{-# NOINLINE glExtGetProgramBinarySourceQCOMFunPtr #-}
+
+glExtGetProgramsQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
+glExtGetProgramsQCOM = ffiPtruintintPtrintIOV glExtGetProgramsQCOMFunPtr
+
+glExtGetProgramsQCOMFunPtr :: FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ())
+glExtGetProgramsQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetProgramsQCOM")
+
+{-# NOINLINE glExtGetProgramsQCOMFunPtr #-}
+
+glExtGetShadersQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
+glExtGetShadersQCOM = ffiPtruintintPtrintIOV glExtGetShadersQCOMFunPtr
+
+glExtGetShadersQCOMFunPtr :: FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ())
+glExtGetShadersQCOMFunPtr = unsafePerformIO (getProcAddress "glExtGetShadersQCOM")
+
+{-# NOINLINE glExtGetShadersQCOMFunPtr #-}
+
+glExtIsProgramBinaryQCOM :: MonadIO m => GLuint -> m GLboolean
+glExtIsProgramBinaryQCOM = ffiuintIOboolean glExtIsProgramBinaryQCOMFunPtr
+
+glExtIsProgramBinaryQCOMFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glExtIsProgramBinaryQCOMFunPtr = unsafePerformIO (getProcAddress "glExtIsProgramBinaryQCOM")
+
+{-# NOINLINE glExtIsProgramBinaryQCOMFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/PerfmonGlobalMode.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/PerfmonGlobalMode.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/PerfmonGlobalMode.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.PerfmonGlobalMode (
+  -- * Extension Support
+    gl_QCOM_perfmon_global_mode
+
+  -- * GL_QCOM_perfmon_global_mode
+  , pattern GL_PERFMON_GLOBAL_MODE_QCOM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_QCOM_perfmon_global_mode :: Bool
+gl_QCOM_perfmon_global_mode = member "GL_QCOM_perfmon_global_mode" extensions
+
+pattern GL_PERFMON_GLOBAL_MODE_QCOM = 0x8FA0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/TiledRendering.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/TiledRendering.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/TiledRendering.hs
@@ -0,0 +1,133 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.TiledRendering (
+  -- * Extension Support
+    gl_QCOM_tiled_rendering
+
+  -- * GL_QCOM_tiled_rendering
+  , glEndTilingQCOM
+  , glStartTilingQCOM
+  , pattern GL_COLOR_BUFFER_BIT0_QCOM
+  , pattern GL_COLOR_BUFFER_BIT1_QCOM
+  , pattern GL_COLOR_BUFFER_BIT2_QCOM
+  , pattern GL_COLOR_BUFFER_BIT3_QCOM
+  , pattern GL_COLOR_BUFFER_BIT4_QCOM
+  , pattern GL_COLOR_BUFFER_BIT5_QCOM
+  , pattern GL_COLOR_BUFFER_BIT6_QCOM
+  , pattern GL_COLOR_BUFFER_BIT7_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT0_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT1_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT2_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT3_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT4_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT5_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT6_QCOM
+  , pattern GL_DEPTH_BUFFER_BIT7_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT0_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT1_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT2_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT3_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT4_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT5_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT6_QCOM
+  , pattern GL_MULTISAMPLE_BUFFER_BIT7_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT0_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT1_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT2_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT3_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT4_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT5_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT6_QCOM
+  , pattern GL_STENCIL_BUFFER_BIT7_QCOM
+) 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_QCOM_tiled_rendering :: Bool
+gl_QCOM_tiled_rendering = member "GL_QCOM_tiled_rendering" extensions
+
+glEndTilingQCOM :: MonadIO m => GLbitfield -> m ()
+glEndTilingQCOM = ffibitfieldIOV glEndTilingQCOMFunPtr
+
+glEndTilingQCOMFunPtr :: FunPtr (GLbitfield -> IO ())
+glEndTilingQCOMFunPtr = unsafePerformIO (getProcAddress "glEndTilingQCOM")
+
+{-# NOINLINE glEndTilingQCOMFunPtr #-}
+
+glStartTilingQCOM :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> GLbitfield -> m ()
+glStartTilingQCOM = ffiuintuintuintuintbitfieldIOV glStartTilingQCOMFunPtr
+
+glStartTilingQCOMFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLbitfield -> IO ())
+glStartTilingQCOMFunPtr = unsafePerformIO (getProcAddress "glStartTilingQCOM")
+
+{-# NOINLINE glStartTilingQCOMFunPtr #-}
+
+pattern GL_COLOR_BUFFER_BIT0_QCOM = 0x00000001 :: GLenum
+
+pattern GL_COLOR_BUFFER_BIT1_QCOM = 0x00000002 :: GLenum
+
+pattern GL_COLOR_BUFFER_BIT2_QCOM = 0x00000004 :: GLenum
+
+pattern GL_COLOR_BUFFER_BIT3_QCOM = 0x00000008 :: GLenum
+
+pattern GL_COLOR_BUFFER_BIT4_QCOM = 0x00000010 :: GLenum
+
+pattern GL_COLOR_BUFFER_BIT5_QCOM = 0x00000020 :: GLenum
+
+pattern GL_COLOR_BUFFER_BIT6_QCOM = 0x00000040 :: GLenum
+
+pattern GL_COLOR_BUFFER_BIT7_QCOM = 0x00000080 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT0_QCOM = 0x00000100 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT1_QCOM = 0x00000200 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT2_QCOM = 0x00000400 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT3_QCOM = 0x00000800 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT4_QCOM = 0x00001000 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT5_QCOM = 0x00002000 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT6_QCOM = 0x00004000 :: GLenum
+
+pattern GL_DEPTH_BUFFER_BIT7_QCOM = 0x00008000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT0_QCOM = 0x01000000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT1_QCOM = 0x02000000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT2_QCOM = 0x04000000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT3_QCOM = 0x08000000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT4_QCOM = 0x10000000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT5_QCOM = 0x20000000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT6_QCOM = 0x40000000 :: GLenum
+
+pattern GL_MULTISAMPLE_BUFFER_BIT7_QCOM = 0x80000000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT0_QCOM = 0x00010000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT1_QCOM = 0x00020000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT2_QCOM = 0x00040000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT3_QCOM = 0x00080000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT4_QCOM = 0x00100000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT5_QCOM = 0x00200000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT6_QCOM = 0x00400000 :: GLenum
+
+pattern GL_STENCIL_BUFFER_BIT7_QCOM = 0x00800000 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/WriteonlyRendering.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/WriteonlyRendering.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/QCOM/WriteonlyRendering.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.QCOM.WriteonlyRendering (
+  -- * Extension Support
+    gl_QCOM_writeonly_rendering
+
+  -- * GL_QCOM_writeonly_rendering
+  , pattern GL_WRITEONLY_RENDERING_QCOM
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_QCOM_writeonly_rendering :: Bool
+gl_QCOM_writeonly_rendering = member "GL_QCOM_writeonly_rendering" extensions
+
+pattern GL_WRITEONLY_RENDERING_QCOM = 0x8823 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/REND.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/REND.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/REND.hs
@@ -0,0 +1,8 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.REND (
+  -- * REND Extensions
+    module Graphics.GL.Raw.Extension.REND.ScreenCoordinates
+) where
+
+import Graphics.GL.Raw.Extension.REND.ScreenCoordinates
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/REND/ScreenCoordinates.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/REND/ScreenCoordinates.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/REND/ScreenCoordinates.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.REND.ScreenCoordinates (
+  -- * Extension Support
+    gl_REND_screen_coordinates
+
+  -- * GL_REND_screen_coordinates
+  , pattern GL_INVERTED_SCREEN_W_REND
+  , pattern GL_SCREEN_COORDINATES_REND
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_REND_screen_coordinates :: Bool
+gl_REND_screen_coordinates = member "GL_REND_screen_coordinates" extensions
+
+pattern GL_INVERTED_SCREEN_W_REND = 0x8491 :: GLenum
+
+pattern GL_SCREEN_COORDINATES_REND = 0x8490 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/S3.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/S3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/S3.hs
@@ -0,0 +1,8 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.S3 (
+  -- * S3 Extensions
+    module Graphics.GL.Raw.Extension.S3.S3tc
+) where
+
+import Graphics.GL.Raw.Extension.S3.S3tc
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/S3/S3tc.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/S3/S3tc.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/S3/S3tc.hs
@@ -0,0 +1,33 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.S3.S3tc (
+  -- * Extension Support
+    gl_S3_s3tc
+
+  -- * GL_S3_s3tc
+  , pattern GL_RGB4_S3TC
+  , pattern GL_RGBA4_DXT5_S3TC
+  , pattern GL_RGBA4_S3TC
+  , pattern GL_RGBA_DXT5_S3TC
+  , pattern GL_RGBA_S3TC
+  , pattern GL_RGB_S3TC
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_S3_s3tc :: Bool
+gl_S3_s3tc = member "GL_S3_s3tc" extensions
+
+pattern GL_RGB4_S3TC = 0x83A1 :: GLenum
+
+pattern GL_RGBA4_DXT5_S3TC = 0x83A5 :: GLenum
+
+pattern GL_RGBA4_S3TC = 0x83A3 :: GLenum
+
+pattern GL_RGBA_DXT5_S3TC = 0x83A4 :: GLenum
+
+pattern GL_RGBA_S3TC = 0x83A2 :: GLenum
+
+pattern GL_RGB_S3TC = 0x83A0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGI.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGI (
+  -- * SGI Extensions
+    module Graphics.GL.Raw.Extension.SGI.ColorMatrix
+  , module Graphics.GL.Raw.Extension.SGI.ColorTable
+  , module Graphics.GL.Raw.Extension.SGI.TextureColorTable
+) where
+
+import Graphics.GL.Raw.Extension.SGI.ColorMatrix
+import Graphics.GL.Raw.Extension.SGI.ColorTable
+import Graphics.GL.Raw.Extension.SGI.TextureColorTable
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/ColorMatrix.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/ColorMatrix.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/ColorMatrix.hs
@@ -0,0 +1,48 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGI.ColorMatrix (
+  -- * Extension Support
+    gl_SGI_color_matrix
+
+  -- * GL_SGI_color_matrix
+  , pattern GL_COLOR_MATRIX_SGI
+  , pattern GL_COLOR_MATRIX_STACK_DEPTH_SGI
+  , pattern GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
+  , pattern GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
+  , pattern GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
+  , pattern GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
+  , pattern GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
+  , pattern GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
+  , pattern GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
+  , pattern GL_POST_COLOR_MATRIX_RED_BIAS_SGI
+  , pattern GL_POST_COLOR_MATRIX_RED_SCALE_SGI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGI_color_matrix :: Bool
+gl_SGI_color_matrix = member "GL_SGI_color_matrix" extensions
+
+pattern GL_COLOR_MATRIX_SGI = 0x80B1 :: GLenum
+
+pattern GL_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B2 :: GLenum
+
+pattern GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B3 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x80BB :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x80B7 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x80BA :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x80B6 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x80B9 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x80B5 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_RED_BIAS_SGI = 0x80B8 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_RED_SCALE_SGI = 0x80B4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/ColorTable.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/ColorTable.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/ColorTable.hs
@@ -0,0 +1,130 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGI.ColorTable (
+  -- * Extension Support
+    gl_SGI_color_table
+
+  -- * GL_SGI_color_table
+  , glColorTableParameterfvSGI
+  , glColorTableParameterivSGI
+  , glColorTableSGI
+  , glCopyColorTableSGI
+  , glGetColorTableParameterfvSGI
+  , glGetColorTableParameterivSGI
+  , glGetColorTableSGI
+  , pattern GL_COLOR_TABLE_ALPHA_SIZE_SGI
+  , pattern GL_COLOR_TABLE_BIAS_SGI
+  , pattern GL_COLOR_TABLE_BLUE_SIZE_SGI
+  , pattern GL_COLOR_TABLE_FORMAT_SGI
+  , pattern GL_COLOR_TABLE_GREEN_SIZE_SGI
+  , pattern GL_COLOR_TABLE_INTENSITY_SIZE_SGI
+  , pattern GL_COLOR_TABLE_LUMINANCE_SIZE_SGI
+  , pattern GL_COLOR_TABLE_RED_SIZE_SGI
+  , pattern GL_COLOR_TABLE_SCALE_SGI
+  , pattern GL_COLOR_TABLE_SGI
+  , pattern GL_COLOR_TABLE_WIDTH_SGI
+  , pattern GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
+  , pattern GL_POST_CONVOLUTION_COLOR_TABLE_SGI
+  , pattern GL_PROXY_COLOR_TABLE_SGI
+  , pattern GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI
+  , pattern GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI
+) 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_SGI_color_table :: Bool
+gl_SGI_color_table = member "GL_SGI_color_table" extensions
+
+glColorTableParameterfvSGI :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glColorTableParameterfvSGI = ffienumenumPtrfloatIOV glColorTableParameterfvSGIFunPtr
+
+glColorTableParameterfvSGIFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glColorTableParameterfvSGIFunPtr = unsafePerformIO (getProcAddress "glColorTableParameterfvSGI")
+
+{-# NOINLINE glColorTableParameterfvSGIFunPtr #-}
+
+glColorTableParameterivSGI :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glColorTableParameterivSGI = ffienumenumPtrintIOV glColorTableParameterivSGIFunPtr
+
+glColorTableParameterivSGIFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glColorTableParameterivSGIFunPtr = unsafePerformIO (getProcAddress "glColorTableParameterivSGI")
+
+{-# NOINLINE glColorTableParameterivSGIFunPtr #-}
+
+glColorTableSGI :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glColorTableSGI = ffienumenumsizeienumenumPtrVIOV glColorTableSGIFunPtr
+
+glColorTableSGIFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glColorTableSGIFunPtr = unsafePerformIO (getProcAddress "glColorTableSGI")
+
+{-# NOINLINE glColorTableSGIFunPtr #-}
+
+glCopyColorTableSGI :: MonadIO m => GLenum -> GLenum -> GLint -> GLint -> GLsizei -> m ()
+glCopyColorTableSGI = ffienumenumintintsizeiIOV glCopyColorTableSGIFunPtr
+
+glCopyColorTableSGIFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> IO ())
+glCopyColorTableSGIFunPtr = unsafePerformIO (getProcAddress "glCopyColorTableSGI")
+
+{-# NOINLINE glCopyColorTableSGIFunPtr #-}
+
+glGetColorTableParameterfvSGI :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetColorTableParameterfvSGI = ffienumenumPtrfloatIOV glGetColorTableParameterfvSGIFunPtr
+
+glGetColorTableParameterfvSGIFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetColorTableParameterfvSGIFunPtr = unsafePerformIO (getProcAddress "glGetColorTableParameterfvSGI")
+
+{-# NOINLINE glGetColorTableParameterfvSGIFunPtr #-}
+
+glGetColorTableParameterivSGI :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetColorTableParameterivSGI = ffienumenumPtrintIOV glGetColorTableParameterivSGIFunPtr
+
+glGetColorTableParameterivSGIFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetColorTableParameterivSGIFunPtr = unsafePerformIO (getProcAddress "glGetColorTableParameterivSGI")
+
+{-# NOINLINE glGetColorTableParameterivSGIFunPtr #-}
+
+glGetColorTableSGI :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+glGetColorTableSGI = ffienumenumenumPtrVIOV glGetColorTableSGIFunPtr
+
+glGetColorTableSGIFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
+glGetColorTableSGIFunPtr = unsafePerformIO (getProcAddress "glGetColorTableSGI")
+
+{-# NOINLINE glGetColorTableSGIFunPtr #-}
+
+pattern GL_COLOR_TABLE_ALPHA_SIZE_SGI = 0x80DD :: GLenum
+
+pattern GL_COLOR_TABLE_BIAS_SGI = 0x80D7 :: GLenum
+
+pattern GL_COLOR_TABLE_BLUE_SIZE_SGI = 0x80DC :: GLenum
+
+pattern GL_COLOR_TABLE_FORMAT_SGI = 0x80D8 :: GLenum
+
+pattern GL_COLOR_TABLE_GREEN_SIZE_SGI = 0x80DB :: GLenum
+
+pattern GL_COLOR_TABLE_INTENSITY_SIZE_SGI = 0x80DF :: GLenum
+
+pattern GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = 0x80DE :: GLenum
+
+pattern GL_COLOR_TABLE_RED_SIZE_SGI = 0x80DA :: GLenum
+
+pattern GL_COLOR_TABLE_SCALE_SGI = 0x80D6 :: GLenum
+
+pattern GL_COLOR_TABLE_SGI = 0x80D0 :: GLenum
+
+pattern GL_COLOR_TABLE_WIDTH_SGI = 0x80D9 :: GLenum
+
+pattern GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D2 :: GLenum
+
+pattern GL_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D1 :: GLenum
+
+pattern GL_PROXY_COLOR_TABLE_SGI = 0x80D3 :: GLenum
+
+pattern GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D5 :: GLenum
+
+pattern GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/TextureColorTable.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/TextureColorTable.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGI/TextureColorTable.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGI.TextureColorTable (
+  -- * Extension Support
+    gl_SGI_texture_color_table
+
+  -- * GL_SGI_texture_color_table
+  , pattern GL_PROXY_TEXTURE_COLOR_TABLE_SGI
+  , pattern GL_TEXTURE_COLOR_TABLE_SGI
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGI_texture_color_table :: Bool
+gl_SGI_texture_color_table = member "GL_SGI_texture_color_table" extensions
+
+pattern GL_PROXY_TEXTURE_COLOR_TABLE_SGI = 0x80BD :: GLenum
+
+pattern GL_TEXTURE_COLOR_TABLE_SGI = 0x80BC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS.hs
@@ -0,0 +1,36 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS (
+  -- * SGIS Extensions
+    module Graphics.GL.Raw.Extension.SGIS.DetailTexture
+  , module Graphics.GL.Raw.Extension.SGIS.FogFunction
+  , module Graphics.GL.Raw.Extension.SGIS.GenerateMipmap
+  , module Graphics.GL.Raw.Extension.SGIS.Multisample
+  , module Graphics.GL.Raw.Extension.SGIS.PixelTexture
+  , module Graphics.GL.Raw.Extension.SGIS.PointLineTexgen
+  , module Graphics.GL.Raw.Extension.SGIS.PointParameters
+  , module Graphics.GL.Raw.Extension.SGIS.SharpenTexture
+  , module Graphics.GL.Raw.Extension.SGIS.Texture4D
+  , module Graphics.GL.Raw.Extension.SGIS.TextureBorderClamp
+  , module Graphics.GL.Raw.Extension.SGIS.TextureColorMask
+  , module Graphics.GL.Raw.Extension.SGIS.TextureEdgeClamp
+  , module Graphics.GL.Raw.Extension.SGIS.TextureFilter4
+  , module Graphics.GL.Raw.Extension.SGIS.TextureLod
+  , module Graphics.GL.Raw.Extension.SGIS.TextureSelect
+) where
+
+import Graphics.GL.Raw.Extension.SGIS.DetailTexture
+import Graphics.GL.Raw.Extension.SGIS.FogFunction
+import Graphics.GL.Raw.Extension.SGIS.GenerateMipmap
+import Graphics.GL.Raw.Extension.SGIS.Multisample
+import Graphics.GL.Raw.Extension.SGIS.PixelTexture
+import Graphics.GL.Raw.Extension.SGIS.PointLineTexgen
+import Graphics.GL.Raw.Extension.SGIS.PointParameters
+import Graphics.GL.Raw.Extension.SGIS.SharpenTexture
+import Graphics.GL.Raw.Extension.SGIS.Texture4D
+import Graphics.GL.Raw.Extension.SGIS.TextureBorderClamp
+import Graphics.GL.Raw.Extension.SGIS.TextureColorMask
+import Graphics.GL.Raw.Extension.SGIS.TextureEdgeClamp
+import Graphics.GL.Raw.Extension.SGIS.TextureFilter4
+import Graphics.GL.Raw.Extension.SGIS.TextureLod
+import Graphics.GL.Raw.Extension.SGIS.TextureSelect
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/DetailTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/DetailTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/DetailTexture.hs
@@ -0,0 +1,61 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.DetailTexture (
+  -- * Extension Support
+    gl_SGIS_detail_texture
+
+  -- * GL_SGIS_detail_texture
+  , glDetailTexFuncSGIS
+  , glGetDetailTexFuncSGIS
+  , pattern GL_DETAIL_TEXTURE_2D_BINDING_SGIS
+  , pattern GL_DETAIL_TEXTURE_2D_SGIS
+  , pattern GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS
+  , pattern GL_DETAIL_TEXTURE_LEVEL_SGIS
+  , pattern GL_DETAIL_TEXTURE_MODE_SGIS
+  , pattern GL_LINEAR_DETAIL_ALPHA_SGIS
+  , pattern GL_LINEAR_DETAIL_COLOR_SGIS
+  , pattern GL_LINEAR_DETAIL_SGIS
+) 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_SGIS_detail_texture :: Bool
+gl_SGIS_detail_texture = member "GL_SGIS_detail_texture" extensions
+
+glDetailTexFuncSGIS :: MonadIO m => GLenum -> GLsizei -> Ptr GLfloat -> m ()
+glDetailTexFuncSGIS = ffienumsizeiPtrfloatIOV glDetailTexFuncSGISFunPtr
+
+glDetailTexFuncSGISFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+glDetailTexFuncSGISFunPtr = unsafePerformIO (getProcAddress "glDetailTexFuncSGIS")
+
+{-# NOINLINE glDetailTexFuncSGISFunPtr #-}
+
+glGetDetailTexFuncSGIS :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glGetDetailTexFuncSGIS = ffienumPtrfloatIOV glGetDetailTexFuncSGISFunPtr
+
+glGetDetailTexFuncSGISFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glGetDetailTexFuncSGISFunPtr = unsafePerformIO (getProcAddress "glGetDetailTexFuncSGIS")
+
+{-# NOINLINE glGetDetailTexFuncSGISFunPtr #-}
+
+pattern GL_DETAIL_TEXTURE_2D_BINDING_SGIS = 0x8096 :: GLenum
+
+pattern GL_DETAIL_TEXTURE_2D_SGIS = 0x8095 :: GLenum
+
+pattern GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x809C :: GLenum
+
+pattern GL_DETAIL_TEXTURE_LEVEL_SGIS = 0x809A :: GLenum
+
+pattern GL_DETAIL_TEXTURE_MODE_SGIS = 0x809B :: GLenum
+
+pattern GL_LINEAR_DETAIL_ALPHA_SGIS = 0x8098 :: GLenum
+
+pattern GL_LINEAR_DETAIL_COLOR_SGIS = 0x8099 :: GLenum
+
+pattern GL_LINEAR_DETAIL_SGIS = 0x8097 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/FogFunction.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/FogFunction.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/FogFunction.hs
@@ -0,0 +1,46 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.FogFunction (
+  -- * Extension Support
+    gl_SGIS_fog_function
+
+  -- * GL_SGIS_fog_function
+  , glFogFuncSGIS
+  , glGetFogFuncSGIS
+  , pattern GL_FOG_FUNC_POINTS_SGIS
+  , pattern GL_FOG_FUNC_SGIS
+  , pattern GL_MAX_FOG_FUNC_POINTS_SGIS
+) 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_SGIS_fog_function :: Bool
+gl_SGIS_fog_function = member "GL_SGIS_fog_function" extensions
+
+glFogFuncSGIS :: MonadIO m => GLsizei -> Ptr GLfloat -> m ()
+glFogFuncSGIS = ffisizeiPtrfloatIOV glFogFuncSGISFunPtr
+
+glFogFuncSGISFunPtr :: FunPtr (GLsizei -> Ptr GLfloat -> IO ())
+glFogFuncSGISFunPtr = unsafePerformIO (getProcAddress "glFogFuncSGIS")
+
+{-# NOINLINE glFogFuncSGISFunPtr #-}
+
+glGetFogFuncSGIS :: MonadIO m => Ptr GLfloat -> m ()
+glGetFogFuncSGIS = ffiPtrfloatIOV glGetFogFuncSGISFunPtr
+
+glGetFogFuncSGISFunPtr :: FunPtr (Ptr GLfloat -> IO ())
+glGetFogFuncSGISFunPtr = unsafePerformIO (getProcAddress "glGetFogFuncSGIS")
+
+{-# NOINLINE glGetFogFuncSGISFunPtr #-}
+
+pattern GL_FOG_FUNC_POINTS_SGIS = 0x812B :: GLenum
+
+pattern GL_FOG_FUNC_SGIS = 0x812A :: GLenum
+
+pattern GL_MAX_FOG_FUNC_POINTS_SGIS = 0x812C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/GenerateMipmap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/GenerateMipmap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/GenerateMipmap.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.GenerateMipmap (
+  -- * Extension Support
+    gl_SGIS_generate_mipmap
+
+  -- * GL_SGIS_generate_mipmap
+  , pattern GL_GENERATE_MIPMAP_HINT_SGIS
+  , pattern GL_GENERATE_MIPMAP_SGIS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIS_generate_mipmap :: Bool
+gl_SGIS_generate_mipmap = member "GL_SGIS_generate_mipmap" extensions
+
+pattern GL_GENERATE_MIPMAP_HINT_SGIS = 0x8192 :: GLenum
+
+pattern GL_GENERATE_MIPMAP_SGIS = 0x8191 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/Multisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/Multisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/Multisample.hs
@@ -0,0 +1,85 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.Multisample (
+  -- * Extension Support
+    gl_SGIS_multisample
+
+  -- * GL_SGIS_multisample
+  , glSampleMaskSGIS
+  , glSamplePatternSGIS
+  , pattern GL_1PASS_SGIS
+  , pattern GL_2PASS_0_SGIS
+  , pattern GL_2PASS_1_SGIS
+  , pattern GL_4PASS_0_SGIS
+  , pattern GL_4PASS_1_SGIS
+  , pattern GL_4PASS_2_SGIS
+  , pattern GL_4PASS_3_SGIS
+  , pattern GL_MULTISAMPLE_SGIS
+  , pattern GL_SAMPLES_SGIS
+  , pattern GL_SAMPLE_ALPHA_TO_MASK_SGIS
+  , pattern GL_SAMPLE_ALPHA_TO_ONE_SGIS
+  , pattern GL_SAMPLE_BUFFERS_SGIS
+  , pattern GL_SAMPLE_MASK_INVERT_SGIS
+  , pattern GL_SAMPLE_MASK_SGIS
+  , pattern GL_SAMPLE_MASK_VALUE_SGIS
+  , pattern GL_SAMPLE_PATTERN_SGIS
+) 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_SGIS_multisample :: Bool
+gl_SGIS_multisample = member "GL_SGIS_multisample" extensions
+
+glSampleMaskSGIS :: MonadIO m => GLclampf -> GLboolean -> m ()
+glSampleMaskSGIS = fficlampfbooleanIOV glSampleMaskSGISFunPtr
+
+glSampleMaskSGISFunPtr :: FunPtr (GLclampf -> GLboolean -> IO ())
+glSampleMaskSGISFunPtr = unsafePerformIO (getProcAddress "glSampleMaskSGIS")
+
+{-# NOINLINE glSampleMaskSGISFunPtr #-}
+
+glSamplePatternSGIS :: MonadIO m => GLenum -> m ()
+glSamplePatternSGIS = ffienumIOV glSamplePatternSGISFunPtr
+
+glSamplePatternSGISFunPtr :: FunPtr (GLenum -> IO ())
+glSamplePatternSGISFunPtr = unsafePerformIO (getProcAddress "glSamplePatternSGIS")
+
+{-# NOINLINE glSamplePatternSGISFunPtr #-}
+
+pattern GL_1PASS_SGIS = 0x80A1 :: GLenum
+
+pattern GL_2PASS_0_SGIS = 0x80A2 :: GLenum
+
+pattern GL_2PASS_1_SGIS = 0x80A3 :: GLenum
+
+pattern GL_4PASS_0_SGIS = 0x80A4 :: GLenum
+
+pattern GL_4PASS_1_SGIS = 0x80A5 :: GLenum
+
+pattern GL_4PASS_2_SGIS = 0x80A6 :: GLenum
+
+pattern GL_4PASS_3_SGIS = 0x80A7 :: GLenum
+
+pattern GL_MULTISAMPLE_SGIS = 0x809D :: GLenum
+
+pattern GL_SAMPLES_SGIS = 0x80A9 :: GLenum
+
+pattern GL_SAMPLE_ALPHA_TO_MASK_SGIS = 0x809E :: GLenum
+
+pattern GL_SAMPLE_ALPHA_TO_ONE_SGIS = 0x809F :: GLenum
+
+pattern GL_SAMPLE_BUFFERS_SGIS = 0x80A8 :: GLenum
+
+pattern GL_SAMPLE_MASK_INVERT_SGIS = 0x80AB :: GLenum
+
+pattern GL_SAMPLE_MASK_SGIS = 0x80A0 :: GLenum
+
+pattern GL_SAMPLE_MASK_VALUE_SGIS = 0x80AA :: GLenum
+
+pattern GL_SAMPLE_PATTERN_SGIS = 0x80AC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PixelTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PixelTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PixelTexture.hs
@@ -0,0 +1,85 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.PixelTexture (
+  -- * Extension Support
+    gl_SGIS_pixel_texture
+
+  -- * GL_SGIS_pixel_texture
+  , glGetPixelTexGenParameterfvSGIS
+  , glGetPixelTexGenParameterivSGIS
+  , glPixelTexGenParameterfSGIS
+  , glPixelTexGenParameterfvSGIS
+  , glPixelTexGenParameteriSGIS
+  , glPixelTexGenParameterivSGIS
+  , pattern GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS
+  , pattern GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS
+  , pattern GL_PIXEL_GROUP_COLOR_SGIS
+  , pattern GL_PIXEL_TEXTURE_SGIS
+) 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_SGIS_pixel_texture :: Bool
+gl_SGIS_pixel_texture = member "GL_SGIS_pixel_texture" extensions
+
+glGetPixelTexGenParameterfvSGIS :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glGetPixelTexGenParameterfvSGIS = ffienumPtrfloatIOV glGetPixelTexGenParameterfvSGISFunPtr
+
+glGetPixelTexGenParameterfvSGISFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glGetPixelTexGenParameterfvSGISFunPtr = unsafePerformIO (getProcAddress "glGetPixelTexGenParameterfvSGIS")
+
+{-# NOINLINE glGetPixelTexGenParameterfvSGISFunPtr #-}
+
+glGetPixelTexGenParameterivSGIS :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glGetPixelTexGenParameterivSGIS = ffienumPtrintIOV glGetPixelTexGenParameterivSGISFunPtr
+
+glGetPixelTexGenParameterivSGISFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glGetPixelTexGenParameterivSGISFunPtr = unsafePerformIO (getProcAddress "glGetPixelTexGenParameterivSGIS")
+
+{-# NOINLINE glGetPixelTexGenParameterivSGISFunPtr #-}
+
+glPixelTexGenParameterfSGIS :: MonadIO m => GLenum -> GLfloat -> m ()
+glPixelTexGenParameterfSGIS = ffienumfloatIOV glPixelTexGenParameterfSGISFunPtr
+
+glPixelTexGenParameterfSGISFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glPixelTexGenParameterfSGISFunPtr = unsafePerformIO (getProcAddress "glPixelTexGenParameterfSGIS")
+
+{-# NOINLINE glPixelTexGenParameterfSGISFunPtr #-}
+
+glPixelTexGenParameterfvSGIS :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glPixelTexGenParameterfvSGIS = ffienumPtrfloatIOV glPixelTexGenParameterfvSGISFunPtr
+
+glPixelTexGenParameterfvSGISFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glPixelTexGenParameterfvSGISFunPtr = unsafePerformIO (getProcAddress "glPixelTexGenParameterfvSGIS")
+
+{-# NOINLINE glPixelTexGenParameterfvSGISFunPtr #-}
+
+glPixelTexGenParameteriSGIS :: MonadIO m => GLenum -> GLint -> m ()
+glPixelTexGenParameteriSGIS = ffienumintIOV glPixelTexGenParameteriSGISFunPtr
+
+glPixelTexGenParameteriSGISFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glPixelTexGenParameteriSGISFunPtr = unsafePerformIO (getProcAddress "glPixelTexGenParameteriSGIS")
+
+{-# NOINLINE glPixelTexGenParameteriSGISFunPtr #-}
+
+glPixelTexGenParameterivSGIS :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glPixelTexGenParameterivSGIS = ffienumPtrintIOV glPixelTexGenParameterivSGISFunPtr
+
+glPixelTexGenParameterivSGISFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glPixelTexGenParameterivSGISFunPtr = unsafePerformIO (getProcAddress "glPixelTexGenParameterivSGIS")
+
+{-# NOINLINE glPixelTexGenParameterivSGISFunPtr #-}
+
+pattern GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = 0x8355 :: GLenum
+
+pattern GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = 0x8354 :: GLenum
+
+pattern GL_PIXEL_GROUP_COLOR_SGIS = 0x8356 :: GLenum
+
+pattern GL_PIXEL_TEXTURE_SGIS = 0x8353 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PointLineTexgen.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PointLineTexgen.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PointLineTexgen.hs
@@ -0,0 +1,39 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.PointLineTexgen (
+  -- * Extension Support
+    gl_SGIS_point_line_texgen
+
+  -- * GL_SGIS_point_line_texgen
+  , pattern GL_EYE_DISTANCE_TO_LINE_SGIS
+  , pattern GL_EYE_DISTANCE_TO_POINT_SGIS
+  , pattern GL_EYE_LINE_SGIS
+  , pattern GL_EYE_POINT_SGIS
+  , pattern GL_OBJECT_DISTANCE_TO_LINE_SGIS
+  , pattern GL_OBJECT_DISTANCE_TO_POINT_SGIS
+  , pattern GL_OBJECT_LINE_SGIS
+  , pattern GL_OBJECT_POINT_SGIS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIS_point_line_texgen :: Bool
+gl_SGIS_point_line_texgen = member "GL_SGIS_point_line_texgen" extensions
+
+pattern GL_EYE_DISTANCE_TO_LINE_SGIS = 0x81F2 :: GLenum
+
+pattern GL_EYE_DISTANCE_TO_POINT_SGIS = 0x81F0 :: GLenum
+
+pattern GL_EYE_LINE_SGIS = 0x81F6 :: GLenum
+
+pattern GL_EYE_POINT_SGIS = 0x81F4 :: GLenum
+
+pattern GL_OBJECT_DISTANCE_TO_LINE_SGIS = 0x81F3 :: GLenum
+
+pattern GL_OBJECT_DISTANCE_TO_POINT_SGIS = 0x81F1 :: GLenum
+
+pattern GL_OBJECT_LINE_SGIS = 0x81F7 :: GLenum
+
+pattern GL_OBJECT_POINT_SGIS = 0x81F5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PointParameters.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PointParameters.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/PointParameters.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.PointParameters (
+  -- * Extension Support
+    gl_SGIS_point_parameters
+
+  -- * GL_SGIS_point_parameters
+  , glPointParameterfSGIS
+  , glPointParameterfvSGIS
+  , pattern GL_DISTANCE_ATTENUATION_SGIS
+  , pattern GL_POINT_FADE_THRESHOLD_SIZE_SGIS
+  , pattern GL_POINT_SIZE_MAX_SGIS
+  , pattern GL_POINT_SIZE_MIN_SGIS
+) 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_SGIS_point_parameters :: Bool
+gl_SGIS_point_parameters = member "GL_SGIS_point_parameters" extensions
+
+glPointParameterfSGIS :: MonadIO m => GLenum -> GLfloat -> m ()
+glPointParameterfSGIS = ffienumfloatIOV glPointParameterfSGISFunPtr
+
+glPointParameterfSGISFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glPointParameterfSGISFunPtr = unsafePerformIO (getProcAddress "glPointParameterfSGIS")
+
+{-# NOINLINE glPointParameterfSGISFunPtr #-}
+
+glPointParameterfvSGIS :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glPointParameterfvSGIS = ffienumPtrfloatIOV glPointParameterfvSGISFunPtr
+
+glPointParameterfvSGISFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glPointParameterfvSGISFunPtr = unsafePerformIO (getProcAddress "glPointParameterfvSGIS")
+
+{-# NOINLINE glPointParameterfvSGISFunPtr #-}
+
+pattern GL_DISTANCE_ATTENUATION_SGIS = 0x8129 :: GLenum
+
+pattern GL_POINT_FADE_THRESHOLD_SIZE_SGIS = 0x8128 :: GLenum
+
+pattern GL_POINT_SIZE_MAX_SGIS = 0x8127 :: GLenum
+
+pattern GL_POINT_SIZE_MIN_SGIS = 0x8126 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/SharpenTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/SharpenTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/SharpenTexture.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.SharpenTexture (
+  -- * Extension Support
+    gl_SGIS_sharpen_texture
+
+  -- * GL_SGIS_sharpen_texture
+  , glGetSharpenTexFuncSGIS
+  , glSharpenTexFuncSGIS
+  , pattern GL_LINEAR_SHARPEN_ALPHA_SGIS
+  , pattern GL_LINEAR_SHARPEN_COLOR_SGIS
+  , pattern GL_LINEAR_SHARPEN_SGIS
+  , pattern GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS
+) 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_SGIS_sharpen_texture :: Bool
+gl_SGIS_sharpen_texture = member "GL_SGIS_sharpen_texture" extensions
+
+glGetSharpenTexFuncSGIS :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glGetSharpenTexFuncSGIS = ffienumPtrfloatIOV glGetSharpenTexFuncSGISFunPtr
+
+glGetSharpenTexFuncSGISFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glGetSharpenTexFuncSGISFunPtr = unsafePerformIO (getProcAddress "glGetSharpenTexFuncSGIS")
+
+{-# NOINLINE glGetSharpenTexFuncSGISFunPtr #-}
+
+glSharpenTexFuncSGIS :: MonadIO m => GLenum -> GLsizei -> Ptr GLfloat -> m ()
+glSharpenTexFuncSGIS = ffienumsizeiPtrfloatIOV glSharpenTexFuncSGISFunPtr
+
+glSharpenTexFuncSGISFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+glSharpenTexFuncSGISFunPtr = unsafePerformIO (getProcAddress "glSharpenTexFuncSGIS")
+
+{-# NOINLINE glSharpenTexFuncSGISFunPtr #-}
+
+pattern GL_LINEAR_SHARPEN_ALPHA_SGIS = 0x80AE :: GLenum
+
+pattern GL_LINEAR_SHARPEN_COLOR_SGIS = 0x80AF :: GLenum
+
+pattern GL_LINEAR_SHARPEN_SGIS = 0x80AD :: GLenum
+
+pattern GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x80B0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/Texture4D.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/Texture4D.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/Texture4D.hs
@@ -0,0 +1,67 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.Texture4D (
+  -- * Extension Support
+    gl_SGIS_texture4D
+
+  -- * GL_SGIS_texture4D
+  , glTexImage4DSGIS
+  , glTexSubImage4DSGIS
+  , pattern GL_MAX_4D_TEXTURE_SIZE_SGIS
+  , pattern GL_PACK_IMAGE_DEPTH_SGIS
+  , pattern GL_PACK_SKIP_VOLUMES_SGIS
+  , pattern GL_PROXY_TEXTURE_4D_SGIS
+  , pattern GL_TEXTURE_4DSIZE_SGIS
+  , pattern GL_TEXTURE_4D_BINDING_SGIS
+  , pattern GL_TEXTURE_4D_SGIS
+  , pattern GL_TEXTURE_WRAP_Q_SGIS
+  , pattern GL_UNPACK_IMAGE_DEPTH_SGIS
+  , pattern GL_UNPACK_SKIP_VOLUMES_SGIS
+) 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_SGIS_texture4D :: Bool
+gl_SGIS_texture4D = member "GL_SGIS_texture4D" extensions
+
+glTexImage4DSGIS :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glTexImage4DSGIS = ffienumintenumsizeisizeisizeisizeiintenumenumPtrVIOV glTexImage4DSGISFunPtr
+
+glTexImage4DSGISFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexImage4DSGISFunPtr = unsafePerformIO (getProcAddress "glTexImage4DSGIS")
+
+{-# NOINLINE glTexImage4DSGISFunPtr #-}
+
+glTexSubImage4DSGIS :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glTexSubImage4DSGIS = ffienumintintintintintsizeisizeisizeisizeienumenumPtrVIOV glTexSubImage4DSGISFunPtr
+
+glTexSubImage4DSGISFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glTexSubImage4DSGISFunPtr = unsafePerformIO (getProcAddress "glTexSubImage4DSGIS")
+
+{-# NOINLINE glTexSubImage4DSGISFunPtr #-}
+
+pattern GL_MAX_4D_TEXTURE_SIZE_SGIS = 0x8138 :: GLenum
+
+pattern GL_PACK_IMAGE_DEPTH_SGIS = 0x8131 :: GLenum
+
+pattern GL_PACK_SKIP_VOLUMES_SGIS = 0x8130 :: GLenum
+
+pattern GL_PROXY_TEXTURE_4D_SGIS = 0x8135 :: GLenum
+
+pattern GL_TEXTURE_4DSIZE_SGIS = 0x8136 :: GLenum
+
+pattern GL_TEXTURE_4D_BINDING_SGIS = 0x814F :: GLenum
+
+pattern GL_TEXTURE_4D_SGIS = 0x8134 :: GLenum
+
+pattern GL_TEXTURE_WRAP_Q_SGIS = 0x8137 :: GLenum
+
+pattern GL_UNPACK_IMAGE_DEPTH_SGIS = 0x8133 :: GLenum
+
+pattern GL_UNPACK_SKIP_VOLUMES_SGIS = 0x8132 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureBorderClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureBorderClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureBorderClamp.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.TextureBorderClamp (
+  -- * Extension Support
+    gl_SGIS_texture_border_clamp
+
+  -- * GL_SGIS_texture_border_clamp
+  , pattern GL_CLAMP_TO_BORDER_SGIS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIS_texture_border_clamp :: Bool
+gl_SGIS_texture_border_clamp = member "GL_SGIS_texture_border_clamp" extensions
+
+pattern GL_CLAMP_TO_BORDER_SGIS = 0x812D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureColorMask.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureColorMask.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureColorMask.hs
@@ -0,0 +1,31 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.TextureColorMask (
+  -- * Extension Support
+    gl_SGIS_texture_color_mask
+
+  -- * GL_SGIS_texture_color_mask
+  , glTextureColorMaskSGIS
+  , pattern GL_TEXTURE_COLOR_WRITEMASK_SGIS
+) 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_SGIS_texture_color_mask :: Bool
+gl_SGIS_texture_color_mask = member "GL_SGIS_texture_color_mask" extensions
+
+glTextureColorMaskSGIS :: MonadIO m => GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
+glTextureColorMaskSGIS = ffibooleanbooleanbooleanbooleanIOV glTextureColorMaskSGISFunPtr
+
+glTextureColorMaskSGISFunPtr :: FunPtr (GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
+glTextureColorMaskSGISFunPtr = unsafePerformIO (getProcAddress "glTextureColorMaskSGIS")
+
+{-# NOINLINE glTextureColorMaskSGISFunPtr #-}
+
+pattern GL_TEXTURE_COLOR_WRITEMASK_SGIS = 0x81EF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureEdgeClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureEdgeClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureEdgeClamp.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.TextureEdgeClamp (
+  -- * Extension Support
+    gl_SGIS_texture_edge_clamp
+
+  -- * GL_SGIS_texture_edge_clamp
+  , pattern GL_CLAMP_TO_EDGE_SGIS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIS_texture_edge_clamp :: Bool
+gl_SGIS_texture_edge_clamp = member "GL_SGIS_texture_edge_clamp" extensions
+
+pattern GL_CLAMP_TO_EDGE_SGIS = 0x812F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureFilter4.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureFilter4.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureFilter4.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.TextureFilter4 (
+  -- * Extension Support
+    gl_SGIS_texture_filter4
+
+  -- * GL_SGIS_texture_filter4
+  , glGetTexFilterFuncSGIS
+  , glTexFilterFuncSGIS
+  , pattern GL_FILTER4_SGIS
+  , pattern GL_TEXTURE_FILTER4_SIZE_SGIS
+) 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_SGIS_texture_filter4 :: Bool
+gl_SGIS_texture_filter4 = member "GL_SGIS_texture_filter4" extensions
+
+glGetTexFilterFuncSGIS :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetTexFilterFuncSGIS = ffienumenumPtrfloatIOV glGetTexFilterFuncSGISFunPtr
+
+glGetTexFilterFuncSGISFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetTexFilterFuncSGISFunPtr = unsafePerformIO (getProcAddress "glGetTexFilterFuncSGIS")
+
+{-# NOINLINE glGetTexFilterFuncSGISFunPtr #-}
+
+glTexFilterFuncSGIS :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> m ()
+glTexFilterFuncSGIS = ffienumenumsizeiPtrfloatIOV glTexFilterFuncSGISFunPtr
+
+glTexFilterFuncSGISFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+glTexFilterFuncSGISFunPtr = unsafePerformIO (getProcAddress "glTexFilterFuncSGIS")
+
+{-# NOINLINE glTexFilterFuncSGISFunPtr #-}
+
+pattern GL_FILTER4_SGIS = 0x8146 :: GLenum
+
+pattern GL_TEXTURE_FILTER4_SIZE_SGIS = 0x8147 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureLod.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureLod.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureLod.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.TextureLod (
+  -- * Extension Support
+    gl_SGIS_texture_lod
+
+  -- * GL_SGIS_texture_lod
+  , pattern GL_TEXTURE_BASE_LEVEL_SGIS
+  , pattern GL_TEXTURE_MAX_LEVEL_SGIS
+  , pattern GL_TEXTURE_MAX_LOD_SGIS
+  , pattern GL_TEXTURE_MIN_LOD_SGIS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIS_texture_lod :: Bool
+gl_SGIS_texture_lod = member "GL_SGIS_texture_lod" extensions
+
+pattern GL_TEXTURE_BASE_LEVEL_SGIS = 0x813C :: GLenum
+
+pattern GL_TEXTURE_MAX_LEVEL_SGIS = 0x813D :: GLenum
+
+pattern GL_TEXTURE_MAX_LOD_SGIS = 0x813B :: GLenum
+
+pattern GL_TEXTURE_MIN_LOD_SGIS = 0x813A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureSelect.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureSelect.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIS/TextureSelect.hs
@@ -0,0 +1,81 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIS.TextureSelect (
+  -- * Extension Support
+    gl_SGIS_texture_select
+
+  -- * GL_SGIS_texture_select
+  , pattern GL_DUAL_ALPHA12_SGIS
+  , pattern GL_DUAL_ALPHA16_SGIS
+  , pattern GL_DUAL_ALPHA4_SGIS
+  , pattern GL_DUAL_ALPHA8_SGIS
+  , pattern GL_DUAL_INTENSITY12_SGIS
+  , pattern GL_DUAL_INTENSITY16_SGIS
+  , pattern GL_DUAL_INTENSITY4_SGIS
+  , pattern GL_DUAL_INTENSITY8_SGIS
+  , pattern GL_DUAL_LUMINANCE12_SGIS
+  , pattern GL_DUAL_LUMINANCE16_SGIS
+  , pattern GL_DUAL_LUMINANCE4_SGIS
+  , pattern GL_DUAL_LUMINANCE8_SGIS
+  , pattern GL_DUAL_LUMINANCE_ALPHA4_SGIS
+  , pattern GL_DUAL_LUMINANCE_ALPHA8_SGIS
+  , pattern GL_DUAL_TEXTURE_SELECT_SGIS
+  , pattern GL_QUAD_ALPHA4_SGIS
+  , pattern GL_QUAD_ALPHA8_SGIS
+  , pattern GL_QUAD_INTENSITY4_SGIS
+  , pattern GL_QUAD_INTENSITY8_SGIS
+  , pattern GL_QUAD_LUMINANCE4_SGIS
+  , pattern GL_QUAD_LUMINANCE8_SGIS
+  , pattern GL_QUAD_TEXTURE_SELECT_SGIS
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIS_texture_select :: Bool
+gl_SGIS_texture_select = member "GL_SGIS_texture_select" extensions
+
+pattern GL_DUAL_ALPHA12_SGIS = 0x8112 :: GLenum
+
+pattern GL_DUAL_ALPHA16_SGIS = 0x8113 :: GLenum
+
+pattern GL_DUAL_ALPHA4_SGIS = 0x8110 :: GLenum
+
+pattern GL_DUAL_ALPHA8_SGIS = 0x8111 :: GLenum
+
+pattern GL_DUAL_INTENSITY12_SGIS = 0x811A :: GLenum
+
+pattern GL_DUAL_INTENSITY16_SGIS = 0x811B :: GLenum
+
+pattern GL_DUAL_INTENSITY4_SGIS = 0x8118 :: GLenum
+
+pattern GL_DUAL_INTENSITY8_SGIS = 0x8119 :: GLenum
+
+pattern GL_DUAL_LUMINANCE12_SGIS = 0x8116 :: GLenum
+
+pattern GL_DUAL_LUMINANCE16_SGIS = 0x8117 :: GLenum
+
+pattern GL_DUAL_LUMINANCE4_SGIS = 0x8114 :: GLenum
+
+pattern GL_DUAL_LUMINANCE8_SGIS = 0x8115 :: GLenum
+
+pattern GL_DUAL_LUMINANCE_ALPHA4_SGIS = 0x811C :: GLenum
+
+pattern GL_DUAL_LUMINANCE_ALPHA8_SGIS = 0x811D :: GLenum
+
+pattern GL_DUAL_TEXTURE_SELECT_SGIS = 0x8124 :: GLenum
+
+pattern GL_QUAD_ALPHA4_SGIS = 0x811E :: GLenum
+
+pattern GL_QUAD_ALPHA8_SGIS = 0x811F :: GLenum
+
+pattern GL_QUAD_INTENSITY4_SGIS = 0x8122 :: GLenum
+
+pattern GL_QUAD_INTENSITY8_SGIS = 0x8123 :: GLenum
+
+pattern GL_QUAD_LUMINANCE4_SGIS = 0x8120 :: GLenum
+
+pattern GL_QUAD_LUMINANCE8_SGIS = 0x8121 :: GLenum
+
+pattern GL_QUAD_TEXTURE_SELECT_SGIS = 0x8125 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX.hs
@@ -0,0 +1,82 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX (
+  -- * SGIX Extensions
+    module Graphics.GL.Raw.Extension.SGIX.Async
+  , module Graphics.GL.Raw.Extension.SGIX.AsyncHistogram
+  , module Graphics.GL.Raw.Extension.SGIX.AsyncPixel
+  , module Graphics.GL.Raw.Extension.SGIX.BlendAlphaMinmax
+  , module Graphics.GL.Raw.Extension.SGIX.CalligraphicFragment
+  , module Graphics.GL.Raw.Extension.SGIX.Clipmap
+  , module Graphics.GL.Raw.Extension.SGIX.ConvolutionAccuracy
+  , module Graphics.GL.Raw.Extension.SGIX.DepthPassInstrument
+  , module Graphics.GL.Raw.Extension.SGIX.DepthTexture
+  , module Graphics.GL.Raw.Extension.SGIX.FlushRaster
+  , module Graphics.GL.Raw.Extension.SGIX.FogOffset
+  , module Graphics.GL.Raw.Extension.SGIX.FragmentLighting
+  , module Graphics.GL.Raw.Extension.SGIX.Framezoom
+  , module Graphics.GL.Raw.Extension.SGIX.IglooInterface
+  , module Graphics.GL.Raw.Extension.SGIX.Instruments
+  , module Graphics.GL.Raw.Extension.SGIX.Interlace
+  , module Graphics.GL.Raw.Extension.SGIX.IrInstrument1
+  , module Graphics.GL.Raw.Extension.SGIX.ListPriority
+  , module Graphics.GL.Raw.Extension.SGIX.PixelTexture
+  , module Graphics.GL.Raw.Extension.SGIX.PixelTiles
+  , module Graphics.GL.Raw.Extension.SGIX.PolynomialFfd
+  , module Graphics.GL.Raw.Extension.SGIX.ReferencePlane
+  , module Graphics.GL.Raw.Extension.SGIX.Resample
+  , module Graphics.GL.Raw.Extension.SGIX.ScalebiasHint
+  , module Graphics.GL.Raw.Extension.SGIX.Shadow
+  , module Graphics.GL.Raw.Extension.SGIX.ShadowAmbient
+  , module Graphics.GL.Raw.Extension.SGIX.Sprite
+  , module Graphics.GL.Raw.Extension.SGIX.Subsample
+  , module Graphics.GL.Raw.Extension.SGIX.TagSampleBuffer
+  , module Graphics.GL.Raw.Extension.SGIX.TextureAddEnv
+  , module Graphics.GL.Raw.Extension.SGIX.TextureCoordinateClamp
+  , module Graphics.GL.Raw.Extension.SGIX.TextureLodBias
+  , module Graphics.GL.Raw.Extension.SGIX.TextureMultiBuffer
+  , module Graphics.GL.Raw.Extension.SGIX.TextureScaleBias
+  , module Graphics.GL.Raw.Extension.SGIX.VertexPreclip
+  , module Graphics.GL.Raw.Extension.SGIX.Ycrcb
+  , module Graphics.GL.Raw.Extension.SGIX.YcrcbSubsample
+  , module Graphics.GL.Raw.Extension.SGIX.Ycrcba
+) where
+
+import Graphics.GL.Raw.Extension.SGIX.Async
+import Graphics.GL.Raw.Extension.SGIX.AsyncHistogram
+import Graphics.GL.Raw.Extension.SGIX.AsyncPixel
+import Graphics.GL.Raw.Extension.SGIX.BlendAlphaMinmax
+import Graphics.GL.Raw.Extension.SGIX.CalligraphicFragment
+import Graphics.GL.Raw.Extension.SGIX.Clipmap
+import Graphics.GL.Raw.Extension.SGIX.ConvolutionAccuracy
+import Graphics.GL.Raw.Extension.SGIX.DepthPassInstrument
+import Graphics.GL.Raw.Extension.SGIX.DepthTexture
+import Graphics.GL.Raw.Extension.SGIX.FlushRaster
+import Graphics.GL.Raw.Extension.SGIX.FogOffset
+import Graphics.GL.Raw.Extension.SGIX.FragmentLighting
+import Graphics.GL.Raw.Extension.SGIX.Framezoom
+import Graphics.GL.Raw.Extension.SGIX.IglooInterface
+import Graphics.GL.Raw.Extension.SGIX.Instruments
+import Graphics.GL.Raw.Extension.SGIX.Interlace
+import Graphics.GL.Raw.Extension.SGIX.IrInstrument1
+import Graphics.GL.Raw.Extension.SGIX.ListPriority
+import Graphics.GL.Raw.Extension.SGIX.PixelTexture
+import Graphics.GL.Raw.Extension.SGIX.PixelTiles
+import Graphics.GL.Raw.Extension.SGIX.PolynomialFfd
+import Graphics.GL.Raw.Extension.SGIX.ReferencePlane
+import Graphics.GL.Raw.Extension.SGIX.Resample
+import Graphics.GL.Raw.Extension.SGIX.ScalebiasHint
+import Graphics.GL.Raw.Extension.SGIX.Shadow
+import Graphics.GL.Raw.Extension.SGIX.ShadowAmbient
+import Graphics.GL.Raw.Extension.SGIX.Sprite
+import Graphics.GL.Raw.Extension.SGIX.Subsample
+import Graphics.GL.Raw.Extension.SGIX.TagSampleBuffer
+import Graphics.GL.Raw.Extension.SGIX.TextureAddEnv
+import Graphics.GL.Raw.Extension.SGIX.TextureCoordinateClamp
+import Graphics.GL.Raw.Extension.SGIX.TextureLodBias
+import Graphics.GL.Raw.Extension.SGIX.TextureMultiBuffer
+import Graphics.GL.Raw.Extension.SGIX.TextureScaleBias
+import Graphics.GL.Raw.Extension.SGIX.VertexPreclip
+import Graphics.GL.Raw.Extension.SGIX.Ycrcb
+import Graphics.GL.Raw.Extension.SGIX.YcrcbSubsample
+import Graphics.GL.Raw.Extension.SGIX.Ycrcba
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Async.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Async.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Async.hs
@@ -0,0 +1,76 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Async (
+  -- * Extension Support
+    gl_SGIX_async
+
+  -- * GL_SGIX_async
+  , glAsyncMarkerSGIX
+  , glDeleteAsyncMarkersSGIX
+  , glFinishAsyncSGIX
+  , glGenAsyncMarkersSGIX
+  , glIsAsyncMarkerSGIX
+  , glPollAsyncSGIX
+  , pattern GL_ASYNC_MARKER_SGIX
+) 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_SGIX_async :: Bool
+gl_SGIX_async = member "GL_SGIX_async" extensions
+
+glAsyncMarkerSGIX :: MonadIO m => GLuint -> m ()
+glAsyncMarkerSGIX = ffiuintIOV glAsyncMarkerSGIXFunPtr
+
+glAsyncMarkerSGIXFunPtr :: FunPtr (GLuint -> IO ())
+glAsyncMarkerSGIXFunPtr = unsafePerformIO (getProcAddress "glAsyncMarkerSGIX")
+
+{-# NOINLINE glAsyncMarkerSGIXFunPtr #-}
+
+glDeleteAsyncMarkersSGIX :: MonadIO m => GLuint -> GLsizei -> m ()
+glDeleteAsyncMarkersSGIX = ffiuintsizeiIOV glDeleteAsyncMarkersSGIXFunPtr
+
+glDeleteAsyncMarkersSGIXFunPtr :: FunPtr (GLuint -> GLsizei -> IO ())
+glDeleteAsyncMarkersSGIXFunPtr = unsafePerformIO (getProcAddress "glDeleteAsyncMarkersSGIX")
+
+{-# NOINLINE glDeleteAsyncMarkersSGIXFunPtr #-}
+
+glFinishAsyncSGIX :: MonadIO m => Ptr GLuint -> m GLint
+glFinishAsyncSGIX = ffiPtruintIOint glFinishAsyncSGIXFunPtr
+
+glFinishAsyncSGIXFunPtr :: FunPtr (Ptr GLuint -> IO GLint)
+glFinishAsyncSGIXFunPtr = unsafePerformIO (getProcAddress "glFinishAsyncSGIX")
+
+{-# NOINLINE glFinishAsyncSGIXFunPtr #-}
+
+glGenAsyncMarkersSGIX :: MonadIO m => GLsizei -> m GLuint
+glGenAsyncMarkersSGIX = ffisizeiIOuint glGenAsyncMarkersSGIXFunPtr
+
+glGenAsyncMarkersSGIXFunPtr :: FunPtr (GLsizei -> IO GLuint)
+glGenAsyncMarkersSGIXFunPtr = unsafePerformIO (getProcAddress "glGenAsyncMarkersSGIX")
+
+{-# NOINLINE glGenAsyncMarkersSGIXFunPtr #-}
+
+glIsAsyncMarkerSGIX :: MonadIO m => GLuint -> m GLboolean
+glIsAsyncMarkerSGIX = ffiuintIOboolean glIsAsyncMarkerSGIXFunPtr
+
+glIsAsyncMarkerSGIXFunPtr :: FunPtr (GLuint -> IO GLboolean)
+glIsAsyncMarkerSGIXFunPtr = unsafePerformIO (getProcAddress "glIsAsyncMarkerSGIX")
+
+{-# NOINLINE glIsAsyncMarkerSGIXFunPtr #-}
+
+glPollAsyncSGIX :: MonadIO m => Ptr GLuint -> m GLint
+glPollAsyncSGIX = ffiPtruintIOint glPollAsyncSGIXFunPtr
+
+glPollAsyncSGIXFunPtr :: FunPtr (Ptr GLuint -> IO GLint)
+glPollAsyncSGIXFunPtr = unsafePerformIO (getProcAddress "glPollAsyncSGIX")
+
+{-# NOINLINE glPollAsyncSGIXFunPtr #-}
+
+pattern GL_ASYNC_MARKER_SGIX = 0x8329 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/AsyncHistogram.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/AsyncHistogram.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/AsyncHistogram.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.AsyncHistogram (
+  -- * Extension Support
+    gl_SGIX_async_histogram
+
+  -- * GL_SGIX_async_histogram
+  , pattern GL_ASYNC_HISTOGRAM_SGIX
+  , pattern GL_MAX_ASYNC_HISTOGRAM_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_async_histogram :: Bool
+gl_SGIX_async_histogram = member "GL_SGIX_async_histogram" extensions
+
+pattern GL_ASYNC_HISTOGRAM_SGIX = 0x832C :: GLenum
+
+pattern GL_MAX_ASYNC_HISTOGRAM_SGIX = 0x832D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/AsyncPixel.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/AsyncPixel.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/AsyncPixel.hs
@@ -0,0 +1,33 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.AsyncPixel (
+  -- * Extension Support
+    gl_SGIX_async_pixel
+
+  -- * GL_SGIX_async_pixel
+  , pattern GL_ASYNC_DRAW_PIXELS_SGIX
+  , pattern GL_ASYNC_READ_PIXELS_SGIX
+  , pattern GL_ASYNC_TEX_IMAGE_SGIX
+  , pattern GL_MAX_ASYNC_DRAW_PIXELS_SGIX
+  , pattern GL_MAX_ASYNC_READ_PIXELS_SGIX
+  , pattern GL_MAX_ASYNC_TEX_IMAGE_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_async_pixel :: Bool
+gl_SGIX_async_pixel = member "GL_SGIX_async_pixel" extensions
+
+pattern GL_ASYNC_DRAW_PIXELS_SGIX = 0x835D :: GLenum
+
+pattern GL_ASYNC_READ_PIXELS_SGIX = 0x835E :: GLenum
+
+pattern GL_ASYNC_TEX_IMAGE_SGIX = 0x835C :: GLenum
+
+pattern GL_MAX_ASYNC_DRAW_PIXELS_SGIX = 0x8360 :: GLenum
+
+pattern GL_MAX_ASYNC_READ_PIXELS_SGIX = 0x8361 :: GLenum
+
+pattern GL_MAX_ASYNC_TEX_IMAGE_SGIX = 0x835F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/BlendAlphaMinmax.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/BlendAlphaMinmax.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/BlendAlphaMinmax.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.BlendAlphaMinmax (
+  -- * Extension Support
+    gl_SGIX_blend_alpha_minmax
+
+  -- * GL_SGIX_blend_alpha_minmax
+  , pattern GL_ALPHA_MAX_SGIX
+  , pattern GL_ALPHA_MIN_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_blend_alpha_minmax :: Bool
+gl_SGIX_blend_alpha_minmax = member "GL_SGIX_blend_alpha_minmax" extensions
+
+pattern GL_ALPHA_MAX_SGIX = 0x8321 :: GLenum
+
+pattern GL_ALPHA_MIN_SGIX = 0x8320 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/CalligraphicFragment.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/CalligraphicFragment.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/CalligraphicFragment.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.CalligraphicFragment (
+  -- * Extension Support
+    gl_SGIX_calligraphic_fragment
+
+  -- * GL_SGIX_calligraphic_fragment
+  , pattern GL_CALLIGRAPHIC_FRAGMENT_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_calligraphic_fragment :: Bool
+gl_SGIX_calligraphic_fragment = member "GL_SGIX_calligraphic_fragment" extensions
+
+pattern GL_CALLIGRAPHIC_FRAGMENT_SGIX = 0x8183 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Clipmap.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Clipmap.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Clipmap.hs
@@ -0,0 +1,51 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Clipmap (
+  -- * Extension Support
+    gl_SGIX_clipmap
+
+  -- * GL_SGIX_clipmap
+  , pattern GL_LINEAR_CLIPMAP_LINEAR_SGIX
+  , pattern GL_LINEAR_CLIPMAP_NEAREST_SGIX
+  , pattern GL_MAX_CLIPMAP_DEPTH_SGIX
+  , pattern GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX
+  , pattern GL_NEAREST_CLIPMAP_LINEAR_SGIX
+  , pattern GL_NEAREST_CLIPMAP_NEAREST_SGIX
+  , pattern GL_TEXTURE_CLIPMAP_CENTER_SGIX
+  , pattern GL_TEXTURE_CLIPMAP_DEPTH_SGIX
+  , pattern GL_TEXTURE_CLIPMAP_FRAME_SGIX
+  , pattern GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX
+  , pattern GL_TEXTURE_CLIPMAP_OFFSET_SGIX
+  , pattern GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_clipmap :: Bool
+gl_SGIX_clipmap = member "GL_SGIX_clipmap" extensions
+
+pattern GL_LINEAR_CLIPMAP_LINEAR_SGIX = 0x8170 :: GLenum
+
+pattern GL_LINEAR_CLIPMAP_NEAREST_SGIX = 0x844F :: GLenum
+
+pattern GL_MAX_CLIPMAP_DEPTH_SGIX = 0x8177 :: GLenum
+
+pattern GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8178 :: GLenum
+
+pattern GL_NEAREST_CLIPMAP_LINEAR_SGIX = 0x844E :: GLenum
+
+pattern GL_NEAREST_CLIPMAP_NEAREST_SGIX = 0x844D :: GLenum
+
+pattern GL_TEXTURE_CLIPMAP_CENTER_SGIX = 0x8171 :: GLenum
+
+pattern GL_TEXTURE_CLIPMAP_DEPTH_SGIX = 0x8176 :: GLenum
+
+pattern GL_TEXTURE_CLIPMAP_FRAME_SGIX = 0x8172 :: GLenum
+
+pattern GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x8175 :: GLenum
+
+pattern GL_TEXTURE_CLIPMAP_OFFSET_SGIX = 0x8173 :: GLenum
+
+pattern GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8174 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ConvolutionAccuracy.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ConvolutionAccuracy.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ConvolutionAccuracy.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.ConvolutionAccuracy (
+  -- * Extension Support
+    gl_SGIX_convolution_accuracy
+
+  -- * GL_SGIX_convolution_accuracy
+  , pattern GL_CONVOLUTION_HINT_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_convolution_accuracy :: Bool
+gl_SGIX_convolution_accuracy = member "GL_SGIX_convolution_accuracy" extensions
+
+pattern GL_CONVOLUTION_HINT_SGIX = 0x8316 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/DepthPassInstrument.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/DepthPassInstrument.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/DepthPassInstrument.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.DepthPassInstrument (
+  -- * Extension Support
+    gl_SGIX_depth_pass_instrument
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_SGIX_depth_pass_instrument :: Bool
+gl_SGIX_depth_pass_instrument = member "GL_SGIX_depth_pass_instrument" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/DepthTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/DepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/DepthTexture.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.DepthTexture (
+  -- * Extension Support
+    gl_SGIX_depth_texture
+
+  -- * GL_SGIX_depth_texture
+  , pattern GL_DEPTH_COMPONENT16_SGIX
+  , pattern GL_DEPTH_COMPONENT24_SGIX
+  , pattern GL_DEPTH_COMPONENT32_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_depth_texture :: Bool
+gl_SGIX_depth_texture = member "GL_SGIX_depth_texture" extensions
+
+pattern GL_DEPTH_COMPONENT16_SGIX = 0x81A5 :: GLenum
+
+pattern GL_DEPTH_COMPONENT24_SGIX = 0x81A6 :: GLenum
+
+pattern GL_DEPTH_COMPONENT32_SGIX = 0x81A7 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FlushRaster.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FlushRaster.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FlushRaster.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.FlushRaster (
+  -- * Extension Support
+    gl_SGIX_flush_raster
+
+  -- * GL_SGIX_flush_raster
+  , glFlushRasterSGIX
+) 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 System.IO.Unsafe
+
+gl_SGIX_flush_raster :: Bool
+gl_SGIX_flush_raster = member "GL_SGIX_flush_raster" extensions
+
+glFlushRasterSGIX :: MonadIO m => m ()
+glFlushRasterSGIX = ffiIOV glFlushRasterSGIXFunPtr
+
+glFlushRasterSGIXFunPtr :: FunPtr (IO ())
+glFlushRasterSGIXFunPtr = unsafePerformIO (getProcAddress "glFlushRasterSGIX")
+
+{-# NOINLINE glFlushRasterSGIXFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FogOffset.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FogOffset.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FogOffset.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.FogOffset (
+  -- * Extension Support
+    gl_SGIX_fog_offset
+
+  -- * GL_SGIX_fog_offset
+  , pattern GL_FOG_OFFSET_SGIX
+  , pattern GL_FOG_OFFSET_VALUE_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_fog_offset :: Bool
+gl_SGIX_fog_offset = member "GL_SGIX_fog_offset" extensions
+
+pattern GL_FOG_OFFSET_SGIX = 0x8198 :: GLenum
+
+pattern GL_FOG_OFFSET_VALUE_SGIX = 0x8199 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FragmentLighting.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FragmentLighting.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/FragmentLighting.hs
@@ -0,0 +1,241 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.FragmentLighting (
+  -- * Extension Support
+    gl_SGIX_fragment_lighting
+
+  -- * GL_SGIX_fragment_lighting
+  , glFragmentColorMaterialSGIX
+  , glFragmentLightModelfSGIX
+  , glFragmentLightModelfvSGIX
+  , glFragmentLightModeliSGIX
+  , glFragmentLightModelivSGIX
+  , glFragmentLightfSGIX
+  , glFragmentLightfvSGIX
+  , glFragmentLightiSGIX
+  , glFragmentLightivSGIX
+  , glFragmentMaterialfSGIX
+  , glFragmentMaterialfvSGIX
+  , glFragmentMaterialiSGIX
+  , glFragmentMaterialivSGIX
+  , glGetFragmentLightfvSGIX
+  , glGetFragmentLightivSGIX
+  , glGetFragmentMaterialfvSGIX
+  , glGetFragmentMaterialivSGIX
+  , glLightEnviSGIX
+  , pattern GL_CURRENT_RASTER_NORMAL_SGIX
+  , pattern GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX
+  , pattern GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX
+  , pattern GL_FRAGMENT_COLOR_MATERIAL_SGIX
+  , pattern GL_FRAGMENT_LIGHT0_SGIX
+  , pattern GL_FRAGMENT_LIGHT1_SGIX
+  , pattern GL_FRAGMENT_LIGHT2_SGIX
+  , pattern GL_FRAGMENT_LIGHT3_SGIX
+  , pattern GL_FRAGMENT_LIGHT4_SGIX
+  , pattern GL_FRAGMENT_LIGHT5_SGIX
+  , pattern GL_FRAGMENT_LIGHT6_SGIX
+  , pattern GL_FRAGMENT_LIGHT7_SGIX
+  , pattern GL_FRAGMENT_LIGHTING_SGIX
+  , pattern GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX
+  , pattern GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX
+  , pattern GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX
+  , pattern GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX
+  , pattern GL_LIGHT_ENV_MODE_SGIX
+  , pattern GL_MAX_ACTIVE_LIGHTS_SGIX
+  , pattern GL_MAX_FRAGMENT_LIGHTS_SGIX
+) 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_SGIX_fragment_lighting :: Bool
+gl_SGIX_fragment_lighting = member "GL_SGIX_fragment_lighting" extensions
+
+glFragmentColorMaterialSGIX :: MonadIO m => GLenum -> GLenum -> m ()
+glFragmentColorMaterialSGIX = ffienumenumIOV glFragmentColorMaterialSGIXFunPtr
+
+glFragmentColorMaterialSGIXFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
+glFragmentColorMaterialSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentColorMaterialSGIX")
+
+{-# NOINLINE glFragmentColorMaterialSGIXFunPtr #-}
+
+glFragmentLightModelfSGIX :: MonadIO m => GLenum -> GLfloat -> m ()
+glFragmentLightModelfSGIX = ffienumfloatIOV glFragmentLightModelfSGIXFunPtr
+
+glFragmentLightModelfSGIXFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glFragmentLightModelfSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightModelfSGIX")
+
+{-# NOINLINE glFragmentLightModelfSGIXFunPtr #-}
+
+glFragmentLightModelfvSGIX :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glFragmentLightModelfvSGIX = ffienumPtrfloatIOV glFragmentLightModelfvSGIXFunPtr
+
+glFragmentLightModelfvSGIXFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glFragmentLightModelfvSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightModelfvSGIX")
+
+{-# NOINLINE glFragmentLightModelfvSGIXFunPtr #-}
+
+glFragmentLightModeliSGIX :: MonadIO m => GLenum -> GLint -> m ()
+glFragmentLightModeliSGIX = ffienumintIOV glFragmentLightModeliSGIXFunPtr
+
+glFragmentLightModeliSGIXFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glFragmentLightModeliSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightModeliSGIX")
+
+{-# NOINLINE glFragmentLightModeliSGIXFunPtr #-}
+
+glFragmentLightModelivSGIX :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glFragmentLightModelivSGIX = ffienumPtrintIOV glFragmentLightModelivSGIXFunPtr
+
+glFragmentLightModelivSGIXFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glFragmentLightModelivSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightModelivSGIX")
+
+{-# NOINLINE glFragmentLightModelivSGIXFunPtr #-}
+
+glFragmentLightfSGIX :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
+glFragmentLightfSGIX = ffienumenumfloatIOV glFragmentLightfSGIXFunPtr
+
+glFragmentLightfSGIXFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
+glFragmentLightfSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightfSGIX")
+
+{-# NOINLINE glFragmentLightfSGIXFunPtr #-}
+
+glFragmentLightfvSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glFragmentLightfvSGIX = ffienumenumPtrfloatIOV glFragmentLightfvSGIXFunPtr
+
+glFragmentLightfvSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glFragmentLightfvSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightfvSGIX")
+
+{-# NOINLINE glFragmentLightfvSGIXFunPtr #-}
+
+glFragmentLightiSGIX :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glFragmentLightiSGIX = ffienumenumintIOV glFragmentLightiSGIXFunPtr
+
+glFragmentLightiSGIXFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glFragmentLightiSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightiSGIX")
+
+{-# NOINLINE glFragmentLightiSGIXFunPtr #-}
+
+glFragmentLightivSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glFragmentLightivSGIX = ffienumenumPtrintIOV glFragmentLightivSGIXFunPtr
+
+glFragmentLightivSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glFragmentLightivSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentLightivSGIX")
+
+{-# NOINLINE glFragmentLightivSGIXFunPtr #-}
+
+glFragmentMaterialfSGIX :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
+glFragmentMaterialfSGIX = ffienumenumfloatIOV glFragmentMaterialfSGIXFunPtr
+
+glFragmentMaterialfSGIXFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
+glFragmentMaterialfSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentMaterialfSGIX")
+
+{-# NOINLINE glFragmentMaterialfSGIXFunPtr #-}
+
+glFragmentMaterialfvSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glFragmentMaterialfvSGIX = ffienumenumPtrfloatIOV glFragmentMaterialfvSGIXFunPtr
+
+glFragmentMaterialfvSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glFragmentMaterialfvSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentMaterialfvSGIX")
+
+{-# NOINLINE glFragmentMaterialfvSGIXFunPtr #-}
+
+glFragmentMaterialiSGIX :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
+glFragmentMaterialiSGIX = ffienumenumintIOV glFragmentMaterialiSGIXFunPtr
+
+glFragmentMaterialiSGIXFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
+glFragmentMaterialiSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentMaterialiSGIX")
+
+{-# NOINLINE glFragmentMaterialiSGIXFunPtr #-}
+
+glFragmentMaterialivSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glFragmentMaterialivSGIX = ffienumenumPtrintIOV glFragmentMaterialivSGIXFunPtr
+
+glFragmentMaterialivSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glFragmentMaterialivSGIXFunPtr = unsafePerformIO (getProcAddress "glFragmentMaterialivSGIX")
+
+{-# NOINLINE glFragmentMaterialivSGIXFunPtr #-}
+
+glGetFragmentLightfvSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetFragmentLightfvSGIX = ffienumenumPtrfloatIOV glGetFragmentLightfvSGIXFunPtr
+
+glGetFragmentLightfvSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetFragmentLightfvSGIXFunPtr = unsafePerformIO (getProcAddress "glGetFragmentLightfvSGIX")
+
+{-# NOINLINE glGetFragmentLightfvSGIXFunPtr #-}
+
+glGetFragmentLightivSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetFragmentLightivSGIX = ffienumenumPtrintIOV glGetFragmentLightivSGIXFunPtr
+
+glGetFragmentLightivSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetFragmentLightivSGIXFunPtr = unsafePerformIO (getProcAddress "glGetFragmentLightivSGIX")
+
+{-# NOINLINE glGetFragmentLightivSGIXFunPtr #-}
+
+glGetFragmentMaterialfvSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
+glGetFragmentMaterialfvSGIX = ffienumenumPtrfloatIOV glGetFragmentMaterialfvSGIXFunPtr
+
+glGetFragmentMaterialfvSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
+glGetFragmentMaterialfvSGIXFunPtr = unsafePerformIO (getProcAddress "glGetFragmentMaterialfvSGIX")
+
+{-# NOINLINE glGetFragmentMaterialfvSGIXFunPtr #-}
+
+glGetFragmentMaterialivSGIX :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
+glGetFragmentMaterialivSGIX = ffienumenumPtrintIOV glGetFragmentMaterialivSGIXFunPtr
+
+glGetFragmentMaterialivSGIXFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
+glGetFragmentMaterialivSGIXFunPtr = unsafePerformIO (getProcAddress "glGetFragmentMaterialivSGIX")
+
+{-# NOINLINE glGetFragmentMaterialivSGIXFunPtr #-}
+
+glLightEnviSGIX :: MonadIO m => GLenum -> GLint -> m ()
+glLightEnviSGIX = ffienumintIOV glLightEnviSGIXFunPtr
+
+glLightEnviSGIXFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glLightEnviSGIXFunPtr = unsafePerformIO (getProcAddress "glLightEnviSGIX")
+
+{-# NOINLINE glLightEnviSGIXFunPtr #-}
+
+pattern GL_CURRENT_RASTER_NORMAL_SGIX = 0x8406 :: GLenum
+
+pattern GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x8402 :: GLenum
+
+pattern GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x8403 :: GLenum
+
+pattern GL_FRAGMENT_COLOR_MATERIAL_SGIX = 0x8401 :: GLenum
+
+pattern GL_FRAGMENT_LIGHT0_SGIX = 0x840C :: GLenum
+
+pattern GL_FRAGMENT_LIGHT1_SGIX = 0x840D :: GLenum
+
+pattern GL_FRAGMENT_LIGHT2_SGIX = 0x840E :: GLenum
+
+pattern GL_FRAGMENT_LIGHT3_SGIX = 0x840F :: GLenum
+
+pattern GL_FRAGMENT_LIGHT4_SGIX = 0x8410 :: GLenum
+
+pattern GL_FRAGMENT_LIGHT5_SGIX = 0x8411 :: GLenum
+
+pattern GL_FRAGMENT_LIGHT6_SGIX = 0x8412 :: GLenum
+
+pattern GL_FRAGMENT_LIGHT7_SGIX = 0x8413 :: GLenum
+
+pattern GL_FRAGMENT_LIGHTING_SGIX = 0x8400 :: GLenum
+
+pattern GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x840A :: GLenum
+
+pattern GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x8408 :: GLenum
+
+pattern GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x840B :: GLenum
+
+pattern GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x8409 :: GLenum
+
+pattern GL_LIGHT_ENV_MODE_SGIX = 0x8407 :: GLenum
+
+pattern GL_MAX_ACTIVE_LIGHTS_SGIX = 0x8405 :: GLenum
+
+pattern GL_MAX_FRAGMENT_LIGHTS_SGIX = 0x8404 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Framezoom.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Framezoom.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Framezoom.hs
@@ -0,0 +1,37 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Framezoom (
+  -- * Extension Support
+    gl_SGIX_framezoom
+
+  -- * GL_SGIX_framezoom
+  , glFrameZoomSGIX
+  , pattern GL_FRAMEZOOM_FACTOR_SGIX
+  , pattern GL_FRAMEZOOM_SGIX
+  , pattern GL_MAX_FRAMEZOOM_FACTOR_SGIX
+) 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_SGIX_framezoom :: Bool
+gl_SGIX_framezoom = member "GL_SGIX_framezoom" extensions
+
+glFrameZoomSGIX :: MonadIO m => GLint -> m ()
+glFrameZoomSGIX = ffiintIOV glFrameZoomSGIXFunPtr
+
+glFrameZoomSGIXFunPtr :: FunPtr (GLint -> IO ())
+glFrameZoomSGIXFunPtr = unsafePerformIO (getProcAddress "glFrameZoomSGIX")
+
+{-# NOINLINE glFrameZoomSGIXFunPtr #-}
+
+pattern GL_FRAMEZOOM_FACTOR_SGIX = 0x818C :: GLenum
+
+pattern GL_FRAMEZOOM_SGIX = 0x818B :: GLenum
+
+pattern GL_MAX_FRAMEZOOM_FACTOR_SGIX = 0x818D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/IglooInterface.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/IglooInterface.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/IglooInterface.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.IglooInterface (
+  -- * Extension Support
+    gl_SGIX_igloo_interface
+
+  -- * GL_SGIX_igloo_interface
+  , glIglooInterfaceSGIX
+) 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_SGIX_igloo_interface :: Bool
+gl_SGIX_igloo_interface = member "GL_SGIX_igloo_interface" extensions
+
+glIglooInterfaceSGIX :: MonadIO m => GLenum -> Ptr () -> m ()
+glIglooInterfaceSGIX = ffienumPtrVIOV glIglooInterfaceSGIXFunPtr
+
+glIglooInterfaceSGIXFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
+glIglooInterfaceSGIXFunPtr = unsafePerformIO (getProcAddress "glIglooInterfaceSGIX")
+
+{-# NOINLINE glIglooInterfaceSGIXFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Instruments.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Instruments.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Instruments.hs
@@ -0,0 +1,79 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Instruments (
+  -- * Extension Support
+    gl_SGIX_instruments
+
+  -- * GL_SGIX_instruments
+  , glGetInstrumentsSGIX
+  , glInstrumentsBufferSGIX
+  , glPollInstrumentsSGIX
+  , glReadInstrumentsSGIX
+  , glStartInstrumentsSGIX
+  , glStopInstrumentsSGIX
+  , pattern GL_INSTRUMENT_BUFFER_POINTER_SGIX
+  , pattern GL_INSTRUMENT_MEASUREMENTS_SGIX
+) 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_SGIX_instruments :: Bool
+gl_SGIX_instruments = member "GL_SGIX_instruments" extensions
+
+glGetInstrumentsSGIX :: MonadIO m => m GLint
+glGetInstrumentsSGIX = ffiIOint glGetInstrumentsSGIXFunPtr
+
+glGetInstrumentsSGIXFunPtr :: FunPtr (IO GLint)
+glGetInstrumentsSGIXFunPtr = unsafePerformIO (getProcAddress "glGetInstrumentsSGIX")
+
+{-# NOINLINE glGetInstrumentsSGIXFunPtr #-}
+
+glInstrumentsBufferSGIX :: MonadIO m => GLsizei -> Ptr GLint -> m ()
+glInstrumentsBufferSGIX = ffisizeiPtrintIOV glInstrumentsBufferSGIXFunPtr
+
+glInstrumentsBufferSGIXFunPtr :: FunPtr (GLsizei -> Ptr GLint -> IO ())
+glInstrumentsBufferSGIXFunPtr = unsafePerformIO (getProcAddress "glInstrumentsBufferSGIX")
+
+{-# NOINLINE glInstrumentsBufferSGIXFunPtr #-}
+
+glPollInstrumentsSGIX :: MonadIO m => Ptr GLint -> m GLint
+glPollInstrumentsSGIX = ffiPtrintIOint glPollInstrumentsSGIXFunPtr
+
+glPollInstrumentsSGIXFunPtr :: FunPtr (Ptr GLint -> IO GLint)
+glPollInstrumentsSGIXFunPtr = unsafePerformIO (getProcAddress "glPollInstrumentsSGIX")
+
+{-# NOINLINE glPollInstrumentsSGIXFunPtr #-}
+
+glReadInstrumentsSGIX :: MonadIO m => GLint -> m ()
+glReadInstrumentsSGIX = ffiintIOV glReadInstrumentsSGIXFunPtr
+
+glReadInstrumentsSGIXFunPtr :: FunPtr (GLint -> IO ())
+glReadInstrumentsSGIXFunPtr = unsafePerformIO (getProcAddress "glReadInstrumentsSGIX")
+
+{-# NOINLINE glReadInstrumentsSGIXFunPtr #-}
+
+glStartInstrumentsSGIX :: MonadIO m => m ()
+glStartInstrumentsSGIX = ffiIOV glStartInstrumentsSGIXFunPtr
+
+glStartInstrumentsSGIXFunPtr :: FunPtr (IO ())
+glStartInstrumentsSGIXFunPtr = unsafePerformIO (getProcAddress "glStartInstrumentsSGIX")
+
+{-# NOINLINE glStartInstrumentsSGIXFunPtr #-}
+
+glStopInstrumentsSGIX :: MonadIO m => GLint -> m ()
+glStopInstrumentsSGIX = ffiintIOV glStopInstrumentsSGIXFunPtr
+
+glStopInstrumentsSGIXFunPtr :: FunPtr (GLint -> IO ())
+glStopInstrumentsSGIXFunPtr = unsafePerformIO (getProcAddress "glStopInstrumentsSGIX")
+
+{-# NOINLINE glStopInstrumentsSGIXFunPtr #-}
+
+pattern GL_INSTRUMENT_BUFFER_POINTER_SGIX = 0x8180 :: GLenum
+
+pattern GL_INSTRUMENT_MEASUREMENTS_SGIX = 0x8181 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Interlace.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Interlace.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Interlace.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Interlace (
+  -- * Extension Support
+    gl_SGIX_interlace
+
+  -- * GL_SGIX_interlace
+  , pattern GL_INTERLACE_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_interlace :: Bool
+gl_SGIX_interlace = member "GL_SGIX_interlace" extensions
+
+pattern GL_INTERLACE_SGIX = 0x8094 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/IrInstrument1.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/IrInstrument1.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/IrInstrument1.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.IrInstrument1 (
+  -- * Extension Support
+    gl_SGIX_ir_instrument1
+
+  -- * GL_SGIX_ir_instrument1
+  , pattern GL_IR_INSTRUMENT1_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_ir_instrument1 :: Bool
+gl_SGIX_ir_instrument1 = member "GL_SGIX_ir_instrument1" extensions
+
+pattern GL_IR_INSTRUMENT1_SGIX = 0x817F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ListPriority.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ListPriority.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ListPriority.hs
@@ -0,0 +1,76 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.ListPriority (
+  -- * Extension Support
+    gl_SGIX_list_priority
+
+  -- * GL_SGIX_list_priority
+  , glGetListParameterfvSGIX
+  , glGetListParameterivSGIX
+  , glListParameterfSGIX
+  , glListParameterfvSGIX
+  , glListParameteriSGIX
+  , glListParameterivSGIX
+  , pattern GL_LIST_PRIORITY_SGIX
+) 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_SGIX_list_priority :: Bool
+gl_SGIX_list_priority = member "GL_SGIX_list_priority" extensions
+
+glGetListParameterfvSGIX :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glGetListParameterfvSGIX = ffiuintenumPtrfloatIOV glGetListParameterfvSGIXFunPtr
+
+glGetListParameterfvSGIXFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glGetListParameterfvSGIXFunPtr = unsafePerformIO (getProcAddress "glGetListParameterfvSGIX")
+
+{-# NOINLINE glGetListParameterfvSGIXFunPtr #-}
+
+glGetListParameterivSGIX :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glGetListParameterivSGIX = ffiuintenumPtrintIOV glGetListParameterivSGIXFunPtr
+
+glGetListParameterivSGIXFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glGetListParameterivSGIXFunPtr = unsafePerformIO (getProcAddress "glGetListParameterivSGIX")
+
+{-# NOINLINE glGetListParameterivSGIXFunPtr #-}
+
+glListParameterfSGIX :: MonadIO m => GLuint -> GLenum -> GLfloat -> m ()
+glListParameterfSGIX = ffiuintenumfloatIOV glListParameterfSGIXFunPtr
+
+glListParameterfSGIXFunPtr :: FunPtr (GLuint -> GLenum -> GLfloat -> IO ())
+glListParameterfSGIXFunPtr = unsafePerformIO (getProcAddress "glListParameterfSGIX")
+
+{-# NOINLINE glListParameterfSGIXFunPtr #-}
+
+glListParameterfvSGIX :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
+glListParameterfvSGIX = ffiuintenumPtrfloatIOV glListParameterfvSGIXFunPtr
+
+glListParameterfvSGIXFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
+glListParameterfvSGIXFunPtr = unsafePerformIO (getProcAddress "glListParameterfvSGIX")
+
+{-# NOINLINE glListParameterfvSGIXFunPtr #-}
+
+glListParameteriSGIX :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
+glListParameteriSGIX = ffiuintenumintIOV glListParameteriSGIXFunPtr
+
+glListParameteriSGIXFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
+glListParameteriSGIXFunPtr = unsafePerformIO (getProcAddress "glListParameteriSGIX")
+
+{-# NOINLINE glListParameteriSGIXFunPtr #-}
+
+glListParameterivSGIX :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
+glListParameterivSGIX = ffiuintenumPtrintIOV glListParameterivSGIXFunPtr
+
+glListParameterivSGIXFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
+glListParameterivSGIXFunPtr = unsafePerformIO (getProcAddress "glListParameterivSGIX")
+
+{-# NOINLINE glListParameterivSGIXFunPtr #-}
+
+pattern GL_LIST_PRIORITY_SGIX = 0x8182 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PixelTexture.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PixelTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PixelTexture.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.PixelTexture (
+  -- * Extension Support
+    gl_SGIX_pixel_texture
+
+  -- * GL_SGIX_pixel_texture
+  , glPixelTexGenSGIX
+  , pattern GL_PIXEL_TEX_GEN_MODE_SGIX
+  , pattern GL_PIXEL_TEX_GEN_SGIX
+) 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_SGIX_pixel_texture :: Bool
+gl_SGIX_pixel_texture = member "GL_SGIX_pixel_texture" extensions
+
+glPixelTexGenSGIX :: MonadIO m => GLenum -> m ()
+glPixelTexGenSGIX = ffienumIOV glPixelTexGenSGIXFunPtr
+
+glPixelTexGenSGIXFunPtr :: FunPtr (GLenum -> IO ())
+glPixelTexGenSGIXFunPtr = unsafePerformIO (getProcAddress "glPixelTexGenSGIX")
+
+{-# NOINLINE glPixelTexGenSGIXFunPtr #-}
+
+pattern GL_PIXEL_TEX_GEN_MODE_SGIX = 0x832B :: GLenum
+
+pattern GL_PIXEL_TEX_GEN_SGIX = 0x8139 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PixelTiles.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PixelTiles.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PixelTiles.hs
@@ -0,0 +1,39 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.PixelTiles (
+  -- * Extension Support
+    gl_SGIX_pixel_tiles
+
+  -- * GL_SGIX_pixel_tiles
+  , pattern GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX
+  , pattern GL_PIXEL_TILE_CACHE_INCREMENT_SGIX
+  , pattern GL_PIXEL_TILE_CACHE_SIZE_SGIX
+  , pattern GL_PIXEL_TILE_GRID_DEPTH_SGIX
+  , pattern GL_PIXEL_TILE_GRID_HEIGHT_SGIX
+  , pattern GL_PIXEL_TILE_GRID_WIDTH_SGIX
+  , pattern GL_PIXEL_TILE_HEIGHT_SGIX
+  , pattern GL_PIXEL_TILE_WIDTH_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_pixel_tiles :: Bool
+gl_SGIX_pixel_tiles = member "GL_SGIX_pixel_tiles" extensions
+
+pattern GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x813E :: GLenum
+
+pattern GL_PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x813F :: GLenum
+
+pattern GL_PIXEL_TILE_CACHE_SIZE_SGIX = 0x8145 :: GLenum
+
+pattern GL_PIXEL_TILE_GRID_DEPTH_SGIX = 0x8144 :: GLenum
+
+pattern GL_PIXEL_TILE_GRID_HEIGHT_SGIX = 0x8143 :: GLenum
+
+pattern GL_PIXEL_TILE_GRID_WIDTH_SGIX = 0x8142 :: GLenum
+
+pattern GL_PIXEL_TILE_HEIGHT_SGIX = 0x8141 :: GLenum
+
+pattern GL_PIXEL_TILE_WIDTH_SGIX = 0x8140 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PolynomialFfd.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PolynomialFfd.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/PolynomialFfd.hs
@@ -0,0 +1,73 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.PolynomialFfd (
+  -- * Extension Support
+    gl_SGIX_polynomial_ffd
+
+  -- * GL_SGIX_polynomial_ffd
+  , glDeformSGIX
+  , glDeformationMap3dSGIX
+  , glDeformationMap3fSGIX
+  , glLoadIdentityDeformationMapSGIX
+  , pattern GL_DEFORMATIONS_MASK_SGIX
+  , pattern GL_GEOMETRY_DEFORMATION_BIT_SGIX
+  , pattern GL_GEOMETRY_DEFORMATION_SGIX
+  , pattern GL_MAX_DEFORMATION_ORDER_SGIX
+  , pattern GL_TEXTURE_DEFORMATION_BIT_SGIX
+  , pattern GL_TEXTURE_DEFORMATION_SGIX
+) 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_SGIX_polynomial_ffd :: Bool
+gl_SGIX_polynomial_ffd = member "GL_SGIX_polynomial_ffd" extensions
+
+glDeformSGIX :: MonadIO m => GLbitfield -> m ()
+glDeformSGIX = ffibitfieldIOV glDeformSGIXFunPtr
+
+glDeformSGIXFunPtr :: FunPtr (GLbitfield -> IO ())
+glDeformSGIXFunPtr = unsafePerformIO (getProcAddress "glDeformSGIX")
+
+{-# NOINLINE glDeformSGIXFunPtr #-}
+
+glDeformationMap3dSGIX :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+glDeformationMap3dSGIX = ffienumdoubledoubleintintdoubledoubleintintdoubledoubleintintPtrdoubleIOV glDeformationMap3dSGIXFunPtr
+
+glDeformationMap3dSGIXFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
+glDeformationMap3dSGIXFunPtr = unsafePerformIO (getProcAddress "glDeformationMap3dSGIX")
+
+{-# NOINLINE glDeformationMap3dSGIXFunPtr #-}
+
+glDeformationMap3fSGIX :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+glDeformationMap3fSGIX = ffienumfloatfloatintintfloatfloatintintfloatfloatintintPtrfloatIOV glDeformationMap3fSGIXFunPtr
+
+glDeformationMap3fSGIXFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
+glDeformationMap3fSGIXFunPtr = unsafePerformIO (getProcAddress "glDeformationMap3fSGIX")
+
+{-# NOINLINE glDeformationMap3fSGIXFunPtr #-}
+
+glLoadIdentityDeformationMapSGIX :: MonadIO m => GLbitfield -> m ()
+glLoadIdentityDeformationMapSGIX = ffibitfieldIOV glLoadIdentityDeformationMapSGIXFunPtr
+
+glLoadIdentityDeformationMapSGIXFunPtr :: FunPtr (GLbitfield -> IO ())
+glLoadIdentityDeformationMapSGIXFunPtr = unsafePerformIO (getProcAddress "glLoadIdentityDeformationMapSGIX")
+
+{-# NOINLINE glLoadIdentityDeformationMapSGIXFunPtr #-}
+
+pattern GL_DEFORMATIONS_MASK_SGIX = 0x8196 :: GLenum
+
+pattern GL_GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002 :: GLenum
+
+pattern GL_GEOMETRY_DEFORMATION_SGIX = 0x8194 :: GLenum
+
+pattern GL_MAX_DEFORMATION_ORDER_SGIX = 0x8197 :: GLenum
+
+pattern GL_TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001 :: GLenum
+
+pattern GL_TEXTURE_DEFORMATION_SGIX = 0x8195 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ReferencePlane.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ReferencePlane.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ReferencePlane.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.ReferencePlane (
+  -- * Extension Support
+    gl_SGIX_reference_plane
+
+  -- * GL_SGIX_reference_plane
+  , glReferencePlaneSGIX
+  , pattern GL_REFERENCE_PLANE_EQUATION_SGIX
+  , pattern GL_REFERENCE_PLANE_SGIX
+) 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_SGIX_reference_plane :: Bool
+gl_SGIX_reference_plane = member "GL_SGIX_reference_plane" extensions
+
+glReferencePlaneSGIX :: MonadIO m => Ptr GLdouble -> m ()
+glReferencePlaneSGIX = ffiPtrdoubleIOV glReferencePlaneSGIXFunPtr
+
+glReferencePlaneSGIXFunPtr :: FunPtr (Ptr GLdouble -> IO ())
+glReferencePlaneSGIXFunPtr = unsafePerformIO (getProcAddress "glReferencePlaneSGIX")
+
+{-# NOINLINE glReferencePlaneSGIXFunPtr #-}
+
+pattern GL_REFERENCE_PLANE_EQUATION_SGIX = 0x817E :: GLenum
+
+pattern GL_REFERENCE_PLANE_SGIX = 0x817D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Resample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Resample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Resample.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Resample (
+  -- * Extension Support
+    gl_SGIX_resample
+
+  -- * GL_SGIX_resample
+  , pattern GL_PACK_RESAMPLE_SGIX
+  , pattern GL_RESAMPLE_DECIMATE_SGIX
+  , pattern GL_RESAMPLE_REPLICATE_SGIX
+  , pattern GL_RESAMPLE_ZERO_FILL_SGIX
+  , pattern GL_UNPACK_RESAMPLE_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_resample :: Bool
+gl_SGIX_resample = member "GL_SGIX_resample" extensions
+
+pattern GL_PACK_RESAMPLE_SGIX = 0x842C :: GLenum
+
+pattern GL_RESAMPLE_DECIMATE_SGIX = 0x8430 :: GLenum
+
+pattern GL_RESAMPLE_REPLICATE_SGIX = 0x842E :: GLenum
+
+pattern GL_RESAMPLE_ZERO_FILL_SGIX = 0x842F :: GLenum
+
+pattern GL_UNPACK_RESAMPLE_SGIX = 0x842D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ScalebiasHint.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ScalebiasHint.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ScalebiasHint.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.ScalebiasHint (
+  -- * Extension Support
+    gl_SGIX_scalebias_hint
+
+  -- * GL_SGIX_scalebias_hint
+  , pattern GL_SCALEBIAS_HINT_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_scalebias_hint :: Bool
+gl_SGIX_scalebias_hint = member "GL_SGIX_scalebias_hint" extensions
+
+pattern GL_SCALEBIAS_HINT_SGIX = 0x8322 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Shadow.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Shadow.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Shadow.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Shadow (
+  -- * Extension Support
+    gl_SGIX_shadow
+
+  -- * GL_SGIX_shadow
+  , pattern GL_TEXTURE_COMPARE_OPERATOR_SGIX
+  , pattern GL_TEXTURE_COMPARE_SGIX
+  , pattern GL_TEXTURE_GEQUAL_R_SGIX
+  , pattern GL_TEXTURE_LEQUAL_R_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_shadow :: Bool
+gl_SGIX_shadow = member "GL_SGIX_shadow" extensions
+
+pattern GL_TEXTURE_COMPARE_OPERATOR_SGIX = 0x819B :: GLenum
+
+pattern GL_TEXTURE_COMPARE_SGIX = 0x819A :: GLenum
+
+pattern GL_TEXTURE_GEQUAL_R_SGIX = 0x819D :: GLenum
+
+pattern GL_TEXTURE_LEQUAL_R_SGIX = 0x819C :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ShadowAmbient.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ShadowAmbient.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/ShadowAmbient.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.ShadowAmbient (
+  -- * Extension Support
+    gl_SGIX_shadow_ambient
+
+  -- * GL_SGIX_shadow_ambient
+  , pattern GL_SHADOW_AMBIENT_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_shadow_ambient :: Bool
+gl_SGIX_shadow_ambient = member "GL_SGIX_shadow_ambient" extensions
+
+pattern GL_SHADOW_AMBIENT_SGIX = 0x80BF :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Sprite.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Sprite.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Sprite.hs
@@ -0,0 +1,76 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Sprite (
+  -- * Extension Support
+    gl_SGIX_sprite
+
+  -- * GL_SGIX_sprite
+  , glSpriteParameterfSGIX
+  , glSpriteParameterfvSGIX
+  , glSpriteParameteriSGIX
+  , glSpriteParameterivSGIX
+  , pattern GL_SPRITE_AXIAL_SGIX
+  , pattern GL_SPRITE_AXIS_SGIX
+  , pattern GL_SPRITE_EYE_ALIGNED_SGIX
+  , pattern GL_SPRITE_MODE_SGIX
+  , pattern GL_SPRITE_OBJECT_ALIGNED_SGIX
+  , pattern GL_SPRITE_SGIX
+  , pattern GL_SPRITE_TRANSLATION_SGIX
+) 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_SGIX_sprite :: Bool
+gl_SGIX_sprite = member "GL_SGIX_sprite" extensions
+
+glSpriteParameterfSGIX :: MonadIO m => GLenum -> GLfloat -> m ()
+glSpriteParameterfSGIX = ffienumfloatIOV glSpriteParameterfSGIXFunPtr
+
+glSpriteParameterfSGIXFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glSpriteParameterfSGIXFunPtr = unsafePerformIO (getProcAddress "glSpriteParameterfSGIX")
+
+{-# NOINLINE glSpriteParameterfSGIXFunPtr #-}
+
+glSpriteParameterfvSGIX :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
+glSpriteParameterfvSGIX = ffienumPtrfloatIOV glSpriteParameterfvSGIXFunPtr
+
+glSpriteParameterfvSGIXFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
+glSpriteParameterfvSGIXFunPtr = unsafePerformIO (getProcAddress "glSpriteParameterfvSGIX")
+
+{-# NOINLINE glSpriteParameterfvSGIXFunPtr #-}
+
+glSpriteParameteriSGIX :: MonadIO m => GLenum -> GLint -> m ()
+glSpriteParameteriSGIX = ffienumintIOV glSpriteParameteriSGIXFunPtr
+
+glSpriteParameteriSGIXFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glSpriteParameteriSGIXFunPtr = unsafePerformIO (getProcAddress "glSpriteParameteriSGIX")
+
+{-# NOINLINE glSpriteParameteriSGIXFunPtr #-}
+
+glSpriteParameterivSGIX :: MonadIO m => GLenum -> Ptr GLint -> m ()
+glSpriteParameterivSGIX = ffienumPtrintIOV glSpriteParameterivSGIXFunPtr
+
+glSpriteParameterivSGIXFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
+glSpriteParameterivSGIXFunPtr = unsafePerformIO (getProcAddress "glSpriteParameterivSGIX")
+
+{-# NOINLINE glSpriteParameterivSGIXFunPtr #-}
+
+pattern GL_SPRITE_AXIAL_SGIX = 0x814C :: GLenum
+
+pattern GL_SPRITE_AXIS_SGIX = 0x814A :: GLenum
+
+pattern GL_SPRITE_EYE_ALIGNED_SGIX = 0x814E :: GLenum
+
+pattern GL_SPRITE_MODE_SGIX = 0x8149 :: GLenum
+
+pattern GL_SPRITE_OBJECT_ALIGNED_SGIX = 0x814D :: GLenum
+
+pattern GL_SPRITE_SGIX = 0x8148 :: GLenum
+
+pattern GL_SPRITE_TRANSLATION_SGIX = 0x814B :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Subsample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Subsample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Subsample.hs
@@ -0,0 +1,30 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Subsample (
+  -- * Extension Support
+    gl_SGIX_subsample
+
+  -- * GL_SGIX_subsample
+  , pattern GL_PACK_SUBSAMPLE_RATE_SGIX
+  , pattern GL_PIXEL_SUBSAMPLE_2424_SGIX
+  , pattern GL_PIXEL_SUBSAMPLE_4242_SGIX
+  , pattern GL_PIXEL_SUBSAMPLE_4444_SGIX
+  , pattern GL_UNPACK_SUBSAMPLE_RATE_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_subsample :: Bool
+gl_SGIX_subsample = member "GL_SGIX_subsample" extensions
+
+pattern GL_PACK_SUBSAMPLE_RATE_SGIX = 0x85A0 :: GLenum
+
+pattern GL_PIXEL_SUBSAMPLE_2424_SGIX = 0x85A3 :: GLenum
+
+pattern GL_PIXEL_SUBSAMPLE_4242_SGIX = 0x85A4 :: GLenum
+
+pattern GL_PIXEL_SUBSAMPLE_4444_SGIX = 0x85A2 :: GLenum
+
+pattern GL_UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TagSampleBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TagSampleBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TagSampleBuffer.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.TagSampleBuffer (
+  -- * Extension Support
+    gl_SGIX_tag_sample_buffer
+
+  -- * GL_SGIX_tag_sample_buffer
+  , glTagSampleBufferSGIX
+) 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 System.IO.Unsafe
+
+gl_SGIX_tag_sample_buffer :: Bool
+gl_SGIX_tag_sample_buffer = member "GL_SGIX_tag_sample_buffer" extensions
+
+glTagSampleBufferSGIX :: MonadIO m => m ()
+glTagSampleBufferSGIX = ffiIOV glTagSampleBufferSGIXFunPtr
+
+glTagSampleBufferSGIXFunPtr :: FunPtr (IO ())
+glTagSampleBufferSGIXFunPtr = unsafePerformIO (getProcAddress "glTagSampleBufferSGIX")
+
+{-# NOINLINE glTagSampleBufferSGIXFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureAddEnv.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureAddEnv.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureAddEnv.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.TextureAddEnv (
+  -- * Extension Support
+    gl_SGIX_texture_add_env
+
+  -- * GL_SGIX_texture_add_env
+  , pattern GL_TEXTURE_ENV_BIAS_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_texture_add_env :: Bool
+gl_SGIX_texture_add_env = member "GL_SGIX_texture_add_env" extensions
+
+pattern GL_TEXTURE_ENV_BIAS_SGIX = 0x80BE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureCoordinateClamp.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureCoordinateClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureCoordinateClamp.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.TextureCoordinateClamp (
+  -- * Extension Support
+    gl_SGIX_texture_coordinate_clamp
+
+  -- * GL_SGIX_texture_coordinate_clamp
+  , pattern GL_TEXTURE_MAX_CLAMP_R_SGIX
+  , pattern GL_TEXTURE_MAX_CLAMP_S_SGIX
+  , pattern GL_TEXTURE_MAX_CLAMP_T_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_texture_coordinate_clamp :: Bool
+gl_SGIX_texture_coordinate_clamp = member "GL_SGIX_texture_coordinate_clamp" extensions
+
+pattern GL_TEXTURE_MAX_CLAMP_R_SGIX = 0x836B :: GLenum
+
+pattern GL_TEXTURE_MAX_CLAMP_S_SGIX = 0x8369 :: GLenum
+
+pattern GL_TEXTURE_MAX_CLAMP_T_SGIX = 0x836A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureLodBias.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureLodBias.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureLodBias.hs
@@ -0,0 +1,24 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.TextureLodBias (
+  -- * Extension Support
+    gl_SGIX_texture_lod_bias
+
+  -- * GL_SGIX_texture_lod_bias
+  , pattern GL_TEXTURE_LOD_BIAS_R_SGIX
+  , pattern GL_TEXTURE_LOD_BIAS_S_SGIX
+  , pattern GL_TEXTURE_LOD_BIAS_T_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_texture_lod_bias :: Bool
+gl_SGIX_texture_lod_bias = member "GL_SGIX_texture_lod_bias" extensions
+
+pattern GL_TEXTURE_LOD_BIAS_R_SGIX = 0x8190 :: GLenum
+
+pattern GL_TEXTURE_LOD_BIAS_S_SGIX = 0x818E :: GLenum
+
+pattern GL_TEXTURE_LOD_BIAS_T_SGIX = 0x818F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureMultiBuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureMultiBuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureMultiBuffer.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.TextureMultiBuffer (
+  -- * Extension Support
+    gl_SGIX_texture_multi_buffer
+
+  -- * GL_SGIX_texture_multi_buffer
+  , pattern GL_TEXTURE_MULTI_BUFFER_HINT_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_texture_multi_buffer :: Bool
+gl_SGIX_texture_multi_buffer = member "GL_SGIX_texture_multi_buffer" extensions
+
+pattern GL_TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x812E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureScaleBias.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureScaleBias.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/TextureScaleBias.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.TextureScaleBias (
+  -- * Extension Support
+    gl_SGIX_texture_scale_bias
+
+  -- * GL_SGIX_texture_scale_bias
+  , pattern GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX
+  , pattern GL_POST_TEXTURE_FILTER_BIAS_SGIX
+  , pattern GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX
+  , pattern GL_POST_TEXTURE_FILTER_SCALE_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_texture_scale_bias :: Bool
+gl_SGIX_texture_scale_bias = member "GL_SGIX_texture_scale_bias" extensions
+
+pattern GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x817B :: GLenum
+
+pattern GL_POST_TEXTURE_FILTER_BIAS_SGIX = 0x8179 :: GLenum
+
+pattern GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x817C :: GLenum
+
+pattern GL_POST_TEXTURE_FILTER_SCALE_SGIX = 0x817A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/VertexPreclip.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/VertexPreclip.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/VertexPreclip.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.VertexPreclip (
+  -- * Extension Support
+    gl_SGIX_vertex_preclip
+
+  -- * GL_SGIX_vertex_preclip
+  , pattern GL_VERTEX_PRECLIP_HINT_SGIX
+  , pattern GL_VERTEX_PRECLIP_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_vertex_preclip :: Bool
+gl_SGIX_vertex_preclip = member "GL_SGIX_vertex_preclip" extensions
+
+pattern GL_VERTEX_PRECLIP_HINT_SGIX = 0x83EF :: GLenum
+
+pattern GL_VERTEX_PRECLIP_SGIX = 0x83EE :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Ycrcb.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Ycrcb.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Ycrcb.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Ycrcb (
+  -- * Extension Support
+    gl_SGIX_ycrcb
+
+  -- * GL_SGIX_ycrcb
+  , pattern GL_YCRCB_422_SGIX
+  , pattern GL_YCRCB_444_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_ycrcb :: Bool
+gl_SGIX_ycrcb = member "GL_SGIX_ycrcb" extensions
+
+pattern GL_YCRCB_422_SGIX = 0x81BB :: GLenum
+
+pattern GL_YCRCB_444_SGIX = 0x81BC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/YcrcbSubsample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/YcrcbSubsample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/YcrcbSubsample.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.YcrcbSubsample (
+  -- * Extension Support
+    gl_SGIX_ycrcb_subsample
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+
+gl_SGIX_ycrcb_subsample :: Bool
+gl_SGIX_ycrcb_subsample = member "GL_SGIX_ycrcb_subsample" extensions
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Ycrcba.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Ycrcba.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SGIX/Ycrcba.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SGIX.Ycrcba (
+  -- * Extension Support
+    gl_SGIX_ycrcba
+
+  -- * GL_SGIX_ycrcba
+  , pattern GL_YCRCBA_SGIX
+  , pattern GL_YCRCB_SGIX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SGIX_ycrcba :: Bool
+gl_SGIX_ycrcba = member "GL_SGIX_ycrcba" extensions
+
+pattern GL_YCRCBA_SGIX = 0x8319 :: GLenum
+
+pattern GL_YCRCB_SGIX = 0x8318 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUN.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUN (
+  -- * SUN Extensions
+    module Graphics.GL.Raw.Extension.SUN.ConvolutionBorderModes
+  , module Graphics.GL.Raw.Extension.SUN.GlobalAlpha
+  , module Graphics.GL.Raw.Extension.SUN.MeshArray
+  , module Graphics.GL.Raw.Extension.SUN.SliceAccum
+  , module Graphics.GL.Raw.Extension.SUN.TriangleList
+  , module Graphics.GL.Raw.Extension.SUN.Vertex
+) where
+
+import Graphics.GL.Raw.Extension.SUN.ConvolutionBorderModes
+import Graphics.GL.Raw.Extension.SUN.GlobalAlpha
+import Graphics.GL.Raw.Extension.SUN.MeshArray
+import Graphics.GL.Raw.Extension.SUN.SliceAccum
+import Graphics.GL.Raw.Extension.SUN.TriangleList
+import Graphics.GL.Raw.Extension.SUN.Vertex
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/ConvolutionBorderModes.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/ConvolutionBorderModes.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/ConvolutionBorderModes.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUN.ConvolutionBorderModes (
+  -- * Extension Support
+    gl_SUN_convolution_border_modes
+
+  -- * GL_SUN_convolution_border_modes
+  , pattern GL_WRAP_BORDER_SUN
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SUN_convolution_border_modes :: Bool
+gl_SUN_convolution_border_modes = member "GL_SUN_convolution_border_modes" extensions
+
+pattern GL_WRAP_BORDER_SUN = 0x81D4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/GlobalAlpha.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/GlobalAlpha.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/GlobalAlpha.hs
@@ -0,0 +1,97 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUN.GlobalAlpha (
+  -- * Extension Support
+    gl_SUN_global_alpha
+
+  -- * GL_SUN_global_alpha
+  , glGlobalAlphaFactorbSUN
+  , glGlobalAlphaFactordSUN
+  , glGlobalAlphaFactorfSUN
+  , glGlobalAlphaFactoriSUN
+  , glGlobalAlphaFactorsSUN
+  , glGlobalAlphaFactorubSUN
+  , glGlobalAlphaFactoruiSUN
+  , glGlobalAlphaFactorusSUN
+  , pattern GL_GLOBAL_ALPHA_FACTOR_SUN
+  , pattern GL_GLOBAL_ALPHA_SUN
+) 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_SUN_global_alpha :: Bool
+gl_SUN_global_alpha = member "GL_SUN_global_alpha" extensions
+
+glGlobalAlphaFactorbSUN :: MonadIO m => GLbyte -> m ()
+glGlobalAlphaFactorbSUN = ffibyteIOV glGlobalAlphaFactorbSUNFunPtr
+
+glGlobalAlphaFactorbSUNFunPtr :: FunPtr (GLbyte -> IO ())
+glGlobalAlphaFactorbSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactorbSUN")
+
+{-# NOINLINE glGlobalAlphaFactorbSUNFunPtr #-}
+
+glGlobalAlphaFactordSUN :: MonadIO m => GLdouble -> m ()
+glGlobalAlphaFactordSUN = ffidoubleIOV glGlobalAlphaFactordSUNFunPtr
+
+glGlobalAlphaFactordSUNFunPtr :: FunPtr (GLdouble -> IO ())
+glGlobalAlphaFactordSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactordSUN")
+
+{-# NOINLINE glGlobalAlphaFactordSUNFunPtr #-}
+
+glGlobalAlphaFactorfSUN :: MonadIO m => GLfloat -> m ()
+glGlobalAlphaFactorfSUN = ffifloatIOV glGlobalAlphaFactorfSUNFunPtr
+
+glGlobalAlphaFactorfSUNFunPtr :: FunPtr (GLfloat -> IO ())
+glGlobalAlphaFactorfSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactorfSUN")
+
+{-# NOINLINE glGlobalAlphaFactorfSUNFunPtr #-}
+
+glGlobalAlphaFactoriSUN :: MonadIO m => GLint -> m ()
+glGlobalAlphaFactoriSUN = ffiintIOV glGlobalAlphaFactoriSUNFunPtr
+
+glGlobalAlphaFactoriSUNFunPtr :: FunPtr (GLint -> IO ())
+glGlobalAlphaFactoriSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactoriSUN")
+
+{-# NOINLINE glGlobalAlphaFactoriSUNFunPtr #-}
+
+glGlobalAlphaFactorsSUN :: MonadIO m => GLshort -> m ()
+glGlobalAlphaFactorsSUN = ffishortIOV glGlobalAlphaFactorsSUNFunPtr
+
+glGlobalAlphaFactorsSUNFunPtr :: FunPtr (GLshort -> IO ())
+glGlobalAlphaFactorsSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactorsSUN")
+
+{-# NOINLINE glGlobalAlphaFactorsSUNFunPtr #-}
+
+glGlobalAlphaFactorubSUN :: MonadIO m => GLubyte -> m ()
+glGlobalAlphaFactorubSUN = ffiubyteIOV glGlobalAlphaFactorubSUNFunPtr
+
+glGlobalAlphaFactorubSUNFunPtr :: FunPtr (GLubyte -> IO ())
+glGlobalAlphaFactorubSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactorubSUN")
+
+{-# NOINLINE glGlobalAlphaFactorubSUNFunPtr #-}
+
+glGlobalAlphaFactoruiSUN :: MonadIO m => GLuint -> m ()
+glGlobalAlphaFactoruiSUN = ffiuintIOV glGlobalAlphaFactoruiSUNFunPtr
+
+glGlobalAlphaFactoruiSUNFunPtr :: FunPtr (GLuint -> IO ())
+glGlobalAlphaFactoruiSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactoruiSUN")
+
+{-# NOINLINE glGlobalAlphaFactoruiSUNFunPtr #-}
+
+glGlobalAlphaFactorusSUN :: MonadIO m => GLushort -> m ()
+glGlobalAlphaFactorusSUN = ffiushortIOV glGlobalAlphaFactorusSUNFunPtr
+
+glGlobalAlphaFactorusSUNFunPtr :: FunPtr (GLushort -> IO ())
+glGlobalAlphaFactorusSUNFunPtr = unsafePerformIO (getProcAddress "glGlobalAlphaFactorusSUN")
+
+{-# NOINLINE glGlobalAlphaFactorusSUNFunPtr #-}
+
+pattern GL_GLOBAL_ALPHA_FACTOR_SUN = 0x81DA :: GLenum
+
+pattern GL_GLOBAL_ALPHA_SUN = 0x81D9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/MeshArray.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/MeshArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/MeshArray.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUN.MeshArray (
+  -- * Extension Support
+    gl_SUN_mesh_array
+
+  -- * GL_SUN_mesh_array
+  , glDrawMeshArraysSUN
+  , pattern GL_QUAD_MESH_SUN
+  , pattern GL_TRIANGLE_MESH_SUN
+) 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_SUN_mesh_array :: Bool
+gl_SUN_mesh_array = member "GL_SUN_mesh_array" extensions
+
+glDrawMeshArraysSUN :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
+glDrawMeshArraysSUN = ffienumintsizeisizeiIOV glDrawMeshArraysSUNFunPtr
+
+glDrawMeshArraysSUNFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
+glDrawMeshArraysSUNFunPtr = unsafePerformIO (getProcAddress "glDrawMeshArraysSUN")
+
+{-# NOINLINE glDrawMeshArraysSUNFunPtr #-}
+
+pattern GL_QUAD_MESH_SUN = 0x8614 :: GLenum
+
+pattern GL_TRIANGLE_MESH_SUN = 0x8615 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/SliceAccum.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/SliceAccum.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/SliceAccum.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUN.SliceAccum (
+  -- * Extension Support
+    gl_SUN_slice_accum
+
+  -- * GL_SUN_slice_accum
+  , pattern GL_SLICE_ACCUM_SUN
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_SUN_slice_accum :: Bool
+gl_SUN_slice_accum = member "GL_SUN_slice_accum" extensions
+
+pattern GL_SLICE_ACCUM_SUN = 0x85CC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/TriangleList.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/TriangleList.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/TriangleList.hs
@@ -0,0 +1,133 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUN.TriangleList (
+  -- * Extension Support
+    gl_SUN_triangle_list
+
+  -- * GL_SUN_triangle_list
+  , glReplacementCodePointerSUN
+  , glReplacementCodeubSUN
+  , glReplacementCodeubvSUN
+  , glReplacementCodeuiSUN
+  , glReplacementCodeuivSUN
+  , glReplacementCodeusSUN
+  , glReplacementCodeusvSUN
+  , pattern GL_R1UI_C3F_V3F_SUN
+  , pattern GL_R1UI_C4F_N3F_V3F_SUN
+  , pattern GL_R1UI_C4UB_V3F_SUN
+  , pattern GL_R1UI_N3F_V3F_SUN
+  , pattern GL_R1UI_T2F_C4F_N3F_V3F_SUN
+  , pattern GL_R1UI_T2F_N3F_V3F_SUN
+  , pattern GL_R1UI_T2F_V3F_SUN
+  , pattern GL_R1UI_V3F_SUN
+  , pattern GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN
+  , pattern GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN
+  , pattern GL_REPLACEMENT_CODE_ARRAY_SUN
+  , pattern GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN
+  , pattern GL_REPLACEMENT_CODE_SUN
+  , pattern GL_REPLACE_MIDDLE_SUN
+  , pattern GL_REPLACE_OLDEST_SUN
+  , pattern GL_RESTART_SUN
+  , pattern GL_TRIANGLE_LIST_SUN
+) 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_SUN_triangle_list :: Bool
+gl_SUN_triangle_list = member "GL_SUN_triangle_list" extensions
+
+glReplacementCodePointerSUN :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
+glReplacementCodePointerSUN = ffienumsizeiPtrVIOV glReplacementCodePointerSUNFunPtr
+
+glReplacementCodePointerSUNFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
+glReplacementCodePointerSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodePointerSUN")
+
+{-# NOINLINE glReplacementCodePointerSUNFunPtr #-}
+
+glReplacementCodeubSUN :: MonadIO m => GLubyte -> m ()
+glReplacementCodeubSUN = ffiubyteIOV glReplacementCodeubSUNFunPtr
+
+glReplacementCodeubSUNFunPtr :: FunPtr (GLubyte -> IO ())
+glReplacementCodeubSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeubSUN")
+
+{-# NOINLINE glReplacementCodeubSUNFunPtr #-}
+
+glReplacementCodeubvSUN :: MonadIO m => Ptr GLubyte -> m ()
+glReplacementCodeubvSUN = ffiPtrubyteIOV glReplacementCodeubvSUNFunPtr
+
+glReplacementCodeubvSUNFunPtr :: FunPtr (Ptr GLubyte -> IO ())
+glReplacementCodeubvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeubvSUN")
+
+{-# NOINLINE glReplacementCodeubvSUNFunPtr #-}
+
+glReplacementCodeuiSUN :: MonadIO m => GLuint -> m ()
+glReplacementCodeuiSUN = ffiuintIOV glReplacementCodeuiSUNFunPtr
+
+glReplacementCodeuiSUNFunPtr :: FunPtr (GLuint -> IO ())
+glReplacementCodeuiSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiSUN")
+
+{-# NOINLINE glReplacementCodeuiSUNFunPtr #-}
+
+glReplacementCodeuivSUN :: MonadIO m => Ptr GLuint -> m ()
+glReplacementCodeuivSUN = ffiPtruintIOV glReplacementCodeuivSUNFunPtr
+
+glReplacementCodeuivSUNFunPtr :: FunPtr (Ptr GLuint -> IO ())
+glReplacementCodeuivSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuivSUN")
+
+{-# NOINLINE glReplacementCodeuivSUNFunPtr #-}
+
+glReplacementCodeusSUN :: MonadIO m => GLushort -> m ()
+glReplacementCodeusSUN = ffiushortIOV glReplacementCodeusSUNFunPtr
+
+glReplacementCodeusSUNFunPtr :: FunPtr (GLushort -> IO ())
+glReplacementCodeusSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeusSUN")
+
+{-# NOINLINE glReplacementCodeusSUNFunPtr #-}
+
+glReplacementCodeusvSUN :: MonadIO m => Ptr GLushort -> m ()
+glReplacementCodeusvSUN = ffiPtrushortIOV glReplacementCodeusvSUNFunPtr
+
+glReplacementCodeusvSUNFunPtr :: FunPtr (Ptr GLushort -> IO ())
+glReplacementCodeusvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeusvSUN")
+
+{-# NOINLINE glReplacementCodeusvSUNFunPtr #-}
+
+pattern GL_R1UI_C3F_V3F_SUN = 0x85C6 :: GLenum
+
+pattern GL_R1UI_C4F_N3F_V3F_SUN = 0x85C8 :: GLenum
+
+pattern GL_R1UI_C4UB_V3F_SUN = 0x85C5 :: GLenum
+
+pattern GL_R1UI_N3F_V3F_SUN = 0x85C7 :: GLenum
+
+pattern GL_R1UI_T2F_C4F_N3F_V3F_SUN = 0x85CB :: GLenum
+
+pattern GL_R1UI_T2F_N3F_V3F_SUN = 0x85CA :: GLenum
+
+pattern GL_R1UI_T2F_V3F_SUN = 0x85C9 :: GLenum
+
+pattern GL_R1UI_V3F_SUN = 0x85C4 :: GLenum
+
+pattern GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN = 0x85C3 :: GLenum
+
+pattern GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN = 0x85C2 :: GLenum
+
+pattern GL_REPLACEMENT_CODE_ARRAY_SUN = 0x85C0 :: GLenum
+
+pattern GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN = 0x85C1 :: GLenum
+
+pattern GL_REPLACEMENT_CODE_SUN = 0x81D8 :: GLenum
+
+pattern GL_REPLACE_MIDDLE_SUN = 0x0002 :: GLenum
+
+pattern GL_REPLACE_OLDEST_SUN = 0x0003 :: GLenum
+
+pattern GL_RESTART_SUN = 0x0001 :: GLenum
+
+pattern GL_TRIANGLE_LIST_SUN = 0x81D7 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/Vertex.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/Vertex.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUN/Vertex.hs
@@ -0,0 +1,379 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUN.Vertex (
+  -- * Extension Support
+    gl_SUN_vertex
+
+  -- * GL_SUN_vertex
+  , glColor3fVertex3fSUN
+  , glColor3fVertex3fvSUN
+  , glColor4fNormal3fVertex3fSUN
+  , glColor4fNormal3fVertex3fvSUN
+  , glColor4ubVertex2fSUN
+  , glColor4ubVertex2fvSUN
+  , glColor4ubVertex3fSUN
+  , glColor4ubVertex3fvSUN
+  , glNormal3fVertex3fSUN
+  , glNormal3fVertex3fvSUN
+  , glReplacementCodeuiColor3fVertex3fSUN
+  , glReplacementCodeuiColor3fVertex3fvSUN
+  , glReplacementCodeuiColor4fNormal3fVertex3fSUN
+  , glReplacementCodeuiColor4fNormal3fVertex3fvSUN
+  , glReplacementCodeuiColor4ubVertex3fSUN
+  , glReplacementCodeuiColor4ubVertex3fvSUN
+  , glReplacementCodeuiNormal3fVertex3fSUN
+  , glReplacementCodeuiNormal3fVertex3fvSUN
+  , glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN
+  , glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN
+  , glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN
+  , glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN
+  , glReplacementCodeuiTexCoord2fVertex3fSUN
+  , glReplacementCodeuiTexCoord2fVertex3fvSUN
+  , glReplacementCodeuiVertex3fSUN
+  , glReplacementCodeuiVertex3fvSUN
+  , glTexCoord2fColor3fVertex3fSUN
+  , glTexCoord2fColor3fVertex3fvSUN
+  , glTexCoord2fColor4fNormal3fVertex3fSUN
+  , glTexCoord2fColor4fNormal3fVertex3fvSUN
+  , glTexCoord2fColor4ubVertex3fSUN
+  , glTexCoord2fColor4ubVertex3fvSUN
+  , glTexCoord2fNormal3fVertex3fSUN
+  , glTexCoord2fNormal3fVertex3fvSUN
+  , glTexCoord2fVertex3fSUN
+  , glTexCoord2fVertex3fvSUN
+  , glTexCoord4fColor4fNormal3fVertex4fSUN
+  , glTexCoord4fColor4fNormal3fVertex4fvSUN
+  , glTexCoord4fVertex4fSUN
+  , glTexCoord4fVertex4fvSUN
+) 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_SUN_vertex :: Bool
+gl_SUN_vertex = member "GL_SUN_vertex" extensions
+
+glColor3fVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glColor3fVertex3fSUN = ffifloatfloatfloatfloatfloatfloatIOV glColor3fVertex3fSUNFunPtr
+
+glColor3fVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glColor3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glColor3fVertex3fSUN")
+
+{-# NOINLINE glColor3fVertex3fSUNFunPtr #-}
+
+glColor3fVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> m ()
+glColor3fVertex3fvSUN = ffiPtrfloatPtrfloatIOV glColor3fVertex3fvSUNFunPtr
+
+glColor3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ())
+glColor3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glColor3fVertex3fvSUN")
+
+{-# NOINLINE glColor3fVertex3fvSUNFunPtr #-}
+
+glColor4fNormal3fVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glColor4fNormal3fVertex3fSUN = ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV glColor4fNormal3fVertex3fSUNFunPtr
+
+glColor4fNormal3fVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glColor4fNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glColor4fNormal3fVertex3fSUN")
+
+{-# NOINLINE glColor4fNormal3fVertex3fSUNFunPtr #-}
+
+glColor4fNormal3fVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glColor4fNormal3fVertex3fvSUN = ffiPtrfloatPtrfloatPtrfloatIOV glColor4fNormal3fVertex3fvSUNFunPtr
+
+glColor4fNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glColor4fNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glColor4fNormal3fVertex3fvSUN")
+
+{-# NOINLINE glColor4fNormal3fVertex3fvSUNFunPtr #-}
+
+glColor4ubVertex2fSUN :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> m ()
+glColor4ubVertex2fSUN = ffiubyteubyteubyteubytefloatfloatIOV glColor4ubVertex2fSUNFunPtr
+
+glColor4ubVertex2fSUNFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> IO ())
+glColor4ubVertex2fSUNFunPtr = unsafePerformIO (getProcAddress "glColor4ubVertex2fSUN")
+
+{-# NOINLINE glColor4ubVertex2fSUNFunPtr #-}
+
+glColor4ubVertex2fvSUN :: MonadIO m => Ptr GLubyte -> Ptr GLfloat -> m ()
+glColor4ubVertex2fvSUN = ffiPtrubytePtrfloatIOV glColor4ubVertex2fvSUNFunPtr
+
+glColor4ubVertex2fvSUNFunPtr :: FunPtr (Ptr GLubyte -> Ptr GLfloat -> IO ())
+glColor4ubVertex2fvSUNFunPtr = unsafePerformIO (getProcAddress "glColor4ubVertex2fvSUN")
+
+{-# NOINLINE glColor4ubVertex2fvSUNFunPtr #-}
+
+glColor4ubVertex3fSUN :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> m ()
+glColor4ubVertex3fSUN = ffiubyteubyteubyteubytefloatfloatfloatIOV glColor4ubVertex3fSUNFunPtr
+
+glColor4ubVertex3fSUNFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glColor4ubVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glColor4ubVertex3fSUN")
+
+{-# NOINLINE glColor4ubVertex3fSUNFunPtr #-}
+
+glColor4ubVertex3fvSUN :: MonadIO m => Ptr GLubyte -> Ptr GLfloat -> m ()
+glColor4ubVertex3fvSUN = ffiPtrubytePtrfloatIOV glColor4ubVertex3fvSUNFunPtr
+
+glColor4ubVertex3fvSUNFunPtr :: FunPtr (Ptr GLubyte -> Ptr GLfloat -> IO ())
+glColor4ubVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glColor4ubVertex3fvSUN")
+
+{-# NOINLINE glColor4ubVertex3fvSUNFunPtr #-}
+
+glNormal3fVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glNormal3fVertex3fSUN = ffifloatfloatfloatfloatfloatfloatIOV glNormal3fVertex3fSUNFunPtr
+
+glNormal3fVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glNormal3fVertex3fSUN")
+
+{-# NOINLINE glNormal3fVertex3fSUNFunPtr #-}
+
+glNormal3fVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> m ()
+glNormal3fVertex3fvSUN = ffiPtrfloatPtrfloatIOV glNormal3fVertex3fvSUNFunPtr
+
+glNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ())
+glNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glNormal3fVertex3fvSUN")
+
+{-# NOINLINE glNormal3fVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiColor3fVertex3fSUN :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiColor3fVertex3fSUN = ffiuintfloatfloatfloatfloatfloatfloatIOV glReplacementCodeuiColor3fVertex3fSUNFunPtr
+
+glReplacementCodeuiColor3fVertex3fSUNFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiColor3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiColor3fVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiColor3fVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiColor3fVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glReplacementCodeuiColor3fVertex3fvSUN = ffiPtruintPtrfloatPtrfloatIOV glReplacementCodeuiColor3fVertex3fvSUNFunPtr
+
+glReplacementCodeuiColor3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glReplacementCodeuiColor3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiColor3fVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiColor3fVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiColor4fNormal3fVertex3fSUN :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiColor4fNormal3fVertex3fSUN = ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV glReplacementCodeuiColor4fNormal3fVertex3fSUNFunPtr
+
+glReplacementCodeuiColor4fNormal3fVertex3fSUNFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiColor4fNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiColor4fNormal3fVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiColor4fNormal3fVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiColor4fNormal3fVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glReplacementCodeuiColor4fNormal3fVertex3fvSUN = ffiPtruintPtrfloatPtrfloatPtrfloatIOV glReplacementCodeuiColor4fNormal3fVertex3fvSUNFunPtr
+
+glReplacementCodeuiColor4fNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glReplacementCodeuiColor4fNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiColor4fNormal3fVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiColor4fNormal3fVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiColor4ubVertex3fSUN :: MonadIO m => GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiColor4ubVertex3fSUN = ffiuintubyteubyteubyteubytefloatfloatfloatIOV glReplacementCodeuiColor4ubVertex3fSUNFunPtr
+
+glReplacementCodeuiColor4ubVertex3fSUNFunPtr :: FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiColor4ubVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiColor4ubVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiColor4ubVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiColor4ubVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLubyte -> Ptr GLfloat -> m ()
+glReplacementCodeuiColor4ubVertex3fvSUN = ffiPtruintPtrubytePtrfloatIOV glReplacementCodeuiColor4ubVertex3fvSUNFunPtr
+
+glReplacementCodeuiColor4ubVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLubyte -> Ptr GLfloat -> IO ())
+glReplacementCodeuiColor4ubVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiColor4ubVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiColor4ubVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiNormal3fVertex3fSUN :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiNormal3fVertex3fSUN = ffiuintfloatfloatfloatfloatfloatfloatIOV glReplacementCodeuiNormal3fVertex3fSUNFunPtr
+
+glReplacementCodeuiNormal3fVertex3fSUNFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiNormal3fVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiNormal3fVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiNormal3fVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glReplacementCodeuiNormal3fVertex3fvSUN = ffiPtruintPtrfloatPtrfloatIOV glReplacementCodeuiNormal3fVertex3fvSUNFunPtr
+
+glReplacementCodeuiNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glReplacementCodeuiNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiNormal3fVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiNormal3fVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUNFunPtr
+
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUNFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = ffiPtruintPtrfloatPtrfloatPtrfloatPtrfloatIOV glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr
+
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = ffiuintfloatfloatfloatfloatfloatfloatfloatfloatIOV glReplacementCodeuiTexCoord2fNormal3fVertex3fSUNFunPtr
+
+glReplacementCodeuiTexCoord2fNormal3fVertex3fSUNFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiTexCoord2fNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiTexCoord2fNormal3fVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = ffiPtruintPtrfloatPtrfloatPtrfloatIOV glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUNFunPtr
+
+glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiTexCoord2fVertex3fSUN :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiTexCoord2fVertex3fSUN = ffiuintfloatfloatfloatfloatfloatIOV glReplacementCodeuiTexCoord2fVertex3fSUNFunPtr
+
+glReplacementCodeuiTexCoord2fVertex3fSUNFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiTexCoord2fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiTexCoord2fVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiTexCoord2fVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiTexCoord2fVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glReplacementCodeuiTexCoord2fVertex3fvSUN = ffiPtruintPtrfloatPtrfloatIOV glReplacementCodeuiTexCoord2fVertex3fvSUNFunPtr
+
+glReplacementCodeuiTexCoord2fVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glReplacementCodeuiTexCoord2fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiTexCoord2fVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiTexCoord2fVertex3fvSUNFunPtr #-}
+
+glReplacementCodeuiVertex3fSUN :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
+glReplacementCodeuiVertex3fSUN = ffiuintfloatfloatfloatIOV glReplacementCodeuiVertex3fSUNFunPtr
+
+glReplacementCodeuiVertex3fSUNFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glReplacementCodeuiVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiVertex3fSUN")
+
+{-# NOINLINE glReplacementCodeuiVertex3fSUNFunPtr #-}
+
+glReplacementCodeuiVertex3fvSUN :: MonadIO m => Ptr GLuint -> Ptr GLfloat -> m ()
+glReplacementCodeuiVertex3fvSUN = ffiPtruintPtrfloatIOV glReplacementCodeuiVertex3fvSUNFunPtr
+
+glReplacementCodeuiVertex3fvSUNFunPtr :: FunPtr (Ptr GLuint -> Ptr GLfloat -> IO ())
+glReplacementCodeuiVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glReplacementCodeuiVertex3fvSUN")
+
+{-# NOINLINE glReplacementCodeuiVertex3fvSUNFunPtr #-}
+
+glTexCoord2fColor3fVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glTexCoord2fColor3fVertex3fSUN = ffifloatfloatfloatfloatfloatfloatfloatfloatIOV glTexCoord2fColor3fVertex3fSUNFunPtr
+
+glTexCoord2fColor3fVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glTexCoord2fColor3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fColor3fVertex3fSUN")
+
+{-# NOINLINE glTexCoord2fColor3fVertex3fSUNFunPtr #-}
+
+glTexCoord2fColor3fVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glTexCoord2fColor3fVertex3fvSUN = ffiPtrfloatPtrfloatPtrfloatIOV glTexCoord2fColor3fVertex3fvSUNFunPtr
+
+glTexCoord2fColor3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glTexCoord2fColor3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fColor3fVertex3fvSUN")
+
+{-# NOINLINE glTexCoord2fColor3fVertex3fvSUNFunPtr #-}
+
+glTexCoord2fColor4fNormal3fVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glTexCoord2fColor4fNormal3fVertex3fSUN = ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV glTexCoord2fColor4fNormal3fVertex3fSUNFunPtr
+
+glTexCoord2fColor4fNormal3fVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glTexCoord2fColor4fNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fColor4fNormal3fVertex3fSUN")
+
+{-# NOINLINE glTexCoord2fColor4fNormal3fVertex3fSUNFunPtr #-}
+
+glTexCoord2fColor4fNormal3fVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glTexCoord2fColor4fNormal3fVertex3fvSUN = ffiPtrfloatPtrfloatPtrfloatPtrfloatIOV glTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr
+
+glTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fColor4fNormal3fVertex3fvSUN")
+
+{-# NOINLINE glTexCoord2fColor4fNormal3fVertex3fvSUNFunPtr #-}
+
+glTexCoord2fColor4ubVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> m ()
+glTexCoord2fColor4ubVertex3fSUN = ffifloatfloatubyteubyteubyteubytefloatfloatfloatIOV glTexCoord2fColor4ubVertex3fSUNFunPtr
+
+glTexCoord2fColor4ubVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glTexCoord2fColor4ubVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fColor4ubVertex3fSUN")
+
+{-# NOINLINE glTexCoord2fColor4ubVertex3fSUNFunPtr #-}
+
+glTexCoord2fColor4ubVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLubyte -> Ptr GLfloat -> m ()
+glTexCoord2fColor4ubVertex3fvSUN = ffiPtrfloatPtrubytePtrfloatIOV glTexCoord2fColor4ubVertex3fvSUNFunPtr
+
+glTexCoord2fColor4ubVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLubyte -> Ptr GLfloat -> IO ())
+glTexCoord2fColor4ubVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fColor4ubVertex3fvSUN")
+
+{-# NOINLINE glTexCoord2fColor4ubVertex3fvSUNFunPtr #-}
+
+glTexCoord2fNormal3fVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glTexCoord2fNormal3fVertex3fSUN = ffifloatfloatfloatfloatfloatfloatfloatfloatIOV glTexCoord2fNormal3fVertex3fSUNFunPtr
+
+glTexCoord2fNormal3fVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glTexCoord2fNormal3fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fNormal3fVertex3fSUN")
+
+{-# NOINLINE glTexCoord2fNormal3fVertex3fSUNFunPtr #-}
+
+glTexCoord2fNormal3fVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glTexCoord2fNormal3fVertex3fvSUN = ffiPtrfloatPtrfloatPtrfloatIOV glTexCoord2fNormal3fVertex3fvSUNFunPtr
+
+glTexCoord2fNormal3fVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glTexCoord2fNormal3fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fNormal3fVertex3fvSUN")
+
+{-# NOINLINE glTexCoord2fNormal3fVertex3fvSUNFunPtr #-}
+
+glTexCoord2fVertex3fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glTexCoord2fVertex3fSUN = ffifloatfloatfloatfloatfloatIOV glTexCoord2fVertex3fSUNFunPtr
+
+glTexCoord2fVertex3fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glTexCoord2fVertex3fSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fVertex3fSUN")
+
+{-# NOINLINE glTexCoord2fVertex3fSUNFunPtr #-}
+
+glTexCoord2fVertex3fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> m ()
+glTexCoord2fVertex3fvSUN = ffiPtrfloatPtrfloatIOV glTexCoord2fVertex3fvSUNFunPtr
+
+glTexCoord2fVertex3fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ())
+glTexCoord2fVertex3fvSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fVertex3fvSUN")
+
+{-# NOINLINE glTexCoord2fVertex3fvSUNFunPtr #-}
+
+glTexCoord4fColor4fNormal3fVertex4fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glTexCoord4fColor4fNormal3fVertex4fSUN = ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV glTexCoord4fColor4fNormal3fVertex4fSUNFunPtr
+
+glTexCoord4fColor4fNormal3fVertex4fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glTexCoord4fColor4fNormal3fVertex4fSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord4fColor4fNormal3fVertex4fSUN")
+
+{-# NOINLINE glTexCoord4fColor4fNormal3fVertex4fSUNFunPtr #-}
+
+glTexCoord4fColor4fNormal3fVertex4fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+glTexCoord4fColor4fNormal3fVertex4fvSUN = ffiPtrfloatPtrfloatPtrfloatPtrfloatIOV glTexCoord4fColor4fNormal3fVertex4fvSUNFunPtr
+
+glTexCoord4fColor4fNormal3fVertex4fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ())
+glTexCoord4fColor4fNormal3fVertex4fvSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord4fColor4fNormal3fVertex4fvSUN")
+
+{-# NOINLINE glTexCoord4fColor4fNormal3fVertex4fvSUNFunPtr #-}
+
+glTexCoord4fVertex4fSUN :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glTexCoord4fVertex4fSUN = ffifloatfloatfloatfloatfloatfloatfloatfloatIOV glTexCoord4fVertex4fSUNFunPtr
+
+glTexCoord4fVertex4fSUNFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glTexCoord4fVertex4fSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord4fVertex4fSUN")
+
+{-# NOINLINE glTexCoord4fVertex4fSUNFunPtr #-}
+
+glTexCoord4fVertex4fvSUN :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> m ()
+glTexCoord4fVertex4fvSUN = ffiPtrfloatPtrfloatIOV glTexCoord4fVertex4fvSUNFunPtr
+
+glTexCoord4fVertex4fvSUNFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ())
+glTexCoord4fVertex4fvSUNFunPtr = unsafePerformIO (getProcAddress "glTexCoord4fVertex4fvSUN")
+
+{-# NOINLINE glTexCoord4fVertex4fvSUNFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUNX.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUNX.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUNX.hs
@@ -0,0 +1,8 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUNX (
+  -- * SUNX Extensions
+    module Graphics.GL.Raw.Extension.SUNX.ConstantData
+) where
+
+import Graphics.GL.Raw.Extension.SUNX.ConstantData
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/SUNX/ConstantData.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/SUNX/ConstantData.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/SUNX/ConstantData.hs
@@ -0,0 +1,34 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.SUNX.ConstantData (
+  -- * Extension Support
+    gl_SUNX_constant_data
+
+  -- * GL_SUNX_constant_data
+  , glFinishTextureSUNX
+  , pattern GL_TEXTURE_CONSTANT_DATA_SUNX
+  , pattern GL_UNPACK_CONSTANT_DATA_SUNX
+) 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_SUNX_constant_data :: Bool
+gl_SUNX_constant_data = member "GL_SUNX_constant_data" extensions
+
+glFinishTextureSUNX :: MonadIO m => m ()
+glFinishTextureSUNX = ffiIOV glFinishTextureSUNXFunPtr
+
+glFinishTextureSUNXFunPtr :: FunPtr (IO ())
+glFinishTextureSUNXFunPtr = unsafePerformIO (getProcAddress "glFinishTextureSUNX")
+
+{-# NOINLINE glFinishTextureSUNXFunPtr #-}
+
+pattern GL_TEXTURE_CONSTANT_DATA_SUNX = 0x81D6 :: GLenum
+
+pattern GL_UNPACK_CONSTANT_DATA_SUNX = 0x81D5 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ThreeDFX (
+  -- * 3DFX Extensions
+    module Graphics.GL.Raw.Extension.ThreeDFX.Multisample
+  , module Graphics.GL.Raw.Extension.ThreeDFX.Tbuffer
+  , module Graphics.GL.Raw.Extension.ThreeDFX.TextureCompressionFXT1
+) where
+
+import Graphics.GL.Raw.Extension.ThreeDFX.Multisample
+import Graphics.GL.Raw.Extension.ThreeDFX.Tbuffer
+import Graphics.GL.Raw.Extension.ThreeDFX.TextureCompressionFXT1
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/Multisample.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/Multisample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/Multisample.hs
@@ -0,0 +1,27 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ThreeDFX.Multisample (
+  -- * Extension Support
+    gl_3DFX_multisample
+
+  -- * GL_3DFX_multisample
+  , pattern GL_MULTISAMPLE_3DFX
+  , pattern GL_MULTISAMPLE_BIT_3DFX
+  , pattern GL_SAMPLES_3DFX
+  , pattern GL_SAMPLE_BUFFERS_3DFX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_3DFX_multisample :: Bool
+gl_3DFX_multisample = member "GL_3DFX_multisample" extensions
+
+pattern GL_MULTISAMPLE_3DFX = 0x86B2 :: GLenum
+
+pattern GL_MULTISAMPLE_BIT_3DFX = 0x20000000 :: GLenum
+
+pattern GL_SAMPLES_3DFX = 0x86B4 :: GLenum
+
+pattern GL_SAMPLE_BUFFERS_3DFX = 0x86B3 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/Tbuffer.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/Tbuffer.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/Tbuffer.hs
@@ -0,0 +1,28 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ThreeDFX.Tbuffer (
+  -- * Extension Support
+    gl_3DFX_tbuffer
+
+  -- * GL_3DFX_tbuffer
+  , glTbufferMask3DFX
+) 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_3DFX_tbuffer :: Bool
+gl_3DFX_tbuffer = member "GL_3DFX_tbuffer" extensions
+
+glTbufferMask3DFX :: MonadIO m => GLuint -> m ()
+glTbufferMask3DFX = ffiuintIOV glTbufferMask3DFXFunPtr
+
+glTbufferMask3DFXFunPtr :: FunPtr (GLuint -> IO ())
+glTbufferMask3DFXFunPtr = unsafePerformIO (getProcAddress "glTbufferMask3DFX")
+
+{-# NOINLINE glTbufferMask3DFXFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/TextureCompressionFXT1.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/TextureCompressionFXT1.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/ThreeDFX/TextureCompressionFXT1.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.ThreeDFX.TextureCompressionFXT1 (
+  -- * Extension Support
+    gl_3DFX_texture_compression_FXT1
+
+  -- * GL_3DFX_texture_compression_FXT1
+  , pattern GL_COMPRESSED_RGBA_FXT1_3DFX
+  , pattern GL_COMPRESSED_RGB_FXT1_3DFX
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_3DFX_texture_compression_FXT1 :: Bool
+gl_3DFX_texture_compression_FXT1 = member "GL_3DFX_texture_compression_FXT1" extensions
+
+pattern GL_COMPRESSED_RGBA_FXT1_3DFX = 0x86B1 :: GLenum
+
+pattern GL_COMPRESSED_RGB_FXT1_3DFX = 0x86B0 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/VIV.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/VIV.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/VIV.hs
@@ -0,0 +1,8 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.VIV (
+  -- * VIV Extensions
+    module Graphics.GL.Raw.Extension.VIV.ShaderBinary
+) where
+
+import Graphics.GL.Raw.Extension.VIV.ShaderBinary
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/VIV/ShaderBinary.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/VIV/ShaderBinary.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/VIV/ShaderBinary.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.VIV.ShaderBinary (
+  -- * Extension Support
+    gl_VIV_shader_binary
+
+  -- * GL_VIV_shader_binary
+  , pattern GL_SHADER_BINARY_VIV
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_VIV_shader_binary :: Bool
+gl_VIV_shader_binary = member "GL_VIV_shader_binary" extensions
+
+pattern GL_SHADER_BINARY_VIV = 0x8FC4 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/WIN.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/WIN.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/WIN.hs
@@ -0,0 +1,10 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.WIN (
+  -- * WIN Extensions
+    module Graphics.GL.Raw.Extension.WIN.PhongShading
+  , module Graphics.GL.Raw.Extension.WIN.SpecularFog
+) where
+
+import Graphics.GL.Raw.Extension.WIN.PhongShading
+import Graphics.GL.Raw.Extension.WIN.SpecularFog
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/WIN/PhongShading.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/WIN/PhongShading.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/WIN/PhongShading.hs
@@ -0,0 +1,21 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.WIN.PhongShading (
+  -- * Extension Support
+    gl_WIN_phong_shading
+
+  -- * GL_WIN_phong_shading
+  , pattern GL_PHONG_HINT_WIN
+  , pattern GL_PHONG_WIN
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_WIN_phong_shading :: Bool
+gl_WIN_phong_shading = member "GL_WIN_phong_shading" extensions
+
+pattern GL_PHONG_HINT_WIN = 0x80EB :: GLenum
+
+pattern GL_PHONG_WIN = 0x80EA :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Extension/WIN/SpecularFog.hs b/dist/build/autogen/Graphics/GL/Raw/Extension/WIN/SpecularFog.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Extension/WIN/SpecularFog.hs
@@ -0,0 +1,18 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Extension.WIN.SpecularFog (
+  -- * Extension Support
+    gl_WIN_specular_fog
+
+  -- * GL_WIN_specular_fog
+  , pattern GL_FOG_SPECULAR_TEXTURE_WIN
+) where
+
+import Data.Set
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+
+gl_WIN_specular_fog :: Bool
+gl_WIN_specular_fog = member "GL_WIN_specular_fog" extensions
+
+pattern GL_FOG_SPECULAR_TEXTURE_WIN = 0x80EC :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Internal/FFI.hs b/dist/build/autogen/Graphics/GL/Raw/Internal/FFI.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Internal/FFI.hs
@@ -0,0 +1,5152 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Internal.FFI (
+  -- * Invokers
+    ffienumfloatIOV
+  , ffienumfixedIOV
+  , ffiuintIOV
+  , ffiuintuintIOV
+  , ffienumIOV
+  , ffiuintPtrcharIOV
+  , ffienumuintuintuintuintuintIOV
+  , ffienumuintuintuintuintuintuintuintuintIOV
+  , ffienumuintuintuintuintuintuintuintuintuintuintuintIOV
+  , ffienumclampfIOV
+  , ffisizeiPtruintPtrbooleanIOboolean
+  , ffiintIOV
+  , ffienumintenumsizeiuintuintIOV
+  , ffihandleARBhandleARBIOV
+  , ffiuintenumIOV
+  , ffiIOV
+  , ffienumuintIOV
+  , ffienumuintuintIOV
+  , ffiuintuintPtrcharIOV
+  , ffihandleARBuintPtrcharARBIOV
+  , ffienumuintuintintptrIOV
+  , ffienumuintuintintptrsizeiptrIOV
+  , ffienumuintsizeiPtruintIOV
+  , ffienumuintsizeiPtruintPtrintptrPtrsizeiptrIOV
+  , ffiuintuintuintPtrcharIOV
+  , ffiuintuintintbooleanintenumenumIOV
+  , ffiuintuintintbooleanintenumintIOV
+  , ffiuintsizeiPtruintIOV
+  , ffienumenumIOuint
+  , ffienumenumuintIOV
+  , ffienumIOuint
+  , ffienumenumenumIOuint
+  , ffiuintuintintptrsizeiIOV
+  , ffiuintsizeiPtruintPtrintptrPtrsizeiIOV
+  , ffiuintuintenumintptrARBIOV
+  , ffiuintuintenumenumuintIOV
+  , ffibytebytebyteIOV
+  , ffiPtrbyteIOV
+  , ffidoubledoubledoubleIOV
+  , ffiPtrdoubleIOV
+  , ffifloatfloatfloatIOV
+  , ffiPtrfloatIOV
+  , ffiintintintIOV
+  , ffiPtrintIOV
+  , ffishortshortshortIOV
+  , ffiPtrshortIOV
+  , ffienumsizeiPtrVIOV
+  , ffisizeisizeifloatfloatfloatfloatPtrubyteIOV
+  , ffisizeisizeifixedfixedfixedfixedPtrubyteIOV
+  , ffifloatfloatfloatfloatIOV
+  , ffifixedfixedfixedfixedIOV
+  , ffienumenumIOV
+  , ffiuintenumenumIOV
+  , ffienumenumenumenumIOV
+  , ffiuintenumenumenumenumIOV
+  , ffienumintIOV
+  , ffiintintintintintintintintbitfieldenumIOV
+  , ffiuintuintintintintintintintintintbitfieldenumIOV
+  , ffienumuintuint64EXTsizeiptrIOV
+  , ffienumsizeiptrPtrVenumIOV
+  , ffienumsizeiptrARBPtrVenumIOV
+  , ffienumintptrsizeiptrbooleanIOV
+  , ffienumenumintIOV
+  , ffienumsizeiptrPtrVbitfieldIOV
+  , ffienumintptrsizeiptrPtrVIOV
+  , ffienumintptrARBsizeiptrARBPtrVIOV
+  , ffisizeienumPtrVIOV
+  , ffienumIOenum
+  , ffiuintenumIOenum
+  , ffibitfieldIOV
+  , ffienumenumenumenumPtrVIOV
+  , ffienumenumintptrsizeiptrenumenumPtrVIOV
+  , ffienumintfloatintIOV
+  , ffienumintPtrfloatIOV
+  , ffienumintPtrintIOV
+  , ffienumintPtruintIOV
+  , ffiintintintintIOV
+  , ffiuintuintuintuintIOV
+  , ffidoubleIOV
+  , ffifloatIOV
+  , fficlampfIOV
+  , ffifixedIOV
+  , ffiuintenumenumenumPtrVIOV
+  , ffiuintenumintptrsizeienumenumPtrVIOV
+  , ffiuintenumsizeiptrsizeiptrenumenumPtrVIOV
+  , ffiuintenumfloatintIOV
+  , ffiuintenumintPtrfloatIOV
+  , ffiuintenumintPtrintIOV
+  , ffiuintenumintPtruintIOV
+  , ffiuintintenumenumPtrVIOV
+  , ffiuintintintintintsizeisizeisizeienumenumPtrVIOV
+  , ffisyncbitfielduint64IOenum
+  , ffienumPtrdoubleIOV
+  , ffienumPtrfloatIOV
+  , ffienumPtrfixedIOV
+  , ffifloatfloatfloatfloatfloatfloatIOV
+  , ffiPtrfloatPtrfloatIOV
+  , ffihalfNVhalfNVhalfNVIOV
+  , ffiPtrhalfNVIOV
+  , ffiubyteubyteubyteIOV
+  , ffiPtrubyteIOV
+  , ffiuintuintuintIOV
+  , ffiPtruintIOV
+  , ffiushortushortushortIOV
+  , ffiPtrushortIOV
+  , ffifixedfixedfixedIOV
+  , ffiPtrfixedIOV
+  , ffibytebytebytebyteIOV
+  , ffidoubledoubledoubledoubleIOV
+  , ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffiPtrfloatPtrfloatPtrfloatIOV
+  , ffihalfNVhalfNVhalfNVhalfNVIOV
+  , ffishortshortshortshortIOV
+  , ffiubyteubyteubyteubyteIOV
+  , ffiubyteubyteubyteubytefloatfloatIOV
+  , ffiPtrubytePtrfloatIOV
+  , ffiubyteubyteubyteubytefloatfloatfloatIOV
+  , ffiushortushortushortushortIOV
+  , ffiintenumsizeiIOV
+  , ffienumuintuintuintuintuintuintIOV
+  , ffienumuintuintuintuintuintuintuintuintuintIOV
+  , ffienumuintuintuintuintuintuintuintuintuintuintuintuintIOV
+  , ffibooleanbooleanbooleanbooleanIOV
+  , ffiuintbooleanbooleanbooleanbooleanIOV
+  , ffienumPtruintIOV
+  , ffiintenumsizeiPtrVIOV
+  , ffiintenumsizeisizeiPtrVIOV
+  , ffiintenumintPtrVintIOV
+  , ffiintenumPtrVIOV
+  , ffienumsizeisizeienumenumPtrVIOV
+  , ffienumenumsizeienumenumPtrVIOV
+  , ffienumenumPtrfloatIOV
+  , ffienumenumPtrintIOV
+  , ffienumenumenumenumenumenumIOV
+  , ffienumenumenumenumenumenumenumbooleanbooleanbooleanIOV
+  , ffienumPtrintIOV
+  , ffihandleARBIOV
+  , ffiuintsizeiPtrcharPtrintIOV
+  , ffienumenumintenumsizeiintsizeiPtrVIOV
+  , ffienumenumintenumsizeisizeiintsizeiPtrVIOV
+  , ffienumenumintenumsizeisizeisizeiintsizeiPtrVIOV
+  , ffienumenumintintsizeienumsizeiPtrVIOV
+  , ffienumenumintintintsizeisizeienumsizeiPtrVIOV
+  , ffienumenumintintintintsizeisizeisizeienumsizeiPtrVIOV
+  , ffienumintenumsizeiintsizeiPtrVIOV
+  , ffienumintenumsizeisizeiintsizeiPtrVIOV
+  , ffienumintenumsizeisizeisizeiintsizeiPtrVIOV
+  , ffienumintintsizeienumsizeiPtrVIOV
+  , ffienumintintintsizeisizeienumsizeiPtrVIOV
+  , ffienumintintintintsizeisizeisizeienumsizeiPtrVIOV
+  , ffiuintenumintenumsizeiintsizeiPtrVIOV
+  , ffiuintenumintenumsizeisizeiintsizeiPtrVIOV
+  , ffiuintenumintenumsizeisizeisizeiintsizeiPtrVIOV
+  , ffiuintintintsizeienumsizeiPtrVIOV
+  , ffiuintenumintintsizeienumsizeiPtrVIOV
+  , ffiuintintintintsizeisizeienumsizeiPtrVIOV
+  , ffiuintenumintintintsizeisizeienumsizeiPtrVIOV
+  , ffiuintintintintintsizeisizeisizeienumsizeiPtrVIOV
+  , ffiuintenumintintintintsizeisizeisizeienumsizeiPtrVIOV
+  , ffienumenumsizeisizeienumenumPtrVIOV
+  , ffienumenumfloatIOV
+  , ffienumenumfixedIOV
+  , ffienumenumPtrfixedIOV
+  , ffienumenumintptrintptrsizeiptrIOV
+  , ffienumsizeiintintsizeiIOV
+  , ffienumenumintintsizeiIOV
+  , ffienumenumintintsizeisizeiIOV
+  , ffiuintenumintintintintuintenumintintintintsizeisizeisizeiIOV
+  , ffienumenumintenumintintsizeiintIOV
+  , ffienumenumintenumintintsizeisizeiintIOV
+  , ffienumenumintintintintsizeiIOV
+  , ffienumenumintintintintintsizeisizeiIOV
+  , ffienumenumintintintintintintsizeisizeiIOV
+  , ffiuintuintintptrintptrsizeiIOV
+  , ffiintintsizeisizeienumIOV
+  , ffienumintenumintintsizeiintIOV
+  , ffienumintenumintintsizeisizeiintIOV
+  , ffienumintintintintsizeiIOV
+  , ffienumintintintintintsizeisizeiIOV
+  , ffienumintintintintintintsizeisizeiIOV
+  , ffiuintenumintenumintintsizeiintIOV
+  , ffiuintenumintenumintintsizeisizeiintIOV
+  , ffiuintuintintsizeiIOV
+  , ffiuintintintintintsizeiIOV
+  , ffiuintenumintintintintsizeiIOV
+  , ffiuintintintintintintsizeisizeiIOV
+  , ffiuintenumintintintintintsizeisizeiIOV
+  , ffiuintintintintintintintsizeisizeiIOV
+  , ffiuintenumintintintintintintsizeisizeiIOV
+  , ffisizeienumPtrVuintenumenumPtrfloatIOV
+  , ffibooleanIOV
+  , ffisizeiPtrfloatIOV
+  , ffisizeiPtruintIOV
+  , ffiuintPtruintIOV
+  , ffiIOuint
+  , ffiIOhandleARB
+  , ffienumsizeiPtruintIOV
+  , ffienumIOhandleARB
+  , ffienumPtrcharIOuint
+  , ffienumsizeiPtrcharIOuint
+  , ffiPtrVPtrVbitfieldIOsync
+  , ffiDEBUGPROCPtrVIOV
+  , ffiDEBUGPROCAMDPtrVIOV
+  , ffiDEBUGPROCARBPtrVIOV
+  , ffiDEBUGPROCKHRPtrVIOV
+  , ffienumenumenumsizeiPtruintbooleanIOV
+  , ffienumenumsizeiPtruintbooleanIOV
+  , ffienumenumuintenumsizeiPtrcharIOV
+  , ffienumenumuintsizeiPtrcharIOV
+  , ffienumdoubledoubleintintdoubledoubleintintdoubledoubleintintPtrdoubleIOV
+  , ffienumfloatfloatintintfloatfloatintintfloatfloatintintPtrfloatIOV
+  , ffiuintsizeiIOV
+  , ffiintPtrcharIOV
+  , ffienumuintPtruintIOV
+  , ffisyncIOV
+  , fficlampdclampdIOV
+  , ffidoubledoubleIOV
+  , ffiuintsizeiPtrdoubleIOV
+  , ffiuintdoubledoubleIOV
+  , ffifloatfloatIOV
+  , fficlampfclampfIOV
+  , ffifixedfixedIOV
+  , ffienumsizeiPtrfloatIOV
+  , ffienumsizeiPtrenumIOV
+  , ffiuintuintuintuintuintuintIOV
+  , ffiintptrIOV
+  , ffienumintsizeiIOV
+  , ffienumPtrVIOV
+  , ffienumintsizeisizeiIOV
+  , ffienumintsizeisizeiuintIOV
+  , ffisizeiPtrenumIOV
+  , ffiintPtrenumPtrintIOV
+  , ffienumsizeiIOV
+  , ffienumsizeienumPtrVIOV
+  , ffienumsizeienumPtrVintIOV
+  , ffienumenumPtrVIOV
+  , ffienumsizeienumPtrVsizeiIOV
+  , ffienumsizeienumPtrVsizeiuintIOV
+  , ffienumsizeienumPtrVsizeiintIOV
+  , ffienumsizeienumPtrVsizeiintuintIOV
+  , ffisizeisizeienumenumPtrVIOV
+  , ffienumuintuintintsizeiIOV
+  , ffienumuintuintsizeiIOV
+  , ffienumuintuintsizeienumPtrVIOV
+  , ffienumuintuintsizeienumPtrVintIOV
+  , ffifloatfloatfloatfloatfloatIOV
+  , ffiintintintintintIOV
+  , ffishortshortshortshortshortIOV
+  , ffiuintuintfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffifixedfixedfixedfixedfixedIOV
+  , ffienumuintsizeiIOV
+  , ffienumeglImageOESIOV
+  , ffisizeiIOV
+  , ffisizeiPtrVIOV
+  , ffisizeisizeiPtrbooleanIOV
+  , ffiintPtrbooleanintIOV
+  , ffiPtrbooleanIOV
+  , ffienumintintIOV
+  , ffienumintintintintIOV
+  , ffiintintIOV
+  , ffienumuintPtrfloatIOV
+  , ffiPtruintintPtrintIOV
+  , ffiuintenumPtrcharPtrintIOV
+  , ffiuintenumintenumPtrintIOV
+  , ffienumintintintintsizeisizeisizeienumenumPtrVIOV
+  , ffiuintIOboolean
+  , ffisizeienumPtrfloatIOV
+  , ffisizeienumPtrfixedIOV
+  , ffienumbitfieldIOsync
+  , ffiPtruintIOint
+  , ffienumintptrsizeiptrIOV
+  , ffiuintintptrsizeiIOV
+  , ffiuintintptrsizeiptrIOV
+  , ffienumintPtrVintIOV
+  , ffihalfNVIOV
+  , ffiuintsizeiPtrenumIOV
+  , ffienumenumenumuintIOV
+  , ffienumuintsizeiPtrfloatIOV
+  , ffienumenumuintintIOV
+  , ffienumenumenumuintintIOV
+  , ffienumenumenumuintintsizeiIOV
+  , ffienumenumenumuintintintIOV
+  , ffienumenumuintintenumIOV
+  , ffienumenumuintintintIOV
+  , ffidoubledoubledoubledoubledoubledoubleIOV
+  , ffifixedfixedfixedfixedfixedfixedIOV
+  , ffisizeiIOuint
+  , ffiuintIOuint
+  , ffienumenumenumuintIOuint
+  , ffiuintuintenumPtrintIOV
+  , ffiuintuintsizeiPtrsizeiPtrintPtrenumPtrcharIOV
+  , ffihandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV
+  , ffiuintenumuintsizeiPtrsizeiPtrcharIOV
+  , ffiuintenumuintenumPtrintIOV
+  , ffiuintuintsizeiPtrsizeiPtrcharIOV
+  , ffiuintsizeiPtruintenumPtrintIOV
+  , ffiuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV
+  , ffihandleARBsizeiPtrsizeiPtrhandleARBIOV
+  , ffiuintsizeiPtrsizeiPtruintIOV
+  , ffiuintPtrcharIOint
+  , ffihandleARBPtrcharARBIOint
+  , ffienumuintPtrbooleanIOV
+  , ffienumPtrbooleanIOV
+  , ffienumenumPtrint64IOV
+  , ffienumenumPtruint64EXTIOV
+  , ffienumenumenumPtrVIOV
+  , ffienumenumenumenumPtrfloatIOV
+  , ffienumenumenumenumPtrintIOV
+  , ffienumenumenumPtrfloatIOV
+  , ffienumenumenumPtrintIOV
+  , ffienumenumintPtrVIOV
+  , ffienumintPtrVIOV
+  , ffiuintintsizeiPtrVIOV
+  , ffiuintenumintPtrVIOV
+  , ffiuintintintintintsizeisizeisizeisizeiPtrVIOV
+  , ffiuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint
+  , ffiuintsizeiPtrenumPtruintPtruintPtrsizeiPtrcharIOuint
+  , ffienumuintPtrdoubleIOV
+  , ffiuintsizeiPtrsizeiPtrcharIOV
+  , ffiPtrintsizeiPtruintIOV
+  , ffiIOenum
+  , ffiuintenumPtrintIOV
+  , ffienumbooleanenumenumPtrVIOV
+  , ffiuintintbooleanintenumIOuint64
+  , ffihandleARBsizeiPtrsizeiPtrcharARBIOV
+  , ffiIOint
+  , ffienumuintPtrint64IOV
+  , ffienumPtrint64IOV
+  , ffienumuintPtrintIOV
+  , ffienumuintPtruint64EXTIOV
+  , ffienumPtruint64EXTIOV
+  , ffienumenumsizeienumsizeiPtrintIOV
+  , ffienumenumenumsizeiPtrint64IOV
+  , ffienumenumenumsizeiPtrintIOV
+  , ffiuintenumPtrbooleanIOV
+  , ffiuintenumPtrfloatIOV
+  , ffienumuintenumPtrfloatIOV
+  , ffienumuintenumPtrintIOV
+  , ffienumuintenumsizeisizeibooleanPtrVIOV
+  , ffienumenumPtrdoubleIOV
+  , ffienumenumenumPtrdoubleIOV
+  , ffienumenumintenumenumPtrVIOV
+  , ffienumenumintenumPtrfloatIOV
+  , ffienumenumintenumPtrintIOV
+  , ffienumenumenumPtruintIOV
+  , ffiuintenumPtrint64IOV
+  , ffiuintenumPtruint64EXTIOV
+  , ffiuintenumPtrVIOV
+  , ffiuintintptrsizeiPtrVIOV
+  , ffiuintintptrsizeiptrPtrVIOV
+  , ffiuintenumenumPtrintIOV
+  , ffiuintenumuintPtrintIOV
+  , ffiuintenumuintPtruintIOV
+  , ffiuintenumuintPtrdoubleIOV
+  , ffiuintenumuintPtrfloatIOV
+  , ffiuintenumenumPtrVIOV
+  , ffiintPtrcharsizeiPtrintPtrcharIOV
+  , ffiintPtrcharenumPtrintIOV
+  , ffienumuintsizeiPtrsizeiPtrcharIOV
+  , ffihandleARBenumPtrfloatIOV
+  , ffihandleARBenumPtrintIOV
+  , ffiPtrVsizeiPtrsizeiPtrcharIOV
+  , ffiuintenumPtruintIOV
+  , ffiuintPtrubyteIOV
+  , ffiuintPtrfloatIOV
+  , ffiuintsizeisizeiIOfloat
+  , ffibitfielduintsizeisizeiPtrfloatIOV
+  , ffibitfieldsizeienumPtrVuintsizeiPtrfloatIOV
+  , ffienumsizeienumPtrVuintfloatfloatenumPtrfloatIOV
+  , ffiuintuintuintPtrcharuintPtrcharPtruintPtruintPtruintPtruintPtruint64IOV
+  , ffiuintenumsizeiPtruintPtrintIOV
+  , ffiuintuintenumPtrVIOV
+  , ffiuintPtrintPtrintsizeiPtruintIOV
+  , ffiuintuintsizeiPtrVPtruintIOV
+  , ffiPtrcharPtruintIOV
+  , ffiuintuintPtrcharPtruintPtruintPtruintPtruintIOV
+  , ffienumPtrushortIOV
+  , ffienumintPtrfixedIOV
+  , ffienumuintPtrVIOV
+  , ffiuintsizeiPtrsizeiPtrenumPtrVIOV
+  , ffiuintsizeiPtrubytePtrdoubleIOV
+  , ffiuintsizeiPtrubytePtrfloatIOV
+  , ffienumuintenumPtrdoubleIOV
+  , ffiuintenumPtrcharIOuint
+  , ffiuintenumPtrcharIOint
+  , ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrfloatIOV
+  , ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrintIOV
+  , ffiuintenumPtrubyteIOV
+  , ffiuintuintenumintptrIOV
+  , ffiuintenumPtruint64IOV
+  , ffienumenumenumPtrVPtrVPtrVIOV
+  , ffienumenumPtrintPtrintIOV
+  , ffienumIOPtrubyte
+  , ffienumuintIOPtrubyte
+  , ffisyncenumsizeiPtrsizeiPtrintIOV
+  , ffienumintenumenumPtrVIOV
+  , ffienumintenumPtrfloatIOV
+  , ffienumintenumPtrintIOV
+  , ffienumintenumPtrfixedIOV
+  , ffienumenumPtruintIOV
+  , ffiuintIOuint64
+  , ffiuintintenumenumsizeiPtrVIOV
+  , ffiuintenumintenumenumPtrVIOV
+  , ffiuintintenumPtrfloatIOV
+  , ffiuintenumintenumPtrfloatIOV
+  , ffiuintintenumPtrintIOV
+  , ffiuintenumenumPtruintIOV
+  , ffiuintenumenumPtrfloatIOV
+  , ffiuintuintIOuint64
+  , ffiuintintintintintsizeisizeisizeienumenumsizeiPtrVIOV
+  , ffiuintuintPtrintIOV
+  , ffiuintenumuintPtrint64IOV
+  , ffiuintPtrcharIOuint
+  , ffiuintintIOint
+  , ffiuintsizeiPtrcharPtruintIOV
+  , ffiuintintIOintptr
+  , ffiuintintPtrdoubleIOV
+  , ffiuintintPtrfloatIOV
+  , ffihandleARBintPtrfloatIOV
+  , ffiuintintPtrint64EXTIOV
+  , ffiuintintPtrintIOV
+  , ffihandleARBintPtrintIOV
+  , ffiuintintPtruint64EXTIOV
+  , ffiuintintPtruintIOV
+  , ffiuintuintenumPtrint64IOV
+  , ffiuintenumPtrdoubleIOV
+  , ffiuintenumPtrint64EXTIOV
+  , ffiuintuintenumPtrdoubleIOV
+  , ffiuintuintenumPtrfloatIOV
+  , ffienumenumenumsizeiPtrVIOV
+  , ffienumintsizeiPtrVIOV
+  , ffienumbooleanenumenumsizeiPtrVIOV
+  , ffienumenumsizeiPtrdoubleIOV
+  , ffienumenumsizeiPtrfloatIOV
+  , ffienumenumsizeiPtrintIOV
+  , ffienumsizeiPtrushortIOV
+  , ffisizeiPtrubyteIOV
+  , ffienumenumenumsizeiPtrVsizeiPtrVPtrVIOV
+  , ffienumintenumenumsizeiPtrVIOV
+  , ffiuintintsizeiPtrdoubleIOV
+  , ffiuintintsizeiPtrfloatIOV
+  , ffiuintintsizeiPtrintIOV
+  , ffiuintintsizeiPtruintIOV
+  , ffibyteIOV
+  , ffishortIOV
+  , ffiubyteIOV
+  , ffiushortIOV
+  , ffienumsizeienumbooleanIOV
+  , ffienumintptrbitfieldIOsync
+  , ffienumsizeisizeiPtrVIOV
+  , ffisizeiPtrcharIOV
+  , ffisizeiPtrintIOV
+  , ffiuintuintuintfloatIOV
+  , ffiuintsizeiPtrenumintintsizeisizeiIOV
+  , ffienumsizeiPtrenumintintsizeisizeiIOV
+  , ffiuintintIOV
+  , ffiuintintintintintsizeisizeisizeiIOV
+  , ffienumIOboolean
+  , ffienumuintIOboolean
+  , ffiuint64IOboolean
+  , ffiintPtrcharIOboolean
+  , ffiuintuintfloatfloatIOboolean
+  , ffiuintfloatfloatIOboolean
+  , ffisyncIOboolean
+  , ffiuintenumIOboolean
+  , ffienumuintsizeiPtrcharIOV
+  , ffiintushortIOV
+  , ffiuintenumfloatIOV
+  , ffiuintenumintIOV
+  , ffienumuintsizeiPtrubyteIOV
+  , ffiintsizeiIOV
+  , ffiuint64IOV
+  , ffiuint64enumIOV
+  , ffienumdoubledoubleintintPtrdoubleIOV
+  , ffienumfloatfloatintintPtrfloatIOV
+  , ffienumfixedfixedintintfixedIOV
+  , ffienumdoubledoubleintintdoubledoubleintintPtrdoubleIOV
+  , ffienumfloatfloatintintfloatfloatintintPtrfloatIOV
+  , ffienumfixedfixedintintfixedfixedintintfixedIOV
+  , ffienumenumIOPtrV
+  , ffienumintptrsizeiptrbitfieldIOPtrV
+  , ffienumuintenumsizeisizeiintintbooleanPtrVIOV
+  , ffiintdoubledoubleIOV
+  , ffiintfloatfloatIOV
+  , ffiintfixedfixedIOV
+  , ffiintdoubledoubleintdoubledoubleIOV
+  , ffiintfloatfloatintfloatfloatIOV
+  , ffiintfixedfixedfixedfixedIOV
+  , ffiuintenumIOPtrV
+  , ffiuintintptrsizeibitfieldIOPtrV
+  , ffiuintintptrsizeiptrbitfieldIOPtrV
+  , ffiuintIOPtrV
+  , ffiuintintbitfieldPtrintPtrenumIOPtrV
+  , ffiuintuintdoubledoubleintintPtrdoubleIOV
+  , ffiuintuintfloatfloatintintPtrfloatIOV
+  , ffiuintuintdoubledoubleintintdoubledoubleintintPtrdoubleIOV
+  , ffiuintuintfloatfloatintintfloatfloatintintPtrfloatIOV
+  , ffienumdoubledoubledoubledoubledoubledoubleIOV
+  , ffiintPtrubyteIOV
+  , ffiintPtruintIOV
+  , ffiintPtrushortIOV
+  , ffienumdoubledoubledoubledoubleIOV
+  , ffienumfloatfloatfloatfloatIOV
+  , ffienumdoubledoubledoubleIOV
+  , ffienumfloatfloatfloatIOV
+  , ffienumenumbooleanIOV
+  , ffienumPtrintPtrsizeisizeiIOV
+  , ffienumPtrVsizeisizeiIOV
+  , ffienumPtrVsizeisizeisizeiintIOV
+  , ffienumPtrVsizeisizeiintIOV
+  , ffienumintptrintptrsizeisizeiIOV
+  , ffienumPtrsizeienumPtrVsizeiIOV
+  , ffienumPtrsizeienumPtrVsizeiPtrintIOV
+  , ffienumenumPtrVsizeisizeiIOV
+  , ffienumenumPtrVsizeisizeisizeiintIOV
+  , ffienumenumPtrVsizeisizeiintIOV
+  , ffienumenumintptrintptrsizeisizeiIOV
+  , ffienumuintuintPtrintPtrsizeisizeiIOV
+  , ffiPtrenumPtrintPtrsizeisizeiintIOV
+  , ffiPtrenumPtrsizeienumPtrVsizeiintIOV
+  , ffienumbyteIOV
+  , ffienumPtrbyteIOV
+  , ffienumdoubleIOV
+  , ffienumhalfNVIOV
+  , ffienumPtrhalfNVIOV
+  , ffienumshortIOV
+  , ffienumPtrshortIOV
+  , ffienumbytebyteIOV
+  , ffienumdoubledoubleIOV
+  , ffienumfloatfloatIOV
+  , ffienumhalfNVhalfNVIOV
+  , ffienumshortshortIOV
+  , ffienumfixedfixedIOV
+  , ffienumbytebytebyteIOV
+  , ffienumhalfNVhalfNVhalfNVIOV
+  , ffienumintintintIOV
+  , ffienumshortshortshortIOV
+  , ffienumfixedfixedfixedIOV
+  , ffienumbytebytebytebyteIOV
+  , ffienumhalfNVhalfNVhalfNVhalfNVIOV
+  , ffienumshortshortshortshortIOV
+  , ffienumfixedfixedfixedfixedIOV
+  , ffienumintenumsizeiPtrVIOV
+  , ffienumenumenumfloatIOV
+  , ffienumenumenumintIOV
+  , ffienumenumenumdoubleIOV
+  , ffienumenumintintsizeiintenumenumPtrVIOV
+  , ffienumenumintintsizeisizeiintenumenumPtrVIOV
+  , ffienumenumintintsizeisizeisizeiintenumenumPtrVIOV
+  , ffienumenumintintsizeienumenumPtrVIOV
+  , ffienumenumintintintsizeisizeienumenumPtrVIOV
+  , ffienumenumintintintintsizeisizeisizeienumenumPtrVIOV
+  , ffiuintsizeiPtrVenumIOV
+  , ffiuintsizeiptrPtrVenumIOV
+  , ffiuintintptrsizeiptrbooleanIOV
+  , ffiuintsizeiPtrVbitfieldIOV
+  , ffiuintsizeiptrPtrVbitfieldIOV
+  , ffiuintuintintptrintptrsizeiptrIOV
+  , ffiuintenumenumuintIOV
+  , ffiuintuintsizeiPtrfloatIOV
+  , ffiuintenumuintintIOV
+  , ffiuintenumenumuintintIOV
+  , ffiuintenumenumuintintintIOV
+  , ffiuintenumuintintenumIOV
+  , ffiuintenumuintintintIOV
+  , ffiuintenumuintdoubledoubledoubledoubleIOV
+  , ffiuintenumuintfloatfloatfloatfloatIOV
+  , ffiuintenumuintintintintintIOV
+  , ffiuintenumuintuintuintuintuintIOV
+  , ffiuintenumuintsizeiPtrfloatIOV
+  , ffiuintenumuintsizeiPtrintIOV
+  , ffiuintenumuintsizeiPtruintIOV
+  , ffiuintenumenumsizeiPtrVIOV
+  , ffiuintenumsizeisizeiIOV
+  , ffiuintsizeienumsizeisizeiIOV
+  , ffiuintsizeisizeienumsizeisizeiIOV
+  , ffienumintPtrcharintPtrcharIOV
+  , ffisizeiPtrVenumIOuint
+  , ffiPtrVsizeiPtrcharIOV
+  , ffienumuintenumIOenum
+  , ffiuintuintenumIOV
+  , ffiuintsizeiPtrubytesizeienumPtrVIOV
+  , ffiuintsizeienumPtrVIOV
+  , ffiuintsizeiPtrfloatIOV
+  , ffiuintenumPtrVbitfielduintsizeiuintfloatIOenum
+  , ffienumPtrVbitfielduintfloatuintIOenum
+  , ffiuintenumPtrVbitfielduintsizeienumuintfloatIOV
+  , ffiuintenumPtrVbitfieldsizeienumPtrVenumuintfloatIOV
+  , ffiuintenumsizeiptrPtrVsizeiuintsizeiuintfloatIOenum
+  , ffienumintuintIOV
+  , ffiuintenumsizeiPtrVIOV
+  , ffiuintsizeisizeisizeiPtrubytesizeienumPtrVIOV
+  , ffiuintsizeisizeienumPtrVIOV
+  , ffienumenumintPtrfloatIOV
+  , ffiuintsizeisizeifloatPtrfloatPtrfloatPtrfloatPtrfloatIOboolean
+  , ffiPtrintIOint
+  , ffiuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV
+  , ffiuintuint64EXTuintuintenumenumuintuintenumuintuintIOV
+  , ffifloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffisizeiPtruintPtrfloatIOV
+  , ffisizeiPtruintPtrclampfIOV
+  , ffisizeiPtruintPtrfixedIOV
+  , ffiuintenumPtrVsizeiIOV
+  , ffiuintenumPtrVintIOV
+  , ffienumuintuintsizeiPtrintIOV
+  , ffienumuintuintsizeiPtruintIOV
+  , ffienumuintuintsizeiPtrfloatIOV
+  , ffienumuintdoubledoubledoubledoubleIOV
+  , ffienumuintfloatfloatfloatfloatIOV
+  , ffienumuintintintintintIOV
+  , ffienumuintsizeiPtrintIOV
+  , ffiuintsizeiPtrubytedoubledoubledoubledoubleIOV
+  , ffiuintsizeiPtrubytefloatfloatfloatfloatIOV
+  , ffienumuintsizeiPtrdoubleIOV
+  , ffiuintintenumintPtrfloatIOV
+  , ffienumenumsizeiPtrVIOV
+  , ffiuintintdoubleIOV
+  , ffiuintintfloatIOV
+  , ffiuintintintIOV
+  , ffiuintintint64EXTIOV
+  , ffiuintintsizeiPtrint64EXTIOV
+  , ffiuintintuintIOV
+  , ffiuintintuint64EXTIOV
+  , ffiuintintsizeiPtruint64EXTIOV
+  , ffiuintintdoubledoubleIOV
+  , ffiuintintfloatfloatIOV
+  , ffiuintintintintIOV
+  , ffiuintintint64EXTint64EXTIOV
+  , ffiuintintuintuintIOV
+  , ffiuintintuint64EXTuint64EXTIOV
+  , ffiuintintdoubledoubledoubleIOV
+  , ffiuintintfloatfloatfloatIOV
+  , ffiuintintintintintIOV
+  , ffiuintintint64EXTint64EXTint64EXTIOV
+  , ffiuintintuintuintuintIOV
+  , ffiuintintuint64EXTuint64EXTuint64EXTIOV
+  , ffiuintintdoubledoubledoubledoubleIOV
+  , ffiuintintfloatfloatfloatfloatIOV
+  , ffiuintintintintintintIOV
+  , ffiuintintint64EXTint64EXTint64EXTint64EXTIOV
+  , ffiuintintuintuintuintuintIOV
+  , ffiuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV
+  , ffiuintintuint64IOV
+  , ffiuintintsizeiPtruint64IOV
+  , ffiuintintsizeibooleanPtrdoubleIOV
+  , ffiuintintsizeibooleanPtrfloatIOV
+  , ffiPtrfixedPtrintIObitfield
+  , ffienumuintenumuintIOV
+  , ffishortshortIOV
+  , ffiuintbooleanIOV
+  , ffiintintsizeisizeienumenumPtrVIOV
+  , ffiintintsizeisizeienumenumsizeiPtrVIOV
+  , ffiPtrdoublePtrdoubleIOV
+  , ffiPtrintPtrintIOV
+  , ffiPtrshortPtrshortIOV
+  , ffiPtrfixedPtrfixedIOV
+  , ffienumIOint
+  , ffienumenumsizeisizeiIOV
+  , ffienumsizeienumsizeisizeiIOV
+  , ffienumsizeisizeienumsizeisizeiIOV
+  , ffiuintfloatfloatfloatfloatfloatfloatIOV
+  , ffiPtruintPtrfloatPtrfloatIOV
+  , ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffiPtruintPtrfloatPtrfloatPtrfloatIOV
+  , ffiuintubyteubyteubyteubytefloatfloatfloatIOV
+  , ffiPtruintPtrubytePtrfloatIOV
+  , ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffiPtruintPtrfloatPtrfloatPtrfloatPtrfloatIOV
+  , ffiuintfloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffiuintfloatfloatfloatfloatfloatIOV
+  , ffiuintfloatfloatfloatIOV
+  , ffiPtruintPtrfloatIOV
+  , ffifloatbooleanIOV
+  , ffifixedbooleanIOV
+  , fficlampxbooleanIOV
+  , fficlampfbooleanIOV
+  , ffiuintbitfieldIOV
+  , ffiintintsizeisizeiIOV
+  , ffiuintsizeiPtrintIOV
+  , ffiuintintintsizeisizeiIOV
+  , ffiuintPtrintIOV
+  , ffiuintbooleanuintintPtruintIOV
+  , ffienumenumsizeisizeienumenumPtrVPtrVIOV
+  , ffisizeiPtruintenumPtrVsizeiIOV
+  , ffienumuintuintuintIOV
+  , ffienumuintuintuintuintIOV
+  , ffihandleARBsizeiPtrcharARBPtrintIOV
+  , ffiuintuintuintuintbitfieldIOV
+  , ffisizeiuintIOV
+  , ffisizeienumPtrVuintenumuintenumPtrfloatIOV
+  , ffiuintenumuintIOV
+  , ffienumenumintuintIOV
+  , ffienumenumenumIOV
+  , ffisizeienumPtrVuintintuintenumPtrfloatIOV
+  , ffisizeienumPtrVuintenumuintenumenumPtrfloatIOV
+  , ffiuintenumuintenumIOV
+  , ffisizeienumPtrVuintintuintenumenumPtrfloatIOV
+  , ffiuintintuintenumIOV
+  , ffiuintuintenumenumenumenumIOV
+  , ffienumenumuintintptrsizeiptrIOV
+  , ffibytebyteIOV
+  , ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffiPtrfloatPtrfloatPtrfloatPtrfloatIOV
+  , ffifloatfloatubyteubyteubyteubytefloatfloatfloatIOV
+  , ffiPtrfloatPtrubytePtrfloatIOV
+  , ffihalfNVhalfNVIOV
+  , ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV
+  , ffienumenumdoubleIOV
+  , ffienumintintsizeiintenumenumPtrVIOV
+  , ffienumintintsizeisizeiintenumenumPtrVIOV
+  , ffienumsizeienumsizeisizeibooleanIOV
+  , ffienumsizeisizeiintsizeisizeibooleanIOV
+  , ffienumintintsizeisizeisizeiintenumenumPtrVIOV
+  , ffienumintenumsizeisizeisizeiintenumenumPtrVIOV
+  , ffienumsizeienumsizeisizeisizeibooleanIOV
+  , ffienumsizeisizeiintsizeisizeisizeibooleanIOV
+  , ffienumintenumsizeisizeisizeisizeiintenumenumPtrVIOV
+  , ffienumintintintintsizeisizeisizeibooleanIOV
+  , ffienumsizeienumsizeiIOV
+  , ffienumsizeienumsizeisizeisizeiIOV
+  , ffienumenumsizeisizeisizeisizeibitfieldIOV
+  , ffienumintintsizeienumenumPtrVIOV
+  , ffienumintintintsizeisizeienumenumPtrVIOV
+  , ffienumintintintintintsizeisizeisizeisizeienumenumPtrVIOV
+  , ffiuintenumuintintptrsizeiIOV
+  , ffiuintenumenumuintintptrsizeiptrIOV
+  , ffiuintenumintintsizeiintenumenumPtrVIOV
+  , ffiuintenumintintsizeisizeiintenumenumPtrVIOV
+  , ffiuintenumsizeisizeiintsizeisizeibooleanIOV
+  , ffiuintenumsizeiintsizeisizeibooleanIOV
+  , ffiuintenumintintsizeisizeisizeiintenumenumPtrVIOV
+  , ffiuintenumsizeisizeiintsizeisizeisizeibooleanIOV
+  , ffiuintenumsizeiintsizeisizeisizeibooleanIOV
+  , ffiuintintintintintsizeisizeisizeibooleanIOV
+  , ffiuintenumenumfloatIOV
+  , ffiuintenumenumintIOV
+  , ffiuintsizeienumsizeiIOV
+  , ffiuintenumsizeienumsizeiIOV
+  , ffiuintenumsizeienumsizeisizeiIOV
+  , ffiuintsizeienumsizeisizeibooleanIOV
+  , ffiuintenumsizeienumsizeisizeibooleanIOV
+  , ffiuintsizeienumsizeisizeisizeiIOV
+  , ffiuintenumsizeienumsizeisizeisizeiIOV
+  , ffiuintsizeienumsizeisizeisizeibooleanIOV
+  , ffiuintenumsizeienumsizeisizeisizeibooleanIOV
+  , ffiuintenumenumsizeisizeisizeisizeibitfieldIOV
+  , ffiuintintintsizeienumenumPtrVIOV
+  , ffiuintenumintintsizeienumenumPtrVIOV
+  , ffiuintintintintsizeisizeienumenumPtrVIOV
+  , ffiuintenumintintintsizeisizeienumenumPtrVIOV
+  , ffiuintenumintintintintsizeisizeisizeienumenumPtrVIOV
+  , ffiuintenumuintenumuintuintuintuintIOV
+  , ffienumuintenumenumIOV
+  , ffisizeiPtrintenumIOV
+  , ffiuintuintuintintptrsizeiIOV
+  , ffisizeiPtrintsizeiPtrintenumIOV
+  , ffiuintsizeiPtrcharenumIOV
+  , ffiuintsizeiPtrintenumIOV
+  , ffiintdoubleIOV
+  , ffiintsizeiPtrdoubleIOV
+  , ffiintfloatIOV
+  , ffiintsizeiPtrfloatIOV
+  , ffiintint64EXTIOV
+  , ffiintsizeiPtrint64EXTIOV
+  , ffiintsizeiPtrintIOV
+  , ffiintuintIOV
+  , ffiintuint64EXTIOV
+  , ffiintsizeiPtruint64EXTIOV
+  , ffiintsizeiPtruintIOV
+  , ffiintint64EXTint64EXTIOV
+  , ffiintuintuintIOV
+  , ffiintuint64EXTuint64EXTIOV
+  , ffiintdoubledoubledoubleIOV
+  , ffiintfloatfloatfloatIOV
+  , ffiintint64EXTint64EXTint64EXTIOV
+  , ffiintuintuintuintIOV
+  , ffiintuint64EXTuint64EXTuint64EXTIOV
+  , ffiintdoubledoubledoubledoubleIOV
+  , ffiintfloatfloatfloatfloatIOV
+  , ffiintint64EXTint64EXTint64EXTint64EXTIOV
+  , ffiintuintuintuintuintIOV
+  , ffiintuint64EXTuint64EXTuint64EXTuint64EXTIOV
+  , ffiintuint64IOV
+  , ffiintsizeiPtruint64IOV
+  , ffiintsizeibooleanPtrdoubleIOV
+  , ffiintsizeibooleanPtrfloatIOV
+  , ffiuintuintsizeiPtrVenumIOV
+  , ffiuintbitfielduintIOV
+  , ffivdpauSurfaceNVenumsizeiPtrsizeiPtrintIOV
+  , ffiPtrVPtrVIOV
+  , ffivdpauSurfaceNVIOboolean
+  , ffisizeiPtrvdpauSurfaceNVIOV
+  , ffiPtrVenumsizeiPtruintIOvdpauSurfaceNV
+  , ffivdpauSurfaceNVenumIOV
+  , ffivdpauSurfaceNVIOV
+  , ffiuintenumsizeiuintuintIOV
+  , ffiuintenumuintPtrVIOV
+  , ffiuintPtrbyteIOV
+  , ffiuintPtrdoubleIOV
+  , ffiuintPtrshortIOV
+  , ffiuintPtrushortIOV
+  , ffiuintuintintenumbooleanuintIOV
+  , ffiuintuintintenumuintIOV
+  , ffiuintuintintenumsizeiintptrIOV
+  , ffiuintuintsizeiintptrIOV
+  , ffiuintuintenumsizeiintptrIOV
+  , ffiuintuintenumintenumsizeiintptrIOV
+  , ffiuintuintuintintenumsizeiintptrIOV
+  , ffiuintuintuintintenumbooleansizeiintptrIOV
+  , ffiuintuintsizeiPtruintPtrintptrPtrsizeiIOV
+  , ffiuintdoubleIOV
+  , ffiuintfloatIOV
+  , ffiuinthalfNVIOV
+  , ffiuintPtrhalfNVIOV
+  , ffiuintshortIOV
+  , ffiuintfloatfloatIOV
+  , ffiuinthalfNVhalfNVIOV
+  , ffiuintshortshortIOV
+  , ffiuintdoubledoubledoubleIOV
+  , ffiuinthalfNVhalfNVhalfNVIOV
+  , ffiuintshortshortshortIOV
+  , ffiuintubyteubyteubyteubyteIOV
+  , ffiuintdoubledoubledoubledoubleIOV
+  , ffiuintfloatfloatfloatfloatIOV
+  , ffiuinthalfNVhalfNVhalfNVhalfNVIOV
+  , ffiuintshortshortshortshortIOV
+  , ffiuintintenumbooleansizeiuintuintIOV
+  , ffiuintintenumbooleanuintIOV
+  , ffiuintintenumbooleansizeiIOV
+  , ffiuintuintuintuintuintIOV
+  , ffiuintintenumuintIOV
+  , ffiuintintenumsizeiIOV
+  , ffiuintintenumsizeiPtrVIOV
+  , ffiuintint64EXTIOV
+  , ffiuintPtrint64EXTIOV
+  , ffiuintuint64EXTIOV
+  , ffiuintPtruint64EXTIOV
+  , ffiuintint64EXTint64EXTIOV
+  , ffiuintuint64EXTuint64EXTIOV
+  , ffiuintint64EXTint64EXTint64EXTIOV
+  , ffiuintuint64EXTuint64EXTuint64EXTIOV
+  , ffiuintint64EXTint64EXTint64EXTint64EXTIOV
+  , ffiuintuint64EXTuint64EXTuint64EXTuint64EXTIOV
+  , ffiuintenumbooleanuintIOV
+  , ffiuintenumbooleanPtruintIOV
+  , ffiuintintenumbooleansizeiPtrVIOV
+  , ffiuintsizeiPtrhalfNVIOV
+  , ffiuintsizeiPtrshortIOV
+  , ffiuintsizeiPtrubyteIOV
+  , ffiuintPtruintPtruint64EXTIOenum
+  , ffisyncbitfielduint64IOV
+  , ffiuintsizeiPtruintPtrfloatIOV
+  , ffiintPtrbyteIOV
+  , ffiintPtrdoubleIOV
+  , ffiintPtrfloatIOV
+  , ffiintPtrintIOV
+  , ffiintPtrshortIOV
+) where
+
+import Control.Monad.IO.Class
+import Foreign.C.Types
+import Foreign.Ptr
+import Graphics.GL.Raw.Types
+
+foreign import ccall "dynamic" dynenumfloatIOV :: FunPtr (GLenum -> GLfloat -> IO ()) -> GLenum -> GLfloat -> IO ()
+
+ffienumfloatIOV :: MonadIO m => FunPtr (GLenum -> GLfloat -> IO ()) -> GLenum -> GLfloat -> m ()
+ffienumfloatIOV fp v0 v1 = liftIO (dynenumfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumfixedIOV :: FunPtr (GLenum -> GLfixed -> IO ()) -> GLenum -> GLfixed -> IO ()
+
+ffienumfixedIOV :: MonadIO m => FunPtr (GLenum -> GLfixed -> IO ()) -> GLenum -> GLfixed -> m ()
+ffienumfixedIOV fp v0 v1 = liftIO (dynenumfixedIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintIOV :: FunPtr (GLuint -> IO ()) -> GLuint -> IO ()
+
+ffiuintIOV :: MonadIO m => FunPtr (GLuint -> IO ()) -> GLuint -> m ()
+ffiuintIOV fp v0 = liftIO (dynuintIOV fp v0)
+
+foreign import ccall "dynamic" dynuintuintIOV :: FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> IO ()
+
+ffiuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
+ffiuintuintIOV fp v0 v1 = liftIO (dynuintuintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumIOV :: FunPtr (GLenum -> IO ()) -> GLenum -> IO ()
+
+ffienumIOV :: MonadIO m => FunPtr (GLenum -> IO ()) -> GLenum -> m ()
+ffienumIOV fp v0 = liftIO (dynenumIOV fp v0)
+
+foreign import ccall "dynamic" dynuintPtrcharIOV :: FunPtr (GLuint -> Ptr GLchar -> IO ()) -> GLuint -> Ptr GLchar -> IO ()
+
+ffiuintPtrcharIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLchar -> IO ()) -> GLuint -> Ptr GLchar -> m ()
+ffiuintPtrcharIOV fp v0 v1 = liftIO (dynuintPtrcharIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintuintuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumuintuintuintuintuintuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumuintuintuintuintuintuintuintuintuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintuintuintuintuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynenumuintuintuintuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynenumclampfIOV :: FunPtr (GLenum -> GLclampf -> IO ()) -> GLenum -> GLclampf -> IO ()
+
+ffienumclampfIOV :: MonadIO m => FunPtr (GLenum -> GLclampf -> IO ()) -> GLenum -> GLclampf -> m ()
+ffienumclampfIOV fp v0 v1 = liftIO (dynenumclampfIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynsizeiPtruintPtrbooleanIOboolean :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean) -> GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean
+
+ffisizeiPtruintPtrbooleanIOboolean :: MonadIO m => FunPtr (GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean) -> GLsizei -> Ptr GLuint -> Ptr GLboolean -> m GLboolean
+ffisizeiPtruintPtrbooleanIOboolean fp v0 v1 v2 = liftIO (dynsizeiPtruintPtrbooleanIOboolean fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintIOV :: FunPtr (GLint -> IO ()) -> GLint -> IO ()
+
+ffiintIOV :: MonadIO m => FunPtr (GLint -> IO ()) -> GLint -> m ()
+ffiintIOV fp v0 = liftIO (dynintIOV fp v0)
+
+foreign import ccall "dynamic" dynenumintenumsizeiuintuintIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ()
+
+ffienumintenumsizeiuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLuint -> GLuint -> m ()
+ffienumintenumsizeiuintuintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumintenumsizeiuintuintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynhandleARBhandleARBIOV :: FunPtr (GLhandleARB -> GLhandleARB -> IO ()) -> GLhandleARB -> GLhandleARB -> IO ()
+
+ffihandleARBhandleARBIOV :: MonadIO m => FunPtr (GLhandleARB -> GLhandleARB -> IO ()) -> GLhandleARB -> GLhandleARB -> m ()
+ffihandleARBhandleARBIOV fp v0 v1 = liftIO (dynhandleARBhandleARBIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintenumIOV :: FunPtr (GLuint -> GLenum -> IO ()) -> GLuint -> GLenum -> IO ()
+
+ffiuintenumIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> IO ()) -> GLuint -> GLenum -> m ()
+ffiuintenumIOV fp v0 v1 = liftIO (dynuintenumIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynIOV :: FunPtr (IO ()) -> IO ()
+
+ffiIOV :: MonadIO m => FunPtr (IO ()) -> m ()
+ffiIOV fp  = liftIO (dynIOV fp )
+
+foreign import ccall "dynamic" dynenumuintIOV :: FunPtr (GLenum -> GLuint -> IO ()) -> GLenum -> GLuint -> IO ()
+
+ffienumuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> IO ()) -> GLenum -> GLuint -> m ()
+ffienumuintIOV fp v0 v1 = liftIO (dynenumuintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> m ()
+ffienumuintuintIOV fp v0 v1 v2 = liftIO (dynenumuintuintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintPtrcharIOV :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> Ptr GLchar -> IO ()
+
+ffiuintuintPtrcharIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> Ptr GLchar -> m ()
+ffiuintuintPtrcharIOV fp v0 v1 v2 = liftIO (dynuintuintPtrcharIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynhandleARBuintPtrcharARBIOV :: FunPtr (GLhandleARB -> GLuint -> Ptr GLcharARB -> IO ()) -> GLhandleARB -> GLuint -> Ptr GLcharARB -> IO ()
+
+ffihandleARBuintPtrcharARBIOV :: MonadIO m => FunPtr (GLhandleARB -> GLuint -> Ptr GLcharARB -> IO ()) -> GLhandleARB -> GLuint -> Ptr GLcharARB -> m ()
+ffihandleARBuintPtrcharARBIOV fp v0 v1 v2 = liftIO (dynhandleARBuintPtrcharARBIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumuintuintintptrIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> IO ()) -> GLenum -> GLuint -> GLuint -> GLintptr -> IO ()
+
+ffienumuintuintintptrIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> IO ()) -> GLenum -> GLuint -> GLuint -> GLintptr -> m ()
+ffienumuintuintintptrIOV fp v0 v1 v2 v3 = liftIO (dynenumuintuintintptrIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintuintintptrsizeiptrIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
+
+ffienumuintuintintptrsizeiptrIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+ffienumuintuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumuintuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtruintIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffienumuintsizeiPtruintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+ffienumuintsizeiPtruintIOV fp v0 v1 v2 v3 = liftIO (dynenumuintsizeiPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtruintPtrintptrPtrsizeiptrIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> IO ()
+
+ffienumuintsizeiPtruintPtrintptrPtrsizeiptrIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> m ()
+ffienumuintsizeiPtruintPtrintptrPtrsizeiptrIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumuintsizeiPtruintPtrintptrPtrsizeiptrIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintuintuintPtrcharIOV :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLuint -> Ptr GLchar -> IO ()
+
+ffiuintuintuintPtrcharIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLuint -> Ptr GLchar -> m ()
+ffiuintuintuintPtrcharIOV fp v0 v1 v2 v3 = liftIO (dynuintuintuintPtrcharIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintintbooleanintenumenumIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> IO ()) -> GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> IO ()
+
+ffiuintuintintbooleanintenumenumIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> IO ()) -> GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> m ()
+ffiuintuintintbooleanintenumenumIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintintbooleanintenumenumIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintuintintbooleanintenumintIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> IO ()) -> GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> IO ()
+
+ffiuintuintintbooleanintenumintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> IO ()) -> GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> m ()
+ffiuintuintintbooleanintenumintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintintbooleanintenumintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintsizeiPtruintIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffiuintsizeiPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+ffiuintsizeiPtruintIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumIOuint :: FunPtr (GLenum -> GLenum -> IO GLuint) -> GLenum -> GLenum -> IO GLuint
+
+ffienumenumIOuint :: MonadIO m => FunPtr (GLenum -> GLenum -> IO GLuint) -> GLenum -> GLenum -> m GLuint
+ffienumenumIOuint fp v0 v1 = liftIO (dynenumenumIOuint fp v0 v1)
+
+foreign import ccall "dynamic" dynenumenumuintIOV :: FunPtr (GLenum -> GLenum -> GLuint -> IO ()) -> GLenum -> GLenum -> GLuint -> IO ()
+
+ffienumenumuintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> IO ()) -> GLenum -> GLenum -> GLuint -> m ()
+ffienumenumuintIOV fp v0 v1 v2 = liftIO (dynenumenumuintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumIOuint :: FunPtr (GLenum -> IO GLuint) -> GLenum -> IO GLuint
+
+ffienumIOuint :: MonadIO m => FunPtr (GLenum -> IO GLuint) -> GLenum -> m GLuint
+ffienumIOuint fp v0 = liftIO (dynenumIOuint fp v0)
+
+foreign import ccall "dynamic" dynenumenumenumIOuint :: FunPtr (GLenum -> GLenum -> GLenum -> IO GLuint) -> GLenum -> GLenum -> GLenum -> IO GLuint
+
+ffienumenumenumIOuint :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> IO GLuint) -> GLenum -> GLenum -> GLenum -> m GLuint
+ffienumenumenumIOuint fp v0 v1 v2 = liftIO (dynenumenumenumIOuint fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintintptrsizeiIOV :: FunPtr (GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()
+
+ffiuintuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
+ffiuintuintintptrsizeiIOV fp v0 v1 v2 v3 = liftIO (dynuintuintintptrsizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtruintPtrintptrPtrsizeiIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ()
+
+ffiuintsizeiPtruintPtrintptrPtrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> m ()
+ffiuintsizeiPtruintPtrintptrPtrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintsizeiPtruintPtrintptrPtrsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintenumintptrARBIOV :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptrARB -> IO ()) -> GLuint -> GLuint -> GLenum -> GLintptrARB -> IO ()
+
+ffiuintuintenumintptrARBIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> GLintptrARB -> IO ()) -> GLuint -> GLuint -> GLenum -> GLintptrARB -> m ()
+ffiuintuintenumintptrARBIOV fp v0 v1 v2 v3 = liftIO (dynuintuintenumintptrARBIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintenumenumuintIOV :: FunPtr (GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> IO ()) -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> IO ()
+
+ffiuintuintenumenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> IO ()) -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> m ()
+ffiuintuintenumenumuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintenumenumuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynbytebytebyteIOV :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLbyte -> GLbyte -> GLbyte -> IO ()
+
+ffibytebytebyteIOV :: MonadIO m => FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLbyte -> GLbyte -> GLbyte -> m ()
+ffibytebytebyteIOV fp v0 v1 v2 = liftIO (dynbytebytebyteIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrbyteIOV :: FunPtr (Ptr GLbyte -> IO ()) -> Ptr GLbyte -> IO ()
+
+ffiPtrbyteIOV :: MonadIO m => FunPtr (Ptr GLbyte -> IO ()) -> Ptr GLbyte -> m ()
+ffiPtrbyteIOV fp v0 = liftIO (dynPtrbyteIOV fp v0)
+
+foreign import ccall "dynamic" dyndoubledoubledoubleIOV :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffidoubledoubledoubleIOV :: MonadIO m => FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffidoubledoubledoubleIOV fp v0 v1 v2 = liftIO (dyndoubledoubledoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrdoubleIOV :: FunPtr (Ptr GLdouble -> IO ()) -> Ptr GLdouble -> IO ()
+
+ffiPtrdoubleIOV :: MonadIO m => FunPtr (Ptr GLdouble -> IO ()) -> Ptr GLdouble -> m ()
+ffiPtrdoubleIOV fp v0 = liftIO (dynPtrdoubleIOV fp v0)
+
+foreign import ccall "dynamic" dynfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatIOV fp v0 v1 v2 = liftIO (dynfloatfloatfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrfloatIOV :: FunPtr (Ptr GLfloat -> IO ()) -> Ptr GLfloat -> IO ()
+
+ffiPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLfloat -> IO ()) -> Ptr GLfloat -> m ()
+ffiPtrfloatIOV fp v0 = liftIO (dynPtrfloatIOV fp v0)
+
+foreign import ccall "dynamic" dynintintintIOV :: FunPtr (GLint -> GLint -> GLint -> IO ()) -> GLint -> GLint -> GLint -> IO ()
+
+ffiintintintIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLint -> IO ()) -> GLint -> GLint -> GLint -> m ()
+ffiintintintIOV fp v0 v1 v2 = liftIO (dynintintintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrintIOV :: FunPtr (Ptr GLint -> IO ()) -> Ptr GLint -> IO ()
+
+ffiPtrintIOV :: MonadIO m => FunPtr (Ptr GLint -> IO ()) -> Ptr GLint -> m ()
+ffiPtrintIOV fp v0 = liftIO (dynPtrintIOV fp v0)
+
+foreign import ccall "dynamic" dynshortshortshortIOV :: FunPtr (GLshort -> GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> GLshort -> IO ()
+
+ffishortshortshortIOV :: MonadIO m => FunPtr (GLshort -> GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> GLshort -> m ()
+ffishortshortshortIOV fp v0 v1 v2 = liftIO (dynshortshortshortIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrshortIOV :: FunPtr (Ptr GLshort -> IO ()) -> Ptr GLshort -> IO ()
+
+ffiPtrshortIOV :: MonadIO m => FunPtr (Ptr GLshort -> IO ()) -> Ptr GLshort -> m ()
+ffiPtrshortIOV fp v0 = liftIO (dynPtrshortIOV fp v0)
+
+foreign import ccall "dynamic" dynenumsizeiPtrVIOV :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumsizeiPtrVIOV fp v0 v1 v2 = liftIO (dynenumsizeiPtrVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsizeisizeifloatfloatfloatfloatPtrubyteIOV :: FunPtr (GLsizei -> GLsizei -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Ptr GLubyte -> IO ()) -> GLsizei -> GLsizei -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Ptr GLubyte -> IO ()
+
+ffisizeisizeifloatfloatfloatfloatPtrubyteIOV :: MonadIO m => FunPtr (GLsizei -> GLsizei -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Ptr GLubyte -> IO ()) -> GLsizei -> GLsizei -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Ptr GLubyte -> m ()
+ffisizeisizeifloatfloatfloatfloatPtrubyteIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynsizeisizeifloatfloatfloatfloatPtrubyteIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynsizeisizeifixedfixedfixedfixedPtrubyteIOV :: FunPtr (GLsizei -> GLsizei -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> Ptr GLubyte -> IO ()) -> GLsizei -> GLsizei -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> Ptr GLubyte -> IO ()
+
+ffisizeisizeifixedfixedfixedfixedPtrubyteIOV :: MonadIO m => FunPtr (GLsizei -> GLsizei -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> Ptr GLubyte -> IO ()) -> GLsizei -> GLsizei -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> Ptr GLubyte -> m ()
+ffisizeisizeifixedfixedfixedfixedPtrubyteIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynsizeisizeifixedfixedfixedfixedPtrubyteIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynfloatfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatfloatIOV fp v0 v1 v2 v3 = liftIO (dynfloatfloatfloatfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynfixedfixedfixedfixedIOV :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()
+
+ffifixedfixedfixedfixedIOV :: MonadIO m => FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+ffifixedfixedfixedfixedIOV fp v0 v1 v2 v3 = liftIO (dynfixedfixedfixedfixedIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumIOV :: FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> IO ()
+
+ffienumenumIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
+ffienumenumIOV fp v0 v1 = liftIO (dynenumenumIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintenumenumIOV :: FunPtr (GLuint -> GLenum -> GLenum -> IO ()) -> GLuint -> GLenum -> GLenum -> IO ()
+
+ffiuintenumenumIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> IO ()) -> GLuint -> GLenum -> GLenum -> m ()
+ffiuintenumenumIOV fp v0 v1 v2 = liftIO (dynuintenumenumIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumenumenumIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()
+
+ffienumenumenumenumIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+ffienumenumenumenumIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumenumenumenumIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()
+
+ffiuintenumenumenumenumIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+ffiuintenumenumenumenumIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumenumenumenumIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintIOV :: FunPtr (GLenum -> GLint -> IO ()) -> GLenum -> GLint -> IO ()
+
+ffienumintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> IO ()) -> GLenum -> GLint -> m ()
+ffienumintIOV fp v0 v1 = liftIO (dynenumintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintintintintintintintintbitfieldenumIOV :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()) -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()
+
+ffiintintintintintintintintbitfieldenumIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()) -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
+ffiintintintintintintintintbitfieldenumIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynintintintintintintintintbitfieldenumIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintuintintintintintintintintintbitfieldenumIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()) -> GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()
+
+ffiuintuintintintintintintintintintbitfieldenumIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()) -> GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
+ffiuintuintintintintintintintintintbitfieldenumIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynuintuintintintintintintintintintbitfieldenumIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynenumuintuint64EXTsizeiptrIOV :: FunPtr (GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> IO ()) -> GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> IO ()
+
+ffienumuintuint64EXTsizeiptrIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> IO ()) -> GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> m ()
+ffienumuintuint64EXTsizeiptrIOV fp v0 v1 v2 v3 = liftIO (dynenumuintuint64EXTsizeiptrIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumsizeiptrPtrVenumIOV :: FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLenum -> IO ()) -> GLenum -> GLsizeiptr -> Ptr () -> GLenum -> IO ()
+
+ffienumsizeiptrPtrVenumIOV :: MonadIO m => FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLenum -> IO ()) -> GLenum -> GLsizeiptr -> Ptr () -> GLenum -> m ()
+ffienumsizeiptrPtrVenumIOV fp v0 v1 v2 v3 = liftIO (dynenumsizeiptrPtrVenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumsizeiptrARBPtrVenumIOV :: FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ()) -> GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ()
+
+ffienumsizeiptrARBPtrVenumIOV :: MonadIO m => FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ()) -> GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> m ()
+ffienumsizeiptrARBPtrVenumIOV fp v0 v1 v2 v3 = liftIO (dynenumsizeiptrARBPtrVenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintptrsizeiptrbooleanIOV :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> GLboolean -> IO ()) -> GLenum -> GLintptr -> GLsizeiptr -> GLboolean -> IO ()
+
+ffienumintptrsizeiptrbooleanIOV :: MonadIO m => FunPtr (GLenum -> GLintptr -> GLsizeiptr -> GLboolean -> IO ()) -> GLenum -> GLintptr -> GLsizeiptr -> GLboolean -> m ()
+ffienumintptrsizeiptrbooleanIOV fp v0 v1 v2 v3 = liftIO (dynenumintptrsizeiptrbooleanIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumintIOV :: FunPtr (GLenum -> GLenum -> GLint -> IO ()) -> GLenum -> GLenum -> GLint -> IO ()
+
+ffienumenumintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> IO ()) -> GLenum -> GLenum -> GLint -> m ()
+ffienumenumintIOV fp v0 v1 v2 = liftIO (dynenumenumintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumsizeiptrPtrVbitfieldIOV :: FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()) -> GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()
+
+ffienumsizeiptrPtrVbitfieldIOV :: MonadIO m => FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()) -> GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
+ffienumsizeiptrPtrVbitfieldIOV fp v0 v1 v2 v3 = liftIO (dynenumsizeiptrPtrVbitfieldIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintptrsizeiptrPtrVIOV :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()) -> GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()
+
+ffienumintptrsizeiptrPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()) -> GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
+ffienumintptrsizeiptrPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumintptrsizeiptrPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintptrARBsizeiptrARBPtrVIOV :: FunPtr (GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> IO ()) -> GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> IO ()
+
+ffienumintptrARBsizeiptrARBPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> IO ()) -> GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> m ()
+ffienumintptrARBsizeiptrARBPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumintptrARBsizeiptrARBPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynsizeienumPtrVIOV :: FunPtr (GLsizei -> GLenum -> Ptr () -> IO ()) -> GLsizei -> GLenum -> Ptr () -> IO ()
+
+ffisizeienumPtrVIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr () -> IO ()) -> GLsizei -> GLenum -> Ptr () -> m ()
+ffisizeienumPtrVIOV fp v0 v1 v2 = liftIO (dynsizeienumPtrVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumIOenum :: FunPtr (GLenum -> IO GLenum) -> GLenum -> IO GLenum
+
+ffienumIOenum :: MonadIO m => FunPtr (GLenum -> IO GLenum) -> GLenum -> m GLenum
+ffienumIOenum fp v0 = liftIO (dynenumIOenum fp v0)
+
+foreign import ccall "dynamic" dynuintenumIOenum :: FunPtr (GLuint -> GLenum -> IO GLenum) -> GLuint -> GLenum -> IO GLenum
+
+ffiuintenumIOenum :: MonadIO m => FunPtr (GLuint -> GLenum -> IO GLenum) -> GLuint -> GLenum -> m GLenum
+ffiuintenumIOenum fp v0 v1 = liftIO (dynuintenumIOenum fp v0 v1)
+
+foreign import ccall "dynamic" dynbitfieldIOV :: FunPtr (GLbitfield -> IO ()) -> GLbitfield -> IO ()
+
+ffibitfieldIOV :: MonadIO m => FunPtr (GLbitfield -> IO ()) -> GLbitfield -> m ()
+ffibitfieldIOV fp v0 = liftIO (dynbitfieldIOV fp v0)
+
+foreign import ccall "dynamic" dynenumenumenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumenumenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumenumenumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumintptrsizeiptrenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintptrsizeiptrenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintptrsizeiptrenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumintptrsizeiptrenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumintfloatintIOV :: FunPtr (GLenum -> GLint -> GLfloat -> GLint -> IO ()) -> GLenum -> GLint -> GLfloat -> GLint -> IO ()
+
+ffienumintfloatintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLfloat -> GLint -> IO ()) -> GLenum -> GLint -> GLfloat -> GLint -> m ()
+ffienumintfloatintIOV fp v0 v1 v2 v3 = liftIO (dynenumintfloatintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintPtrfloatIOV :: FunPtr (GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLint -> Ptr GLfloat -> IO ()
+
+ffienumintPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLint -> Ptr GLfloat -> m ()
+ffienumintPtrfloatIOV fp v0 v1 v2 = liftIO (dynenumintPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumintPtrintIOV :: FunPtr (GLenum -> GLint -> Ptr GLint -> IO ()) -> GLenum -> GLint -> Ptr GLint -> IO ()
+
+ffienumintPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> Ptr GLint -> IO ()) -> GLenum -> GLint -> Ptr GLint -> m ()
+ffienumintPtrintIOV fp v0 v1 v2 = liftIO (dynenumintPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumintPtruintIOV :: FunPtr (GLenum -> GLint -> Ptr GLuint -> IO ()) -> GLenum -> GLint -> Ptr GLuint -> IO ()
+
+ffienumintPtruintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> Ptr GLuint -> IO ()) -> GLenum -> GLint -> Ptr GLuint -> m ()
+ffienumintPtruintIOV fp v0 v1 v2 = liftIO (dynenumintPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintintintintIOV :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ()) -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffiintintintintIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLint -> GLint -> IO ()) -> GLint -> GLint -> GLint -> GLint -> m ()
+ffiintintintintIOV fp v0 v1 v2 v3 = liftIO (dynintintintintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintuintuintIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintuintuintuintIOV fp v0 v1 v2 v3 = liftIO (dynuintuintuintuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dyndoubleIOV :: FunPtr (GLdouble -> IO ()) -> GLdouble -> IO ()
+
+ffidoubleIOV :: MonadIO m => FunPtr (GLdouble -> IO ()) -> GLdouble -> m ()
+ffidoubleIOV fp v0 = liftIO (dyndoubleIOV fp v0)
+
+foreign import ccall "dynamic" dynfloatIOV :: FunPtr (GLfloat -> IO ()) -> GLfloat -> IO ()
+
+ffifloatIOV :: MonadIO m => FunPtr (GLfloat -> IO ()) -> GLfloat -> m ()
+ffifloatIOV fp v0 = liftIO (dynfloatIOV fp v0)
+
+foreign import ccall "dynamic" dynclampfIOV :: FunPtr (GLclampf -> IO ()) -> GLclampf -> IO ()
+
+fficlampfIOV :: MonadIO m => FunPtr (GLclampf -> IO ()) -> GLclampf -> m ()
+fficlampfIOV fp v0 = liftIO (dynclampfIOV fp v0)
+
+foreign import ccall "dynamic" dynfixedIOV :: FunPtr (GLfixed -> IO ()) -> GLfixed -> IO ()
+
+ffifixedIOV :: MonadIO m => FunPtr (GLfixed -> IO ()) -> GLfixed -> m ()
+ffifixedIOV fp v0 = liftIO (dynfixedIOV fp v0)
+
+foreign import ccall "dynamic" dynuintenumenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumenumenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumenumenumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumintptrsizeienumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintptrsizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintptrsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumintptrsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumsizeiptrsizeiptrenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumsizeiptrsizeiptrenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumsizeiptrsizeiptrenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumsizeiptrsizeiptrenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumfloatintIOV :: FunPtr (GLuint -> GLenum -> GLfloat -> GLint -> IO ()) -> GLuint -> GLenum -> GLfloat -> GLint -> IO ()
+
+ffiuintenumfloatintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLfloat -> GLint -> IO ()) -> GLuint -> GLenum -> GLfloat -> GLint -> m ()
+ffiuintenumfloatintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumfloatintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumintPtrfloatIOV :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr GLfloat -> IO ()
+
+ffiuintenumintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr GLfloat -> m ()
+ffiuintenumintPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintenumintPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumintPtrintIOV :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr GLint -> IO ()
+
+ffiuintenumintPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr GLint -> m ()
+ffiuintenumintPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumintPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumintPtruintIOV :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr GLuint -> IO ()
+
+ffiuintenumintPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr GLuint -> m ()
+ffiuintenumintPtruintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumintPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintenumenumPtrVIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintintenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintintenumenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintenumenumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintintintintsizeisizeisizeienumenumPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintintintintintsizeisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynsyncbitfielduint64IOenum :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLenum) -> GLsync -> GLbitfield -> GLuint64 -> IO GLenum
+
+ffisyncbitfielduint64IOenum :: MonadIO m => FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLenum) -> GLsync -> GLbitfield -> GLuint64 -> m GLenum
+ffisyncbitfielduint64IOenum fp v0 v1 v2 = liftIO (dynsyncbitfielduint64IOenum fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumPtrdoubleIOV :: FunPtr (GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> Ptr GLdouble -> IO ()
+
+ffienumPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> Ptr GLdouble -> m ()
+ffienumPtrdoubleIOV fp v0 v1 = liftIO (dynenumPtrdoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumPtrfloatIOV :: FunPtr (GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> Ptr GLfloat -> m ()
+ffienumPtrfloatIOV fp v0 v1 = liftIO (dynenumPtrfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumPtrfixedIOV :: FunPtr (GLenum -> Ptr GLfixed -> IO ()) -> GLenum -> Ptr GLfixed -> IO ()
+
+ffienumPtrfixedIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLfixed -> IO ()) -> GLenum -> Ptr GLfixed -> m ()
+ffienumPtrfixedIOV fp v0 v1 = liftIO (dynenumPtrfixedIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynPtrfloatPtrfloatIOV :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLfloat -> IO ()
+
+ffiPtrfloatPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLfloat -> m ()
+ffiPtrfloatPtrfloatIOV fp v0 v1 = liftIO (dynPtrfloatPtrfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynhalfNVhalfNVhalfNVIOV :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffihalfNVhalfNVhalfNVIOV :: MonadIO m => FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+ffihalfNVhalfNVhalfNVIOV fp v0 v1 v2 = liftIO (dynhalfNVhalfNVhalfNVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrhalfNVIOV :: FunPtr (Ptr GLhalfNV -> IO ()) -> Ptr GLhalfNV -> IO ()
+
+ffiPtrhalfNVIOV :: MonadIO m => FunPtr (Ptr GLhalfNV -> IO ()) -> Ptr GLhalfNV -> m ()
+ffiPtrhalfNVIOV fp v0 = liftIO (dynPtrhalfNVIOV fp v0)
+
+foreign import ccall "dynamic" dynubyteubyteubyteIOV :: FunPtr (GLubyte -> GLubyte -> GLubyte -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> IO ()
+
+ffiubyteubyteubyteIOV :: MonadIO m => FunPtr (GLubyte -> GLubyte -> GLubyte -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> m ()
+ffiubyteubyteubyteIOV fp v0 v1 v2 = liftIO (dynubyteubyteubyteIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrubyteIOV :: FunPtr (Ptr GLubyte -> IO ()) -> Ptr GLubyte -> IO ()
+
+ffiPtrubyteIOV :: MonadIO m => FunPtr (Ptr GLubyte -> IO ()) -> Ptr GLubyte -> m ()
+ffiPtrubyteIOV fp v0 = liftIO (dynPtrubyteIOV fp v0)
+
+foreign import ccall "dynamic" dynuintuintuintIOV :: FunPtr (GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintuintuintIOV fp v0 v1 v2 = liftIO (dynuintuintuintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtruintIOV :: FunPtr (Ptr GLuint -> IO ()) -> Ptr GLuint -> IO ()
+
+ffiPtruintIOV :: MonadIO m => FunPtr (Ptr GLuint -> IO ()) -> Ptr GLuint -> m ()
+ffiPtruintIOV fp v0 = liftIO (dynPtruintIOV fp v0)
+
+foreign import ccall "dynamic" dynushortushortushortIOV :: FunPtr (GLushort -> GLushort -> GLushort -> IO ()) -> GLushort -> GLushort -> GLushort -> IO ()
+
+ffiushortushortushortIOV :: MonadIO m => FunPtr (GLushort -> GLushort -> GLushort -> IO ()) -> GLushort -> GLushort -> GLushort -> m ()
+ffiushortushortushortIOV fp v0 v1 v2 = liftIO (dynushortushortushortIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrushortIOV :: FunPtr (Ptr GLushort -> IO ()) -> Ptr GLushort -> IO ()
+
+ffiPtrushortIOV :: MonadIO m => FunPtr (Ptr GLushort -> IO ()) -> Ptr GLushort -> m ()
+ffiPtrushortIOV fp v0 = liftIO (dynPtrushortIOV fp v0)
+
+foreign import ccall "dynamic" dynfixedfixedfixedIOV :: FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> IO ()
+
+ffifixedfixedfixedIOV :: MonadIO m => FunPtr (GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> m ()
+ffifixedfixedfixedIOV fp v0 v1 v2 = liftIO (dynfixedfixedfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrfixedIOV :: FunPtr (Ptr GLfixed -> IO ()) -> Ptr GLfixed -> IO ()
+
+ffiPtrfixedIOV :: MonadIO m => FunPtr (Ptr GLfixed -> IO ()) -> Ptr GLfixed -> m ()
+ffiPtrfixedIOV fp v0 = liftIO (dynPtrfixedIOV fp v0)
+
+foreign import ccall "dynamic" dynbytebytebytebyteIOV :: FunPtr (GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ()
+
+ffibytebytebytebyteIOV :: MonadIO m => FunPtr (GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> m ()
+ffibytebytebytebyteIOV fp v0 v1 v2 v3 = liftIO (dynbytebytebytebyteIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dyndoubledoubledoubledoubleIOV :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffidoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffidoubledoubledoubledoubleIOV fp v0 v1 v2 v3 = liftIO (dyndoubledoubledoubledoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynPtrfloatPtrfloatPtrfloatIOV :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()
+
+ffiPtrfloatPtrfloatPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+ffiPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2 = liftIO (dynPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynhalfNVhalfNVhalfNVhalfNVIOV :: FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffihalfNVhalfNVhalfNVhalfNVIOV :: MonadIO m => FunPtr (GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+ffihalfNVhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3 = liftIO (dynhalfNVhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynshortshortshortshortIOV :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()
+
+ffishortshortshortshortIOV :: MonadIO m => FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+ffishortshortshortshortIOV fp v0 v1 v2 v3 = liftIO (dynshortshortshortshortIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynubyteubyteubyteubyteIOV :: FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ()
+
+ffiubyteubyteubyteubyteIOV :: MonadIO m => FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> m ()
+ffiubyteubyteubyteubyteIOV fp v0 v1 v2 v3 = liftIO (dynubyteubyteubyteubyteIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynubyteubyteubyteubytefloatfloatIOV :: FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> IO ()
+
+ffiubyteubyteubyteubytefloatfloatIOV :: MonadIO m => FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> m ()
+ffiubyteubyteubyteubytefloatfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynubyteubyteubyteubytefloatfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynPtrubytePtrfloatIOV :: FunPtr (Ptr GLubyte -> Ptr GLfloat -> IO ()) -> Ptr GLubyte -> Ptr GLfloat -> IO ()
+
+ffiPtrubytePtrfloatIOV :: MonadIO m => FunPtr (Ptr GLubyte -> Ptr GLfloat -> IO ()) -> Ptr GLubyte -> Ptr GLfloat -> m ()
+ffiPtrubytePtrfloatIOV fp v0 v1 = liftIO (dynPtrubytePtrfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynubyteubyteubyteubytefloatfloatfloatIOV :: FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiubyteubyteubyteubytefloatfloatfloatIOV :: MonadIO m => FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiubyteubyteubyteubytefloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynubyteubyteubyteubytefloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynushortushortushortushortIOV :: FunPtr (GLushort -> GLushort -> GLushort -> GLushort -> IO ()) -> GLushort -> GLushort -> GLushort -> GLushort -> IO ()
+
+ffiushortushortushortushortIOV :: MonadIO m => FunPtr (GLushort -> GLushort -> GLushort -> GLushort -> IO ()) -> GLushort -> GLushort -> GLushort -> GLushort -> m ()
+ffiushortushortushortushortIOV fp v0 v1 v2 v3 = liftIO (dynushortushortushortushortIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintenumsizeiIOV :: FunPtr (GLint -> GLenum -> GLsizei -> IO ()) -> GLint -> GLenum -> GLsizei -> IO ()
+
+ffiintenumsizeiIOV :: MonadIO m => FunPtr (GLint -> GLenum -> GLsizei -> IO ()) -> GLint -> GLenum -> GLsizei -> m ()
+ffiintenumsizeiIOV fp v0 v1 v2 = liftIO (dynintenumsizeiIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumuintuintuintuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumuintuintuintuintuintuintuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintuintuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumuintuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumuintuintuintuintuintuintuintuintuintuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintuintuintuintuintuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintuintuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 = liftIO (dynenumuintuintuintuintuintuintuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12)
+
+foreign import ccall "dynamic" dynbooleanbooleanbooleanbooleanIOV :: FunPtr (GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()) -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()
+
+ffibooleanbooleanbooleanbooleanIOV :: MonadIO m => FunPtr (GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()) -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
+ffibooleanbooleanbooleanbooleanIOV fp v0 v1 v2 v3 = liftIO (dynbooleanbooleanbooleanbooleanIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintbooleanbooleanbooleanbooleanIOV :: FunPtr (GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()) -> GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()
+
+ffiuintbooleanbooleanbooleanbooleanIOV :: MonadIO m => FunPtr (GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()) -> GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
+ffiuintbooleanbooleanbooleanbooleanIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintbooleanbooleanbooleanbooleanIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumPtruintIOV :: FunPtr (GLenum -> Ptr GLuint -> IO ()) -> GLenum -> Ptr GLuint -> IO ()
+
+ffienumPtruintIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLuint -> IO ()) -> GLenum -> Ptr GLuint -> m ()
+ffienumPtruintIOV fp v0 v1 = liftIO (dynenumPtruintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintenumsizeiPtrVIOV :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiintenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiintenumsizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynintenumsizeiPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintenumsizeisizeiPtrVIOV :: FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ()) -> GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ()
+
+ffiintenumsizeisizeiPtrVIOV :: MonadIO m => FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ()) -> GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
+ffiintenumsizeisizeiPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynintenumsizeisizeiPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintenumintPtrVintIOV :: FunPtr (GLint -> GLenum -> GLint -> Ptr () -> GLint -> IO ()) -> GLint -> GLenum -> GLint -> Ptr () -> GLint -> IO ()
+
+ffiintenumintPtrVintIOV :: MonadIO m => FunPtr (GLint -> GLenum -> GLint -> Ptr () -> GLint -> IO ()) -> GLint -> GLenum -> GLint -> Ptr () -> GLint -> m ()
+ffiintenumintPtrVintIOV fp v0 v1 v2 v3 v4 = liftIO (dynintenumintPtrVintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintenumPtrVIOV :: FunPtr (GLint -> GLenum -> Ptr () -> IO ()) -> GLint -> GLenum -> Ptr () -> IO ()
+
+ffiintenumPtrVIOV :: MonadIO m => FunPtr (GLint -> GLenum -> Ptr () -> IO ()) -> GLint -> GLenum -> Ptr () -> m ()
+ffiintenumPtrVIOV fp v0 v1 v2 = liftIO (dynintenumPtrVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumsizeisizeienumenumPtrVIOV :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumsizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumsizeienumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumsizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumPtrfloatIOV :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumenumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+ffienumenumPtrfloatIOV fp v0 v1 v2 = liftIO (dynenumenumPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumPtrintIOV :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> Ptr GLint -> IO ()
+
+ffienumenumPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> Ptr GLint -> m ()
+ffienumenumPtrintIOV fp v0 v1 v2 = liftIO (dynenumenumPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumenumenumenumenumIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()
+
+ffienumenumenumenumenumenumIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+ffienumenumenumenumenumenumIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumenumenumenumenumIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumenumenumenumenumenumbooleanbooleanbooleanIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> IO ()
+
+ffienumenumenumenumenumenumenumbooleanbooleanbooleanIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> m ()
+ffienumenumenumenumenumenumenumbooleanbooleanbooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumenumenumenumenumenumenumbooleanbooleanbooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumPtrintIOV :: FunPtr (GLenum -> Ptr GLint -> IO ()) -> GLenum -> Ptr GLint -> IO ()
+
+ffienumPtrintIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLint -> IO ()) -> GLenum -> Ptr GLint -> m ()
+ffienumPtrintIOV fp v0 v1 = liftIO (dynenumPtrintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynhandleARBIOV :: FunPtr (GLhandleARB -> IO ()) -> GLhandleARB -> IO ()
+
+ffihandleARBIOV :: MonadIO m => FunPtr (GLhandleARB -> IO ()) -> GLhandleARB -> m ()
+ffihandleARBIOV fp v0 = liftIO (dynhandleARBIOV fp v0)
+
+foreign import ccall "dynamic" dynuintsizeiPtrcharPtrintIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> IO ()) -> GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> IO ()
+
+ffiuintsizeiPtrcharPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> IO ()) -> GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> m ()
+ffiuintsizeiPtrcharPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrcharPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumintenumsizeiintsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumintenumsizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffienumenumintenumsizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumenumintenumsizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumenumintenumsizeisizeiintsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumintenumsizeisizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffienumenumintenumsizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumenumintenumsizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumenumintenumsizeisizeisizeiintsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumintenumsizeisizeisizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffienumenumintenumsizeisizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumenumintenumsizeisizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumenumintintsizeienumsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumintintsizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumenumintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumenumintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumenumintintintsizeisizeienumsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumintintintsizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumenumintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumenumintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumenumintintintintsizeisizeisizeienumsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumintintintintsizeisizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumenumintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynenumenumintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynenumintenumsizeiintsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffienumintenumsizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffienumintenumsizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumintenumsizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumintenumsizeisizeiintsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffienumintenumsizeisizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffienumintenumsizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumintenumsizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumintenumsizeisizeisizeiintsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffienumintenumsizeisizeisizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffienumintenumsizeisizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumintenumsizeisizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumintintsizeienumsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumintintsizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumintintintsizeisizeienumsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumintintintsizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumintintintintsizeisizeisizeienumsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumintintintintsizeisizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynenumintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynuintenumintenumsizeiintsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumintenumsizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffiuintenumintenumsizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumintenumsizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumintenumsizeisizeiintsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumintenumsizeisizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffiuintenumintenumsizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintenumintenumsizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumintenumsizeisizeisizeiintsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumintenumsizeisizeisizeiintsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
+ffiuintenumintenumsizeisizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynuintenumintenumsizeisizeisizeiintsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintintintsizeienumsizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintintsizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumintintsizeienumsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumintintsizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintenumintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumintintsizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintintintintsizeisizeienumsizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintintintsizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumintintintsizeisizeienumsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumintintintsizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintenumintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynuintenumintintintsizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintintintintintsizeisizeisizeienumsizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintintintintsizeisizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynuintenumintintintintsizeisizeisizeienumsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumintintintintsizeisizeisizeienumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintenumintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynuintenumintintintintsizeisizeisizeienumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynenumenumsizeisizeienumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumsizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumenumfloatIOV :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ()) -> GLenum -> GLenum -> GLfloat -> IO ()
+
+ffienumenumfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLfloat -> IO ()) -> GLenum -> GLenum -> GLfloat -> m ()
+ffienumenumfloatIOV fp v0 v1 v2 = liftIO (dynenumenumfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumfixedIOV :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ()) -> GLenum -> GLenum -> GLfixed -> IO ()
+
+ffienumenumfixedIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLfixed -> IO ()) -> GLenum -> GLenum -> GLfixed -> m ()
+ffienumenumfixedIOV fp v0 v1 v2 = liftIO (dynenumenumfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumPtrfixedIOV :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ()) -> GLenum -> GLenum -> Ptr GLfixed -> IO ()
+
+ffienumenumPtrfixedIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ()) -> GLenum -> GLenum -> Ptr GLfixed -> m ()
+ffienumenumPtrfixedIOV fp v0 v1 v2 = liftIO (dynenumenumPtrfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumintptrintptrsizeiptrIOV :: FunPtr (GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()
+
+ffienumenumintptrintptrsizeiptrIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+ffienumenumintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumsizeiintintsizeiIOV :: FunPtr (GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> IO ()
+
+ffienumsizeiintintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLint -> GLint -> GLsizei -> m ()
+ffienumsizeiintintsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumsizeiintintsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumintintsizeiIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> IO ()
+
+ffienumenumintintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> m ()
+ffienumenumintintsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumintintsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumintintsizeisizeiIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffienumenumintintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffienumenumintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumintintintintuintenumintintintintsizeisizeisizeiIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ()
+
+ffiuintenumintintintintuintenumintintintintsizeisizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> m ()
+ffiuintenumintintintintuintenumintintintintsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 = liftIO (dynuintenumintintintintuintenumintintintintsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14)
+
+foreign import ccall "dynamic" dynenumenumintenumintintsizeiintIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()
+
+ffienumenumintenumintintsizeiintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> m ()
+ffienumenumintenumintintsizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumenumintenumintintsizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumenumintenumintintsizeisizeiintIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()
+
+ffienumenumintenumintintsizeisizeiintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+ffienumenumintenumintintsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumenumintenumintintsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumenumintintintintsizeiIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()
+
+ffienumenumintintintintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
+ffienumenumintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumenumintintintintintsizeisizeiIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffienumenumintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffienumenumintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumenumintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumenumintintintintintintsizeisizeiIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffienumenumintintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffienumenumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumenumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintuintintptrintptrsizeiIOV :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ()
+
+ffiuintuintintptrintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> m ()
+ffiuintuintintptrintptrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintintptrintptrsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintintsizeisizeienumIOV :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> IO ()
+
+ffiintintsizeisizeienumIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> m ()
+ffiintintsizeisizeienumIOV fp v0 v1 v2 v3 v4 = liftIO (dynintintsizeisizeienumIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintenumintintsizeiintIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()) -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()
+
+ffienumintenumintintsizeiintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()) -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> m ()
+ffienumintenumintintsizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumintenumintintsizeiintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumintenumintintsizeisizeiintIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()
+
+ffienumintenumintintsizeisizeiintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+ffienumintenumintintsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumintenumintintsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumintintintintsizeiIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()
+
+ffienumintintintintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
+ffienumintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumintintintintintsizeisizeiIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffienumintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffienumintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumintintintintintintsizeisizeiIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffienumintintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffienumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumintenumintintsizeiintIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()
+
+ffiuintenumintenumintintsizeiintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> m ()
+ffiuintenumintenumintintsizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumintenumintintsizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumintenumintintsizeisizeiintIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()
+
+ffiuintenumintenumintintsizeisizeiintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+ffiuintenumintenumintintsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintenumintenumintintsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintuintintsizeiIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLint -> GLsizei -> IO ()
+
+ffiuintuintintsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLint -> GLsizei -> m ()
+ffiuintuintintsizeiIOV fp v0 v1 v2 v3 = liftIO (dynuintuintintsizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintintintintsizeiIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()
+
+ffiuintintintintintsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
+ffiuintintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumintintintintsizeiIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()
+
+ffiuintenumintintintintsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
+ffiuintenumintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumintintintintsizeiIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintintintintintintsizeisizeiIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffiuintintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffiuintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumintintintintintsizeisizeiIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffiuintenumintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffiuintenumintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintenumintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintintintintintintintsizeisizeiIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffiuintintintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffiuintintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumintintintintintintsizeisizeiIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffiuintenumintintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffiuintenumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynuintenumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynsizeienumPtrVuintenumenumPtrfloatIOV :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()
+
+ffisizeienumPtrVuintenumenumPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+ffisizeienumPtrVuintenumenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynsizeienumPtrVuintenumenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynbooleanIOV :: FunPtr (GLboolean -> IO ()) -> GLboolean -> IO ()
+
+ffibooleanIOV :: MonadIO m => FunPtr (GLboolean -> IO ()) -> GLboolean -> m ()
+ffibooleanIOV fp v0 = liftIO (dynbooleanIOV fp v0)
+
+foreign import ccall "dynamic" dynsizeiPtrfloatIOV :: FunPtr (GLsizei -> Ptr GLfloat -> IO ()) -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffisizeiPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLfloat -> IO ()) -> GLsizei -> Ptr GLfloat -> m ()
+ffisizeiPtrfloatIOV fp v0 v1 = liftIO (dynsizeiPtrfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynsizeiPtruintIOV :: FunPtr (GLsizei -> Ptr GLuint -> IO ()) -> GLsizei -> Ptr GLuint -> IO ()
+
+ffisizeiPtruintIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLuint -> IO ()) -> GLsizei -> Ptr GLuint -> m ()
+ffisizeiPtruintIOV fp v0 v1 = liftIO (dynsizeiPtruintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtruintIOV :: FunPtr (GLuint -> Ptr GLuint -> IO ()) -> GLuint -> Ptr GLuint -> IO ()
+
+ffiuintPtruintIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLuint -> IO ()) -> GLuint -> Ptr GLuint -> m ()
+ffiuintPtruintIOV fp v0 v1 = liftIO (dynuintPtruintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynIOuint :: FunPtr (IO GLuint) -> IO GLuint
+
+ffiIOuint :: MonadIO m => FunPtr (IO GLuint) -> m GLuint
+ffiIOuint fp  = liftIO (dynIOuint fp )
+
+foreign import ccall "dynamic" dynIOhandleARB :: FunPtr (IO GLhandleARB) -> IO GLhandleARB
+
+ffiIOhandleARB :: MonadIO m => FunPtr (IO GLhandleARB) -> m GLhandleARB
+ffiIOhandleARB fp  = liftIO (dynIOhandleARB fp )
+
+foreign import ccall "dynamic" dynenumsizeiPtruintIOV :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ()) -> GLenum -> GLsizei -> Ptr GLuint -> IO ()
+
+ffienumsizeiPtruintIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ()) -> GLenum -> GLsizei -> Ptr GLuint -> m ()
+ffienumsizeiPtruintIOV fp v0 v1 v2 = liftIO (dynenumsizeiPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumIOhandleARB :: FunPtr (GLenum -> IO GLhandleARB) -> GLenum -> IO GLhandleARB
+
+ffienumIOhandleARB :: MonadIO m => FunPtr (GLenum -> IO GLhandleARB) -> GLenum -> m GLhandleARB
+ffienumIOhandleARB fp v0 = liftIO (dynenumIOhandleARB fp v0)
+
+foreign import ccall "dynamic" dynenumPtrcharIOuint :: FunPtr (GLenum -> Ptr GLchar -> IO GLuint) -> GLenum -> Ptr GLchar -> IO GLuint
+
+ffienumPtrcharIOuint :: MonadIO m => FunPtr (GLenum -> Ptr GLchar -> IO GLuint) -> GLenum -> Ptr GLchar -> m GLuint
+ffienumPtrcharIOuint fp v0 v1 = liftIO (dynenumPtrcharIOuint fp v0 v1)
+
+foreign import ccall "dynamic" dynenumsizeiPtrcharIOuint :: FunPtr (GLenum -> GLsizei -> Ptr GLchar -> IO GLuint) -> GLenum -> GLsizei -> Ptr GLchar -> IO GLuint
+
+ffienumsizeiPtrcharIOuint :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr GLchar -> IO GLuint) -> GLenum -> GLsizei -> Ptr GLchar -> m GLuint
+ffienumsizeiPtrcharIOuint fp v0 v1 v2 = liftIO (dynenumsizeiPtrcharIOuint fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrVPtrVbitfieldIOsync :: FunPtr (Ptr () -> Ptr () -> GLbitfield -> IO GLsync) -> Ptr () -> Ptr () -> GLbitfield -> IO GLsync
+
+ffiPtrVPtrVbitfieldIOsync :: MonadIO m => FunPtr (Ptr () -> Ptr () -> GLbitfield -> IO GLsync) -> Ptr () -> Ptr () -> GLbitfield -> m GLsync
+ffiPtrVPtrVbitfieldIOsync fp v0 v1 v2 = liftIO (dynPtrVPtrVbitfieldIOsync fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynDEBUGPROCPtrVIOV :: FunPtr (GLDEBUGPROC -> Ptr () -> IO ()) -> GLDEBUGPROC -> Ptr () -> IO ()
+
+ffiDEBUGPROCPtrVIOV :: MonadIO m => FunPtr (GLDEBUGPROC -> Ptr () -> IO ()) -> GLDEBUGPROC -> Ptr () -> m ()
+ffiDEBUGPROCPtrVIOV fp v0 v1 = liftIO (dynDEBUGPROCPtrVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynDEBUGPROCAMDPtrVIOV :: FunPtr (GLDEBUGPROCAMD -> Ptr () -> IO ()) -> GLDEBUGPROCAMD -> Ptr () -> IO ()
+
+ffiDEBUGPROCAMDPtrVIOV :: MonadIO m => FunPtr (GLDEBUGPROCAMD -> Ptr () -> IO ()) -> GLDEBUGPROCAMD -> Ptr () -> m ()
+ffiDEBUGPROCAMDPtrVIOV fp v0 v1 = liftIO (dynDEBUGPROCAMDPtrVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynDEBUGPROCARBPtrVIOV :: FunPtr (GLDEBUGPROCARB -> Ptr () -> IO ()) -> GLDEBUGPROCARB -> Ptr () -> IO ()
+
+ffiDEBUGPROCARBPtrVIOV :: MonadIO m => FunPtr (GLDEBUGPROCARB -> Ptr () -> IO ()) -> GLDEBUGPROCARB -> Ptr () -> m ()
+ffiDEBUGPROCARBPtrVIOV fp v0 v1 = liftIO (dynDEBUGPROCARBPtrVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynDEBUGPROCKHRPtrVIOV :: FunPtr (GLDEBUGPROCKHR -> Ptr () -> IO ()) -> GLDEBUGPROCKHR -> Ptr () -> IO ()
+
+ffiDEBUGPROCKHRPtrVIOV :: MonadIO m => FunPtr (GLDEBUGPROCKHR -> Ptr () -> IO ()) -> GLDEBUGPROCKHR -> Ptr () -> m ()
+ffiDEBUGPROCKHRPtrVIOV fp v0 v1 = liftIO (dynDEBUGPROCKHRPtrVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumenumenumsizeiPtruintbooleanIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ()
+
+ffienumenumenumsizeiPtruintbooleanIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> m ()
+ffienumenumenumsizeiPtruintbooleanIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumenumsizeiPtruintbooleanIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumsizeiPtruintbooleanIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ()
+
+ffienumenumsizeiPtruintbooleanIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> m ()
+ffienumenumsizeiPtruintbooleanIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumsizeiPtruintbooleanIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumuintenumsizeiPtrcharIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> IO ()
+
+ffienumenumuintenumsizeiPtrcharIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> m ()
+ffienumenumuintenumsizeiPtrcharIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumuintenumsizeiPtrcharIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumuintsizeiPtrcharIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ()
+
+ffienumenumuintsizeiPtrcharIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
+ffienumenumuintsizeiPtrcharIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumuintsizeiPtrcharIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumdoubledoubleintintdoubledoubleintintdoubledoubleintintPtrdoubleIOV :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()
+
+ffienumdoubledoubleintintdoubledoubleintintdoubledoubleintintPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+ffienumdoubledoubleintintdoubledoubleintintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 = liftIO (dynenumdoubledoubleintintdoubledoubleintintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13)
+
+foreign import ccall "dynamic" dynenumfloatfloatintintfloatfloatintintfloatfloatintintPtrfloatIOV :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()
+
+ffienumfloatfloatintintfloatfloatintintfloatfloatintintPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+ffienumfloatfloatintintfloatfloatintintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 = liftIO (dynenumfloatfloatintintfloatfloatintintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13)
+
+foreign import ccall "dynamic" dynuintsizeiIOV :: FunPtr (GLuint -> GLsizei -> IO ()) -> GLuint -> GLsizei -> IO ()
+
+ffiuintsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> IO ()) -> GLuint -> GLsizei -> m ()
+ffiuintsizeiIOV fp v0 v1 = liftIO (dynuintsizeiIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtrcharIOV :: FunPtr (GLint -> Ptr GLchar -> IO ()) -> GLint -> Ptr GLchar -> IO ()
+
+ffiintPtrcharIOV :: MonadIO m => FunPtr (GLint -> Ptr GLchar -> IO ()) -> GLint -> Ptr GLchar -> m ()
+ffiintPtrcharIOV fp v0 v1 = liftIO (dynintPtrcharIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintPtruintIOV :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ()) -> GLenum -> GLuint -> Ptr GLuint -> IO ()
+
+ffienumuintPtruintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ()) -> GLenum -> GLuint -> Ptr GLuint -> m ()
+ffienumuintPtruintIOV fp v0 v1 v2 = liftIO (dynenumuintPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsyncIOV :: FunPtr (GLsync -> IO ()) -> GLsync -> IO ()
+
+ffisyncIOV :: MonadIO m => FunPtr (GLsync -> IO ()) -> GLsync -> m ()
+ffisyncIOV fp v0 = liftIO (dynsyncIOV fp v0)
+
+foreign import ccall "dynamic" dynclampdclampdIOV :: FunPtr (GLclampd -> GLclampd -> IO ()) -> GLclampd -> GLclampd -> IO ()
+
+fficlampdclampdIOV :: MonadIO m => FunPtr (GLclampd -> GLclampd -> IO ()) -> GLclampd -> GLclampd -> m ()
+fficlampdclampdIOV fp v0 v1 = liftIO (dynclampdclampdIOV fp v0 v1)
+
+foreign import ccall "dynamic" dyndoubledoubleIOV :: FunPtr (GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> IO ()
+
+ffidoubledoubleIOV :: MonadIO m => FunPtr (GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> m ()
+ffidoubledoubleIOV fp v0 v1 = liftIO (dyndoubledoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintsizeiPtrdoubleIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLuint -> GLsizei -> Ptr GLdouble -> IO ()
+
+ffiuintsizeiPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLuint -> GLsizei -> Ptr GLdouble -> m ()
+ffiuintsizeiPtrdoubleIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtrdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintdoubledoubleIOV :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLdouble -> GLdouble -> IO ()
+
+ffiuintdoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLdouble -> GLdouble -> m ()
+ffiuintdoubledoubleIOV fp v0 v1 v2 = liftIO (dynuintdoubledoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> m ()
+ffifloatfloatIOV fp v0 v1 = liftIO (dynfloatfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynclampfclampfIOV :: FunPtr (GLclampf -> GLclampf -> IO ()) -> GLclampf -> GLclampf -> IO ()
+
+fficlampfclampfIOV :: MonadIO m => FunPtr (GLclampf -> GLclampf -> IO ()) -> GLclampf -> GLclampf -> m ()
+fficlampfclampfIOV fp v0 v1 = liftIO (dynclampfclampfIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynfixedfixedIOV :: FunPtr (GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> IO ()
+
+ffifixedfixedIOV :: MonadIO m => FunPtr (GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> m ()
+ffifixedfixedIOV fp v0 v1 = liftIO (dynfixedfixedIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumsizeiPtrfloatIOV :: FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffienumsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLsizei -> Ptr GLfloat -> m ()
+ffienumsizeiPtrfloatIOV fp v0 v1 v2 = liftIO (dynenumsizeiPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumsizeiPtrenumIOV :: FunPtr (GLenum -> GLsizei -> Ptr GLenum -> IO ()) -> GLenum -> GLsizei -> Ptr GLenum -> IO ()
+
+ffienumsizeiPtrenumIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr GLenum -> IO ()) -> GLenum -> GLsizei -> Ptr GLenum -> m ()
+ffienumsizeiPtrenumIOV fp v0 v1 v2 = liftIO (dynenumsizeiPtrenumIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintuintuintuintuintIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynintptrIOV :: FunPtr (GLintptr -> IO ()) -> GLintptr -> IO ()
+
+ffiintptrIOV :: MonadIO m => FunPtr (GLintptr -> IO ()) -> GLintptr -> m ()
+ffiintptrIOV fp v0 = liftIO (dynintptrIOV fp v0)
+
+foreign import ccall "dynamic" dynenumintsizeiIOV :: FunPtr (GLenum -> GLint -> GLsizei -> IO ()) -> GLenum -> GLint -> GLsizei -> IO ()
+
+ffienumintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLsizei -> IO ()) -> GLenum -> GLint -> GLsizei -> m ()
+ffienumintsizeiIOV fp v0 v1 v2 = liftIO (dynenumintsizeiIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumPtrVIOV :: FunPtr (GLenum -> Ptr () -> IO ()) -> GLenum -> Ptr () -> IO ()
+
+ffienumPtrVIOV :: MonadIO m => FunPtr (GLenum -> Ptr () -> IO ()) -> GLenum -> Ptr () -> m ()
+ffienumPtrVIOV fp v0 v1 = liftIO (dynenumPtrVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumintsizeisizeiIOV :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffienumintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLint -> GLsizei -> GLsizei -> m ()
+ffienumintsizeisizeiIOV fp v0 v1 v2 v3 = liftIO (dynenumintsizeisizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintsizeisizeiuintIOV :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> GLuint -> IO ()) -> GLenum -> GLint -> GLsizei -> GLsizei -> GLuint -> IO ()
+
+ffienumintsizeisizeiuintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> GLuint -> IO ()) -> GLenum -> GLint -> GLsizei -> GLsizei -> GLuint -> m ()
+ffienumintsizeisizeiuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumintsizeisizeiuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynsizeiPtrenumIOV :: FunPtr (GLsizei -> Ptr GLenum -> IO ()) -> GLsizei -> Ptr GLenum -> IO ()
+
+ffisizeiPtrenumIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLenum -> IO ()) -> GLsizei -> Ptr GLenum -> m ()
+ffisizeiPtrenumIOV fp v0 v1 = liftIO (dynsizeiPtrenumIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtrenumPtrintIOV :: FunPtr (GLint -> Ptr GLenum -> Ptr GLint -> IO ()) -> GLint -> Ptr GLenum -> Ptr GLint -> IO ()
+
+ffiintPtrenumPtrintIOV :: MonadIO m => FunPtr (GLint -> Ptr GLenum -> Ptr GLint -> IO ()) -> GLint -> Ptr GLenum -> Ptr GLint -> m ()
+ffiintPtrenumPtrintIOV fp v0 v1 v2 = liftIO (dynintPtrenumPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumsizeiIOV :: FunPtr (GLenum -> GLsizei -> IO ()) -> GLenum -> GLsizei -> IO ()
+
+ffienumsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> IO ()) -> GLenum -> GLsizei -> m ()
+ffienumsizeiIOV fp v0 v1 = liftIO (dynenumsizeiIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumsizeienumPtrVIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> IO ()
+
+ffienumsizeienumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> m ()
+ffienumsizeienumPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumsizeienumPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumsizeienumPtrVintIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ()
+
+ffienumsizeienumPtrVintIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLint -> m ()
+ffienumsizeienumPtrVintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumsizeienumPtrVintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumPtrVIOV fp v0 v1 v2 = liftIO (dynenumenumPtrVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumsizeienumPtrVsizeiIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ()
+
+ffienumsizeienumPtrVsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
+ffienumsizeienumPtrVsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumsizeienumPtrVsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumsizeienumPtrVsizeiuintIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLuint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLuint -> IO ()
+
+ffienumsizeienumPtrVsizeiuintIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLuint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLuint -> m ()
+ffienumsizeienumPtrVsizeiuintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumsizeienumPtrVsizeiuintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumsizeienumPtrVsizeiintIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ()
+
+ffienumsizeienumPtrVsizeiintIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> m ()
+ffienumsizeienumPtrVsizeiintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumsizeienumPtrVsizeiintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumsizeienumPtrVsizeiintuintIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> GLuint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> GLuint -> IO ()
+
+ffienumsizeienumPtrVsizeiintuintIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> GLuint -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> GLuint -> m ()
+ffienumsizeienumPtrVsizeiintuintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumsizeienumPtrVsizeiintuintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynsizeisizeienumenumPtrVIOV :: FunPtr (GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintuintintsizeiIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> IO ()
+
+ffienumuintuintintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> m ()
+ffienumuintuintintsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumuintuintintsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintuintsizeiIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> IO ()
+
+ffienumuintuintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> m ()
+ffienumuintuintsizeiIOV fp v0 v1 v2 v3 = liftIO (dynenumuintuintsizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintuintsizeienumPtrVIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> IO ()
+
+ffienumuintuintsizeienumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> m ()
+ffienumuintuintsizeienumPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumuintuintsizeienumPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumuintuintsizeienumPtrVintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ()
+
+ffienumuintuintsizeienumPtrVintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GLint -> m ()
+ffienumuintuintsizeienumPtrVintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumuintuintsizeienumPtrVintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynfloatfloatfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintintintintintIOV :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLint -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffiintintintintintIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLint -> GLint -> GLint -> GLint -> GLint -> m ()
+ffiintintintintintIOV fp v0 v1 v2 v3 v4 = liftIO (dynintintintintintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynshortshortshortshortshortIOV :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()
+
+ffishortshortshortshortshortIOV :: MonadIO m => FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+ffishortshortshortshortshortIOV fp v0 v1 v2 v3 v4 = liftIO (dynshortshortshortshortshortIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintuintfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintuintfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintuintfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynfixedfixedfixedfixedfixedIOV :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()
+
+ffifixedfixedfixedfixedfixedIOV :: MonadIO m => FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+ffifixedfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4 = liftIO (dynfixedfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintsizeiIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLsizei -> IO ()
+
+ffienumuintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLsizei -> m ()
+ffienumuintsizeiIOV fp v0 v1 v2 = liftIO (dynenumuintsizeiIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumeglImageOESIOV :: FunPtr (GLenum -> GLeglImageOES -> IO ()) -> GLenum -> GLeglImageOES -> IO ()
+
+ffienumeglImageOESIOV :: MonadIO m => FunPtr (GLenum -> GLeglImageOES -> IO ()) -> GLenum -> GLeglImageOES -> m ()
+ffienumeglImageOESIOV fp v0 v1 = liftIO (dynenumeglImageOESIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynsizeiIOV :: FunPtr (GLsizei -> IO ()) -> GLsizei -> IO ()
+
+ffisizeiIOV :: MonadIO m => FunPtr (GLsizei -> IO ()) -> GLsizei -> m ()
+ffisizeiIOV fp v0 = liftIO (dynsizeiIOV fp v0)
+
+foreign import ccall "dynamic" dynsizeiPtrVIOV :: FunPtr (GLsizei -> Ptr () -> IO ()) -> GLsizei -> Ptr () -> IO ()
+
+ffisizeiPtrVIOV :: MonadIO m => FunPtr (GLsizei -> Ptr () -> IO ()) -> GLsizei -> Ptr () -> m ()
+ffisizeiPtrVIOV fp v0 v1 = liftIO (dynsizeiPtrVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynsizeisizeiPtrbooleanIOV :: FunPtr (GLsizei -> GLsizei -> Ptr GLboolean -> IO ()) -> GLsizei -> GLsizei -> Ptr GLboolean -> IO ()
+
+ffisizeisizeiPtrbooleanIOV :: MonadIO m => FunPtr (GLsizei -> GLsizei -> Ptr GLboolean -> IO ()) -> GLsizei -> GLsizei -> Ptr GLboolean -> m ()
+ffisizeisizeiPtrbooleanIOV fp v0 v1 v2 = liftIO (dynsizeisizeiPtrbooleanIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintPtrbooleanintIOV :: FunPtr (GLint -> Ptr GLboolean -> GLint -> IO ()) -> GLint -> Ptr GLboolean -> GLint -> IO ()
+
+ffiintPtrbooleanintIOV :: MonadIO m => FunPtr (GLint -> Ptr GLboolean -> GLint -> IO ()) -> GLint -> Ptr GLboolean -> GLint -> m ()
+ffiintPtrbooleanintIOV fp v0 v1 v2 = liftIO (dynintPtrbooleanintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrbooleanIOV :: FunPtr (Ptr GLboolean -> IO ()) -> Ptr GLboolean -> IO ()
+
+ffiPtrbooleanIOV :: MonadIO m => FunPtr (Ptr GLboolean -> IO ()) -> Ptr GLboolean -> m ()
+ffiPtrbooleanIOV fp v0 = liftIO (dynPtrbooleanIOV fp v0)
+
+foreign import ccall "dynamic" dynenumintintIOV :: FunPtr (GLenum -> GLint -> GLint -> IO ()) -> GLenum -> GLint -> GLint -> IO ()
+
+ffienumintintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> IO ()) -> GLenum -> GLint -> GLint -> m ()
+ffienumintintIOV fp v0 v1 v2 = liftIO (dynenumintintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumintintintintIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffienumintintintintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> m ()
+ffienumintintintintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumintintintintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintintIOV :: FunPtr (GLint -> GLint -> IO ()) -> GLint -> GLint -> IO ()
+
+ffiintintIOV :: MonadIO m => FunPtr (GLint -> GLint -> IO ()) -> GLint -> GLint -> m ()
+ffiintintIOV fp v0 v1 = liftIO (dynintintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintPtrfloatIOV :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> Ptr GLfloat -> IO ()
+
+ffienumuintPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> Ptr GLfloat -> m ()
+ffienumuintPtrfloatIOV fp v0 v1 v2 = liftIO (dynenumuintPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtruintintPtrintIOV :: FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ()) -> Ptr GLuint -> GLint -> Ptr GLint -> IO ()
+
+ffiPtruintintPtrintIOV :: MonadIO m => FunPtr (Ptr GLuint -> GLint -> Ptr GLint -> IO ()) -> Ptr GLuint -> GLint -> Ptr GLint -> m ()
+ffiPtruintintPtrintIOV fp v0 v1 v2 = liftIO (dynPtruintintPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtrcharPtrintIOV :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> Ptr GLchar -> Ptr GLint -> IO ()
+
+ffiuintenumPtrcharPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLchar -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> Ptr GLchar -> Ptr GLint -> m ()
+ffiuintenumPtrcharPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumPtrcharPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumintenumPtrintIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()
+
+ffiuintenumintenumPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
+ffiuintenumintenumPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumintenumPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintintintintsizeisizeisizeienumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintintintintsizeisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynenumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynuintIOboolean :: FunPtr (GLuint -> IO GLboolean) -> GLuint -> IO GLboolean
+
+ffiuintIOboolean :: MonadIO m => FunPtr (GLuint -> IO GLboolean) -> GLuint -> m GLboolean
+ffiuintIOboolean fp v0 = liftIO (dynuintIOboolean fp v0)
+
+foreign import ccall "dynamic" dynsizeienumPtrfloatIOV :: FunPtr (GLsizei -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr GLfloat -> IO ()
+
+ffisizeienumPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr GLfloat -> m ()
+ffisizeienumPtrfloatIOV fp v0 v1 v2 = liftIO (dynsizeienumPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsizeienumPtrfixedIOV :: FunPtr (GLsizei -> GLenum -> Ptr GLfixed -> IO ()) -> GLsizei -> GLenum -> Ptr GLfixed -> IO ()
+
+ffisizeienumPtrfixedIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr GLfixed -> IO ()) -> GLsizei -> GLenum -> Ptr GLfixed -> m ()
+ffisizeienumPtrfixedIOV fp v0 v1 v2 = liftIO (dynsizeienumPtrfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumbitfieldIOsync :: FunPtr (GLenum -> GLbitfield -> IO GLsync) -> GLenum -> GLbitfield -> IO GLsync
+
+ffienumbitfieldIOsync :: MonadIO m => FunPtr (GLenum -> GLbitfield -> IO GLsync) -> GLenum -> GLbitfield -> m GLsync
+ffienumbitfieldIOsync fp v0 v1 = liftIO (dynenumbitfieldIOsync fp v0 v1)
+
+foreign import ccall "dynamic" dynPtruintIOint :: FunPtr (Ptr GLuint -> IO GLint) -> Ptr GLuint -> IO GLint
+
+ffiPtruintIOint :: MonadIO m => FunPtr (Ptr GLuint -> IO GLint) -> Ptr GLuint -> m GLint
+ffiPtruintIOint fp v0 = liftIO (dynPtruintIOint fp v0)
+
+foreign import ccall "dynamic" dynenumintptrsizeiptrIOV :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLintptr -> GLsizeiptr -> IO ()
+
+ffienumintptrsizeiptrIOV :: MonadIO m => FunPtr (GLenum -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLintptr -> GLsizeiptr -> m ()
+ffienumintptrsizeiptrIOV fp v0 v1 v2 = liftIO (dynenumintptrsizeiptrIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintptrsizeiIOV :: FunPtr (GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLintptr -> GLsizei -> IO ()
+
+ffiuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLintptr -> GLsizei -> m ()
+ffiuintintptrsizeiIOV fp v0 v1 v2 = liftIO (dynuintintptrsizeiIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintptrsizeiptrIOV :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
+
+ffiuintintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+ffiuintintptrsizeiptrIOV fp v0 v1 v2 = liftIO (dynuintintptrsizeiptrIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumintPtrVintIOV :: FunPtr (GLenum -> GLint -> Ptr () -> GLint -> IO ()) -> GLenum -> GLint -> Ptr () -> GLint -> IO ()
+
+ffienumintPtrVintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> Ptr () -> GLint -> IO ()) -> GLenum -> GLint -> Ptr () -> GLint -> m ()
+ffienumintPtrVintIOV fp v0 v1 v2 v3 = liftIO (dynenumintPtrVintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynhalfNVIOV :: FunPtr (GLhalfNV -> IO ()) -> GLhalfNV -> IO ()
+
+ffihalfNVIOV :: MonadIO m => FunPtr (GLhalfNV -> IO ()) -> GLhalfNV -> m ()
+ffihalfNVIOV fp v0 = liftIO (dynhalfNVIOV fp v0)
+
+foreign import ccall "dynamic" dynuintsizeiPtrenumIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr GLenum -> IO ()
+
+ffiuintsizeiPtrenumIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr GLenum -> m ()
+ffiuintsizeiPtrenumIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtrenumIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumenumuintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> IO ()
+
+ffienumenumenumuintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> m ()
+ffienumenumenumuintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtrfloatIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffienumuintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+ffienumuintsizeiPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumuintsizeiPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumuintintIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> IO ()
+
+ffienumenumuintintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+ffienumenumuintintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumuintintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumenumuintintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ()
+
+ffienumenumenumuintintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+ffienumenumenumuintintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumenumuintintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumenumuintintsizeiIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> IO ()
+
+ffienumenumenumuintintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> m ()
+ffienumenumenumuintintsizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumenumuintintsizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumenumuintintintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()
+
+ffienumenumenumuintintintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+ffienumenumenumuintintintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumenumuintintintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumuintintenumIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ()
+
+ffienumenumuintintenumIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLenum -> m ()
+ffienumenumuintintenumIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumuintintenumIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumuintintintIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()
+
+ffienumenumuintintintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+ffienumenumuintintintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumuintintintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dyndoubledoubledoubledoubledoubledoubleIOV :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffidoubledoubledoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffidoubledoubledoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dyndoubledoubledoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynfixedfixedfixedfixedfixedfixedIOV :: FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()
+
+ffifixedfixedfixedfixedfixedfixedIOV :: MonadIO m => FunPtr (GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+ffifixedfixedfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynfixedfixedfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynsizeiIOuint :: FunPtr (GLsizei -> IO GLuint) -> GLsizei -> IO GLuint
+
+ffisizeiIOuint :: MonadIO m => FunPtr (GLsizei -> IO GLuint) -> GLsizei -> m GLuint
+ffisizeiIOuint fp v0 = liftIO (dynsizeiIOuint fp v0)
+
+foreign import ccall "dynamic" dynuintIOuint :: FunPtr (GLuint -> IO GLuint) -> GLuint -> IO GLuint
+
+ffiuintIOuint :: MonadIO m => FunPtr (GLuint -> IO GLuint) -> GLuint -> m GLuint
+ffiuintIOuint fp v0 = liftIO (dynuintIOuint fp v0)
+
+foreign import ccall "dynamic" dynenumenumenumuintIOuint :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO GLuint) -> GLenum -> GLenum -> GLenum -> GLuint -> IO GLuint
+
+ffienumenumenumuintIOuint :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO GLuint) -> GLenum -> GLenum -> GLenum -> GLuint -> m GLuint
+ffienumenumenumuintIOuint fp v0 v1 v2 v3 = liftIO (dynenumenumenumuintIOuint fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintenumPtrintIOV :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ()
+
+ffiuintuintenumPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
+ffiuintuintenumPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintuintenumPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintsizeiPtrsizeiPtrintPtrenumPtrcharIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> IO ()
+
+ffiuintuintsizeiPtrsizeiPtrintPtrenumPtrcharIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> m ()
+ffiuintuintsizeiPtrsizeiPtrintPtrenumPtrcharIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintsizeiPtrsizeiPtrintPtrenumPtrcharIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynhandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV :: FunPtr (GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> IO ()) -> GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> IO ()
+
+ffihandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV :: MonadIO m => FunPtr (GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> IO ()) -> GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> m ()
+ffihandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynhandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumuintsizeiPtrsizeiPtrcharIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()
+
+ffiuintenumuintsizeiPtrsizeiPtrcharIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+ffiuintenumuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintenumuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumuintenumPtrintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ()
+
+ffiuintenumuintenumPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
+ffiuintenumuintenumPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintenumPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintsizeiPtrsizeiPtrcharIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()
+
+ffiuintuintsizeiPtrsizeiPtrcharIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+ffiuintuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintsizeiPtruintenumPtrintIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> IO ()
+
+ffiuintsizeiPtruintenumPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> m ()
+ffiuintsizeiPtruintenumPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintsizeiPtruintenumPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ()
+
+ffiuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> m ()
+ffiuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynhandleARBsizeiPtrsizeiPtrhandleARBIOV :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> IO ()) -> GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> IO ()
+
+ffihandleARBsizeiPtrsizeiPtrhandleARBIOV :: MonadIO m => FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> IO ()) -> GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> m ()
+ffihandleARBsizeiPtrsizeiPtrhandleARBIOV fp v0 v1 v2 v3 = liftIO (dynhandleARBsizeiPtrsizeiPtrhandleARBIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrsizeiPtruintIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> IO ()
+
+ffiuintsizeiPtrsizeiPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> m ()
+ffiuintsizeiPtrsizeiPtruintIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrsizeiPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintPtrcharIOint :: FunPtr (GLuint -> Ptr GLchar -> IO GLint) -> GLuint -> Ptr GLchar -> IO GLint
+
+ffiuintPtrcharIOint :: MonadIO m => FunPtr (GLuint -> Ptr GLchar -> IO GLint) -> GLuint -> Ptr GLchar -> m GLint
+ffiuintPtrcharIOint fp v0 v1 = liftIO (dynuintPtrcharIOint fp v0 v1)
+
+foreign import ccall "dynamic" dynhandleARBPtrcharARBIOint :: FunPtr (GLhandleARB -> Ptr GLcharARB -> IO GLint) -> GLhandleARB -> Ptr GLcharARB -> IO GLint
+
+ffihandleARBPtrcharARBIOint :: MonadIO m => FunPtr (GLhandleARB -> Ptr GLcharARB -> IO GLint) -> GLhandleARB -> Ptr GLcharARB -> m GLint
+ffihandleARBPtrcharARBIOint fp v0 v1 = liftIO (dynhandleARBPtrcharARBIOint fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintPtrbooleanIOV :: FunPtr (GLenum -> GLuint -> Ptr GLboolean -> IO ()) -> GLenum -> GLuint -> Ptr GLboolean -> IO ()
+
+ffienumuintPtrbooleanIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr GLboolean -> IO ()) -> GLenum -> GLuint -> Ptr GLboolean -> m ()
+ffienumuintPtrbooleanIOV fp v0 v1 v2 = liftIO (dynenumuintPtrbooleanIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumPtrbooleanIOV :: FunPtr (GLenum -> Ptr GLboolean -> IO ()) -> GLenum -> Ptr GLboolean -> IO ()
+
+ffienumPtrbooleanIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLboolean -> IO ()) -> GLenum -> Ptr GLboolean -> m ()
+ffienumPtrbooleanIOV fp v0 v1 = liftIO (dynenumPtrbooleanIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumenumPtrint64IOV :: FunPtr (GLenum -> GLenum -> Ptr GLint64 -> IO ()) -> GLenum -> GLenum -> Ptr GLint64 -> IO ()
+
+ffienumenumPtrint64IOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLint64 -> IO ()) -> GLenum -> GLenum -> Ptr GLint64 -> m ()
+ffienumenumPtrint64IOV fp v0 v1 v2 = liftIO (dynenumenumPtrint64IOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumPtruint64EXTIOV :: FunPtr (GLenum -> GLenum -> Ptr GLuint64EXT -> IO ()) -> GLenum -> GLenum -> Ptr GLuint64EXT -> IO ()
+
+ffienumenumPtruint64EXTIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLuint64EXT -> IO ()) -> GLenum -> GLenum -> Ptr GLuint64EXT -> m ()
+ffienumenumPtruint64EXTIOV fp v0 v1 v2 = liftIO (dynenumenumPtruint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumenumPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumenumenumPtrfloatIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumenumenumenumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+ffienumenumenumenumPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumenumenumPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumenumenumPtrintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ()
+
+ffienumenumenumenumPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+ffienumenumenumenumPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumenumenumPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumenumPtrfloatIOV :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumenumenumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+ffienumenumenumPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumenumPtrintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ()
+
+ffienumenumenumPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
+ffienumenumenumPtrintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumintPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> Ptr () -> IO ()
+
+ffienumenumintPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> Ptr () -> m ()
+ffienumenumintPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumenumintPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintPtrVIOV :: FunPtr (GLenum -> GLint -> Ptr () -> IO ()) -> GLenum -> GLint -> Ptr () -> IO ()
+
+ffienumintPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> Ptr () -> IO ()) -> GLenum -> GLint -> Ptr () -> m ()
+ffienumintPtrVIOV fp v0 v1 v2 = liftIO (dynenumintPtrVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintsizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr () -> m ()
+ffiuintintsizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumintPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr () -> IO ()
+
+ffiuintenumintPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr () -> m ()
+ffiuintenumintPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintenumintPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintintintintsizeisizeisizeisizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintintintintsizeisizeisizeisizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> m ()
+ffiuintintintintintsizeisizeisizeisizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynuintintintintintsizeisizeisizeisizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> IO GLuint) -> GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> IO GLuint
+
+ffiuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> IO GLuint) -> GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> m GLuint
+ffiuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintsizeiPtrenumPtruintPtruintPtrsizeiPtrcharIOuint :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLuint -> Ptr GLuint -> Ptr GLsizei -> Ptr GLchar -> IO GLuint) -> GLuint -> GLsizei -> Ptr GLenum -> Ptr GLuint -> Ptr GLuint -> Ptr GLsizei -> Ptr GLchar -> IO GLuint
+
+ffiuintsizeiPtrenumPtruintPtruintPtrsizeiPtrcharIOuint :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLuint -> Ptr GLuint -> Ptr GLsizei -> Ptr GLchar -> IO GLuint) -> GLuint -> GLsizei -> Ptr GLenum -> Ptr GLuint -> Ptr GLuint -> Ptr GLsizei -> Ptr GLchar -> m GLuint
+ffiuintsizeiPtrenumPtruintPtruintPtrsizeiPtrcharIOuint fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintsizeiPtrenumPtruintPtruintPtrsizeiPtrcharIOuint fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumuintPtrdoubleIOV :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ()) -> GLenum -> GLuint -> Ptr GLdouble -> IO ()
+
+ffienumuintPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ()) -> GLenum -> GLuint -> Ptr GLdouble -> m ()
+ffienumuintPtrdoubleIOV fp v0 v1 v2 = liftIO (dynenumuintPtrdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintsizeiPtrsizeiPtrcharIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()
+
+ffiuintsizeiPtrsizeiPtrcharIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+ffiuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynPtrintsizeiPtruintIOV :: FunPtr (Ptr GLint -> GLsizei -> Ptr GLuint -> IO ()) -> Ptr GLint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffiPtrintsizeiPtruintIOV :: MonadIO m => FunPtr (Ptr GLint -> GLsizei -> Ptr GLuint -> IO ()) -> Ptr GLint -> GLsizei -> Ptr GLuint -> m ()
+ffiPtrintsizeiPtruintIOV fp v0 v1 v2 = liftIO (dynPtrintsizeiPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynIOenum :: FunPtr (IO GLenum) -> IO GLenum
+
+ffiIOenum :: MonadIO m => FunPtr (IO GLenum) -> m GLenum
+ffiIOenum fp  = liftIO (dynIOenum fp )
+
+foreign import ccall "dynamic" dynuintenumPtrintIOV :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> Ptr GLint -> IO ()
+
+ffiuintenumPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> Ptr GLint -> m ()
+ffiuintenumPtrintIOV fp v0 v1 v2 = liftIO (dynuintenumPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumbooleanenumenumPtrVIOV :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumbooleanenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumbooleanenumenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumbooleanenumenumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintbooleanintenumIOuint64 :: FunPtr (GLuint -> GLint -> GLboolean -> GLint -> GLenum -> IO GLuint64) -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> IO GLuint64
+
+ffiuintintbooleanintenumIOuint64 :: MonadIO m => FunPtr (GLuint -> GLint -> GLboolean -> GLint -> GLenum -> IO GLuint64) -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> m GLuint64
+ffiuintintbooleanintenumIOuint64 fp v0 v1 v2 v3 v4 = liftIO (dynuintintbooleanintenumIOuint64 fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynhandleARBsizeiPtrsizeiPtrcharARBIOV :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> IO ()) -> GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> IO ()
+
+ffihandleARBsizeiPtrsizeiPtrcharARBIOV :: MonadIO m => FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> IO ()) -> GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> m ()
+ffihandleARBsizeiPtrsizeiPtrcharARBIOV fp v0 v1 v2 v3 = liftIO (dynhandleARBsizeiPtrsizeiPtrcharARBIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynIOint :: FunPtr (IO GLint) -> IO GLint
+
+ffiIOint :: MonadIO m => FunPtr (IO GLint) -> m GLint
+ffiIOint fp  = liftIO (dynIOint fp )
+
+foreign import ccall "dynamic" dynenumuintPtrint64IOV :: FunPtr (GLenum -> GLuint -> Ptr GLint64 -> IO ()) -> GLenum -> GLuint -> Ptr GLint64 -> IO ()
+
+ffienumuintPtrint64IOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr GLint64 -> IO ()) -> GLenum -> GLuint -> Ptr GLint64 -> m ()
+ffienumuintPtrint64IOV fp v0 v1 v2 = liftIO (dynenumuintPtrint64IOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumPtrint64IOV :: FunPtr (GLenum -> Ptr GLint64 -> IO ()) -> GLenum -> Ptr GLint64 -> IO ()
+
+ffienumPtrint64IOV :: MonadIO m => FunPtr (GLenum -> Ptr GLint64 -> IO ()) -> GLenum -> Ptr GLint64 -> m ()
+ffienumPtrint64IOV fp v0 v1 = liftIO (dynenumPtrint64IOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintPtrintIOV :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> Ptr GLint -> IO ()
+
+ffienumuintPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> Ptr GLint -> m ()
+ffienumuintPtrintIOV fp v0 v1 v2 = liftIO (dynenumuintPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumuintPtruint64EXTIOV :: FunPtr (GLenum -> GLuint -> Ptr GLuint64EXT -> IO ()) -> GLenum -> GLuint -> Ptr GLuint64EXT -> IO ()
+
+ffienumuintPtruint64EXTIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr GLuint64EXT -> IO ()) -> GLenum -> GLuint -> Ptr GLuint64EXT -> m ()
+ffienumuintPtruint64EXTIOV fp v0 v1 v2 = liftIO (dynenumuintPtruint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumPtruint64EXTIOV :: FunPtr (GLenum -> Ptr GLuint64EXT -> IO ()) -> GLenum -> Ptr GLuint64EXT -> IO ()
+
+ffienumPtruint64EXTIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLuint64EXT -> IO ()) -> GLenum -> Ptr GLuint64EXT -> m ()
+ffienumPtruint64EXTIOV fp v0 v1 = liftIO (dynenumPtruint64EXTIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumenumsizeienumsizeiPtrintIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLenum -> GLsizei -> Ptr GLint -> IO ()
+
+ffienumenumsizeienumsizeiPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLenum -> GLsizei -> Ptr GLint -> m ()
+ffienumenumsizeienumsizeiPtrintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumsizeienumsizeiPtrintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumenumsizeiPtrint64IOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint64 -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint64 -> IO ()
+
+ffienumenumenumsizeiPtrint64IOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint64 -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint64 -> m ()
+ffienumenumenumsizeiPtrint64IOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumenumsizeiPtrint64IOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumenumsizeiPtrintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ()
+
+ffienumenumenumsizeiPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> m ()
+ffienumenumenumsizeiPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumenumsizeiPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumPtrbooleanIOV :: FunPtr (GLuint -> GLenum -> Ptr GLboolean -> IO ()) -> GLuint -> GLenum -> Ptr GLboolean -> IO ()
+
+ffiuintenumPtrbooleanIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLboolean -> IO ()) -> GLuint -> GLenum -> Ptr GLboolean -> m ()
+ffiuintenumPtrbooleanIOV fp v0 v1 v2 = liftIO (dynuintenumPtrbooleanIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtrfloatIOV :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffiuintenumPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+ffiuintenumPtrfloatIOV fp v0 v1 v2 = liftIO (dynuintenumPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumuintenumPtrfloatIOV :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumuintenumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+ffienumuintenumPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumuintenumPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintenumPtrintIOV :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ()
+
+ffienumuintenumPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
+ffienumuintenumPtrintIOV fp v0 v1 v2 v3 = liftIO (dynenumuintenumPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintenumsizeisizeibooleanPtrVIOV :: FunPtr (GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLboolean -> Ptr () -> IO ()) -> GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLboolean -> Ptr () -> IO ()
+
+ffienumuintenumsizeisizeibooleanPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLboolean -> Ptr () -> IO ()) -> GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLboolean -> Ptr () -> m ()
+ffienumuintenumsizeisizeibooleanPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumuintenumsizeisizeibooleanPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumenumPtrdoubleIOV :: FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> GLenum -> Ptr GLdouble -> IO ()
+
+ffienumenumPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> GLenum -> Ptr GLdouble -> m ()
+ffienumenumPtrdoubleIOV fp v0 v1 v2 = liftIO (dynenumenumPtrdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumenumPtrdoubleIOV :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLdouble -> IO ()
+
+ffienumenumenumPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLdouble -> m ()
+ffienumenumenumPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumintenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumintenumPtrfloatIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumenumintenumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> m ()
+ffienumenumintenumPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumintenumPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumintenumPtrintIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()
+
+ffienumenumintenumPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
+ffienumenumintenumPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumintenumPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumenumPtruintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLuint -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLuint -> IO ()
+
+ffienumenumenumPtruintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLuint -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr GLuint -> m ()
+ffienumenumenumPtruintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumPtrint64IOV :: FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ()) -> GLuint -> GLenum -> Ptr GLint64 -> IO ()
+
+ffiuintenumPtrint64IOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ()) -> GLuint -> GLenum -> Ptr GLint64 -> m ()
+ffiuintenumPtrint64IOV fp v0 v1 v2 = liftIO (dynuintenumPtrint64IOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtruint64EXTIOV :: FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ()) -> GLuint -> GLenum -> Ptr GLuint64EXT -> IO ()
+
+ffiuintenumPtruint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLuint64EXT -> IO ()) -> GLuint -> GLenum -> Ptr GLuint64EXT -> m ()
+ffiuintenumPtruint64EXTIOV fp v0 v1 v2 = liftIO (dynuintenumPtruint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtrVIOV :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> Ptr () -> m ()
+ffiuintenumPtrVIOV fp v0 v1 v2 = liftIO (dynuintenumPtrVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintptrsizeiPtrVIOV :: FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintptrsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizei -> Ptr () -> m ()
+ffiuintintptrsizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeiPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintptrsizeiptrPtrVIOV :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()
+
+ffiuintintptrsizeiptrPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
+ffiuintintptrsizeiptrPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeiptrPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumenumPtrintIOV :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ()
+
+ffiuintenumenumPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
+ffiuintenumenumPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumenumPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumuintPtrintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLint -> IO ()
+
+ffiuintenumuintPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLint -> m ()
+ffiuintenumuintPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumuintPtruintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLuint -> IO ()
+
+ffiuintenumuintPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLuint -> m ()
+ffiuintenumuintPtruintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumuintPtrdoubleIOV :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLdouble -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLdouble -> IO ()
+
+ffiuintenumuintPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLdouble -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLdouble -> m ()
+ffiuintenumuintPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumuintPtrfloatIOV :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLfloat -> IO ()
+
+ffiuintenumuintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLfloat -> m ()
+ffiuintenumuintPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumenumPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintenumenumPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintPtrcharsizeiPtrintPtrcharIOV :: FunPtr (GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> IO ()) -> GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> IO ()
+
+ffiintPtrcharsizeiPtrintPtrcharIOV :: MonadIO m => FunPtr (GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> IO ()) -> GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> m ()
+ffiintPtrcharsizeiPtrintPtrcharIOV fp v0 v1 v2 v3 v4 = liftIO (dynintPtrcharsizeiPtrintPtrcharIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintPtrcharenumPtrintIOV :: FunPtr (GLint -> Ptr GLchar -> GLenum -> Ptr GLint -> IO ()) -> GLint -> Ptr GLchar -> GLenum -> Ptr GLint -> IO ()
+
+ffiintPtrcharenumPtrintIOV :: MonadIO m => FunPtr (GLint -> Ptr GLchar -> GLenum -> Ptr GLint -> IO ()) -> GLint -> Ptr GLchar -> GLenum -> Ptr GLint -> m ()
+ffiintPtrcharenumPtrintIOV fp v0 v1 v2 v3 = liftIO (dynintPtrcharenumPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtrsizeiPtrcharIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()
+
+ffienumuintsizeiPtrsizeiPtrcharIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+ffienumuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumuintsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynhandleARBenumPtrfloatIOV :: FunPtr (GLhandleARB -> GLenum -> Ptr GLfloat -> IO ()) -> GLhandleARB -> GLenum -> Ptr GLfloat -> IO ()
+
+ffihandleARBenumPtrfloatIOV :: MonadIO m => FunPtr (GLhandleARB -> GLenum -> Ptr GLfloat -> IO ()) -> GLhandleARB -> GLenum -> Ptr GLfloat -> m ()
+ffihandleARBenumPtrfloatIOV fp v0 v1 v2 = liftIO (dynhandleARBenumPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynhandleARBenumPtrintIOV :: FunPtr (GLhandleARB -> GLenum -> Ptr GLint -> IO ()) -> GLhandleARB -> GLenum -> Ptr GLint -> IO ()
+
+ffihandleARBenumPtrintIOV :: MonadIO m => FunPtr (GLhandleARB -> GLenum -> Ptr GLint -> IO ()) -> GLhandleARB -> GLenum -> Ptr GLint -> m ()
+ffihandleARBenumPtrintIOV fp v0 v1 v2 = liftIO (dynhandleARBenumPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrVsizeiPtrsizeiPtrcharIOV :: FunPtr (Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()
+
+ffiPtrVsizeiPtrsizeiPtrcharIOV :: MonadIO m => FunPtr (Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()) -> Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
+ffiPtrVsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3 = liftIO (dynPtrVsizeiPtrsizeiPtrcharIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumPtruintIOV :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> Ptr GLuint -> IO ()
+
+ffiuintenumPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> Ptr GLuint -> m ()
+ffiuintenumPtruintIOV fp v0 v1 v2 = liftIO (dynuintenumPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintPtrubyteIOV :: FunPtr (GLuint -> Ptr GLubyte -> IO ()) -> GLuint -> Ptr GLubyte -> IO ()
+
+ffiuintPtrubyteIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLubyte -> IO ()) -> GLuint -> Ptr GLubyte -> m ()
+ffiuintPtrubyteIOV fp v0 v1 = liftIO (dynuintPtrubyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtrfloatIOV :: FunPtr (GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> Ptr GLfloat -> IO ()
+
+ffiuintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> Ptr GLfloat -> m ()
+ffiuintPtrfloatIOV fp v0 v1 = liftIO (dynuintPtrfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintsizeisizeiIOfloat :: FunPtr (GLuint -> GLsizei -> GLsizei -> IO GLfloat) -> GLuint -> GLsizei -> GLsizei -> IO GLfloat
+
+ffiuintsizeisizeiIOfloat :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLsizei -> IO GLfloat) -> GLuint -> GLsizei -> GLsizei -> m GLfloat
+ffiuintsizeisizeiIOfloat fp v0 v1 v2 = liftIO (dynuintsizeisizeiIOfloat fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynbitfielduintsizeisizeiPtrfloatIOV :: FunPtr (GLbitfield -> GLuint -> GLsizei -> GLsizei -> Ptr GLfloat -> IO ()) -> GLbitfield -> GLuint -> GLsizei -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffibitfielduintsizeisizeiPtrfloatIOV :: MonadIO m => FunPtr (GLbitfield -> GLuint -> GLsizei -> GLsizei -> Ptr GLfloat -> IO ()) -> GLbitfield -> GLuint -> GLsizei -> GLsizei -> Ptr GLfloat -> m ()
+ffibitfielduintsizeisizeiPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynbitfielduintsizeisizeiPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynbitfieldsizeienumPtrVuintsizeiPtrfloatIOV :: FunPtr (GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffibitfieldsizeienumPtrVuintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+ffibitfieldsizeienumPtrVuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynbitfieldsizeienumPtrVuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumsizeienumPtrVuintfloatfloatenumPtrfloatIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLfloat -> GLfloat -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLfloat -> GLfloat -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumsizeienumPtrVuintfloatfloatenumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLfloat -> GLfloat -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLfloat -> GLfloat -> GLenum -> Ptr GLfloat -> m ()
+ffienumsizeienumPtrVuintfloatfloatenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumsizeienumPtrVuintfloatfloatenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintuintuintPtrcharuintPtrcharPtruintPtruintPtruintPtruintPtruint64IOV :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLchar -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint64 -> IO ()) -> GLuint -> GLuint -> GLuint -> Ptr GLchar -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint64 -> IO ()
+
+ffiuintuintuintPtrcharuintPtrcharPtruintPtruintPtruintPtruintPtruint64IOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLchar -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint64 -> IO ()) -> GLuint -> GLuint -> GLuint -> Ptr GLchar -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint64 -> m ()
+ffiuintuintuintPtrcharuintPtrcharPtruintPtruintPtruintPtruintPtruint64IOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintuintuintPtrcharuintPtrcharPtruintPtruintPtruintPtruintPtruint64IOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynuintenumsizeiPtruintPtrintIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> IO ()
+
+ffiuintenumsizeiPtruintPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> m ()
+ffiuintenumsizeiPtruintPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumsizeiPtruintPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintenumPtrVIOV :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr () -> IO ()
+
+ffiuintuintenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr () -> m ()
+ffiuintuintenumPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintuintenumPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintPtrintPtrintsizeiPtruintIOV :: FunPtr (GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffiuintPtrintPtrintsizeiPtruintIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> m ()
+ffiuintPtrintPtrintsizeiPtruintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintPtrintPtrintsizeiPtruintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintsizeiPtrVPtruintIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr () -> Ptr GLuint -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr () -> Ptr GLuint -> IO ()
+
+ffiuintuintsizeiPtrVPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> Ptr () -> Ptr GLuint -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr () -> Ptr GLuint -> m ()
+ffiuintuintsizeiPtrVPtruintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintsizeiPtrVPtruintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynPtrcharPtruintIOV :: FunPtr (Ptr GLchar -> Ptr GLuint -> IO ()) -> Ptr GLchar -> Ptr GLuint -> IO ()
+
+ffiPtrcharPtruintIOV :: MonadIO m => FunPtr (Ptr GLchar -> Ptr GLuint -> IO ()) -> Ptr GLchar -> Ptr GLuint -> m ()
+ffiPtrcharPtruintIOV fp v0 v1 = liftIO (dynPtrcharPtruintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintuintPtrcharPtruintPtruintPtruintPtruintIOV :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> IO ()) -> GLuint -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> IO ()
+
+ffiuintuintPtrcharPtruintPtruintPtruintPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> IO ()) -> GLuint -> GLuint -> Ptr GLchar -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> Ptr GLuint -> m ()
+ffiuintuintPtrcharPtruintPtruintPtruintPtruintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintPtrcharPtruintPtruintPtruintPtruintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumPtrushortIOV :: FunPtr (GLenum -> Ptr GLushort -> IO ()) -> GLenum -> Ptr GLushort -> IO ()
+
+ffienumPtrushortIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLushort -> IO ()) -> GLenum -> Ptr GLushort -> m ()
+ffienumPtrushortIOV fp v0 v1 = liftIO (dynenumPtrushortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumintPtrfixedIOV :: FunPtr (GLenum -> GLint -> Ptr GLfixed -> IO ()) -> GLenum -> GLint -> Ptr GLfixed -> IO ()
+
+ffienumintPtrfixedIOV :: MonadIO m => FunPtr (GLenum -> GLint -> Ptr GLfixed -> IO ()) -> GLenum -> GLint -> Ptr GLfixed -> m ()
+ffienumintPtrfixedIOV fp v0 v1 v2 = liftIO (dynenumintPtrfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumuintPtrVIOV :: FunPtr (GLenum -> GLuint -> Ptr () -> IO ()) -> GLenum -> GLuint -> Ptr () -> IO ()
+
+ffienumuintPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> Ptr () -> IO ()) -> GLenum -> GLuint -> Ptr () -> m ()
+ffienumuintPtrVIOV fp v0 v1 v2 = liftIO (dynenumuintPtrVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintsizeiPtrsizeiPtrenumPtrVIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> IO ()
+
+ffiuintsizeiPtrsizeiPtrenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> m ()
+ffiuintsizeiPtrsizeiPtrenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintsizeiPtrsizeiPtrenumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintsizeiPtrubytePtrdoubleIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ()
+
+ffiuintsizeiPtrubytePtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
+ffiuintsizeiPtrubytePtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrubytePtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrubytePtrfloatIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ()
+
+ffiuintsizeiPtrubytePtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
+ffiuintsizeiPtrubytePtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrubytePtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintenumPtrdoubleIOV :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> GLuint -> GLenum -> Ptr GLdouble -> IO ()
+
+ffienumuintenumPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLdouble -> IO ()) -> GLenum -> GLuint -> GLenum -> Ptr GLdouble -> m ()
+ffienumuintenumPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynenumuintenumPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumPtrcharIOuint :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLuint) -> GLuint -> GLenum -> Ptr GLchar -> IO GLuint
+
+ffiuintenumPtrcharIOuint :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLuint) -> GLuint -> GLenum -> Ptr GLchar -> m GLuint
+ffiuintenumPtrcharIOuint fp v0 v1 v2 = liftIO (dynuintenumPtrcharIOuint fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtrcharIOint :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLint) -> GLuint -> GLenum -> Ptr GLchar -> IO GLint
+
+ffiuintenumPtrcharIOint :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLint) -> GLuint -> GLenum -> Ptr GLchar -> m GLint
+ffiuintenumPtrcharIOint fp v0 v1 v2 = liftIO (dynuintenumPtrcharIOint fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumuintsizeiPtrenumsizeiPtrsizeiPtrfloatIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLfloat -> IO ()
+
+ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLfloat -> m ()
+ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumuintsizeiPtrenumsizeiPtrsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumuintsizeiPtrenumsizeiPtrsizeiPtrintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()
+
+ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
+ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumuintsizeiPtrenumsizeiPtrsizeiPtrintIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumPtrubyteIOV :: FunPtr (GLuint -> GLenum -> Ptr GLubyte -> IO ()) -> GLuint -> GLenum -> Ptr GLubyte -> IO ()
+
+ffiuintenumPtrubyteIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLubyte -> IO ()) -> GLuint -> GLenum -> Ptr GLubyte -> m ()
+ffiuintenumPtrubyteIOV fp v0 v1 v2 = liftIO (dynuintenumPtrubyteIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintenumintptrIOV :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLenum -> GLintptr -> IO ()
+
+ffiuintuintenumintptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLenum -> GLintptr -> m ()
+ffiuintuintenumintptrIOV fp v0 v1 v2 v3 = liftIO (dynuintuintenumintptrIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumPtruint64IOV :: FunPtr (GLuint -> GLenum -> Ptr GLuint64 -> IO ()) -> GLuint -> GLenum -> Ptr GLuint64 -> IO ()
+
+ffiuintenumPtruint64IOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLuint64 -> IO ()) -> GLuint -> GLenum -> Ptr GLuint64 -> m ()
+ffiuintenumPtruint64IOV fp v0 v1 v2 = liftIO (dynuintenumPtruint64IOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumenumPtrVPtrVPtrVIOV :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> IO ()
+
+ffienumenumenumPtrVPtrVPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> Ptr () -> Ptr () -> Ptr () -> m ()
+ffienumenumenumPtrVPtrVPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumenumPtrVPtrVPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumPtrintPtrintIOV :: FunPtr (GLenum -> GLenum -> Ptr GLint -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> Ptr GLint -> Ptr GLint -> IO ()
+
+ffienumenumPtrintPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLint -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> Ptr GLint -> Ptr GLint -> m ()
+ffienumenumPtrintPtrintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumPtrintPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumIOPtrubyte :: FunPtr (GLenum -> IO (Ptr GLubyte)) -> GLenum -> IO (Ptr GLubyte)
+
+ffienumIOPtrubyte :: MonadIO m => FunPtr (GLenum -> IO (Ptr GLubyte)) -> GLenum -> m (Ptr GLubyte)
+ffienumIOPtrubyte fp v0 = liftIO (dynenumIOPtrubyte fp v0)
+
+foreign import ccall "dynamic" dynenumuintIOPtrubyte :: FunPtr (GLenum -> GLuint -> IO (Ptr GLubyte)) -> GLenum -> GLuint -> IO (Ptr GLubyte)
+
+ffienumuintIOPtrubyte :: MonadIO m => FunPtr (GLenum -> GLuint -> IO (Ptr GLubyte)) -> GLenum -> GLuint -> m (Ptr GLubyte)
+ffienumuintIOPtrubyte fp v0 v1 = liftIO (dynenumuintIOPtrubyte fp v0 v1)
+
+foreign import ccall "dynamic" dynsyncenumsizeiPtrsizeiPtrintIOV :: FunPtr (GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()) -> GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()
+
+ffisyncenumsizeiPtrsizeiPtrintIOV :: MonadIO m => FunPtr (GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()) -> GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
+ffisyncenumsizeiPtrsizeiPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynsyncenumsizeiPtrsizeiPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintenumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintenumenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumintenumenumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintenumPtrfloatIOV :: FunPtr (GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffienumintenumPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> m ()
+ffienumintenumPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumintenumPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintenumPtrintIOV :: FunPtr (GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()
+
+ffienumintenumPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
+ffienumintenumPtrintIOV fp v0 v1 v2 v3 = liftIO (dynenumintenumPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintenumPtrfixedIOV :: FunPtr (GLenum -> GLint -> GLenum -> Ptr GLfixed -> IO ()) -> GLenum -> GLint -> GLenum -> Ptr GLfixed -> IO ()
+
+ffienumintenumPtrfixedIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> Ptr GLfixed -> IO ()) -> GLenum -> GLint -> GLenum -> Ptr GLfixed -> m ()
+ffienumintenumPtrfixedIOV fp v0 v1 v2 v3 = liftIO (dynenumintenumPtrfixedIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumPtruintIOV :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ()) -> GLenum -> GLenum -> Ptr GLuint -> IO ()
+
+ffienumenumPtruintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ()) -> GLenum -> GLenum -> Ptr GLuint -> m ()
+ffienumenumPtruintIOV fp v0 v1 v2 = liftIO (dynenumenumPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintIOuint64 :: FunPtr (GLuint -> IO GLuint64) -> GLuint -> IO GLuint64
+
+ffiuintIOuint64 :: MonadIO m => FunPtr (GLuint -> IO GLuint64) -> GLuint -> m GLuint64
+ffiuintIOuint64 fp v0 = liftIO (dynuintIOuint64 fp v0)
+
+foreign import ccall "dynamic" dynuintintenumenumsizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintenumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintintenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumintenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintenumintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintenumPtrfloatIOV :: FunPtr (GLuint -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffiuintintenumPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLenum -> Ptr GLfloat -> m ()
+ffiuintintenumPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintintenumPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumintenumPtrfloatIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffiuintenumintenumPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLint -> GLenum -> Ptr GLfloat -> m ()
+ffiuintenumintenumPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumintenumPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintenumPtrintIOV :: FunPtr (GLuint -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLint -> GLenum -> Ptr GLint -> IO ()
+
+ffiuintintenumPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> Ptr GLint -> IO ()) -> GLuint -> GLint -> GLenum -> Ptr GLint -> m ()
+ffiuintintenumPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintintenumPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumenumPtruintIOV :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr GLuint -> IO ()
+
+ffiuintenumenumPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr GLuint -> m ()
+ffiuintenumenumPtruintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumenumPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumenumPtrfloatIOV :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()
+
+ffiuintenumenumPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+ffiuintenumenumPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintenumenumPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintIOuint64 :: FunPtr (GLuint -> GLuint -> IO GLuint64) -> GLuint -> GLuint -> IO GLuint64
+
+ffiuintuintIOuint64 :: MonadIO m => FunPtr (GLuint -> GLuint -> IO GLuint64) -> GLuint -> GLuint -> m GLuint64
+ffiuintuintIOuint64 fp v0 v1 = liftIO (dynuintuintIOuint64 fp v0 v1)
+
+foreign import ccall "dynamic" dynuintintintintintsizeisizeisizeienumenumsizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintintintintsizeisizeisizeienumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintintintintintsizeisizeisizeienumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynuintintintintintsizeisizeisizeienumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynuintuintPtrintIOV :: FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ()) -> GLuint -> GLuint -> Ptr GLint -> IO ()
+
+ffiuintuintPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ()) -> GLuint -> GLuint -> Ptr GLint -> m ()
+ffiuintuintPtrintIOV fp v0 v1 v2 = liftIO (dynuintuintPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumuintPtrint64IOV :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint64 -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLint64 -> IO ()
+
+ffiuintenumuintPtrint64IOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint64 -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr GLint64 -> m ()
+ffiuintenumuintPtrint64IOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintPtrint64IOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintPtrcharIOuint :: FunPtr (GLuint -> Ptr GLchar -> IO GLuint) -> GLuint -> Ptr GLchar -> IO GLuint
+
+ffiuintPtrcharIOuint :: MonadIO m => FunPtr (GLuint -> Ptr GLchar -> IO GLuint) -> GLuint -> Ptr GLchar -> m GLuint
+ffiuintPtrcharIOuint fp v0 v1 = liftIO (dynuintPtrcharIOuint fp v0 v1)
+
+foreign import ccall "dynamic" dynuintintIOint :: FunPtr (GLuint -> GLint -> IO GLint) -> GLuint -> GLint -> IO GLint
+
+ffiuintintIOint :: MonadIO m => FunPtr (GLuint -> GLint -> IO GLint) -> GLuint -> GLint -> m GLint
+ffiuintintIOint fp v0 v1 = liftIO (dynuintintIOint fp v0 v1)
+
+foreign import ccall "dynamic" dynuintsizeiPtrcharPtruintIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLchar -> Ptr GLuint -> IO ()) -> GLuint -> GLsizei -> Ptr GLchar -> Ptr GLuint -> IO ()
+
+ffiuintsizeiPtrcharPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLchar -> Ptr GLuint -> IO ()) -> GLuint -> GLsizei -> Ptr GLchar -> Ptr GLuint -> m ()
+ffiuintsizeiPtrcharPtruintIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrcharPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintIOintptr :: FunPtr (GLuint -> GLint -> IO GLintptr) -> GLuint -> GLint -> IO GLintptr
+
+ffiuintintIOintptr :: MonadIO m => FunPtr (GLuint -> GLint -> IO GLintptr) -> GLuint -> GLint -> m GLintptr
+ffiuintintIOintptr fp v0 v1 = liftIO (dynuintintIOintptr fp v0 v1)
+
+foreign import ccall "dynamic" dynuintintPtrdoubleIOV :: FunPtr (GLuint -> GLint -> Ptr GLdouble -> IO ()) -> GLuint -> GLint -> Ptr GLdouble -> IO ()
+
+ffiuintintPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLdouble -> IO ()) -> GLuint -> GLint -> Ptr GLdouble -> m ()
+ffiuintintPtrdoubleIOV fp v0 v1 v2 = liftIO (dynuintintPtrdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintPtrfloatIOV :: FunPtr (GLuint -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> Ptr GLfloat -> IO ()
+
+ffiuintintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> Ptr GLfloat -> m ()
+ffiuintintPtrfloatIOV fp v0 v1 v2 = liftIO (dynuintintPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynhandleARBintPtrfloatIOV :: FunPtr (GLhandleARB -> GLint -> Ptr GLfloat -> IO ()) -> GLhandleARB -> GLint -> Ptr GLfloat -> IO ()
+
+ffihandleARBintPtrfloatIOV :: MonadIO m => FunPtr (GLhandleARB -> GLint -> Ptr GLfloat -> IO ()) -> GLhandleARB -> GLint -> Ptr GLfloat -> m ()
+ffihandleARBintPtrfloatIOV fp v0 v1 v2 = liftIO (dynhandleARBintPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintPtrint64EXTIOV :: FunPtr (GLuint -> GLint -> Ptr GLint64EXT -> IO ()) -> GLuint -> GLint -> Ptr GLint64EXT -> IO ()
+
+ffiuintintPtrint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLint64EXT -> IO ()) -> GLuint -> GLint -> Ptr GLint64EXT -> m ()
+ffiuintintPtrint64EXTIOV fp v0 v1 v2 = liftIO (dynuintintPtrint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintPtrintIOV :: FunPtr (GLuint -> GLint -> Ptr GLint -> IO ()) -> GLuint -> GLint -> Ptr GLint -> IO ()
+
+ffiuintintPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLint -> IO ()) -> GLuint -> GLint -> Ptr GLint -> m ()
+ffiuintintPtrintIOV fp v0 v1 v2 = liftIO (dynuintintPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynhandleARBintPtrintIOV :: FunPtr (GLhandleARB -> GLint -> Ptr GLint -> IO ()) -> GLhandleARB -> GLint -> Ptr GLint -> IO ()
+
+ffihandleARBintPtrintIOV :: MonadIO m => FunPtr (GLhandleARB -> GLint -> Ptr GLint -> IO ()) -> GLhandleARB -> GLint -> Ptr GLint -> m ()
+ffihandleARBintPtrintIOV fp v0 v1 v2 = liftIO (dynhandleARBintPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintPtruint64EXTIOV :: FunPtr (GLuint -> GLint -> Ptr GLuint64EXT -> IO ()) -> GLuint -> GLint -> Ptr GLuint64EXT -> IO ()
+
+ffiuintintPtruint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLuint64EXT -> IO ()) -> GLuint -> GLint -> Ptr GLuint64EXT -> m ()
+ffiuintintPtruint64EXTIOV fp v0 v1 v2 = liftIO (dynuintintPtruint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintPtruintIOV :: FunPtr (GLuint -> GLint -> Ptr GLuint -> IO ()) -> GLuint -> GLint -> Ptr GLuint -> IO ()
+
+ffiuintintPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLuint -> IO ()) -> GLuint -> GLint -> Ptr GLuint -> m ()
+ffiuintintPtruintIOV fp v0 v1 v2 = liftIO (dynuintintPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintenumPtrint64IOV :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint64 -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLint64 -> IO ()
+
+ffiuintuintenumPtrint64IOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint64 -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLint64 -> m ()
+ffiuintuintenumPtrint64IOV fp v0 v1 v2 v3 = liftIO (dynuintuintenumPtrint64IOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumPtrdoubleIOV :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ()) -> GLuint -> GLenum -> Ptr GLdouble -> IO ()
+
+ffiuintenumPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ()) -> GLuint -> GLenum -> Ptr GLdouble -> m ()
+ffiuintenumPtrdoubleIOV fp v0 v1 v2 = liftIO (dynuintenumPtrdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtrint64EXTIOV :: FunPtr (GLuint -> GLenum -> Ptr GLint64EXT -> IO ()) -> GLuint -> GLenum -> Ptr GLint64EXT -> IO ()
+
+ffiuintenumPtrint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr GLint64EXT -> IO ()) -> GLuint -> GLenum -> Ptr GLint64EXT -> m ()
+ffiuintenumPtrint64EXTIOV fp v0 v1 v2 = liftIO (dynuintenumPtrint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintenumPtrdoubleIOV :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLdouble -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLdouble -> IO ()
+
+ffiuintuintenumPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLdouble -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLdouble -> m ()
+ffiuintuintenumPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynuintuintenumPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintenumPtrfloatIOV :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffiuintuintenumPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+ffiuintuintenumPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintuintenumPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumenumsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLsizei -> Ptr () -> IO ()
+
+ffienumintsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLsizei -> Ptr () -> m ()
+ffienumintsizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumintsizeiPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumbooleanenumenumsizeiPtrVIOV :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumbooleanenumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumbooleanenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumbooleanenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumsizeiPtrdoubleIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> IO ()
+
+ffienumenumsizeiPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> m ()
+ffienumenumsizeiPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynenumenumsizeiPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumsizeiPtrfloatIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffienumenumsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> m ()
+ffienumenumsizeiPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumenumsizeiPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumsizeiPtrintIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ()
+
+ffienumenumsizeiPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> m ()
+ffienumenumsizeiPtrintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumsizeiPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumsizeiPtrushortIOV :: FunPtr (GLenum -> GLsizei -> Ptr GLushort -> IO ()) -> GLenum -> GLsizei -> Ptr GLushort -> IO ()
+
+ffienumsizeiPtrushortIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr GLushort -> IO ()) -> GLenum -> GLsizei -> Ptr GLushort -> m ()
+ffienumsizeiPtrushortIOV fp v0 v1 v2 = liftIO (dynenumsizeiPtrushortIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsizeiPtrubyteIOV :: FunPtr (GLsizei -> Ptr GLubyte -> IO ()) -> GLsizei -> Ptr GLubyte -> IO ()
+
+ffisizeiPtrubyteIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLubyte -> IO ()) -> GLsizei -> Ptr GLubyte -> m ()
+ffisizeiPtrubyteIOV fp v0 v1 = liftIO (dynsizeiPtrubyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumenumenumsizeiPtrVsizeiPtrVPtrVIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> IO ()
+
+ffienumenumenumsizeiPtrVsizeiPtrVPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> m ()
+ffienumenumenumsizeiPtrVsizeiPtrVPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumenumenumsizeiPtrVsizeiPtrVPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumintenumenumsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumintenumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumintenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumintenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintsizeiPtrdoubleIOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ()
+
+ffiuintintsizeiPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+ffiuintintsizeiPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintsizeiPtrfloatIOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffiuintintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
+ffiuintintsizeiPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintsizeiPtrintIOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ()
+
+ffiuintintsizeiPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
+ffiuintintsizeiPtrintIOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintsizeiPtruintIOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffiuintintsizeiPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
+ffiuintintsizeiPtruintIOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynbyteIOV :: FunPtr (GLbyte -> IO ()) -> GLbyte -> IO ()
+
+ffibyteIOV :: MonadIO m => FunPtr (GLbyte -> IO ()) -> GLbyte -> m ()
+ffibyteIOV fp v0 = liftIO (dynbyteIOV fp v0)
+
+foreign import ccall "dynamic" dynshortIOV :: FunPtr (GLshort -> IO ()) -> GLshort -> IO ()
+
+ffishortIOV :: MonadIO m => FunPtr (GLshort -> IO ()) -> GLshort -> m ()
+ffishortIOV fp v0 = liftIO (dynshortIOV fp v0)
+
+foreign import ccall "dynamic" dynubyteIOV :: FunPtr (GLubyte -> IO ()) -> GLubyte -> IO ()
+
+ffiubyteIOV :: MonadIO m => FunPtr (GLubyte -> IO ()) -> GLubyte -> m ()
+ffiubyteIOV fp v0 = liftIO (dynubyteIOV fp v0)
+
+foreign import ccall "dynamic" dynushortIOV :: FunPtr (GLushort -> IO ()) -> GLushort -> IO ()
+
+ffiushortIOV :: MonadIO m => FunPtr (GLushort -> IO ()) -> GLushort -> m ()
+ffiushortIOV fp v0 = liftIO (dynushortIOV fp v0)
+
+foreign import ccall "dynamic" dynenumsizeienumbooleanIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLboolean -> IO ()
+
+ffienumsizeienumbooleanIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLboolean -> m ()
+ffienumsizeienumbooleanIOV fp v0 v1 v2 v3 = liftIO (dynenumsizeienumbooleanIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintptrbitfieldIOsync :: FunPtr (GLenum -> GLintptr -> GLbitfield -> IO GLsync) -> GLenum -> GLintptr -> GLbitfield -> IO GLsync
+
+ffienumintptrbitfieldIOsync :: MonadIO m => FunPtr (GLenum -> GLintptr -> GLbitfield -> IO GLsync) -> GLenum -> GLintptr -> GLbitfield -> m GLsync
+ffienumintptrbitfieldIOsync fp v0 v1 v2 = liftIO (dynenumintptrbitfieldIOsync fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumsizeisizeiPtrVIOV :: FunPtr (GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ()
+
+ffienumsizeisizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
+ffienumsizeisizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumsizeisizeiPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynsizeiPtrcharIOV :: FunPtr (GLsizei -> Ptr GLchar -> IO ()) -> GLsizei -> Ptr GLchar -> IO ()
+
+ffisizeiPtrcharIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLchar -> IO ()) -> GLsizei -> Ptr GLchar -> m ()
+ffisizeiPtrcharIOV fp v0 v1 = liftIO (dynsizeiPtrcharIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynsizeiPtrintIOV :: FunPtr (GLsizei -> Ptr GLint -> IO ()) -> GLsizei -> Ptr GLint -> IO ()
+
+ffisizeiPtrintIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLint -> IO ()) -> GLsizei -> Ptr GLint -> m ()
+ffisizeiPtrintIOV fp v0 v1 = liftIO (dynsizeiPtrintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintuintuintfloatIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLfloat -> IO ()) -> GLuint -> GLuint -> GLuint -> GLfloat -> IO ()
+
+ffiuintuintuintfloatIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLfloat -> IO ()) -> GLuint -> GLuint -> GLuint -> GLfloat -> m ()
+ffiuintuintuintfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintuintuintfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrenumintintsizeisizeiIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffiuintsizeiPtrenumintintsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffiuintsizeiPtrenumintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintsizeiPtrenumintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumsizeiPtrenumintintsizeisizeiIOV :: FunPtr (GLenum -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffienumsizeiPtrenumintintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffienumsizeiPtrenumintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumsizeiPtrenumintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintintIOV :: FunPtr (GLuint -> GLint -> IO ()) -> GLuint -> GLint -> IO ()
+
+ffiuintintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> IO ()) -> GLuint -> GLint -> m ()
+ffiuintintIOV fp v0 v1 = liftIO (dynuintintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintintintintintsizeisizeisizeiIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ()
+
+ffiuintintintintintsizeisizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> m ()
+ffiuintintintintintsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintintintintintsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumIOboolean :: FunPtr (GLenum -> IO GLboolean) -> GLenum -> IO GLboolean
+
+ffienumIOboolean :: MonadIO m => FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
+ffienumIOboolean fp v0 = liftIO (dynenumIOboolean fp v0)
+
+foreign import ccall "dynamic" dynenumuintIOboolean :: FunPtr (GLenum -> GLuint -> IO GLboolean) -> GLenum -> GLuint -> IO GLboolean
+
+ffienumuintIOboolean :: MonadIO m => FunPtr (GLenum -> GLuint -> IO GLboolean) -> GLenum -> GLuint -> m GLboolean
+ffienumuintIOboolean fp v0 v1 = liftIO (dynenumuintIOboolean fp v0 v1)
+
+foreign import ccall "dynamic" dynuint64IOboolean :: FunPtr (GLuint64 -> IO GLboolean) -> GLuint64 -> IO GLboolean
+
+ffiuint64IOboolean :: MonadIO m => FunPtr (GLuint64 -> IO GLboolean) -> GLuint64 -> m GLboolean
+ffiuint64IOboolean fp v0 = liftIO (dynuint64IOboolean fp v0)
+
+foreign import ccall "dynamic" dynintPtrcharIOboolean :: FunPtr (GLint -> Ptr GLchar -> IO GLboolean) -> GLint -> Ptr GLchar -> IO GLboolean
+
+ffiintPtrcharIOboolean :: MonadIO m => FunPtr (GLint -> Ptr GLchar -> IO GLboolean) -> GLint -> Ptr GLchar -> m GLboolean
+ffiintPtrcharIOboolean fp v0 v1 = liftIO (dynintPtrcharIOboolean fp v0 v1)
+
+foreign import ccall "dynamic" dynuintuintfloatfloatIOboolean :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> IO GLboolean) -> GLuint -> GLuint -> GLfloat -> GLfloat -> IO GLboolean
+
+ffiuintuintfloatfloatIOboolean :: MonadIO m => FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> IO GLboolean) -> GLuint -> GLuint -> GLfloat -> GLfloat -> m GLboolean
+ffiuintuintfloatfloatIOboolean fp v0 v1 v2 v3 = liftIO (dynuintuintfloatfloatIOboolean fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintfloatfloatIOboolean :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO GLboolean) -> GLuint -> GLfloat -> GLfloat -> IO GLboolean
+
+ffiuintfloatfloatIOboolean :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> IO GLboolean) -> GLuint -> GLfloat -> GLfloat -> m GLboolean
+ffiuintfloatfloatIOboolean fp v0 v1 v2 = liftIO (dynuintfloatfloatIOboolean fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsyncIOboolean :: FunPtr (GLsync -> IO GLboolean) -> GLsync -> IO GLboolean
+
+ffisyncIOboolean :: MonadIO m => FunPtr (GLsync -> IO GLboolean) -> GLsync -> m GLboolean
+ffisyncIOboolean fp v0 = liftIO (dynsyncIOboolean fp v0)
+
+foreign import ccall "dynamic" dynuintenumIOboolean :: FunPtr (GLuint -> GLenum -> IO GLboolean) -> GLuint -> GLenum -> IO GLboolean
+
+ffiuintenumIOboolean :: MonadIO m => FunPtr (GLuint -> GLenum -> IO GLboolean) -> GLuint -> GLenum -> m GLboolean
+ffiuintenumIOboolean fp v0 v1 = liftIO (dynuintenumIOboolean fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtrcharIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ()
+
+ffienumuintsizeiPtrcharIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
+ffienumuintsizeiPtrcharIOV fp v0 v1 v2 v3 = liftIO (dynenumuintsizeiPtrcharIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintushortIOV :: FunPtr (GLint -> GLushort -> IO ()) -> GLint -> GLushort -> IO ()
+
+ffiintushortIOV :: MonadIO m => FunPtr (GLint -> GLushort -> IO ()) -> GLint -> GLushort -> m ()
+ffiintushortIOV fp v0 v1 = liftIO (dynintushortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintenumfloatIOV :: FunPtr (GLuint -> GLenum -> GLfloat -> IO ()) -> GLuint -> GLenum -> GLfloat -> IO ()
+
+ffiuintenumfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLfloat -> IO ()) -> GLuint -> GLenum -> GLfloat -> m ()
+ffiuintenumfloatIOV fp v0 v1 v2 = liftIO (dynuintenumfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumintIOV :: FunPtr (GLuint -> GLenum -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> IO ()
+
+ffiuintenumintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> m ()
+ffiuintenumintIOV fp v0 v1 v2 = liftIO (dynuintenumintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtrubyteIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLubyte -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLubyte -> IO ()
+
+ffienumuintsizeiPtrubyteIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLubyte -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLubyte -> m ()
+ffienumuintsizeiPtrubyteIOV fp v0 v1 v2 v3 = liftIO (dynenumuintsizeiPtrubyteIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintsizeiIOV :: FunPtr (GLint -> GLsizei -> IO ()) -> GLint -> GLsizei -> IO ()
+
+ffiintsizeiIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> IO ()) -> GLint -> GLsizei -> m ()
+ffiintsizeiIOV fp v0 v1 = liftIO (dynintsizeiIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuint64IOV :: FunPtr (GLuint64 -> IO ()) -> GLuint64 -> IO ()
+
+ffiuint64IOV :: MonadIO m => FunPtr (GLuint64 -> IO ()) -> GLuint64 -> m ()
+ffiuint64IOV fp v0 = liftIO (dynuint64IOV fp v0)
+
+foreign import ccall "dynamic" dynuint64enumIOV :: FunPtr (GLuint64 -> GLenum -> IO ()) -> GLuint64 -> GLenum -> IO ()
+
+ffiuint64enumIOV :: MonadIO m => FunPtr (GLuint64 -> GLenum -> IO ()) -> GLuint64 -> GLenum -> m ()
+ffiuint64enumIOV fp v0 v1 = liftIO (dynuint64enumIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumdoubledoubleintintPtrdoubleIOV :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()
+
+ffienumdoubledoubleintintPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+ffienumdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumfloatfloatintintPtrfloatIOV :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()
+
+ffienumfloatfloatintintPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+ffienumfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumfixedfixedintintfixedIOV :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ()
+
+ffienumfixedfixedintintfixedIOV :: MonadIO m => FunPtr (GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> m ()
+ffienumfixedfixedintintfixedIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumfixedfixedintintfixedIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumdoubledoubleintintdoubledoubleintintPtrdoubleIOV :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()
+
+ffienumdoubledoubleintintdoubledoubleintintPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+ffienumdoubledoubleintintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumdoubledoubleintintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumfloatfloatintintfloatfloatintintPtrfloatIOV :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()
+
+ffienumfloatfloatintintfloatfloatintintPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+ffienumfloatfloatintintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumfloatfloatintintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumfixedfixedintintfixedfixedintintfixedIOV :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ()
+
+ffienumfixedfixedintintfixedfixedintintfixedIOV :: MonadIO m => FunPtr (GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> GLfixed -> GLint -> GLint -> GLfixed -> m ()
+ffienumfixedfixedintintfixedfixedintintfixedIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumfixedfixedintintfixedfixedintintfixedIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumenumIOPtrV :: FunPtr (GLenum -> GLenum -> IO (Ptr ())) -> GLenum -> GLenum -> IO (Ptr ())
+
+ffienumenumIOPtrV :: MonadIO m => FunPtr (GLenum -> GLenum -> IO (Ptr ())) -> GLenum -> GLenum -> m (Ptr ())
+ffienumenumIOPtrV fp v0 v1 = liftIO (dynenumenumIOPtrV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumintptrsizeiptrbitfieldIOPtrV :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())) -> GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())
+
+ffienumintptrsizeiptrbitfieldIOPtrV :: MonadIO m => FunPtr (GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())) -> GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
+ffienumintptrsizeiptrbitfieldIOPtrV fp v0 v1 v2 v3 = liftIO (dynenumintptrsizeiptrbitfieldIOPtrV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintenumsizeisizeiintintbooleanPtrVIOV :: FunPtr (GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLint -> GLboolean -> Ptr () -> IO ()) -> GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLint -> GLboolean -> Ptr () -> IO ()
+
+ffienumuintenumsizeisizeiintintbooleanPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLint -> GLboolean -> Ptr () -> IO ()) -> GLenum -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLint -> GLboolean -> Ptr () -> m ()
+ffienumuintenumsizeisizeiintintbooleanPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumuintenumsizeisizeiintintbooleanPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynintdoubledoubleIOV :: FunPtr (GLint -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> IO ()
+
+ffiintdoubledoubleIOV :: MonadIO m => FunPtr (GLint -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> m ()
+ffiintdoubledoubleIOV fp v0 v1 v2 = liftIO (dynintdoubledoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintfloatfloatIOV :: FunPtr (GLint -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> IO ()
+
+ffiintfloatfloatIOV :: MonadIO m => FunPtr (GLint -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> m ()
+ffiintfloatfloatIOV fp v0 v1 v2 = liftIO (dynintfloatfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintfixedfixedIOV :: FunPtr (GLint -> GLfixed -> GLfixed -> IO ()) -> GLint -> GLfixed -> GLfixed -> IO ()
+
+ffiintfixedfixedIOV :: MonadIO m => FunPtr (GLint -> GLfixed -> GLfixed -> IO ()) -> GLint -> GLfixed -> GLfixed -> m ()
+ffiintfixedfixedIOV fp v0 v1 v2 = liftIO (dynintfixedfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintdoubledoubleintdoubledoubleIOV :: FunPtr (GLint -> GLdouble -> GLdouble -> GLint -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> GLint -> GLdouble -> GLdouble -> IO ()
+
+ffiintdoubledoubleintdoubledoubleIOV :: MonadIO m => FunPtr (GLint -> GLdouble -> GLdouble -> GLint -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> GLint -> GLdouble -> GLdouble -> m ()
+ffiintdoubledoubleintdoubledoubleIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynintdoubledoubleintdoubledoubleIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynintfloatfloatintfloatfloatIOV :: FunPtr (GLint -> GLfloat -> GLfloat -> GLint -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> GLint -> GLfloat -> GLfloat -> IO ()
+
+ffiintfloatfloatintfloatfloatIOV :: MonadIO m => FunPtr (GLint -> GLfloat -> GLfloat -> GLint -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> GLint -> GLfloat -> GLfloat -> m ()
+ffiintfloatfloatintfloatfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynintfloatfloatintfloatfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynintfixedfixedfixedfixedIOV :: FunPtr (GLint -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLint -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()
+
+ffiintfixedfixedfixedfixedIOV :: MonadIO m => FunPtr (GLint -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLint -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+ffiintfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4 = liftIO (dynintfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumIOPtrV :: FunPtr (GLuint -> GLenum -> IO (Ptr ())) -> GLuint -> GLenum -> IO (Ptr ())
+
+ffiuintenumIOPtrV :: MonadIO m => FunPtr (GLuint -> GLenum -> IO (Ptr ())) -> GLuint -> GLenum -> m (Ptr ())
+ffiuintenumIOPtrV fp v0 v1 = liftIO (dynuintenumIOPtrV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintintptrsizeibitfieldIOPtrV :: FunPtr (GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ())
+
+ffiuintintptrsizeibitfieldIOPtrV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizei -> GLbitfield -> m (Ptr ())
+ffiuintintptrsizeibitfieldIOPtrV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeibitfieldIOPtrV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintptrsizeiptrbitfieldIOPtrV :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())
+
+ffiuintintptrsizeiptrbitfieldIOPtrV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
+ffiuintintptrsizeiptrbitfieldIOPtrV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeiptrbitfieldIOPtrV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintIOPtrV :: FunPtr (GLuint -> IO (Ptr ())) -> GLuint -> IO (Ptr ())
+
+ffiuintIOPtrV :: MonadIO m => FunPtr (GLuint -> IO (Ptr ())) -> GLuint -> m (Ptr ())
+ffiuintIOPtrV fp v0 = liftIO (dynuintIOPtrV fp v0)
+
+foreign import ccall "dynamic" dynuintintbitfieldPtrintPtrenumIOPtrV :: FunPtr (GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> IO (Ptr ())) -> GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> IO (Ptr ())
+
+ffiuintintbitfieldPtrintPtrenumIOPtrV :: MonadIO m => FunPtr (GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> IO (Ptr ())) -> GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> m (Ptr ())
+ffiuintintbitfieldPtrintPtrenumIOPtrV fp v0 v1 v2 v3 v4 = liftIO (dynuintintbitfieldPtrintPtrenumIOPtrV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintdoubledoubleintintPtrdoubleIOV :: FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()
+
+ffiuintuintdoubledoubleintintPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+ffiuintuintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintuintfloatfloatintintPtrfloatIOV :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()
+
+ffiuintuintfloatfloatintintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+ffiuintuintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintuintdoubledoubleintintdoubledoubleintintPtrdoubleIOV :: FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()
+
+ffiuintuintdoubledoubleintintdoubledoubleintintPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ()) -> GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
+ffiuintuintdoubledoubleintintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintuintdoubledoubleintintdoubledoubleintintPtrdoubleIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynuintuintfloatfloatintintfloatfloatintintPtrfloatIOV :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()
+
+ffiuintuintfloatfloatintintfloatfloatintintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
+ffiuintuintfloatfloatintintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintuintfloatfloatintintfloatfloatintintPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynenumdoubledoubledoubledoubledoubledoubleIOV :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffienumdoubledoubledoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffienumdoubledoubledoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumdoubledoubledoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynintPtrubyteIOV :: FunPtr (GLint -> Ptr GLubyte -> IO ()) -> GLint -> Ptr GLubyte -> IO ()
+
+ffiintPtrubyteIOV :: MonadIO m => FunPtr (GLint -> Ptr GLubyte -> IO ()) -> GLint -> Ptr GLubyte -> m ()
+ffiintPtrubyteIOV fp v0 v1 = liftIO (dynintPtrubyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtruintIOV :: FunPtr (GLint -> Ptr GLuint -> IO ()) -> GLint -> Ptr GLuint -> IO ()
+
+ffiintPtruintIOV :: MonadIO m => FunPtr (GLint -> Ptr GLuint -> IO ()) -> GLint -> Ptr GLuint -> m ()
+ffiintPtruintIOV fp v0 v1 = liftIO (dynintPtruintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtrushortIOV :: FunPtr (GLint -> Ptr GLushort -> IO ()) -> GLint -> Ptr GLushort -> IO ()
+
+ffiintPtrushortIOV :: MonadIO m => FunPtr (GLint -> Ptr GLushort -> IO ()) -> GLint -> Ptr GLushort -> m ()
+ffiintPtrushortIOV fp v0 v1 = liftIO (dynintPtrushortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumdoubledoubledoubledoubleIOV :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffienumdoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffienumdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumfloatfloatfloatfloatIOV :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffienumfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffienumfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumdoubledoubledoubleIOV :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffienumdoubledoubledoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffienumdoubledoubledoubleIOV fp v0 v1 v2 v3 = liftIO (dynenumdoubledoubledoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumfloatfloatfloatIOV :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffienumfloatfloatfloatIOV :: MonadIO m => FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffienumfloatfloatfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumfloatfloatfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumbooleanIOV :: FunPtr (GLenum -> GLenum -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLboolean -> IO ()
+
+ffienumenumbooleanIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLboolean -> IO ()) -> GLenum -> GLenum -> GLboolean -> m ()
+ffienumenumbooleanIOV fp v0 v1 v2 = liftIO (dynenumenumbooleanIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumPtrintPtrsizeisizeiIOV :: FunPtr (GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ()) -> GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ()
+
+ffienumPtrintPtrsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ()) -> GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
+ffienumPtrintPtrsizeisizeiIOV fp v0 v1 v2 v3 = liftIO (dynenumPtrintPtrsizeisizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumPtrVsizeisizeiIOV :: FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ()) -> GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ()
+
+ffienumPtrVsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ()) -> GLenum -> Ptr () -> GLsizei -> GLsizei -> m ()
+ffienumPtrVsizeisizeiIOV fp v0 v1 v2 v3 = liftIO (dynenumPtrVsizeisizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumPtrVsizeisizeisizeiintIOV :: FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ()
+
+ffienumPtrVsizeisizeisizeiintIOV :: MonadIO m => FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> m ()
+ffienumPtrVsizeisizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumPtrVsizeisizeisizeiintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumPtrVsizeisizeiintIOV :: FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ()
+
+ffienumPtrVsizeisizeiintIOV :: MonadIO m => FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> m ()
+ffienumPtrVsizeisizeiintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumPtrVsizeisizeiintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintptrintptrsizeisizeiIOV :: FunPtr (GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ()
+
+ffienumintptrintptrsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> m ()
+ffienumintptrintptrsizeisizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumintptrintptrsizeisizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumPtrsizeienumPtrVsizeiIOV :: FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ()
+
+ffienumPtrsizeienumPtrVsizeiIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
+ffienumPtrsizeienumPtrVsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumPtrsizeienumPtrVsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumPtrsizeienumPtrVsizeiPtrintIOV :: FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> Ptr GLint -> IO ()
+
+ffienumPtrsizeienumPtrVsizeiPtrintIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> Ptr GLint -> m ()
+ffienumPtrsizeienumPtrVsizeiPtrintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumPtrsizeienumPtrVsizeiPtrintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumPtrVsizeisizeiIOV :: FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ()
+
+ffienumenumPtrVsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> m ()
+ffienumenumPtrVsizeisizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumPtrVsizeisizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumPtrVsizeisizeisizeiintIOV :: FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ()
+
+ffienumenumPtrVsizeisizeisizeiintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLsizei -> GLint -> m ()
+ffienumenumPtrVsizeisizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumPtrVsizeisizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumenumPtrVsizeisizeiintIOV :: FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ()
+
+ffienumenumPtrVsizeisizeiintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> IO ()) -> GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> GLint -> m ()
+ffienumenumPtrVsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumPtrVsizeisizeiintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumintptrintptrsizeisizeiIOV :: FunPtr (GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ()
+
+ffienumenumintptrintptrsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizei -> GLsizei -> m ()
+ffienumenumintptrintptrsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumintptrintptrsizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumuintuintPtrintPtrsizeisizeiIOV :: FunPtr (GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ()
+
+ffienumuintuintPtrintPtrsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ()) -> GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
+ffienumuintuintPtrintPtrsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumuintuintPtrintPtrsizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynPtrenumPtrintPtrsizeisizeiintIOV :: FunPtr (Ptr GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> GLint -> IO ()) -> Ptr GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> GLint -> IO ()
+
+ffiPtrenumPtrintPtrsizeisizeiintIOV :: MonadIO m => FunPtr (Ptr GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> GLint -> IO ()) -> Ptr GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> GLint -> m ()
+ffiPtrenumPtrintPtrsizeisizeiintIOV fp v0 v1 v2 v3 v4 = liftIO (dynPtrenumPtrintPtrsizeisizeiintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynPtrenumPtrsizeienumPtrVsizeiintIOV :: FunPtr (Ptr GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ()) -> Ptr GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ()
+
+ffiPtrenumPtrsizeienumPtrVsizeiintIOV :: MonadIO m => FunPtr (Ptr GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ()) -> Ptr GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> m ()
+ffiPtrenumPtrsizeienumPtrVsizeiintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynPtrenumPtrsizeienumPtrVsizeiintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumbyteIOV :: FunPtr (GLenum -> GLbyte -> IO ()) -> GLenum -> GLbyte -> IO ()
+
+ffienumbyteIOV :: MonadIO m => FunPtr (GLenum -> GLbyte -> IO ()) -> GLenum -> GLbyte -> m ()
+ffienumbyteIOV fp v0 v1 = liftIO (dynenumbyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumPtrbyteIOV :: FunPtr (GLenum -> Ptr GLbyte -> IO ()) -> GLenum -> Ptr GLbyte -> IO ()
+
+ffienumPtrbyteIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLbyte -> IO ()) -> GLenum -> Ptr GLbyte -> m ()
+ffienumPtrbyteIOV fp v0 v1 = liftIO (dynenumPtrbyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumdoubleIOV :: FunPtr (GLenum -> GLdouble -> IO ()) -> GLenum -> GLdouble -> IO ()
+
+ffienumdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> IO ()) -> GLenum -> GLdouble -> m ()
+ffienumdoubleIOV fp v0 v1 = liftIO (dynenumdoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumhalfNVIOV :: FunPtr (GLenum -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> IO ()
+
+ffienumhalfNVIOV :: MonadIO m => FunPtr (GLenum -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> m ()
+ffienumhalfNVIOV fp v0 v1 = liftIO (dynenumhalfNVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumPtrhalfNVIOV :: FunPtr (GLenum -> Ptr GLhalfNV -> IO ()) -> GLenum -> Ptr GLhalfNV -> IO ()
+
+ffienumPtrhalfNVIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLhalfNV -> IO ()) -> GLenum -> Ptr GLhalfNV -> m ()
+ffienumPtrhalfNVIOV fp v0 v1 = liftIO (dynenumPtrhalfNVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumshortIOV :: FunPtr (GLenum -> GLshort -> IO ()) -> GLenum -> GLshort -> IO ()
+
+ffienumshortIOV :: MonadIO m => FunPtr (GLenum -> GLshort -> IO ()) -> GLenum -> GLshort -> m ()
+ffienumshortIOV fp v0 v1 = liftIO (dynenumshortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumPtrshortIOV :: FunPtr (GLenum -> Ptr GLshort -> IO ()) -> GLenum -> Ptr GLshort -> IO ()
+
+ffienumPtrshortIOV :: MonadIO m => FunPtr (GLenum -> Ptr GLshort -> IO ()) -> GLenum -> Ptr GLshort -> m ()
+ffienumPtrshortIOV fp v0 v1 = liftIO (dynenumPtrshortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumbytebyteIOV :: FunPtr (GLenum -> GLbyte -> GLbyte -> IO ()) -> GLenum -> GLbyte -> GLbyte -> IO ()
+
+ffienumbytebyteIOV :: MonadIO m => FunPtr (GLenum -> GLbyte -> GLbyte -> IO ()) -> GLenum -> GLbyte -> GLbyte -> m ()
+ffienumbytebyteIOV fp v0 v1 v2 = liftIO (dynenumbytebyteIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumdoubledoubleIOV :: FunPtr (GLenum -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> IO ()
+
+ffienumdoubledoubleIOV :: MonadIO m => FunPtr (GLenum -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLdouble -> GLdouble -> m ()
+ffienumdoubledoubleIOV fp v0 v1 v2 = liftIO (dynenumdoubledoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumfloatfloatIOV :: FunPtr (GLenum -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> IO ()
+
+ffienumfloatfloatIOV :: MonadIO m => FunPtr (GLenum -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLfloat -> GLfloat -> m ()
+ffienumfloatfloatIOV fp v0 v1 v2 = liftIO (dynenumfloatfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumhalfNVhalfNVIOV :: FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffienumhalfNVhalfNVIOV :: MonadIO m => FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> GLhalfNV -> m ()
+ffienumhalfNVhalfNVIOV fp v0 v1 v2 = liftIO (dynenumhalfNVhalfNVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumshortshortIOV :: FunPtr (GLenum -> GLshort -> GLshort -> IO ()) -> GLenum -> GLshort -> GLshort -> IO ()
+
+ffienumshortshortIOV :: MonadIO m => FunPtr (GLenum -> GLshort -> GLshort -> IO ()) -> GLenum -> GLshort -> GLshort -> m ()
+ffienumshortshortIOV fp v0 v1 v2 = liftIO (dynenumshortshortIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumfixedfixedIOV :: FunPtr (GLenum -> GLfixed -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> IO ()
+
+ffienumfixedfixedIOV :: MonadIO m => FunPtr (GLenum -> GLfixed -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> m ()
+ffienumfixedfixedIOV fp v0 v1 v2 = liftIO (dynenumfixedfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumbytebytebyteIOV :: FunPtr (GLenum -> GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLenum -> GLbyte -> GLbyte -> GLbyte -> IO ()
+
+ffienumbytebytebyteIOV :: MonadIO m => FunPtr (GLenum -> GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLenum -> GLbyte -> GLbyte -> GLbyte -> m ()
+ffienumbytebytebyteIOV fp v0 v1 v2 v3 = liftIO (dynenumbytebytebyteIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumhalfNVhalfNVhalfNVIOV :: FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffienumhalfNVhalfNVhalfNVIOV :: MonadIO m => FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+ffienumhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3 = liftIO (dynenumhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumintintintIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> IO ()
+
+ffienumintintintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> m ()
+ffienumintintintIOV fp v0 v1 v2 v3 = liftIO (dynenumintintintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumshortshortshortIOV :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ()) -> GLenum -> GLshort -> GLshort -> GLshort -> IO ()
+
+ffienumshortshortshortIOV :: MonadIO m => FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ()) -> GLenum -> GLshort -> GLshort -> GLshort -> m ()
+ffienumshortshortshortIOV fp v0 v1 v2 v3 = liftIO (dynenumshortshortshortIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumfixedfixedfixedIOV :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLfixed -> IO ()
+
+ffienumfixedfixedfixedIOV :: MonadIO m => FunPtr (GLenum -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLfixed -> m ()
+ffienumfixedfixedfixedIOV fp v0 v1 v2 v3 = liftIO (dynenumfixedfixedfixedIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumbytebytebytebyteIOV :: FunPtr (GLenum -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLenum -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ()
+
+ffienumbytebytebytebyteIOV :: MonadIO m => FunPtr (GLenum -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ()) -> GLenum -> GLbyte -> GLbyte -> GLbyte -> GLbyte -> m ()
+ffienumbytebytebytebyteIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumbytebytebytebyteIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumhalfNVhalfNVhalfNVhalfNVIOV :: FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffienumhalfNVhalfNVhalfNVhalfNVIOV :: MonadIO m => FunPtr (GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLenum -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+ffienumhalfNVhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumhalfNVhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumshortshortshortshortIOV :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()
+
+ffienumshortshortshortshortIOV :: MonadIO m => FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+ffienumshortshortshortshortIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumshortshortshortshortIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumfixedfixedfixedfixedIOV :: FunPtr (GLenum -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()
+
+ffienumfixedfixedfixedfixedIOV :: MonadIO m => FunPtr (GLenum -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> IO ()) -> GLenum -> GLfixed -> GLfixed -> GLfixed -> GLfixed -> m ()
+ffienumfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumfixedfixedfixedfixedIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumintenumsizeiPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumintenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumintenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumintenumsizeiPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumenumfloatIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLfloat -> IO ()) -> GLenum -> GLenum -> GLenum -> GLfloat -> IO ()
+
+ffienumenumenumfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLfloat -> IO ()) -> GLenum -> GLenum -> GLenum -> GLfloat -> m ()
+ffienumenumenumfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumenumintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLint -> IO ()
+
+ffienumenumenumintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLint -> m ()
+ffienumenumenumintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumenumdoubleIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLdouble -> IO ()) -> GLenum -> GLenum -> GLenum -> GLdouble -> IO ()
+
+ffienumenumenumdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLdouble -> IO ()) -> GLenum -> GLenum -> GLenum -> GLdouble -> m ()
+ffienumenumenumdoubleIOV fp v0 v1 v2 v3 = liftIO (dynenumenumenumdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumintintsizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintintsizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintintsizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumenumintintsizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumenumintintsizeisizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintintsizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintintsizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumenumintintsizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumenumintintsizeisizeisizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintintsizeisizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintintsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynenumenumintintsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynenumenumintintsizeienumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintintsizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumenumintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumenumintintintsizeisizeienumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintintintsizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumenumintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumenumintintintintsizeisizeisizeienumenumPtrVIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumenumintintintintsizeisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumenumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynenumenumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynuintsizeiPtrVenumIOV :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()
+
+ffiuintsizeiPtrVenumIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLenum -> m ()
+ffiuintsizeiPtrVenumIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrVenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiptrPtrVenumIOV :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ()
+
+ffiuintsizeiptrPtrVenumIOV :: MonadIO m => FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLenum -> m ()
+ffiuintsizeiptrPtrVenumIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiptrPtrVenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintptrsizeiptrbooleanIOV :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> IO ()
+
+ffiuintintptrsizeiptrbooleanIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> m ()
+ffiuintintptrsizeiptrbooleanIOV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeiptrbooleanIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrVbitfieldIOV :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ()
+
+ffiuintsizeiPtrVbitfieldIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLbitfield -> m ()
+ffiuintsizeiPtrVbitfieldIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrVbitfieldIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiptrPtrVbitfieldIOV :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()
+
+ffiuintsizeiptrPtrVbitfieldIOV :: MonadIO m => FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
+ffiuintsizeiptrPtrVbitfieldIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiptrPtrVbitfieldIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintintptrintptrsizeiptrIOV :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()
+
+ffiuintuintintptrintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+ffiuintuintintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumenumuintIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> IO ()
+
+ffiuintenumenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> m ()
+ffiuintenumenumuintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumenumuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintsizeiPtrfloatIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffiuintuintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+ffiuintuintsizeiPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintuintsizeiPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumuintintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> IO ()
+
+ffiuintenumuintintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> m ()
+ffiuintenumuintintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumenumuintintIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> GLint -> IO ()
+
+ffiuintenumenumuintintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> GLint -> m ()
+ffiuintenumenumuintintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumenumuintintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumenumuintintintIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()
+
+ffiuintenumenumuintintintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+ffiuintenumenumuintintintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintenumenumuintintintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumuintintenumIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLenum -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> GLenum -> IO ()
+
+ffiuintenumuintintenumIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLenum -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> GLenum -> m ()
+ffiuintenumuintintenumIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintintenumIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumuintintintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> GLint -> IO ()
+
+ffiuintenumuintintintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> GLint -> m ()
+ffiuintenumuintintintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintintintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumuintdoubledoubledoubledoubleIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiuintenumuintdoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiuintenumuintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumuintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumuintfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintenumuintfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintenumuintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumuintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumuintintintintintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffiuintenumuintintintintintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+ffiuintenumuintintintintintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumuintintintintintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumuintuintuintuintuintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintenumuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintenumuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumuintsizeiPtrfloatIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffiuintenumuintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+ffiuintenumuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumuintsizeiPtrintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ()
+
+ffiuintenumuintsizeiPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> m ()
+ffiuintenumuintsizeiPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintsizeiPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumuintsizeiPtruintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffiuintenumuintsizeiPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+ffiuintenumuintsizeiPtruintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintsizeiPtruintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumenumsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumsizeisizeiIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+ffiuintenumsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLsizei -> m ()
+ffiuintenumsizeisizeiIOV fp v0 v1 v2 v3 = liftIO (dynuintenumsizeisizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeienumsizeisizeiIOV :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+ffiuintsizeienumsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+ffiuintsizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintsizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintsizeisizeienumsizeisizeiIOV :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+ffiuintsizeisizeienumsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+ffiuintsizeisizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintsizeisizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumintPtrcharintPtrcharIOV :: FunPtr (GLenum -> GLint -> Ptr GLchar -> GLint -> Ptr GLchar -> IO ()) -> GLenum -> GLint -> Ptr GLchar -> GLint -> Ptr GLchar -> IO ()
+
+ffienumintPtrcharintPtrcharIOV :: MonadIO m => FunPtr (GLenum -> GLint -> Ptr GLchar -> GLint -> Ptr GLchar -> IO ()) -> GLenum -> GLint -> Ptr GLchar -> GLint -> Ptr GLchar -> m ()
+ffienumintPtrcharintPtrcharIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumintPtrcharintPtrcharIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynsizeiPtrVenumIOuint :: FunPtr (GLsizei -> Ptr () -> GLenum -> IO GLuint) -> GLsizei -> Ptr () -> GLenum -> IO GLuint
+
+ffisizeiPtrVenumIOuint :: MonadIO m => FunPtr (GLsizei -> Ptr () -> GLenum -> IO GLuint) -> GLsizei -> Ptr () -> GLenum -> m GLuint
+ffisizeiPtrVenumIOuint fp v0 v1 v2 = liftIO (dynsizeiPtrVenumIOuint fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynPtrVsizeiPtrcharIOV :: FunPtr (Ptr () -> GLsizei -> Ptr GLchar -> IO ()) -> Ptr () -> GLsizei -> Ptr GLchar -> IO ()
+
+ffiPtrVsizeiPtrcharIOV :: MonadIO m => FunPtr (Ptr () -> GLsizei -> Ptr GLchar -> IO ()) -> Ptr () -> GLsizei -> Ptr GLchar -> m ()
+ffiPtrVsizeiPtrcharIOV fp v0 v1 v2 = liftIO (dynPtrVsizeiPtrcharIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumuintenumIOenum :: FunPtr (GLenum -> GLuint -> GLenum -> IO GLenum) -> GLenum -> GLuint -> GLenum -> IO GLenum
+
+ffienumuintenumIOenum :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> IO GLenum) -> GLenum -> GLuint -> GLenum -> m GLenum
+ffienumuintenumIOenum fp v0 v1 v2 = liftIO (dynenumuintenumIOenum fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintenumIOV :: FunPtr (GLuint -> GLuint -> GLenum -> IO ()) -> GLuint -> GLuint -> GLenum -> IO ()
+
+ffiuintuintenumIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> IO ()) -> GLuint -> GLuint -> GLenum -> m ()
+ffiuintuintenumIOV fp v0 v1 v2 = liftIO (dynuintuintenumIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintsizeiPtrubytesizeienumPtrVIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ()
+
+ffiuintsizeiPtrubytesizeienumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> m ()
+ffiuintsizeiPtrubytesizeienumPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintsizeiPtrubytesizeienumPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintsizeienumPtrVIOV :: FunPtr (GLuint -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> GLenum -> Ptr () -> IO ()
+
+ffiuintsizeienumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> GLenum -> Ptr () -> m ()
+ffiuintsizeienumPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeienumPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrfloatIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffiuintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+ffiuintsizeiPtrfloatIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtrVbitfielduintsizeiuintfloatIOenum :: FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum) -> GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum
+
+ffiuintenumPtrVbitfielduintsizeiuintfloatIOenum :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum) -> GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLuint -> GLfloat -> m GLenum
+ffiuintenumPtrVbitfielduintsizeiuintfloatIOenum fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumPtrVbitfielduintsizeiuintfloatIOenum fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumPtrVbitfielduintfloatuintIOenum :: FunPtr (GLenum -> Ptr () -> GLbitfield -> GLuint -> GLfloat -> GLuint -> IO GLenum) -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLfloat -> GLuint -> IO GLenum
+
+ffienumPtrVbitfielduintfloatuintIOenum :: MonadIO m => FunPtr (GLenum -> Ptr () -> GLbitfield -> GLuint -> GLfloat -> GLuint -> IO GLenum) -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLfloat -> GLuint -> m GLenum
+ffienumPtrVbitfielduintfloatuintIOenum fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumPtrVbitfielduintfloatuintIOenum fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumPtrVbitfielduintsizeienumuintfloatIOV :: FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLenum -> GLuint -> GLfloat -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLenum -> GLuint -> GLfloat -> IO ()
+
+ffiuintenumPtrVbitfielduintsizeienumuintfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLenum -> GLuint -> GLfloat -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLbitfield -> GLuint -> GLsizei -> GLenum -> GLuint -> GLfloat -> m ()
+ffiuintenumPtrVbitfielduintsizeienumuintfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintenumPtrVbitfielduintsizeienumuintfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumPtrVbitfieldsizeienumPtrVenumuintfloatIOV :: FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLenum -> GLuint -> GLfloat -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLenum -> GLuint -> GLfloat -> IO ()
+
+ffiuintenumPtrVbitfieldsizeienumPtrVenumuintfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr () -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLenum -> GLuint -> GLfloat -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLbitfield -> GLsizei -> GLenum -> Ptr () -> GLenum -> GLuint -> GLfloat -> m ()
+ffiuintenumPtrVbitfieldsizeienumPtrVenumuintfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynuintenumPtrVbitfieldsizeienumPtrVenumuintfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintenumsizeiptrPtrVsizeiuintsizeiuintfloatIOenum :: FunPtr (GLuint -> GLenum -> GLsizeiptr -> Ptr () -> GLsizei -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum) -> GLuint -> GLenum -> GLsizeiptr -> Ptr () -> GLsizei -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum
+
+ffiuintenumsizeiptrPtrVsizeiuintsizeiuintfloatIOenum :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizeiptr -> Ptr () -> GLsizei -> GLuint -> GLsizei -> GLuint -> GLfloat -> IO GLenum) -> GLuint -> GLenum -> GLsizeiptr -> Ptr () -> GLsizei -> GLuint -> GLsizei -> GLuint -> GLfloat -> m GLenum
+ffiuintenumsizeiptrPtrVsizeiuintsizeiuintfloatIOenum fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintenumsizeiptrPtrVsizeiuintsizeiuintfloatIOenum fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumintuintIOV :: FunPtr (GLenum -> GLint -> GLuint -> IO ()) -> GLenum -> GLint -> GLuint -> IO ()
+
+ffienumintuintIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLuint -> IO ()) -> GLenum -> GLint -> GLuint -> m ()
+ffienumintuintIOV fp v0 v1 v2 = liftIO (dynenumintuintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumsizeiPtrVIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintenumsizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintenumsizeiPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeisizeisizeiPtrubytesizeienumPtrVIOV :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> GLsizei -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ()
+
+ffiuintsizeisizeisizeiPtrubytesizeienumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLsizei -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> GLsizei -> GLsizei -> Ptr GLubyte -> GLsizei -> GLenum -> Ptr () -> m ()
+ffiuintsizeisizeisizeiPtrubytesizeienumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintsizeisizeisizeiPtrubytesizeienumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintsizeisizeienumPtrVIOV :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> GLsizei -> GLenum -> Ptr () -> IO ()
+
+ffiuintsizeisizeienumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLsizei -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLsizei -> GLsizei -> GLenum -> Ptr () -> m ()
+ffiuintsizeisizeienumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintsizeisizeienumPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumintPtrfloatIOV :: FunPtr (GLenum -> GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLint -> Ptr GLfloat -> IO ()
+
+ffienumenumintPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLint -> Ptr GLfloat -> m ()
+ffienumenumintPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumenumintPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeisizeifloatPtrfloatPtrfloatPtrfloatPtrfloatIOboolean :: FunPtr (GLuint -> GLsizei -> GLsizei -> GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO GLboolean) -> GLuint -> GLsizei -> GLsizei -> GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO GLboolean
+
+ffiuintsizeisizeifloatPtrfloatPtrfloatPtrfloatPtrfloatIOboolean :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLsizei -> GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO GLboolean) -> GLuint -> GLsizei -> GLsizei -> GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m GLboolean
+ffiuintsizeisizeifloatPtrfloatPtrfloatPtrfloatPtrfloatIOboolean fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintsizeisizeifloatPtrfloatPtrfloatPtrfloatPtrfloatIOboolean fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynPtrintIOint :: FunPtr (Ptr GLint -> IO GLint) -> Ptr GLint -> IO GLint
+
+ffiPtrintIOint :: MonadIO m => FunPtr (Ptr GLint -> IO GLint) -> Ptr GLint -> m GLint
+ffiPtrintIOint fp v0 = liftIO (dynPtrintIOint fp v0)
+
+foreign import ccall "dynamic" dynuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> IO ()
+
+ffiuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> m ()
+ffiuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 = liftIO (dynuintuint64EXTuintuintenumenumuintenumuintenumuintenumuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12)
+
+foreign import ccall "dynamic" dynuintuint64EXTuintuintenumenumuintuintenumuintuintIOV :: FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> IO ()
+
+ffiuintuint64EXTuintuintenumenumuintuintenumuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint64EXT -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> m ()
+ffiuintuint64EXTuintuintenumenumuintuintenumuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintuint64EXTuintuintenumenumuintuintenumuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynsizeiPtruintPtrfloatIOV :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ()) -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ()
+
+ffisizeiPtruintPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ()) -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> m ()
+ffisizeiPtruintPtrfloatIOV fp v0 v1 v2 = liftIO (dynsizeiPtruintPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsizeiPtruintPtrclampfIOV :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLclampf -> IO ()) -> GLsizei -> Ptr GLuint -> Ptr GLclampf -> IO ()
+
+ffisizeiPtruintPtrclampfIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLuint -> Ptr GLclampf -> IO ()) -> GLsizei -> Ptr GLuint -> Ptr GLclampf -> m ()
+ffisizeiPtruintPtrclampfIOV fp v0 v1 v2 = liftIO (dynsizeiPtruintPtrclampfIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsizeiPtruintPtrfixedIOV :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLfixed -> IO ()) -> GLsizei -> Ptr GLuint -> Ptr GLfixed -> IO ()
+
+ffisizeiPtruintPtrfixedIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLuint -> Ptr GLfixed -> IO ()) -> GLsizei -> Ptr GLuint -> Ptr GLfixed -> m ()
+ffisizeiPtruintPtrfixedIOV fp v0 v1 v2 = liftIO (dynsizeiPtruintPtrfixedIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintenumPtrVsizeiIOV :: FunPtr (GLuint -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLsizei -> IO ()
+
+ffiuintenumPtrVsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLsizei -> m ()
+ffiuintenumPtrVsizeiIOV fp v0 v1 v2 v3 = liftIO (dynuintenumPtrVsizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumPtrVintIOV :: FunPtr (GLuint -> GLenum -> Ptr () -> GLint -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLint -> IO ()
+
+ffiuintenumPtrVintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr () -> GLint -> IO ()) -> GLuint -> GLenum -> Ptr () -> GLint -> m ()
+ffiuintenumPtrVintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumPtrVintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintuintsizeiPtrintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLint -> IO ()
+
+ffienumuintuintsizeiPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLint -> m ()
+ffienumuintuintsizeiPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumuintuintsizeiPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintuintsizeiPtruintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffienumuintuintsizeiPtruintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> m ()
+ffienumuintuintsizeiPtruintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumuintuintsizeiPtruintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintuintsizeiPtrfloatIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffienumuintuintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+ffienumuintuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumuintuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintdoubledoubledoubledoubleIOV :: FunPtr (GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffienumuintdoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffienumuintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumuintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumuintfloatfloatfloatfloatIOV :: FunPtr (GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffienumuintfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffienumuintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumuintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumuintintintintintIOV :: FunPtr (GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffienumuintintintintintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+ffienumuintintintintintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumuintintintintintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtrintIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ()
+
+ffienumuintsizeiPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLint -> m ()
+ffienumuintsizeiPtrintIOV fp v0 v1 v2 v3 = liftIO (dynenumuintsizeiPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrubytedoubledoubledoubledoubleIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiuintsizeiPtrubytedoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiuintsizeiPtrubytedoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintsizeiPtrubytedoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintsizeiPtrubytefloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintsizeiPtrubytefloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintsizeiPtrubytefloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintsizeiPtrubytefloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumuintsizeiPtrdoubleIOV :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLdouble -> IO ()
+
+ffienumuintsizeiPtrdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLenum -> GLuint -> GLsizei -> Ptr GLdouble -> m ()
+ffienumuintsizeiPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynenumuintsizeiPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintenumintPtrfloatIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLenum -> GLint -> Ptr GLfloat -> IO ()
+
+ffiuintintenumintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLenum -> GLint -> Ptr GLfloat -> m ()
+ffiuintintenumintPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintenumintPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumsizeiPtrVIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffienumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffienumenumsizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynenumenumsizeiPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintdoubleIOV :: FunPtr (GLuint -> GLint -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> IO ()
+
+ffiuintintdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> m ()
+ffiuintintdoubleIOV fp v0 v1 v2 = liftIO (dynuintintdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintfloatIOV :: FunPtr (GLuint -> GLint -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> IO ()
+
+ffiuintintfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> m ()
+ffiuintintfloatIOV fp v0 v1 v2 = liftIO (dynuintintfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintintIOV :: FunPtr (GLuint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> IO ()
+
+ffiuintintintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> m ()
+ffiuintintintIOV fp v0 v1 v2 = liftIO (dynuintintintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintint64EXTIOV :: FunPtr (GLuint -> GLint -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> IO ()
+
+ffiuintintint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> m ()
+ffiuintintint64EXTIOV fp v0 v1 v2 = liftIO (dynuintintint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintsizeiPtrint64EXTIOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ()
+
+ffiuintintsizeiPtrint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
+ffiuintintsizeiPtrint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtrint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintuintIOV :: FunPtr (GLuint -> GLint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> IO ()
+
+ffiuintintuintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> m ()
+ffiuintintuintIOV fp v0 v1 v2 = liftIO (dynuintintuintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintuint64EXTIOV :: FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> IO ()
+
+ffiuintintuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> m ()
+ffiuintintuint64EXTIOV fp v0 v1 v2 = liftIO (dynuintintuint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintsizeiPtruint64EXTIOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ()
+
+ffiuintintsizeiPtruint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
+ffiuintintsizeiPtruint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtruint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintdoubledoubleIOV :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> GLdouble -> IO ()
+
+ffiuintintdoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> GLdouble -> m ()
+ffiuintintdoubledoubleIOV fp v0 v1 v2 v3 = liftIO (dynuintintdoubledoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintfloatfloatIOV :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> GLfloat -> IO ()
+
+ffiuintintfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> GLfloat -> m ()
+ffiuintintfloatfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintintfloatfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintintintIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> IO ()
+
+ffiuintintintintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> m ()
+ffiuintintintintIOV fp v0 v1 v2 v3 = liftIO (dynuintintintintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintint64EXTint64EXTIOV :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiuintintint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> GLint64EXT -> m ()
+ffiuintintint64EXTint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynuintintint64EXTint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintuintuintIOV :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> GLuint -> IO ()
+
+ffiuintintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> GLuint -> m ()
+ffiuintintuintuintIOV fp v0 v1 v2 v3 = liftIO (dynuintintuintuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintuint64EXTuint64EXTIOV :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiuintintuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiuintintuint64EXTuint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynuintintuint64EXTuint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintdoubledoubledoubleIOV :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiuintintdoubledoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiuintintdoubledoubledoubleIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintdoubledoubledoubleIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintfloatfloatfloatIOV :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintintfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintintfloatfloatfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintfloatfloatfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintintintintIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffiuintintintintintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+ffiuintintintintintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintintintintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintint64EXTint64EXTint64EXTIOV :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiuintintint64EXTint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+ffiuintintint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintuintuintuintIOV :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintintuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintintuintuintuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintuintuintuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintuint64EXTuint64EXTuint64EXTIOV :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiuintintuint64EXTuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiuintintuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintdoubledoubledoubledoubleIOV :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiuintintdoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiuintintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintintfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintintintintintIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffiuintintintintintintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> m ()
+ffiuintintintintintintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintintintintintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintint64EXTint64EXTint64EXTint64EXTIOV :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiuintintint64EXTint64EXTint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+ffiuintintint64EXTint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintint64EXTint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintuintuintuintuintIOV :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintintuintuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintintuint64IOV :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> IO ()
+
+ffiuintintuint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> m ()
+ffiuintintuint64IOV fp v0 v1 v2 = liftIO (dynuintintuint64IOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintsizeiPtruint64IOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ()
+
+ffiuintintsizeiPtruint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+ffiuintintsizeiPtruint64IOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtruint64IOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintsizeibooleanPtrdoubleIOV :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ()) -> GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ()
+
+ffiuintintsizeibooleanPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ()) -> GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+ffiuintintsizeibooleanPtrdoubleIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintsizeibooleanPtrdoubleIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintsizeibooleanPtrfloatIOV :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()
+
+ffiuintintsizeibooleanPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()) -> GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+ffiuintintsizeibooleanPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintsizeibooleanPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynPtrfixedPtrintIObitfield :: FunPtr (Ptr GLfixed -> Ptr GLint -> IO GLbitfield) -> Ptr GLfixed -> Ptr GLint -> IO GLbitfield
+
+ffiPtrfixedPtrintIObitfield :: MonadIO m => FunPtr (Ptr GLfixed -> Ptr GLint -> IO GLbitfield) -> Ptr GLfixed -> Ptr GLint -> m GLbitfield
+ffiPtrfixedPtrintIObitfield fp v0 v1 = liftIO (dynPtrfixedPtrintIObitfield fp v0 v1)
+
+foreign import ccall "dynamic" dynenumuintenumuintIOV :: FunPtr (GLenum -> GLuint -> GLenum -> GLuint -> IO ()) -> GLenum -> GLuint -> GLenum -> GLuint -> IO ()
+
+ffienumuintenumuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> GLuint -> IO ()) -> GLenum -> GLuint -> GLenum -> GLuint -> m ()
+ffienumuintenumuintIOV fp v0 v1 v2 v3 = liftIO (dynenumuintenumuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynshortshortIOV :: FunPtr (GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> IO ()
+
+ffishortshortIOV :: MonadIO m => FunPtr (GLshort -> GLshort -> IO ()) -> GLshort -> GLshort -> m ()
+ffishortshortIOV fp v0 v1 = liftIO (dynshortshortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintbooleanIOV :: FunPtr (GLuint -> GLboolean -> IO ()) -> GLuint -> GLboolean -> IO ()
+
+ffiuintbooleanIOV :: MonadIO m => FunPtr (GLuint -> GLboolean -> IO ()) -> GLuint -> GLboolean -> m ()
+ffiuintbooleanIOV fp v0 v1 = liftIO (dynuintbooleanIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintintsizeisizeienumenumPtrVIOV :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiintintsizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynintintsizeisizeienumenumsizeiPtrVIOV :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiintintsizeisizeienumenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiintintsizeisizeienumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynintintsizeisizeienumenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynPtrdoublePtrdoubleIOV :: FunPtr (Ptr GLdouble -> Ptr GLdouble -> IO ()) -> Ptr GLdouble -> Ptr GLdouble -> IO ()
+
+ffiPtrdoublePtrdoubleIOV :: MonadIO m => FunPtr (Ptr GLdouble -> Ptr GLdouble -> IO ()) -> Ptr GLdouble -> Ptr GLdouble -> m ()
+ffiPtrdoublePtrdoubleIOV fp v0 v1 = liftIO (dynPtrdoublePtrdoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynPtrintPtrintIOV :: FunPtr (Ptr GLint -> Ptr GLint -> IO ()) -> Ptr GLint -> Ptr GLint -> IO ()
+
+ffiPtrintPtrintIOV :: MonadIO m => FunPtr (Ptr GLint -> Ptr GLint -> IO ()) -> Ptr GLint -> Ptr GLint -> m ()
+ffiPtrintPtrintIOV fp v0 v1 = liftIO (dynPtrintPtrintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynPtrshortPtrshortIOV :: FunPtr (Ptr GLshort -> Ptr GLshort -> IO ()) -> Ptr GLshort -> Ptr GLshort -> IO ()
+
+ffiPtrshortPtrshortIOV :: MonadIO m => FunPtr (Ptr GLshort -> Ptr GLshort -> IO ()) -> Ptr GLshort -> Ptr GLshort -> m ()
+ffiPtrshortPtrshortIOV fp v0 v1 = liftIO (dynPtrshortPtrshortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynPtrfixedPtrfixedIOV :: FunPtr (Ptr GLfixed -> Ptr GLfixed -> IO ()) -> Ptr GLfixed -> Ptr GLfixed -> IO ()
+
+ffiPtrfixedPtrfixedIOV :: MonadIO m => FunPtr (Ptr GLfixed -> Ptr GLfixed -> IO ()) -> Ptr GLfixed -> Ptr GLfixed -> m ()
+ffiPtrfixedPtrfixedIOV fp v0 v1 = liftIO (dynPtrfixedPtrfixedIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynenumIOint :: FunPtr (GLenum -> IO GLint) -> GLenum -> IO GLint
+
+ffienumIOint :: MonadIO m => FunPtr (GLenum -> IO GLint) -> GLenum -> m GLint
+ffienumIOint fp v0 = liftIO (dynenumIOint fp v0)
+
+foreign import ccall "dynamic" dynenumenumsizeisizeiIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+ffienumenumsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
+ffienumenumsizeisizeiIOV fp v0 v1 v2 v3 = liftIO (dynenumenumsizeisizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumsizeienumsizeisizeiIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+ffienumsizeienumsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+ffienumsizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumsizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumsizeisizeienumsizeisizeiIOV :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+ffienumsizeisizeienumsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+ffienumsizeisizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumsizeisizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynPtruintPtrfloatPtrfloatIOV :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> IO ()
+
+ffiPtruintPtrfloatPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> m ()
+ffiPtruintPtrfloatPtrfloatIOV fp v0 v1 v2 = liftIO (dynPtruintPtrfloatPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynPtruintPtrfloatPtrfloatPtrfloatIOV :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()
+
+ffiPtruintPtrfloatPtrfloatPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+ffiPtruintPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynPtruintPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintubyteubyteubyteubytefloatfloatfloatIOV :: FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintubyteubyteubyteubytefloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintubyteubyteubyteubytefloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintubyteubyteubyteubytefloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynPtruintPtrubytePtrfloatIOV :: FunPtr (Ptr GLuint -> Ptr GLubyte -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLubyte -> Ptr GLfloat -> IO ()
+
+ffiPtruintPtrubytePtrfloatIOV :: MonadIO m => FunPtr (Ptr GLuint -> Ptr GLubyte -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLubyte -> Ptr GLfloat -> m ()
+ffiPtruintPtrubytePtrfloatIOV fp v0 v1 v2 = liftIO (dynPtruintPtrubytePtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 = liftIO (dynuintfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12)
+
+foreign import ccall "dynamic" dynPtruintPtrfloatPtrfloatPtrfloatPtrfloatIOV :: FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()
+
+ffiPtruintPtrfloatPtrfloatPtrfloatPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+ffiPtruintPtrfloatPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynPtruintPtrfloatPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintfloatfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintfloatfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintfloatfloatfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynPtruintPtrfloatIOV :: FunPtr (Ptr GLuint -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> IO ()
+
+ffiPtruintPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLuint -> Ptr GLfloat -> IO ()) -> Ptr GLuint -> Ptr GLfloat -> m ()
+ffiPtruintPtrfloatIOV fp v0 v1 = liftIO (dynPtruintPtrfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynfloatbooleanIOV :: FunPtr (GLfloat -> GLboolean -> IO ()) -> GLfloat -> GLboolean -> IO ()
+
+ffifloatbooleanIOV :: MonadIO m => FunPtr (GLfloat -> GLboolean -> IO ()) -> GLfloat -> GLboolean -> m ()
+ffifloatbooleanIOV fp v0 v1 = liftIO (dynfloatbooleanIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynfixedbooleanIOV :: FunPtr (GLfixed -> GLboolean -> IO ()) -> GLfixed -> GLboolean -> IO ()
+
+ffifixedbooleanIOV :: MonadIO m => FunPtr (GLfixed -> GLboolean -> IO ()) -> GLfixed -> GLboolean -> m ()
+ffifixedbooleanIOV fp v0 v1 = liftIO (dynfixedbooleanIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynclampxbooleanIOV :: FunPtr (GLclampx -> GLboolean -> IO ()) -> GLclampx -> GLboolean -> IO ()
+
+fficlampxbooleanIOV :: MonadIO m => FunPtr (GLclampx -> GLboolean -> IO ()) -> GLclampx -> GLboolean -> m ()
+fficlampxbooleanIOV fp v0 v1 = liftIO (dynclampxbooleanIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynclampfbooleanIOV :: FunPtr (GLclampf -> GLboolean -> IO ()) -> GLclampf -> GLboolean -> IO ()
+
+fficlampfbooleanIOV :: MonadIO m => FunPtr (GLclampf -> GLboolean -> IO ()) -> GLclampf -> GLboolean -> m ()
+fficlampfbooleanIOV fp v0 v1 = liftIO (dynclampfbooleanIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintbitfieldIOV :: FunPtr (GLuint -> GLbitfield -> IO ()) -> GLuint -> GLbitfield -> IO ()
+
+ffiuintbitfieldIOV :: MonadIO m => FunPtr (GLuint -> GLbitfield -> IO ()) -> GLuint -> GLbitfield -> m ()
+ffiuintbitfieldIOV fp v0 v1 = liftIO (dynuintbitfieldIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintintsizeisizeiIOV :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffiintintsizeisizeiIOV :: MonadIO m => FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffiintintsizeisizeiIOV fp v0 v1 v2 v3 = liftIO (dynintintsizeisizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrintIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLsizei -> Ptr GLint -> IO ()
+
+ffiuintsizeiPtrintIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLint -> IO ()) -> GLuint -> GLsizei -> Ptr GLint -> m ()
+ffiuintsizeiPtrintIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintintintsizeisizeiIOV :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+ffiuintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+ffiuintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintintsizeisizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintPtrintIOV :: FunPtr (GLuint -> Ptr GLint -> IO ()) -> GLuint -> Ptr GLint -> IO ()
+
+ffiuintPtrintIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLint -> IO ()) -> GLuint -> Ptr GLint -> m ()
+ffiuintPtrintIOV fp v0 v1 = liftIO (dynuintPtrintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintbooleanuintintPtruintIOV :: FunPtr (GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> IO ()) -> GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> IO ()
+
+ffiuintbooleanuintintPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> IO ()) -> GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> m ()
+ffiuintbooleanuintintPtruintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintbooleanuintintPtruintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumenumsizeisizeienumenumPtrVPtrVIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> IO ()
+
+ffienumenumsizeisizeienumenumPtrVPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> Ptr () -> m ()
+ffienumenumsizeisizeienumenumPtrVPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumenumsizeisizeienumenumPtrVPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynsizeiPtruintenumPtrVsizeiIOV :: FunPtr (GLsizei -> Ptr GLuint -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLsizei -> Ptr GLuint -> GLenum -> Ptr () -> GLsizei -> IO ()
+
+ffisizeiPtruintenumPtrVsizeiIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLuint -> GLenum -> Ptr () -> GLsizei -> IO ()) -> GLsizei -> Ptr GLuint -> GLenum -> Ptr () -> GLsizei -> m ()
+ffisizeiPtruintenumPtrVsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynsizeiPtruintenumPtrVsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynenumuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintIOV fp v0 v1 v2 v3 = liftIO (dynenumuintuintuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumuintuintuintuintIOV :: FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffienumuintuintuintuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffienumuintuintuintuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumuintuintuintuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynhandleARBsizeiPtrcharARBPtrintIOV :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> IO ()) -> GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> IO ()
+
+ffihandleARBsizeiPtrcharARBPtrintIOV :: MonadIO m => FunPtr (GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> IO ()) -> GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> m ()
+ffihandleARBsizeiPtrcharARBPtrintIOV fp v0 v1 v2 v3 = liftIO (dynhandleARBsizeiPtrcharARBPtrintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintuintuintbitfieldIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLbitfield -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> GLbitfield -> IO ()
+
+ffiuintuintuintuintbitfieldIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLbitfield -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> GLbitfield -> m ()
+ffiuintuintuintuintbitfieldIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintuintuintbitfieldIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynsizeiuintIOV :: FunPtr (GLsizei -> GLuint -> IO ()) -> GLsizei -> GLuint -> IO ()
+
+ffisizeiuintIOV :: MonadIO m => FunPtr (GLsizei -> GLuint -> IO ()) -> GLsizei -> GLuint -> m ()
+ffisizeiuintIOV fp v0 v1 = liftIO (dynsizeiuintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynsizeienumPtrVuintenumuintenumPtrfloatIOV :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffisizeienumPtrVuintenumuintenumPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+ffisizeienumPtrVuintenumuintenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynsizeienumPtrVuintenumuintenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumuintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> IO ()
+
+ffiuintenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> m ()
+ffiuintenumuintIOV fp v0 v1 v2 = liftIO (dynuintenumuintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumenumintuintIOV :: FunPtr (GLenum -> GLenum -> GLint -> GLuint -> IO ()) -> GLenum -> GLenum -> GLint -> GLuint -> IO ()
+
+ffienumenumintuintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLuint -> IO ()) -> GLenum -> GLenum -> GLint -> GLuint -> m ()
+ffienumenumintuintIOV fp v0 v1 v2 v3 = liftIO (dynenumenumintuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumenumenumIOV :: FunPtr (GLenum -> GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> GLenum -> IO ()
+
+ffienumenumenumIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> GLenum -> m ()
+ffienumenumenumIOV fp v0 v1 v2 = liftIO (dynenumenumenumIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsizeienumPtrVuintintuintenumPtrfloatIOV :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> Ptr GLfloat -> IO ()
+
+ffisizeienumPtrVuintintuintenumPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> Ptr GLfloat -> m ()
+ffisizeienumPtrVuintintuintenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynsizeienumPtrVuintintuintenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynsizeienumPtrVuintenumuintenumenumPtrfloatIOV :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()
+
+ffisizeienumPtrVuintenumuintenumenumPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLenum -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+ffisizeienumPtrVuintenumuintenumenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynsizeienumPtrVuintenumuintenumenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumuintenumIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> IO ()) -> GLuint -> GLenum -> GLuint -> GLenum -> IO ()
+
+ffiuintenumuintenumIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> IO ()) -> GLuint -> GLenum -> GLuint -> GLenum -> m ()
+ffiuintenumuintenumIOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynsizeienumPtrVuintintuintenumenumPtrfloatIOV :: FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()
+
+ffisizeienumPtrVuintintuintenumenumPtrfloatIOV :: MonadIO m => FunPtr (GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> IO ()) -> GLsizei -> GLenum -> Ptr () -> GLuint -> GLint -> GLuint -> GLenum -> GLenum -> Ptr GLfloat -> m ()
+ffisizeienumPtrVuintintuintenumenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynsizeienumPtrVuintintuintenumenumPtrfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintintuintenumIOV :: FunPtr (GLuint -> GLint -> GLuint -> GLenum -> IO ()) -> GLuint -> GLint -> GLuint -> GLenum -> IO ()
+
+ffiuintintuintenumIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint -> GLenum -> IO ()) -> GLuint -> GLint -> GLuint -> GLenum -> m ()
+ffiuintintuintenumIOV fp v0 v1 v2 v3 = liftIO (dynuintintuintenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintenumenumenumenumIOV :: FunPtr (GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()
+
+ffiuintuintenumenumenumenumIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ()) -> GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+ffiuintuintenumenumenumenumIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintuintenumenumenumenumIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumuintintptrsizeiptrIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
+
+ffienumenumuintintptrsizeiptrIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+ffienumenumuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynenumenumuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynbytebyteIOV :: FunPtr (GLbyte -> GLbyte -> IO ()) -> GLbyte -> GLbyte -> IO ()
+
+ffibytebyteIOV :: MonadIO m => FunPtr (GLbyte -> GLbyte -> IO ()) -> GLbyte -> GLbyte -> m ()
+ffibytebyteIOV fp v0 v1 = liftIO (dynbytebyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynPtrfloatPtrfloatPtrfloatPtrfloatIOV :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()
+
+ffiPtrfloatPtrfloatPtrfloatPtrfloatIOV :: MonadIO m => FunPtr (Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> Ptr GLfloat -> m ()
+ffiPtrfloatPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynPtrfloatPtrfloatPtrfloatPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynfloatfloatubyteubyteubyteubytefloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatubyteubyteubyteubytefloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatubyteubyteubyteubytefloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynfloatfloatubyteubyteubyteubytefloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynPtrfloatPtrubytePtrfloatIOV :: FunPtr (Ptr GLfloat -> Ptr GLubyte -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLubyte -> Ptr GLfloat -> IO ()
+
+ffiPtrfloatPtrubytePtrfloatIOV :: MonadIO m => FunPtr (Ptr GLfloat -> Ptr GLubyte -> Ptr GLfloat -> IO ()) -> Ptr GLfloat -> Ptr GLubyte -> Ptr GLfloat -> m ()
+ffiPtrfloatPtrubytePtrfloatIOV fp v0 v1 v2 = liftIO (dynPtrfloatPtrubytePtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynhalfNVhalfNVIOV :: FunPtr (GLhalfNV -> GLhalfNV -> IO ()) -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffihalfNVhalfNVIOV :: MonadIO m => FunPtr (GLhalfNV -> GLhalfNV -> IO ()) -> GLhalfNV -> GLhalfNV -> m ()
+ffihalfNVhalfNVIOV fp v0 v1 = liftIO (dynhalfNVhalfNVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffifloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 = liftIO (dynfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14)
+
+foreign import ccall "dynamic" dynenumenumdoubleIOV :: FunPtr (GLenum -> GLenum -> GLdouble -> IO ()) -> GLenum -> GLenum -> GLdouble -> IO ()
+
+ffienumenumdoubleIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLdouble -> IO ()) -> GLenum -> GLenum -> GLdouble -> m ()
+ffienumenumdoubleIOV fp v0 v1 v2 = liftIO (dynenumenumdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynenumintintsizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintintsizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintintsizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumintintsizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumintintsizeisizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintintsizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintintsizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumintintsizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumsizeienumsizeisizeibooleanIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffienumsizeienumsizeisizeibooleanIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffienumsizeienumsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumsizeienumsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumsizeisizeiintsizeisizeibooleanIOV :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffienumsizeisizeiintsizeisizeibooleanIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffienumsizeisizeiintsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumsizeisizeiintsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumintintsizeisizeisizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintintsizeisizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintintsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumintintsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumintenumsizeisizeisizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintenumsizeisizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintenumsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumintenumsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynenumsizeienumsizeisizeisizeibooleanIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffienumsizeienumsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffienumsizeienumsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumsizeienumsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumsizeisizeiintsizeisizeisizeibooleanIOV :: FunPtr (GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffienumsizeisizeiintsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffienumsizeisizeiintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynenumsizeisizeiintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumintenumsizeisizeisizeisizeiintenumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintenumsizeisizeisizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintenumsizeisizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynenumintenumsizeisizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynenumintintintintsizeisizeisizeibooleanIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffienumintintintintsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffienumintintintintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumintintintintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumsizeienumsizeiIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()
+
+ffienumsizeienumsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
+ffienumsizeienumsizeiIOV fp v0 v1 v2 v3 = liftIO (dynenumsizeienumsizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynenumsizeienumsizeisizeisizeiIOV :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()
+
+ffienumsizeienumsizeisizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
+ffienumsizeienumsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumsizeienumsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynenumenumsizeisizeisizeisizeibitfieldIOV :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ()
+
+ffienumenumsizeisizeisizeisizeibitfieldIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ()) -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> m ()
+ffienumenumsizeisizeisizeisizeibitfieldIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumsizeisizeisizeisizeibitfieldIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumintintsizeienumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintintsizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynenumintintintsizeisizeienumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintintintsizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynenumintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynenumintintintintintsizeisizeisizeisizeienumenumPtrVIOV :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffienumintintintintintsizeisizeisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffienumintintintintintsizeisizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 = liftIO (dynenumintintintintintsizeisizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12)
+
+foreign import ccall "dynamic" dynuintenumuintintptrsizeiIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ()
+
+ffiuintenumuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> m ()
+ffiuintenumuintintptrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintintptrsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumenumuintintptrsizeiptrIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
+
+ffiuintenumenumuintintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+ffiuintenumenumuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintenumenumuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumintintsizeiintenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintintsizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintintsizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintenumintintsizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumintintsizeisizeiintenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintintsizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintintsizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynuintenumintintsizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintenumsizeisizeiintsizeisizeibooleanIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintenumsizeisizeiintsizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintenumsizeisizeiintsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumsizeisizeiintsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumsizeiintsizeisizeibooleanIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintenumsizeiintsizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintenumsizeiintsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumsizeiintsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumintintsizeisizeisizeiintenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintintsizeisizeisizeiintenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintintsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 = liftIO (dynuintenumintintsizeisizeisizeiintenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10)
+
+foreign import ccall "dynamic" dynuintenumsizeisizeiintsizeisizeisizeibooleanIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintenumsizeisizeiintsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintenumsizeisizeiintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintenumsizeisizeiintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumsizeiintsizeisizeisizeibooleanIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintenumsizeiintsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintenumsizeiintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumsizeiintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintintintintintsizeisizeisizeibooleanIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintintintintintsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintintintintintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintintintintintsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumenumfloatIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLfloat -> IO ()) -> GLuint -> GLenum -> GLenum -> GLfloat -> IO ()
+
+ffiuintenumenumfloatIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLfloat -> IO ()) -> GLuint -> GLenum -> GLenum -> GLfloat -> m ()
+ffiuintenumenumfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintenumenumfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumenumintIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLint -> IO ()
+
+ffiuintenumenumintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLint -> m ()
+ffiuintenumenumintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumenumintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeienumsizeiIOV :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> IO ()
+
+ffiuintsizeienumsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> m ()
+ffiuintsizeienumsizeiIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeienumsizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumsizeienumsizeiIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()
+
+ffiuintenumsizeienumsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
+ffiuintenumsizeienumsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumsizeienumsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumsizeienumsizeisizeiIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+ffiuintenumsizeienumsizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+ffiuintenumsizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintenumsizeienumsizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintsizeienumsizeisizeibooleanIOV :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintsizeienumsizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintsizeienumsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintsizeienumsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumsizeienumsizeisizeibooleanIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintenumsizeienumsizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintenumsizeienumsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumsizeienumsizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintsizeienumsizeisizeisizeiIOV :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()
+
+ffiuintsizeienumsizeisizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
+ffiuintsizeienumsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintsizeienumsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintenumsizeienumsizeisizeisizeiIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()
+
+ffiuintenumsizeienumsizeisizeisizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
+ffiuintenumsizeienumsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumsizeienumsizeisizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintsizeienumsizeisizeisizeibooleanIOV :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintsizeienumsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintsizeienumsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintsizeienumsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumsizeienumsizeisizeisizeibooleanIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()
+
+ffiuintenumsizeienumsizeisizeisizeibooleanIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+ffiuintenumsizeienumsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumsizeienumsizeisizeisizeibooleanIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintenumenumsizeisizeisizeisizeibitfieldIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ()) -> GLuint -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ()
+
+ffiuintenumenumsizeisizeisizeisizeibitfieldIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> IO ()) -> GLuint -> GLenum -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLbitfield -> m ()
+ffiuintenumenumsizeisizeisizeisizeibitfieldIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumenumsizeisizeisizeisizeibitfieldIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintintintsizeienumenumPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintintintsizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintenumintintsizeienumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintintsizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumintintsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintintintintsizeisizeienumenumPtrVIOV :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintintintintsizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 = liftIO (dynuintintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8)
+
+foreign import ccall "dynamic" dynuintenumintintintsizeisizeienumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintintintsizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynuintenumintintintsizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
+
+foreign import ccall "dynamic" dynuintenumintintintintsizeisizeisizeienumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+
+ffiuintenumintintintintsizeisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynuintenumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
+
+foreign import ccall "dynamic" dynuintenumuintenumuintuintuintuintIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintenumuintenumuintuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintenumuintenumuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintenumuintenumuintuintuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynenumuintenumenumIOV :: FunPtr (GLenum -> GLuint -> GLenum -> GLenum -> IO ()) -> GLenum -> GLuint -> GLenum -> GLenum -> IO ()
+
+ffienumuintenumenumIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLenum -> GLenum -> IO ()) -> GLenum -> GLuint -> GLenum -> GLenum -> m ()
+ffienumuintenumenumIOV fp v0 v1 v2 v3 = liftIO (dynenumuintenumenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynsizeiPtrintenumIOV :: FunPtr (GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLsizei -> Ptr GLint -> GLenum -> IO ()
+
+ffisizeiPtrintenumIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLsizei -> Ptr GLint -> GLenum -> m ()
+ffisizeiPtrintenumIOV fp v0 v1 v2 = liftIO (dynsizeiPtrintenumIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuintuintintptrsizeiIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()
+
+ffiuintuintuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
+ffiuintuintuintintptrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintuintintptrsizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynsizeiPtrintsizeiPtrintenumIOV :: FunPtr (GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> IO ()
+
+ffisizeiPtrintsizeiPtrintenumIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> m ()
+ffisizeiPtrintsizeiPtrintenumIOV fp v0 v1 v2 v3 v4 = liftIO (dynsizeiPtrintsizeiPtrintenumIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintsizeiPtrcharenumIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLchar -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr GLchar -> GLenum -> IO ()
+
+ffiuintsizeiPtrcharenumIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLchar -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr GLchar -> GLenum -> m ()
+ffiuintsizeiPtrcharenumIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrcharenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintsizeiPtrintenumIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr GLint -> GLenum -> IO ()
+
+ffiuintsizeiPtrintenumIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr GLint -> GLenum -> m ()
+ffiuintsizeiPtrintenumIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrintenumIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintdoubleIOV :: FunPtr (GLint -> GLdouble -> IO ()) -> GLint -> GLdouble -> IO ()
+
+ffiintdoubleIOV :: MonadIO m => FunPtr (GLint -> GLdouble -> IO ()) -> GLint -> GLdouble -> m ()
+ffiintdoubleIOV fp v0 v1 = liftIO (dynintdoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintsizeiPtrdoubleIOV :: FunPtr (GLint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLint -> GLsizei -> Ptr GLdouble -> IO ()
+
+ffiintsizeiPtrdoubleIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLdouble -> IO ()) -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+ffiintsizeiPtrdoubleIOV fp v0 v1 v2 = liftIO (dynintsizeiPtrdoubleIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintfloatIOV :: FunPtr (GLint -> GLfloat -> IO ()) -> GLint -> GLfloat -> IO ()
+
+ffiintfloatIOV :: MonadIO m => FunPtr (GLint -> GLfloat -> IO ()) -> GLint -> GLfloat -> m ()
+ffiintfloatIOV fp v0 v1 = liftIO (dynintfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintsizeiPtrfloatIOV :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffiintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLint -> GLsizei -> Ptr GLfloat -> m ()
+ffiintsizeiPtrfloatIOV fp v0 v1 v2 = liftIO (dynintsizeiPtrfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintint64EXTIOV :: FunPtr (GLint -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> IO ()
+
+ffiintint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> m ()
+ffiintint64EXTIOV fp v0 v1 = liftIO (dynintint64EXTIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintsizeiPtrint64EXTIOV :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ()) -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ()
+
+ffiintsizeiPtrint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ()) -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
+ffiintsizeiPtrint64EXTIOV fp v0 v1 v2 = liftIO (dynintsizeiPtrint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintsizeiPtrintIOV :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ()) -> GLint -> GLsizei -> Ptr GLint -> IO ()
+
+ffiintsizeiPtrintIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ()) -> GLint -> GLsizei -> Ptr GLint -> m ()
+ffiintsizeiPtrintIOV fp v0 v1 v2 = liftIO (dynintsizeiPtrintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintuintIOV :: FunPtr (GLint -> GLuint -> IO ()) -> GLint -> GLuint -> IO ()
+
+ffiintuintIOV :: MonadIO m => FunPtr (GLint -> GLuint -> IO ()) -> GLint -> GLuint -> m ()
+ffiintuintIOV fp v0 v1 = liftIO (dynintuintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintuint64EXTIOV :: FunPtr (GLint -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> IO ()
+
+ffiintuint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> m ()
+ffiintuint64EXTIOV fp v0 v1 = liftIO (dynintuint64EXTIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintsizeiPtruint64EXTIOV :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ()) -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ()
+
+ffiintsizeiPtruint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ()) -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
+ffiintsizeiPtruint64EXTIOV fp v0 v1 v2 = liftIO (dynintsizeiPtruint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintsizeiPtruintIOV :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ()) -> GLint -> GLsizei -> Ptr GLuint -> IO ()
+
+ffiintsizeiPtruintIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ()) -> GLint -> GLsizei -> Ptr GLuint -> m ()
+ffiintsizeiPtruintIOV fp v0 v1 v2 = liftIO (dynintsizeiPtruintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintint64EXTint64EXTIOV :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiintint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> m ()
+ffiintint64EXTint64EXTIOV fp v0 v1 v2 = liftIO (dynintint64EXTint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintuintuintIOV :: FunPtr (GLint -> GLuint -> GLuint -> IO ()) -> GLint -> GLuint -> GLuint -> IO ()
+
+ffiintuintuintIOV :: MonadIO m => FunPtr (GLint -> GLuint -> GLuint -> IO ()) -> GLint -> GLuint -> GLuint -> m ()
+ffiintuintuintIOV fp v0 v1 v2 = liftIO (dynintuintuintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintuint64EXTuint64EXTIOV :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiintuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiintuint64EXTuint64EXTIOV fp v0 v1 v2 = liftIO (dynintuint64EXTuint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintdoubledoubledoubleIOV :: FunPtr (GLint -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiintdoubledoubledoubleIOV :: MonadIO m => FunPtr (GLint -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiintdoubledoubledoubleIOV fp v0 v1 v2 v3 = liftIO (dynintdoubledoubledoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintfloatfloatfloatIOV :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiintfloatfloatfloatIOV :: MonadIO m => FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiintfloatfloatfloatIOV fp v0 v1 v2 v3 = liftIO (dynintfloatfloatfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintint64EXTint64EXTint64EXTIOV :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiintint64EXTint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+ffiintint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynintint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintuintuintuintIOV :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiintuintuintuintIOV :: MonadIO m => FunPtr (GLint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLint -> GLuint -> GLuint -> GLuint -> m ()
+ffiintuintuintuintIOV fp v0 v1 v2 v3 = liftIO (dynintuintuintuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintuint64EXTuint64EXTuint64EXTIOV :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiintuint64EXTuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiintuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynintuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintdoubledoubledoubledoubleIOV :: FunPtr (GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiintdoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 = liftIO (dynintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintfloatfloatfloatfloatIOV :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiintfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintint64EXTint64EXTint64EXTint64EXTIOV :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiintint64EXTint64EXTint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+ffiintint64EXTint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4 = liftIO (dynintint64EXTint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintuintuintuintuintIOV :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiintuintuintuintuintIOV :: MonadIO m => FunPtr (GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffiintuintuintuintuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynintuintuintuintuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintuint64EXTuint64EXTuint64EXTuint64EXTIOV :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiintuint64EXTuint64EXTuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiintuint64EXTuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4 = liftIO (dynintuint64EXTuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynintuint64IOV :: FunPtr (GLint -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> IO ()
+
+ffiintuint64IOV :: MonadIO m => FunPtr (GLint -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> m ()
+ffiintuint64IOV fp v0 v1 = liftIO (dynintuint64IOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintsizeiPtruint64IOV :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ()) -> GLint -> GLsizei -> Ptr GLuint64 -> IO ()
+
+ffiintsizeiPtruint64IOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ()) -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+ffiintsizeiPtruint64IOV fp v0 v1 v2 = liftIO (dynintsizeiPtruint64IOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynintsizeibooleanPtrdoubleIOV :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ()) -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ()
+
+ffiintsizeibooleanPtrdoubleIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ()) -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
+ffiintsizeibooleanPtrdoubleIOV fp v0 v1 v2 v3 = liftIO (dynintsizeibooleanPtrdoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintsizeibooleanPtrfloatIOV :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()) -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()
+
+ffiintsizeibooleanPtrfloatIOV :: MonadIO m => FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()) -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
+ffiintsizeibooleanPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynintsizeibooleanPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintsizeiPtrVenumIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()
+
+ffiuintuintsizeiPtrVenumIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr () -> GLenum -> m ()
+ffiuintuintsizeiPtrVenumIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintsizeiPtrVenumIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintbitfielduintIOV :: FunPtr (GLuint -> GLbitfield -> GLuint -> IO ()) -> GLuint -> GLbitfield -> GLuint -> IO ()
+
+ffiuintbitfielduintIOV :: MonadIO m => FunPtr (GLuint -> GLbitfield -> GLuint -> IO ()) -> GLuint -> GLbitfield -> GLuint -> m ()
+ffiuintbitfielduintIOV fp v0 v1 v2 = liftIO (dynuintbitfielduintIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynvdpauSurfaceNVenumsizeiPtrsizeiPtrintIOV :: FunPtr (GLvdpauSurfaceNV -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()) -> GLvdpauSurfaceNV -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()
+
+ffivdpauSurfaceNVenumsizeiPtrsizeiPtrintIOV :: MonadIO m => FunPtr (GLvdpauSurfaceNV -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ()) -> GLvdpauSurfaceNV -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
+ffivdpauSurfaceNVenumsizeiPtrsizeiPtrintIOV fp v0 v1 v2 v3 v4 = liftIO (dynvdpauSurfaceNVenumsizeiPtrsizeiPtrintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynPtrVPtrVIOV :: FunPtr (Ptr () -> Ptr () -> IO ()) -> Ptr () -> Ptr () -> IO ()
+
+ffiPtrVPtrVIOV :: MonadIO m => FunPtr (Ptr () -> Ptr () -> IO ()) -> Ptr () -> Ptr () -> m ()
+ffiPtrVPtrVIOV fp v0 v1 = liftIO (dynPtrVPtrVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynvdpauSurfaceNVIOboolean :: FunPtr (GLvdpauSurfaceNV -> IO GLboolean) -> GLvdpauSurfaceNV -> IO GLboolean
+
+ffivdpauSurfaceNVIOboolean :: MonadIO m => FunPtr (GLvdpauSurfaceNV -> IO GLboolean) -> GLvdpauSurfaceNV -> m GLboolean
+ffivdpauSurfaceNVIOboolean fp v0 = liftIO (dynvdpauSurfaceNVIOboolean fp v0)
+
+foreign import ccall "dynamic" dynsizeiPtrvdpauSurfaceNVIOV :: FunPtr (GLsizei -> Ptr GLvdpauSurfaceNV -> IO ()) -> GLsizei -> Ptr GLvdpauSurfaceNV -> IO ()
+
+ffisizeiPtrvdpauSurfaceNVIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLvdpauSurfaceNV -> IO ()) -> GLsizei -> Ptr GLvdpauSurfaceNV -> m ()
+ffisizeiPtrvdpauSurfaceNVIOV fp v0 v1 = liftIO (dynsizeiPtrvdpauSurfaceNVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynPtrVenumsizeiPtruintIOvdpauSurfaceNV :: FunPtr (Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> IO GLvdpauSurfaceNV) -> Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> IO GLvdpauSurfaceNV
+
+ffiPtrVenumsizeiPtruintIOvdpauSurfaceNV :: MonadIO m => FunPtr (Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> IO GLvdpauSurfaceNV) -> Ptr () -> GLenum -> GLsizei -> Ptr GLuint -> m GLvdpauSurfaceNV
+ffiPtrVenumsizeiPtruintIOvdpauSurfaceNV fp v0 v1 v2 v3 = liftIO (dynPtrVenumsizeiPtruintIOvdpauSurfaceNV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynvdpauSurfaceNVenumIOV :: FunPtr (GLvdpauSurfaceNV -> GLenum -> IO ()) -> GLvdpauSurfaceNV -> GLenum -> IO ()
+
+ffivdpauSurfaceNVenumIOV :: MonadIO m => FunPtr (GLvdpauSurfaceNV -> GLenum -> IO ()) -> GLvdpauSurfaceNV -> GLenum -> m ()
+ffivdpauSurfaceNVenumIOV fp v0 v1 = liftIO (dynvdpauSurfaceNVenumIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynvdpauSurfaceNVIOV :: FunPtr (GLvdpauSurfaceNV -> IO ()) -> GLvdpauSurfaceNV -> IO ()
+
+ffivdpauSurfaceNVIOV :: MonadIO m => FunPtr (GLvdpauSurfaceNV -> IO ()) -> GLvdpauSurfaceNV -> m ()
+ffivdpauSurfaceNVIOV fp v0 = liftIO (dynvdpauSurfaceNVIOV fp v0)
+
+foreign import ccall "dynamic" dynuintenumsizeiuintuintIOV :: FunPtr (GLuint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ()
+
+ffiuintenumsizeiuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLsizei -> GLuint -> GLuint -> IO ()) -> GLuint -> GLenum -> GLsizei -> GLuint -> GLuint -> m ()
+ffiuintenumsizeiuintuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumsizeiuintuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumuintPtrVIOV :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr () -> IO ()
+
+ffiuintenumuintPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLuint -> Ptr () -> m ()
+ffiuintenumuintPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintenumuintPtrVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintPtrbyteIOV :: FunPtr (GLuint -> Ptr GLbyte -> IO ()) -> GLuint -> Ptr GLbyte -> IO ()
+
+ffiuintPtrbyteIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLbyte -> IO ()) -> GLuint -> Ptr GLbyte -> m ()
+ffiuintPtrbyteIOV fp v0 v1 = liftIO (dynuintPtrbyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtrdoubleIOV :: FunPtr (GLuint -> Ptr GLdouble -> IO ()) -> GLuint -> Ptr GLdouble -> IO ()
+
+ffiuintPtrdoubleIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLdouble -> IO ()) -> GLuint -> Ptr GLdouble -> m ()
+ffiuintPtrdoubleIOV fp v0 v1 = liftIO (dynuintPtrdoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtrshortIOV :: FunPtr (GLuint -> Ptr GLshort -> IO ()) -> GLuint -> Ptr GLshort -> IO ()
+
+ffiuintPtrshortIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLshort -> IO ()) -> GLuint -> Ptr GLshort -> m ()
+ffiuintPtrshortIOV fp v0 v1 = liftIO (dynuintPtrshortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtrushortIOV :: FunPtr (GLuint -> Ptr GLushort -> IO ()) -> GLuint -> Ptr GLushort -> IO ()
+
+ffiuintPtrushortIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLushort -> IO ()) -> GLuint -> Ptr GLushort -> m ()
+ffiuintPtrushortIOV fp v0 v1 = liftIO (dynuintPtrushortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintuintintenumbooleanuintIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ()
+
+ffiuintuintintenumbooleanuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> m ()
+ffiuintuintintenumbooleanuintIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintuintintenumbooleanuintIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintuintintenumuintIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ()
+
+ffiuintuintintenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
+ffiuintuintintenumuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintintenumuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintintenumsizeiintptrIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()
+
+ffiuintuintintenumsizeiintptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+ffiuintuintintenumsizeiintptrIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintuintintenumsizeiintptrIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintuintsizeiintptrIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLsizei -> GLintptr -> IO ()
+
+ffiuintuintsizeiintptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLsizei -> GLintptr -> m ()
+ffiuintuintsizeiintptrIOV fp v0 v1 v2 v3 = liftIO (dynuintuintsizeiintptrIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuintenumsizeiintptrIOV :: FunPtr (GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> IO ()
+
+ffiuintuintenumsizeiintptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLenum -> GLsizei -> GLintptr -> m ()
+ffiuintuintenumsizeiintptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintenumsizeiintptrIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintenumintenumsizeiintptrIOV :: FunPtr (GLuint -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()
+
+ffiuintuintenumintenumsizeiintptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLenum -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+ffiuintuintenumintenumsizeiintptrIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintenumintenumsizeiintptrIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintuintuintintenumsizeiintptrIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()
+
+ffiuintuintuintintenumsizeiintptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+ffiuintuintuintintenumsizeiintptrIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintuintuintintenumsizeiintptrIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintuintuintintenumbooleansizeiintptrIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> IO ()
+
+ffiuintuintuintintenumbooleansizeiintptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> m ()
+ffiuintuintuintintenumbooleansizeiintptrIOV fp v0 v1 v2 v3 v4 v5 v6 v7 = liftIO (dynuintuintuintintenumbooleansizeiintptrIOV fp v0 v1 v2 v3 v4 v5 v6 v7)
+
+foreign import ccall "dynamic" dynuintuintsizeiPtruintPtrintptrPtrsizeiIOV :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ()
+
+ffiuintuintsizeiPtruintPtrintptrPtrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ()) -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> m ()
+ffiuintuintsizeiPtruintPtrintptrPtrsizeiIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintuintsizeiPtruintPtrintptrPtrsizeiIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintdoubleIOV :: FunPtr (GLuint -> GLdouble -> IO ()) -> GLuint -> GLdouble -> IO ()
+
+ffiuintdoubleIOV :: MonadIO m => FunPtr (GLuint -> GLdouble -> IO ()) -> GLuint -> GLdouble -> m ()
+ffiuintdoubleIOV fp v0 v1 = liftIO (dynuintdoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintfloatIOV :: FunPtr (GLuint -> GLfloat -> IO ()) -> GLuint -> GLfloat -> IO ()
+
+ffiuintfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> IO ()) -> GLuint -> GLfloat -> m ()
+ffiuintfloatIOV fp v0 v1 = liftIO (dynuintfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuinthalfNVIOV :: FunPtr (GLuint -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> IO ()
+
+ffiuinthalfNVIOV :: MonadIO m => FunPtr (GLuint -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> m ()
+ffiuinthalfNVIOV fp v0 v1 = liftIO (dynuinthalfNVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtrhalfNVIOV :: FunPtr (GLuint -> Ptr GLhalfNV -> IO ()) -> GLuint -> Ptr GLhalfNV -> IO ()
+
+ffiuintPtrhalfNVIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLhalfNV -> IO ()) -> GLuint -> Ptr GLhalfNV -> m ()
+ffiuintPtrhalfNVIOV fp v0 v1 = liftIO (dynuintPtrhalfNVIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintshortIOV :: FunPtr (GLuint -> GLshort -> IO ()) -> GLuint -> GLshort -> IO ()
+
+ffiuintshortIOV :: MonadIO m => FunPtr (GLuint -> GLshort -> IO ()) -> GLuint -> GLshort -> m ()
+ffiuintshortIOV fp v0 v1 = liftIO (dynuintshortIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatIOV fp v0 v1 v2 = liftIO (dynuintfloatfloatIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuinthalfNVhalfNVIOV :: FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffiuinthalfNVhalfNVIOV :: MonadIO m => FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> GLhalfNV -> m ()
+ffiuinthalfNVhalfNVIOV fp v0 v1 v2 = liftIO (dynuinthalfNVhalfNVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintshortshortIOV :: FunPtr (GLuint -> GLshort -> GLshort -> IO ()) -> GLuint -> GLshort -> GLshort -> IO ()
+
+ffiuintshortshortIOV :: MonadIO m => FunPtr (GLuint -> GLshort -> GLshort -> IO ()) -> GLuint -> GLshort -> GLshort -> m ()
+ffiuintshortshortIOV fp v0 v1 v2 = liftIO (dynuintshortshortIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintdoubledoubledoubleIOV :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiuintdoubledoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiuintdoubledoubledoubleIOV fp v0 v1 v2 v3 = liftIO (dynuintdoubledoubledoubleIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuinthalfNVhalfNVhalfNVIOV :: FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffiuinthalfNVhalfNVhalfNVIOV :: MonadIO m => FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+ffiuinthalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3 = liftIO (dynuinthalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintshortshortshortIOV :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> IO ()) -> GLuint -> GLshort -> GLshort -> GLshort -> IO ()
+
+ffiuintshortshortshortIOV :: MonadIO m => FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> IO ()) -> GLuint -> GLshort -> GLshort -> GLshort -> m ()
+ffiuintshortshortshortIOV fp v0 v1 v2 v3 = liftIO (dynuintshortshortshortIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintubyteubyteubyteubyteIOV :: FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ()) -> GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ()
+
+ffiuintubyteubyteubyteubyteIOV :: MonadIO m => FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ()) -> GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> m ()
+ffiuintubyteubyteubyteubyteIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintubyteubyteubyteubyteIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintdoubledoubledoubledoubleIOV :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
+
+ffiuintdoubledoubledoubledoubleIOV :: MonadIO m => FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()) -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
+ffiuintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintdoubledoubledoubledoubleIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintfloatfloatfloatfloatIOV :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+ffiuintfloatfloatfloatfloatIOV :: MonadIO m => FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()) -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+ffiuintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintfloatfloatfloatfloatIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuinthalfNVhalfNVhalfNVhalfNVIOV :: FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()
+
+ffiuinthalfNVhalfNVhalfNVhalfNVIOV :: MonadIO m => FunPtr (GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> IO ()) -> GLuint -> GLhalfNV -> GLhalfNV -> GLhalfNV -> GLhalfNV -> m ()
+ffiuinthalfNVhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuinthalfNVhalfNVhalfNVhalfNVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintshortshortshortshortIOV :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()
+
+ffiuintshortshortshortshortIOV :: MonadIO m => FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> IO ()) -> GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
+ffiuintshortshortshortshortIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintshortshortshortshortIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintenumbooleansizeiuintuintIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLuint -> GLuint -> IO ()
+
+ffiuintintenumbooleansizeiuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLuint -> GLuint -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> GLuint -> GLuint -> m ()
+ffiuintintenumbooleansizeiuintuintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintintenumbooleansizeiuintuintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import ccall "dynamic" dynuintintenumbooleanuintIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ()
+
+ffiuintintenumbooleanuintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> m ()
+ffiuintintenumbooleanuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintenumbooleanuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintenumbooleansizeiIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> IO ()
+
+ffiuintintenumbooleansizeiIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> m ()
+ffiuintintenumbooleansizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintenumbooleansizeiIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintuintuintuintIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+ffiuintuintuintuintuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+ffiuintuintuintuintuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintuintuintuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintintenumuintIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLint -> GLenum -> GLuint -> IO ()
+
+ffiuintintenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLint -> GLenum -> GLuint -> m ()
+ffiuintintenumuintIOV fp v0 v1 v2 v3 = liftIO (dynuintintenumuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintenumsizeiIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> IO ()) -> GLuint -> GLint -> GLenum -> GLsizei -> IO ()
+
+ffiuintintenumsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> IO ()) -> GLuint -> GLint -> GLenum -> GLsizei -> m ()
+ffiuintintenumsizeiIOV fp v0 v1 v2 v3 = liftIO (dynuintintenumsizeiIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintenumsizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintenumsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
+ffiuintintenumsizeiPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintenumsizeiPtrVIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintint64EXTIOV :: FunPtr (GLuint -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> IO ()
+
+ffiuintint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> m ()
+ffiuintint64EXTIOV fp v0 v1 = liftIO (dynuintint64EXTIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtrint64EXTIOV :: FunPtr (GLuint -> Ptr GLint64EXT -> IO ()) -> GLuint -> Ptr GLint64EXT -> IO ()
+
+ffiuintPtrint64EXTIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLint64EXT -> IO ()) -> GLuint -> Ptr GLint64EXT -> m ()
+ffiuintPtrint64EXTIOV fp v0 v1 = liftIO (dynuintPtrint64EXTIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintuint64EXTIOV :: FunPtr (GLuint -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> IO ()
+
+ffiuintuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> m ()
+ffiuintuint64EXTIOV fp v0 v1 = liftIO (dynuintuint64EXTIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintPtruint64EXTIOV :: FunPtr (GLuint -> Ptr GLuint64EXT -> IO ()) -> GLuint -> Ptr GLuint64EXT -> IO ()
+
+ffiuintPtruint64EXTIOV :: MonadIO m => FunPtr (GLuint -> Ptr GLuint64EXT -> IO ()) -> GLuint -> Ptr GLuint64EXT -> m ()
+ffiuintPtruint64EXTIOV fp v0 v1 = liftIO (dynuintPtruint64EXTIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynuintint64EXTint64EXTIOV :: FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiuintint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> GLint64EXT -> m ()
+ffiuintint64EXTint64EXTIOV fp v0 v1 v2 = liftIO (dynuintint64EXTint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintuint64EXTuint64EXTIOV :: FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiuintuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiuintuint64EXTuint64EXTIOV fp v0 v1 v2 = liftIO (dynuintuint64EXTuint64EXTIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintint64EXTint64EXTint64EXTIOV :: FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiuintint64EXTint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+ffiuintint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynuintint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintuint64EXTuint64EXTuint64EXTIOV :: FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiuintuint64EXTuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiuintuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 = liftIO (dynuintuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintint64EXTint64EXTint64EXTint64EXTIOV :: FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()
+
+ffiuintint64EXTint64EXTint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ()) -> GLuint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
+ffiuintint64EXTint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintint64EXTint64EXTint64EXTint64EXTIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuint64EXTuint64EXTuint64EXTuint64EXTIOV :: FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()
+
+ffiuintuint64EXTuint64EXTuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLuint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
+ffiuintuint64EXTuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuint64EXTuint64EXTuint64EXTuint64EXTIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintenumbooleanuintIOV :: FunPtr (GLuint -> GLenum -> GLboolean -> GLuint -> IO ()) -> GLuint -> GLenum -> GLboolean -> GLuint -> IO ()
+
+ffiuintenumbooleanuintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLboolean -> GLuint -> IO ()) -> GLuint -> GLenum -> GLboolean -> GLuint -> m ()
+ffiuintenumbooleanuintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumbooleanuintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintenumbooleanPtruintIOV :: FunPtr (GLuint -> GLenum -> GLboolean -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLboolean -> Ptr GLuint -> IO ()
+
+ffiuintenumbooleanPtruintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLboolean -> Ptr GLuint -> IO ()) -> GLuint -> GLenum -> GLboolean -> Ptr GLuint -> m ()
+ffiuintenumbooleanPtruintIOV fp v0 v1 v2 v3 = liftIO (dynuintenumbooleanPtruintIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynuintintenumbooleansizeiPtrVIOV :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> IO ()
+
+ffiuintintenumbooleansizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> m ()
+ffiuintintenumbooleansizeiPtrVIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintenumbooleansizeiPtrVIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import ccall "dynamic" dynuintsizeiPtrhalfNVIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLhalfNV -> IO ()) -> GLuint -> GLsizei -> Ptr GLhalfNV -> IO ()
+
+ffiuintsizeiPtrhalfNVIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLhalfNV -> IO ()) -> GLuint -> GLsizei -> Ptr GLhalfNV -> m ()
+ffiuintsizeiPtrhalfNVIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtrhalfNVIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintsizeiPtrshortIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLshort -> IO ()) -> GLuint -> GLsizei -> Ptr GLshort -> IO ()
+
+ffiuintsizeiPtrshortIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLshort -> IO ()) -> GLuint -> GLsizei -> Ptr GLshort -> m ()
+ffiuintsizeiPtrshortIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtrshortIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintsizeiPtrubyteIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> IO ()
+
+ffiuintsizeiPtrubyteIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> IO ()) -> GLuint -> GLsizei -> Ptr GLubyte -> m ()
+ffiuintsizeiPtrubyteIOV fp v0 v1 v2 = liftIO (dynuintsizeiPtrubyteIOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintPtruintPtruint64EXTIOenum :: FunPtr (GLuint -> Ptr GLuint -> Ptr GLuint64EXT -> IO GLenum) -> GLuint -> Ptr GLuint -> Ptr GLuint64EXT -> IO GLenum
+
+ffiuintPtruintPtruint64EXTIOenum :: MonadIO m => FunPtr (GLuint -> Ptr GLuint -> Ptr GLuint64EXT -> IO GLenum) -> GLuint -> Ptr GLuint -> Ptr GLuint64EXT -> m GLenum
+ffiuintPtruintPtruint64EXTIOenum fp v0 v1 v2 = liftIO (dynuintPtruintPtruint64EXTIOenum fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynsyncbitfielduint64IOV :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ()) -> GLsync -> GLbitfield -> GLuint64 -> IO ()
+
+ffisyncbitfielduint64IOV :: MonadIO m => FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ()) -> GLsync -> GLbitfield -> GLuint64 -> m ()
+ffisyncbitfielduint64IOV fp v0 v1 v2 = liftIO (dynsyncbitfielduint64IOV fp v0 v1 v2)
+
+foreign import ccall "dynamic" dynuintsizeiPtruintPtrfloatIOV :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ()
+
+ffiuintsizeiPtruintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLfloat -> m ()
+ffiuintsizeiPtruintPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtruintPtrfloatIOV fp v0 v1 v2 v3)
+
+foreign import ccall "dynamic" dynintPtrbyteIOV :: FunPtr (GLint -> Ptr GLbyte -> IO ()) -> GLint -> Ptr GLbyte -> IO ()
+
+ffiintPtrbyteIOV :: MonadIO m => FunPtr (GLint -> Ptr GLbyte -> IO ()) -> GLint -> Ptr GLbyte -> m ()
+ffiintPtrbyteIOV fp v0 v1 = liftIO (dynintPtrbyteIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtrdoubleIOV :: FunPtr (GLint -> Ptr GLdouble -> IO ()) -> GLint -> Ptr GLdouble -> IO ()
+
+ffiintPtrdoubleIOV :: MonadIO m => FunPtr (GLint -> Ptr GLdouble -> IO ()) -> GLint -> Ptr GLdouble -> m ()
+ffiintPtrdoubleIOV fp v0 v1 = liftIO (dynintPtrdoubleIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtrfloatIOV :: FunPtr (GLint -> Ptr GLfloat -> IO ()) -> GLint -> Ptr GLfloat -> IO ()
+
+ffiintPtrfloatIOV :: MonadIO m => FunPtr (GLint -> Ptr GLfloat -> IO ()) -> GLint -> Ptr GLfloat -> m ()
+ffiintPtrfloatIOV fp v0 v1 = liftIO (dynintPtrfloatIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtrintIOV :: FunPtr (GLint -> Ptr GLint -> IO ()) -> GLint -> Ptr GLint -> IO ()
+
+ffiintPtrintIOV :: MonadIO m => FunPtr (GLint -> Ptr GLint -> IO ()) -> GLint -> Ptr GLint -> m ()
+ffiintPtrintIOV fp v0 v1 = liftIO (dynintPtrintIOV fp v0 v1)
+
+foreign import ccall "dynamic" dynintPtrshortIOV :: FunPtr (GLint -> Ptr GLshort -> IO ()) -> GLint -> Ptr GLshort -> IO ()
+
+ffiintPtrshortIOV :: MonadIO m => FunPtr (GLint -> Ptr GLshort -> IO ()) -> GLint -> Ptr GLshort -> m ()
+ffiintPtrshortIOV fp v0 v1 = liftIO (dynintPtrshortIOV fp v0 v1)
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility32.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility32.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility32.hs
@@ -0,0 +1,791 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility32 (
+  -- * Graphics.GL.Raw.Profile.Compatibility32
+    module Graphics.GL.Raw.Profile.Core32
+  , glAccum
+  , glAlphaFunc
+  , glAreTexturesResident
+  , glArrayElement
+  , glBegin
+  , glBitmap
+  , glCallList
+  , glCallLists
+  , glClearAccum
+  , glClearIndex
+  , glClientActiveTexture
+  , glClipPlane
+  , glColor3b
+  , glColor3bv
+  , glColor3d
+  , glColor3dv
+  , glColor3f
+  , glColor3fv
+  , glColor3i
+  , glColor3iv
+  , glColor3s
+  , glColor3sv
+  , glColor3ub
+  , glColor3ubv
+  , glColor3ui
+  , glColor3uiv
+  , glColor3us
+  , glColor3usv
+  , glColor4b
+  , glColor4bv
+  , glColor4d
+  , glColor4dv
+  , glColor4f
+  , glColor4fv
+  , glColor4i
+  , glColor4iv
+  , glColor4s
+  , glColor4sv
+  , glColor4ub
+  , glColor4ubv
+  , glColor4ui
+  , glColor4uiv
+  , glColor4us
+  , glColor4usv
+  , glColorMaterial
+  , glColorPointer
+  , glCopyPixels
+  , glDeleteLists
+  , glDisableClientState
+  , glDrawPixels
+  , glEdgeFlag
+  , glEdgeFlagPointer
+  , glEdgeFlagv
+  , glEnableClientState
+  , glEnd
+  , glEndList
+  , glEvalCoord1d
+  , glEvalCoord1dv
+  , glEvalCoord1f
+  , glEvalCoord1fv
+  , glEvalCoord2d
+  , glEvalCoord2dv
+  , glEvalCoord2f
+  , glEvalCoord2fv
+  , glEvalMesh1
+  , glEvalMesh2
+  , glEvalPoint1
+  , glEvalPoint2
+  , glFeedbackBuffer
+  , glFogCoordPointer
+  , glFogCoordd
+  , glFogCoorddv
+  , glFogCoordf
+  , glFogCoordfv
+  , glFogf
+  , glFogfv
+  , glFogi
+  , glFogiv
+  , glFrustum
+  , glGenLists
+  , glGetClipPlane
+  , glGetLightfv
+  , glGetLightiv
+  , glGetMapdv
+  , glGetMapfv
+  , glGetMapiv
+  , glGetMaterialfv
+  , glGetMaterialiv
+  , glGetPixelMapfv
+  , glGetPixelMapuiv
+  , glGetPixelMapusv
+  , glGetPointerv
+  , glGetPolygonStipple
+  , glGetTexEnvfv
+  , glGetTexEnviv
+  , glGetTexGendv
+  , glGetTexGenfv
+  , glGetTexGeniv
+  , glIndexMask
+  , glIndexPointer
+  , glIndexd
+  , glIndexdv
+  , glIndexf
+  , glIndexfv
+  , glIndexi
+  , glIndexiv
+  , glIndexs
+  , glIndexsv
+  , glIndexub
+  , glIndexubv
+  , glInitNames
+  , glInterleavedArrays
+  , glIsList
+  , glLightModelf
+  , glLightModelfv
+  , glLightModeli
+  , glLightModeliv
+  , glLightf
+  , glLightfv
+  , glLighti
+  , glLightiv
+  , glLineStipple
+  , glListBase
+  , glLoadIdentity
+  , glLoadMatrixd
+  , glLoadMatrixf
+  , glLoadName
+  , glLoadTransposeMatrixd
+  , glLoadTransposeMatrixf
+  , glMap1d
+  , glMap1f
+  , glMap2d
+  , glMap2f
+  , glMapGrid1d
+  , glMapGrid1f
+  , glMapGrid2d
+  , glMapGrid2f
+  , glMaterialf
+  , glMaterialfv
+  , glMateriali
+  , glMaterialiv
+  , glMatrixMode
+  , glMultMatrixd
+  , glMultMatrixf
+  , glMultTransposeMatrixd
+  , glMultTransposeMatrixf
+  , glMultiTexCoord1d
+  , glMultiTexCoord1dv
+  , glMultiTexCoord1f
+  , glMultiTexCoord1fv
+  , glMultiTexCoord1i
+  , glMultiTexCoord1iv
+  , glMultiTexCoord1s
+  , glMultiTexCoord1sv
+  , glMultiTexCoord2d
+  , glMultiTexCoord2dv
+  , glMultiTexCoord2f
+  , glMultiTexCoord2fv
+  , glMultiTexCoord2i
+  , glMultiTexCoord2iv
+  , glMultiTexCoord2s
+  , glMultiTexCoord2sv
+  , glMultiTexCoord3d
+  , glMultiTexCoord3dv
+  , glMultiTexCoord3f
+  , glMultiTexCoord3fv
+  , glMultiTexCoord3i
+  , glMultiTexCoord3iv
+  , glMultiTexCoord3s
+  , glMultiTexCoord3sv
+  , glMultiTexCoord4d
+  , glMultiTexCoord4dv
+  , glMultiTexCoord4f
+  , glMultiTexCoord4fv
+  , glMultiTexCoord4i
+  , glMultiTexCoord4iv
+  , glMultiTexCoord4s
+  , glMultiTexCoord4sv
+  , glNewList
+  , glNormal3b
+  , glNormal3bv
+  , glNormal3d
+  , glNormal3dv
+  , glNormal3f
+  , glNormal3fv
+  , glNormal3i
+  , glNormal3iv
+  , glNormal3s
+  , glNormal3sv
+  , glNormalPointer
+  , glOrtho
+  , glPassThrough
+  , glPixelMapfv
+  , glPixelMapuiv
+  , glPixelMapusv
+  , glPixelTransferf
+  , glPixelTransferi
+  , glPixelZoom
+  , glPolygonStipple
+  , glPopAttrib
+  , glPopClientAttrib
+  , glPopMatrix
+  , glPopName
+  , glPrioritizeTextures
+  , glPushAttrib
+  , glPushClientAttrib
+  , glPushMatrix
+  , glPushName
+  , glRasterPos2d
+  , glRasterPos2dv
+  , glRasterPos2f
+  , glRasterPos2fv
+  , glRasterPos2i
+  , glRasterPos2iv
+  , glRasterPos2s
+  , glRasterPos2sv
+  , glRasterPos3d
+  , glRasterPos3dv
+  , glRasterPos3f
+  , glRasterPos3fv
+  , glRasterPos3i
+  , glRasterPos3iv
+  , glRasterPos3s
+  , glRasterPos3sv
+  , glRasterPos4d
+  , glRasterPos4dv
+  , glRasterPos4f
+  , glRasterPos4fv
+  , glRasterPos4i
+  , glRasterPos4iv
+  , glRasterPos4s
+  , glRasterPos4sv
+  , glRectd
+  , glRectdv
+  , glRectf
+  , glRectfv
+  , glRecti
+  , glRectiv
+  , glRects
+  , glRectsv
+  , glRenderMode
+  , glRotated
+  , glRotatef
+  , glScaled
+  , glScalef
+  , glSecondaryColor3b
+  , glSecondaryColor3bv
+  , glSecondaryColor3d
+  , glSecondaryColor3dv
+  , glSecondaryColor3f
+  , glSecondaryColor3fv
+  , glSecondaryColor3i
+  , glSecondaryColor3iv
+  , glSecondaryColor3s
+  , glSecondaryColor3sv
+  , glSecondaryColor3ub
+  , glSecondaryColor3ubv
+  , glSecondaryColor3ui
+  , glSecondaryColor3uiv
+  , glSecondaryColor3us
+  , glSecondaryColor3usv
+  , glSecondaryColorPointer
+  , glSelectBuffer
+  , glShadeModel
+  , glTexCoord1d
+  , glTexCoord1dv
+  , glTexCoord1f
+  , glTexCoord1fv
+  , glTexCoord1i
+  , glTexCoord1iv
+  , glTexCoord1s
+  , glTexCoord1sv
+  , glTexCoord2d
+  , glTexCoord2dv
+  , glTexCoord2f
+  , glTexCoord2fv
+  , glTexCoord2i
+  , glTexCoord2iv
+  , glTexCoord2s
+  , glTexCoord2sv
+  , glTexCoord3d
+  , glTexCoord3dv
+  , glTexCoord3f
+  , glTexCoord3fv
+  , glTexCoord3i
+  , glTexCoord3iv
+  , glTexCoord3s
+  , glTexCoord3sv
+  , glTexCoord4d
+  , glTexCoord4dv
+  , glTexCoord4f
+  , glTexCoord4fv
+  , glTexCoord4i
+  , glTexCoord4iv
+  , glTexCoord4s
+  , glTexCoord4sv
+  , glTexCoordPointer
+  , glTexEnvf
+  , glTexEnvfv
+  , glTexEnvi
+  , glTexEnviv
+  , glTexGend
+  , glTexGendv
+  , glTexGenf
+  , glTexGenfv
+  , glTexGeni
+  , glTexGeniv
+  , glTranslated
+  , glTranslatef
+  , glVertex2d
+  , glVertex2dv
+  , glVertex2f
+  , glVertex2fv
+  , glVertex2i
+  , glVertex2iv
+  , glVertex2s
+  , glVertex2sv
+  , glVertex3d
+  , glVertex3dv
+  , glVertex3f
+  , glVertex3fv
+  , glVertex3i
+  , glVertex3iv
+  , glVertex3s
+  , glVertex3sv
+  , glVertex4d
+  , glVertex4dv
+  , glVertex4f
+  , glVertex4fv
+  , glVertex4i
+  , glVertex4iv
+  , glVertex4s
+  , glVertex4sv
+  , glVertexPointer
+  , glWindowPos2d
+  , glWindowPos2dv
+  , glWindowPos2f
+  , glWindowPos2fv
+  , glWindowPos2i
+  , glWindowPos2iv
+  , glWindowPos2s
+  , glWindowPos2sv
+  , glWindowPos3d
+  , glWindowPos3dv
+  , glWindowPos3f
+  , glWindowPos3fv
+  , glWindowPos3i
+  , glWindowPos3iv
+  , glWindowPos3s
+  , glWindowPos3sv
+  , pattern GL_2D
+  , pattern GL_2_BYTES
+  , pattern GL_3D
+  , pattern GL_3D_COLOR
+  , pattern GL_3D_COLOR_TEXTURE
+  , pattern GL_3_BYTES
+  , pattern GL_4D_COLOR_TEXTURE
+  , pattern GL_4_BYTES
+  , pattern GL_ACCUM
+  , pattern GL_ACCUM_ALPHA_BITS
+  , pattern GL_ACCUM_BLUE_BITS
+  , pattern GL_ACCUM_BUFFER_BIT
+  , pattern GL_ACCUM_CLEAR_VALUE
+  , pattern GL_ACCUM_GREEN_BITS
+  , pattern GL_ACCUM_RED_BITS
+  , pattern GL_ADD
+  , pattern GL_ADD_SIGNED
+  , pattern GL_ALIASED_POINT_SIZE_RANGE
+  , pattern GL_ALL_ATTRIB_BITS
+  , pattern GL_ALPHA12
+  , pattern GL_ALPHA16
+  , pattern GL_ALPHA4
+  , pattern GL_ALPHA8
+  , pattern GL_ALPHA_BIAS
+  , pattern GL_ALPHA_BITS
+  , pattern GL_ALPHA_INTEGER
+  , pattern GL_ALPHA_SCALE
+  , pattern GL_ALPHA_TEST
+  , pattern GL_ALPHA_TEST_FUNC
+  , pattern GL_ALPHA_TEST_REF
+  , pattern GL_AMBIENT
+  , pattern GL_AMBIENT_AND_DIFFUSE
+  , pattern GL_ATTRIB_STACK_DEPTH
+  , pattern GL_AUTO_NORMAL
+  , pattern GL_AUX0
+  , pattern GL_AUX1
+  , pattern GL_AUX2
+  , pattern GL_AUX3
+  , pattern GL_AUX_BUFFERS
+  , pattern GL_BITMAP
+  , pattern GL_BITMAP_TOKEN
+  , pattern GL_BLUE_BIAS
+  , pattern GL_BLUE_BITS
+  , pattern GL_BLUE_SCALE
+  , pattern GL_C3F_V3F
+  , pattern GL_C4F_N3F_V3F
+  , pattern GL_C4UB_V2F
+  , pattern GL_C4UB_V3F
+  , pattern GL_CLAMP
+  , pattern GL_CLAMP_FRAGMENT_COLOR
+  , pattern GL_CLAMP_VERTEX_COLOR
+  , pattern GL_CLIENT_ACTIVE_TEXTURE
+  , pattern GL_CLIENT_ALL_ATTRIB_BITS
+  , pattern GL_CLIENT_ATTRIB_STACK_DEPTH
+  , pattern GL_CLIENT_PIXEL_STORE_BIT
+  , pattern GL_CLIENT_VERTEX_ARRAY_BIT
+  , pattern GL_CLIP_PLANE0
+  , pattern GL_CLIP_PLANE1
+  , pattern GL_CLIP_PLANE2
+  , pattern GL_CLIP_PLANE3
+  , pattern GL_CLIP_PLANE4
+  , pattern GL_CLIP_PLANE5
+  , pattern GL_COEFF
+  , pattern GL_COLOR_ARRAY
+  , pattern GL_COLOR_ARRAY_BUFFER_BINDING
+  , pattern GL_COLOR_ARRAY_POINTER
+  , pattern GL_COLOR_ARRAY_SIZE
+  , pattern GL_COLOR_ARRAY_STRIDE
+  , pattern GL_COLOR_ARRAY_TYPE
+  , pattern GL_COLOR_INDEX
+  , pattern GL_COLOR_INDEXES
+  , pattern GL_COLOR_MATERIAL
+  , pattern GL_COLOR_MATERIAL_FACE
+  , pattern GL_COLOR_MATERIAL_PARAMETER
+  , pattern GL_COLOR_SUM
+  , pattern GL_COMBINE
+  , pattern GL_COMBINE_ALPHA
+  , pattern GL_COMBINE_RGB
+  , pattern GL_COMPARE_R_TO_TEXTURE
+  , pattern GL_COMPILE
+  , pattern GL_COMPILE_AND_EXECUTE
+  , pattern GL_COMPRESSED_ALPHA
+  , pattern GL_COMPRESSED_INTENSITY
+  , pattern GL_COMPRESSED_LUMINANCE
+  , pattern GL_COMPRESSED_LUMINANCE_ALPHA
+  , pattern GL_COMPRESSED_SLUMINANCE
+  , pattern GL_COMPRESSED_SLUMINANCE_ALPHA
+  , pattern GL_CONSTANT
+  , pattern GL_CONSTANT_ATTENUATION
+  , pattern GL_COORD_REPLACE
+  , pattern GL_COPY_PIXEL_TOKEN
+  , pattern GL_CURRENT_BIT
+  , pattern GL_CURRENT_COLOR
+  , pattern GL_CURRENT_FOG_COORD
+  , pattern GL_CURRENT_FOG_COORDINATE
+  , pattern GL_CURRENT_INDEX
+  , pattern GL_CURRENT_NORMAL
+  , pattern GL_CURRENT_RASTER_COLOR
+  , pattern GL_CURRENT_RASTER_DISTANCE
+  , pattern GL_CURRENT_RASTER_INDEX
+  , pattern GL_CURRENT_RASTER_POSITION
+  , pattern GL_CURRENT_RASTER_POSITION_VALID
+  , pattern GL_CURRENT_RASTER_SECONDARY_COLOR
+  , pattern GL_CURRENT_RASTER_TEXTURE_COORDS
+  , pattern GL_CURRENT_SECONDARY_COLOR
+  , pattern GL_CURRENT_TEXTURE_COORDS
+  , pattern GL_DECAL
+  , pattern GL_DEPTH_BIAS
+  , pattern GL_DEPTH_BITS
+  , pattern GL_DEPTH_SCALE
+  , pattern GL_DEPTH_TEXTURE_MODE
+  , pattern GL_DIFFUSE
+  , pattern GL_DOMAIN
+  , pattern GL_DOT3_RGB
+  , pattern GL_DOT3_RGBA
+  , pattern GL_DRAW_PIXEL_TOKEN
+  , pattern GL_EDGE_FLAG
+  , pattern GL_EDGE_FLAG_ARRAY
+  , pattern GL_EDGE_FLAG_ARRAY_BUFFER_BINDING
+  , pattern GL_EDGE_FLAG_ARRAY_POINTER
+  , pattern GL_EDGE_FLAG_ARRAY_STRIDE
+  , pattern GL_EMISSION
+  , pattern GL_ENABLE_BIT
+  , pattern GL_EVAL_BIT
+  , pattern GL_EXP
+  , pattern GL_EXP2
+  , pattern GL_EYE_LINEAR
+  , pattern GL_EYE_PLANE
+  , pattern GL_FEEDBACK
+  , pattern GL_FEEDBACK_BUFFER_POINTER
+  , pattern GL_FEEDBACK_BUFFER_SIZE
+  , pattern GL_FEEDBACK_BUFFER_TYPE
+  , pattern GL_FLAT
+  , pattern GL_FOG
+  , pattern GL_FOG_BIT
+  , pattern GL_FOG_COLOR
+  , pattern GL_FOG_COORD
+  , pattern GL_FOG_COORDINATE
+  , pattern GL_FOG_COORDINATE_ARRAY
+  , pattern GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+  , pattern GL_FOG_COORDINATE_ARRAY_POINTER
+  , pattern GL_FOG_COORDINATE_ARRAY_STRIDE
+  , pattern GL_FOG_COORDINATE_ARRAY_TYPE
+  , pattern GL_FOG_COORDINATE_SOURCE
+  , pattern GL_FOG_COORD_ARRAY
+  , pattern GL_FOG_COORD_ARRAY_BUFFER_BINDING
+  , pattern GL_FOG_COORD_ARRAY_POINTER
+  , pattern GL_FOG_COORD_ARRAY_STRIDE
+  , pattern GL_FOG_COORD_ARRAY_TYPE
+  , pattern GL_FOG_COORD_SRC
+  , pattern GL_FOG_DENSITY
+  , pattern GL_FOG_END
+  , pattern GL_FOG_HINT
+  , pattern GL_FOG_INDEX
+  , pattern GL_FOG_MODE
+  , pattern GL_FOG_START
+  , pattern GL_FRAGMENT_DEPTH
+  , pattern GL_GENERATE_MIPMAP
+  , pattern GL_GENERATE_MIPMAP_HINT
+  , pattern GL_GREEN_BIAS
+  , pattern GL_GREEN_BITS
+  , pattern GL_GREEN_SCALE
+  , pattern GL_HINT_BIT
+  , pattern GL_INDEX_ARRAY
+  , pattern GL_INDEX_ARRAY_BUFFER_BINDING
+  , pattern GL_INDEX_ARRAY_POINTER
+  , pattern GL_INDEX_ARRAY_STRIDE
+  , pattern GL_INDEX_ARRAY_TYPE
+  , pattern GL_INDEX_BITS
+  , pattern GL_INDEX_CLEAR_VALUE
+  , pattern GL_INDEX_LOGIC_OP
+  , pattern GL_INDEX_MODE
+  , pattern GL_INDEX_OFFSET
+  , pattern GL_INDEX_SHIFT
+  , pattern GL_INDEX_WRITEMASK
+  , pattern GL_INTENSITY
+  , pattern GL_INTENSITY12
+  , pattern GL_INTENSITY16
+  , pattern GL_INTENSITY4
+  , pattern GL_INTENSITY8
+  , pattern GL_INTERPOLATE
+  , pattern GL_LIGHT0
+  , pattern GL_LIGHT1
+  , pattern GL_LIGHT2
+  , pattern GL_LIGHT3
+  , pattern GL_LIGHT4
+  , pattern GL_LIGHT5
+  , pattern GL_LIGHT6
+  , pattern GL_LIGHT7
+  , pattern GL_LIGHTING
+  , pattern GL_LIGHTING_BIT
+  , pattern GL_LIGHT_MODEL_AMBIENT
+  , pattern GL_LIGHT_MODEL_COLOR_CONTROL
+  , pattern GL_LIGHT_MODEL_LOCAL_VIEWER
+  , pattern GL_LIGHT_MODEL_TWO_SIDE
+  , pattern GL_LINEAR_ATTENUATION
+  , pattern GL_LINE_BIT
+  , pattern GL_LINE_RESET_TOKEN
+  , pattern GL_LINE_STIPPLE
+  , pattern GL_LINE_STIPPLE_PATTERN
+  , pattern GL_LINE_STIPPLE_REPEAT
+  , pattern GL_LINE_TOKEN
+  , pattern GL_LIST_BASE
+  , pattern GL_LIST_BIT
+  , pattern GL_LIST_INDEX
+  , pattern GL_LIST_MODE
+  , pattern GL_LOAD
+  , pattern GL_LOGIC_OP
+  , pattern GL_LUMINANCE
+  , pattern GL_LUMINANCE12
+  , pattern GL_LUMINANCE12_ALPHA12
+  , pattern GL_LUMINANCE12_ALPHA4
+  , pattern GL_LUMINANCE16
+  , pattern GL_LUMINANCE16_ALPHA16
+  , pattern GL_LUMINANCE4
+  , pattern GL_LUMINANCE4_ALPHA4
+  , pattern GL_LUMINANCE6_ALPHA2
+  , pattern GL_LUMINANCE8
+  , pattern GL_LUMINANCE8_ALPHA8
+  , pattern GL_LUMINANCE_ALPHA
+  , pattern GL_MAP1_COLOR_4
+  , pattern GL_MAP1_GRID_DOMAIN
+  , pattern GL_MAP1_GRID_SEGMENTS
+  , pattern GL_MAP1_INDEX
+  , pattern GL_MAP1_NORMAL
+  , pattern GL_MAP1_TEXTURE_COORD_1
+  , pattern GL_MAP1_TEXTURE_COORD_2
+  , pattern GL_MAP1_TEXTURE_COORD_3
+  , pattern GL_MAP1_TEXTURE_COORD_4
+  , pattern GL_MAP1_VERTEX_3
+  , pattern GL_MAP1_VERTEX_4
+  , pattern GL_MAP2_COLOR_4
+  , pattern GL_MAP2_GRID_DOMAIN
+  , pattern GL_MAP2_GRID_SEGMENTS
+  , pattern GL_MAP2_INDEX
+  , pattern GL_MAP2_NORMAL
+  , pattern GL_MAP2_TEXTURE_COORD_1
+  , pattern GL_MAP2_TEXTURE_COORD_2
+  , pattern GL_MAP2_TEXTURE_COORD_3
+  , pattern GL_MAP2_TEXTURE_COORD_4
+  , pattern GL_MAP2_VERTEX_3
+  , pattern GL_MAP2_VERTEX_4
+  , pattern GL_MAP_COLOR
+  , pattern GL_MAP_STENCIL
+  , pattern GL_MATRIX_MODE
+  , pattern GL_MAX_ATTRIB_STACK_DEPTH
+  , pattern GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
+  , pattern GL_MAX_CLIP_PLANES
+  , pattern GL_MAX_EVAL_ORDER
+  , pattern GL_MAX_LIGHTS
+  , pattern GL_MAX_LIST_NESTING
+  , pattern GL_MAX_MODELVIEW_STACK_DEPTH
+  , pattern GL_MAX_NAME_STACK_DEPTH
+  , pattern GL_MAX_PIXEL_MAP_TABLE
+  , pattern GL_MAX_PROJECTION_STACK_DEPTH
+  , pattern GL_MAX_TEXTURE_COORDS
+  , pattern GL_MAX_TEXTURE_STACK_DEPTH
+  , pattern GL_MAX_TEXTURE_UNITS
+  , pattern GL_MODELVIEW
+  , pattern GL_MODELVIEW_MATRIX
+  , pattern GL_MODELVIEW_STACK_DEPTH
+  , pattern GL_MODULATE
+  , pattern GL_MULT
+  , pattern GL_MULTISAMPLE_BIT
+  , pattern GL_N3F_V3F
+  , pattern GL_NAME_STACK_DEPTH
+  , pattern GL_NORMALIZE
+  , pattern GL_NORMAL_ARRAY
+  , pattern GL_NORMAL_ARRAY_BUFFER_BINDING
+  , pattern GL_NORMAL_ARRAY_POINTER
+  , pattern GL_NORMAL_ARRAY_STRIDE
+  , pattern GL_NORMAL_ARRAY_TYPE
+  , pattern GL_NORMAL_MAP
+  , pattern GL_OBJECT_LINEAR
+  , pattern GL_OBJECT_PLANE
+  , pattern GL_OPERAND0_ALPHA
+  , pattern GL_OPERAND0_RGB
+  , pattern GL_OPERAND1_ALPHA
+  , pattern GL_OPERAND1_RGB
+  , pattern GL_OPERAND2_ALPHA
+  , pattern GL_OPERAND2_RGB
+  , pattern GL_ORDER
+  , pattern GL_PASS_THROUGH_TOKEN
+  , pattern GL_PERSPECTIVE_CORRECTION_HINT
+  , pattern GL_PIXEL_MAP_A_TO_A
+  , pattern GL_PIXEL_MAP_A_TO_A_SIZE
+  , pattern GL_PIXEL_MAP_B_TO_B
+  , pattern GL_PIXEL_MAP_B_TO_B_SIZE
+  , pattern GL_PIXEL_MAP_G_TO_G
+  , pattern GL_PIXEL_MAP_G_TO_G_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_A
+  , pattern GL_PIXEL_MAP_I_TO_A_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_B
+  , pattern GL_PIXEL_MAP_I_TO_B_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_G
+  , pattern GL_PIXEL_MAP_I_TO_G_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_I
+  , pattern GL_PIXEL_MAP_I_TO_I_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_R
+  , pattern GL_PIXEL_MAP_I_TO_R_SIZE
+  , pattern GL_PIXEL_MAP_R_TO_R
+  , pattern GL_PIXEL_MAP_R_TO_R_SIZE
+  , pattern GL_PIXEL_MAP_S_TO_S
+  , pattern GL_PIXEL_MAP_S_TO_S_SIZE
+  , pattern GL_PIXEL_MODE_BIT
+  , pattern GL_POINT_BIT
+  , pattern GL_POINT_DISTANCE_ATTENUATION
+  , pattern GL_POINT_SIZE_MAX
+  , pattern GL_POINT_SIZE_MIN
+  , pattern GL_POINT_SMOOTH
+  , pattern GL_POINT_SMOOTH_HINT
+  , pattern GL_POINT_SPRITE
+  , pattern GL_POINT_TOKEN
+  , pattern GL_POLYGON
+  , pattern GL_POLYGON_BIT
+  , pattern GL_POLYGON_STIPPLE
+  , pattern GL_POLYGON_STIPPLE_BIT
+  , pattern GL_POLYGON_TOKEN
+  , pattern GL_POSITION
+  , pattern GL_PREVIOUS
+  , pattern GL_PRIMARY_COLOR
+  , pattern GL_PROJECTION
+  , pattern GL_PROJECTION_MATRIX
+  , pattern GL_PROJECTION_STACK_DEPTH
+  , pattern GL_Q
+  , pattern GL_QUADRATIC_ATTENUATION
+  , pattern GL_QUADS
+  , pattern GL_QUAD_STRIP
+  , pattern GL_R
+  , pattern GL_RED_BIAS
+  , pattern GL_RED_BITS
+  , pattern GL_RED_SCALE
+  , pattern GL_REFLECTION_MAP
+  , pattern GL_RENDER
+  , pattern GL_RENDER_MODE
+  , pattern GL_RESCALE_NORMAL
+  , pattern GL_RETURN
+  , pattern GL_RGBA_MODE
+  , pattern GL_RGB_SCALE
+  , pattern GL_S
+  , pattern GL_SCISSOR_BIT
+  , pattern GL_SECONDARY_COLOR_ARRAY
+  , pattern GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING
+  , pattern GL_SECONDARY_COLOR_ARRAY_POINTER
+  , pattern GL_SECONDARY_COLOR_ARRAY_SIZE
+  , pattern GL_SECONDARY_COLOR_ARRAY_STRIDE
+  , pattern GL_SECONDARY_COLOR_ARRAY_TYPE
+  , pattern GL_SELECT
+  , pattern GL_SELECTION_BUFFER_POINTER
+  , pattern GL_SELECTION_BUFFER_SIZE
+  , pattern GL_SEPARATE_SPECULAR_COLOR
+  , pattern GL_SHADE_MODEL
+  , pattern GL_SHININESS
+  , pattern GL_SINGLE_COLOR
+  , pattern GL_SLUMINANCE
+  , pattern GL_SLUMINANCE8
+  , pattern GL_SLUMINANCE8_ALPHA8
+  , pattern GL_SLUMINANCE_ALPHA
+  , pattern GL_SMOOTH
+  , pattern GL_SOURCE0_ALPHA
+  , pattern GL_SOURCE0_RGB
+  , pattern GL_SOURCE1_ALPHA
+  , pattern GL_SOURCE1_RGB
+  , pattern GL_SOURCE2_ALPHA
+  , pattern GL_SOURCE2_RGB
+  , pattern GL_SPECULAR
+  , pattern GL_SPHERE_MAP
+  , pattern GL_SPOT_CUTOFF
+  , pattern GL_SPOT_DIRECTION
+  , pattern GL_SPOT_EXPONENT
+  , pattern GL_SRC0_ALPHA
+  , pattern GL_SRC0_RGB
+  , pattern GL_SRC1_RGB
+  , pattern GL_SRC2_ALPHA
+  , pattern GL_SRC2_RGB
+  , pattern GL_STACK_OVERFLOW
+  , pattern GL_STACK_UNDERFLOW
+  , pattern GL_STENCIL_BITS
+  , pattern GL_SUBTRACT
+  , pattern GL_T
+  , pattern GL_T2F_C3F_V3F
+  , pattern GL_T2F_C4F_N3F_V3F
+  , pattern GL_T2F_C4UB_V3F
+  , pattern GL_T2F_N3F_V3F
+  , pattern GL_T2F_V3F
+  , pattern GL_T4F_C4F_N3F_V4F
+  , pattern GL_T4F_V4F
+  , pattern GL_TEXTURE_BIT
+  , pattern GL_TEXTURE_BORDER
+  , pattern GL_TEXTURE_COMPONENTS
+  , pattern GL_TEXTURE_COORD_ARRAY
+  , pattern GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING
+  , pattern GL_TEXTURE_COORD_ARRAY_POINTER
+  , pattern GL_TEXTURE_COORD_ARRAY_SIZE
+  , pattern GL_TEXTURE_COORD_ARRAY_STRIDE
+  , pattern GL_TEXTURE_COORD_ARRAY_TYPE
+  , pattern GL_TEXTURE_ENV
+  , pattern GL_TEXTURE_ENV_COLOR
+  , pattern GL_TEXTURE_ENV_MODE
+  , pattern GL_TEXTURE_FILTER_CONTROL
+  , pattern GL_TEXTURE_GEN_MODE
+  , pattern GL_TEXTURE_GEN_Q
+  , pattern GL_TEXTURE_GEN_R
+  , pattern GL_TEXTURE_GEN_S
+  , pattern GL_TEXTURE_GEN_T
+  , pattern GL_TEXTURE_INTENSITY_SIZE
+  , pattern GL_TEXTURE_INTENSITY_TYPE
+  , pattern GL_TEXTURE_LUMINANCE_SIZE
+  , pattern GL_TEXTURE_LUMINANCE_TYPE
+  , pattern GL_TEXTURE_MATRIX
+  , pattern GL_TEXTURE_PRIORITY
+  , pattern GL_TEXTURE_RESIDENT
+  , pattern GL_TEXTURE_STACK_DEPTH
+  , pattern GL_TRANSFORM_BIT
+  , pattern GL_TRANSPOSE_COLOR_MATRIX
+  , pattern GL_TRANSPOSE_MODELVIEW_MATRIX
+  , pattern GL_TRANSPOSE_PROJECTION_MATRIX
+  , pattern GL_TRANSPOSE_TEXTURE_MATRIX
+  , pattern GL_V2F
+  , pattern GL_V3F
+  , pattern GL_VERTEX_ARRAY
+  , pattern GL_VERTEX_ARRAY_BUFFER_BINDING
+  , pattern GL_VERTEX_ARRAY_POINTER
+  , pattern GL_VERTEX_ARRAY_SIZE
+  , pattern GL_VERTEX_ARRAY_STRIDE
+  , pattern GL_VERTEX_ARRAY_TYPE
+  , pattern GL_VERTEX_PROGRAM_TWO_SIDE
+  , pattern GL_VIEWPORT_BIT
+  , pattern GL_WEIGHT_ARRAY_BUFFER_BINDING
+  , pattern GL_ZOOM_X
+  , pattern GL_ZOOM_Y
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Core32
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility33.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility33.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility33.hs
@@ -0,0 +1,42 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility33 (
+  -- * Graphics.GL.Raw.Profile.Compatibility33
+    module Graphics.GL.Raw.Profile.Compatibility32
+  , module Graphics.GL.Raw.Profile.Core33
+  , glColorP3ui
+  , glColorP3uiv
+  , glColorP4ui
+  , glColorP4uiv
+  , glMultiTexCoordP1ui
+  , glMultiTexCoordP1uiv
+  , glMultiTexCoordP2ui
+  , glMultiTexCoordP2uiv
+  , glMultiTexCoordP3ui
+  , glMultiTexCoordP3uiv
+  , glMultiTexCoordP4ui
+  , glMultiTexCoordP4uiv
+  , glNormalP3ui
+  , glNormalP3uiv
+  , glSecondaryColorP3ui
+  , glSecondaryColorP3uiv
+  , glTexCoordP1ui
+  , glTexCoordP1uiv
+  , glTexCoordP2ui
+  , glTexCoordP2uiv
+  , glTexCoordP3ui
+  , glTexCoordP3uiv
+  , glTexCoordP4ui
+  , glTexCoordP4uiv
+  , glVertexP2ui
+  , glVertexP2uiv
+  , glVertexP3ui
+  , glVertexP3uiv
+  , glVertexP4ui
+  , glVertexP4uiv
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Compatibility32
+import Graphics.GL.Raw.Profile.Core33
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility40.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility40.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility40.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility40 (
+  -- * Graphics.GL.Raw.Profile.Compatibility40
+    module Graphics.GL.Raw.Profile.Compatibility32
+  , module Graphics.GL.Raw.Profile.Core40
+) where
+
+
+
+import Graphics.GL.Raw.Profile.Compatibility32
+import Graphics.GL.Raw.Profile.Core40
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility41.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility41.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility41.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility41 (
+  -- * Graphics.GL.Raw.Profile.Compatibility41
+    module Graphics.GL.Raw.Profile.Compatibility40
+  , module Graphics.GL.Raw.Profile.Core41
+) where
+
+
+
+import Graphics.GL.Raw.Profile.Compatibility40
+import Graphics.GL.Raw.Profile.Core41
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility42.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility42.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility42.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility42 (
+  -- * Graphics.GL.Raw.Profile.Compatibility42
+    module Graphics.GL.Raw.Profile.Compatibility41
+  , module Graphics.GL.Raw.Profile.Core42
+) where
+
+
+
+import Graphics.GL.Raw.Profile.Compatibility41
+import Graphics.GL.Raw.Profile.Core42
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility43.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility43.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility43.hs
@@ -0,0 +1,13 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility43 (
+  -- * Graphics.GL.Raw.Profile.Compatibility43
+    module Graphics.GL.Raw.Profile.Compatibility42
+  , module Graphics.GL.Raw.Profile.Core43
+  , pattern GL_DISPLAY_LIST
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Compatibility42
+import Graphics.GL.Raw.Profile.Core43
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility44.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility44.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility44.hs
@@ -0,0 +1,12 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility44 (
+  -- * Graphics.GL.Raw.Profile.Compatibility44
+    module Graphics.GL.Raw.Profile.Compatibility43
+  , module Graphics.GL.Raw.Profile.Core44
+) where
+
+
+
+import Graphics.GL.Raw.Profile.Compatibility43
+import Graphics.GL.Raw.Profile.Core44
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility45.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility45.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Compatibility45.hs
@@ -0,0 +1,125 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Compatibility45 (
+  -- * Graphics.GL.Raw.Profile.Compatibility45
+    module Graphics.GL.Raw.Profile.Compatibility44
+  , module Graphics.GL.Raw.Profile.Core45
+  , glGetnColorTable
+  , glGetnConvolutionFilter
+  , glGetnHistogram
+  , glGetnMapdv
+  , glGetnMapfv
+  , glGetnMapiv
+  , glGetnMinmax
+  , glGetnPixelMapfv
+  , glGetnPixelMapuiv
+  , glGetnPixelMapusv
+  , glGetnPolygonStipple
+  , glGetnSeparableFilter
+) where
+
+import Control.Monad.IO.Class
+import Foreign.Ptr
+import Graphics.GL.Raw.Internal.FFI
+import Graphics.GL.Raw.Internal.Proc
+import Graphics.GL.Raw.Types
+import System.IO.Unsafe
+
+import Graphics.GL.Raw.Profile.Compatibility44
+import Graphics.GL.Raw.Profile.Core45
+
+glGetnColorTable :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnColorTable = ffienumenumenumsizeiPtrVIOV glGetnColorTableFunPtr
+
+glGetnColorTableFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnColorTableFunPtr = unsafePerformIO (getProcAddress "glGetnColorTable")
+
+{-# NOINLINE glGetnColorTableFunPtr #-}
+
+glGetnConvolutionFilter :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnConvolutionFilter = ffienumenumenumsizeiPtrVIOV glGetnConvolutionFilterFunPtr
+
+glGetnConvolutionFilterFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnConvolutionFilterFunPtr = unsafePerformIO (getProcAddress "glGetnConvolutionFilter")
+
+{-# NOINLINE glGetnConvolutionFilterFunPtr #-}
+
+glGetnHistogram :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnHistogram = ffienumbooleanenumenumsizeiPtrVIOV glGetnHistogramFunPtr
+
+glGetnHistogramFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnHistogramFunPtr = unsafePerformIO (getProcAddress "glGetnHistogram")
+
+{-# NOINLINE glGetnHistogramFunPtr #-}
+
+glGetnMapdv :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> m ()
+glGetnMapdv = ffienumenumsizeiPtrdoubleIOV glGetnMapdvFunPtr
+
+glGetnMapdvFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLdouble -> IO ())
+glGetnMapdvFunPtr = unsafePerformIO (getProcAddress "glGetnMapdv")
+
+{-# NOINLINE glGetnMapdvFunPtr #-}
+
+glGetnMapfv :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> m ()
+glGetnMapfv = ffienumenumsizeiPtrfloatIOV glGetnMapfvFunPtr
+
+glGetnMapfvFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+glGetnMapfvFunPtr = unsafePerformIO (getProcAddress "glGetnMapfv")
+
+{-# NOINLINE glGetnMapfvFunPtr #-}
+
+glGetnMapiv :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr GLint -> m ()
+glGetnMapiv = ffienumenumsizeiPtrintIOV glGetnMapivFunPtr
+
+glGetnMapivFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ())
+glGetnMapivFunPtr = unsafePerformIO (getProcAddress "glGetnMapiv")
+
+{-# NOINLINE glGetnMapivFunPtr #-}
+
+glGetnMinmax :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnMinmax = ffienumbooleanenumenumsizeiPtrVIOV glGetnMinmaxFunPtr
+
+glGetnMinmaxFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnMinmaxFunPtr = unsafePerformIO (getProcAddress "glGetnMinmax")
+
+{-# NOINLINE glGetnMinmaxFunPtr #-}
+
+glGetnPixelMapfv :: MonadIO m => GLenum -> GLsizei -> Ptr GLfloat -> m ()
+glGetnPixelMapfv = ffienumsizeiPtrfloatIOV glGetnPixelMapfvFunPtr
+
+glGetnPixelMapfvFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+glGetnPixelMapfvFunPtr = unsafePerformIO (getProcAddress "glGetnPixelMapfv")
+
+{-# NOINLINE glGetnPixelMapfvFunPtr #-}
+
+glGetnPixelMapuiv :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
+glGetnPixelMapuiv = ffienumsizeiPtruintIOV glGetnPixelMapuivFunPtr
+
+glGetnPixelMapuivFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
+glGetnPixelMapuivFunPtr = unsafePerformIO (getProcAddress "glGetnPixelMapuiv")
+
+{-# NOINLINE glGetnPixelMapuivFunPtr #-}
+
+glGetnPixelMapusv :: MonadIO m => GLenum -> GLsizei -> Ptr GLushort -> m ()
+glGetnPixelMapusv = ffienumsizeiPtrushortIOV glGetnPixelMapusvFunPtr
+
+glGetnPixelMapusvFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLushort -> IO ())
+glGetnPixelMapusvFunPtr = unsafePerformIO (getProcAddress "glGetnPixelMapusv")
+
+{-# NOINLINE glGetnPixelMapusvFunPtr #-}
+
+glGetnPolygonStipple :: MonadIO m => GLsizei -> Ptr GLubyte -> m ()
+glGetnPolygonStipple = ffisizeiPtrubyteIOV glGetnPolygonStippleFunPtr
+
+glGetnPolygonStippleFunPtr :: FunPtr (GLsizei -> Ptr GLubyte -> IO ())
+glGetnPolygonStippleFunPtr = unsafePerformIO (getProcAddress "glGetnPolygonStipple")
+
+{-# NOINLINE glGetnPolygonStippleFunPtr #-}
+
+glGetnSeparableFilter :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> m ()
+glGetnSeparableFilter = ffienumenumenumsizeiPtrVsizeiPtrVPtrVIOV glGetnSeparableFilterFunPtr
+
+glGetnSeparableFilterFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr () -> GLsizei -> Ptr () -> Ptr () -> IO ())
+glGetnSeparableFilterFunPtr = unsafePerformIO (getProcAddress "glGetnSeparableFilter")
+
+{-# NOINLINE glGetnSeparableFilterFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core32.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core32.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core32.hs
@@ -0,0 +1,1162 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core32 (
+  -- * Graphics.GL.Raw.Profile.Core32
+    glActiveTexture
+  , glAttachShader
+  , glBeginConditionalRender
+  , glBeginQuery
+  , glBeginTransformFeedback
+  , glBindAttribLocation
+  , glBindBuffer
+  , glBindBufferBase
+  , glBindBufferRange
+  , glBindFragDataLocation
+  , glBindFramebuffer
+  , glBindRenderbuffer
+  , glBindTexture
+  , glBindVertexArray
+  , glBlendColor
+  , glBlendEquation
+  , glBlendEquationSeparate
+  , glBlendFunc
+  , glBlendFuncSeparate
+  , glBlitFramebuffer
+  , glBufferData
+  , glBufferSubData
+  , glCheckFramebufferStatus
+  , glClampColor
+  , glClear
+  , glClearBufferfi
+  , glClearBufferfv
+  , glClearBufferiv
+  , glClearBufferuiv
+  , glClearColor
+  , glClearDepth
+  , glClearStencil
+  , glClientWaitSync
+  , glColorMask
+  , glColorMaski
+  , glCompileShader
+  , glCompressedTexImage1D
+  , glCompressedTexImage2D
+  , glCompressedTexImage3D
+  , glCompressedTexSubImage1D
+  , glCompressedTexSubImage2D
+  , glCompressedTexSubImage3D
+  , glCopyBufferSubData
+  , glCopyTexImage1D
+  , glCopyTexImage2D
+  , glCopyTexSubImage1D
+  , glCopyTexSubImage2D
+  , glCopyTexSubImage3D
+  , glCreateProgram
+  , glCreateShader
+  , glCullFace
+  , glDeleteBuffers
+  , glDeleteFramebuffers
+  , glDeleteProgram
+  , glDeleteQueries
+  , glDeleteRenderbuffers
+  , glDeleteShader
+  , glDeleteSync
+  , glDeleteTextures
+  , glDeleteVertexArrays
+  , glDepthFunc
+  , glDepthMask
+  , glDepthRange
+  , glDetachShader
+  , glDisable
+  , glDisableVertexAttribArray
+  , glDisablei
+  , glDrawArrays
+  , glDrawArraysInstanced
+  , glDrawBuffer
+  , glDrawBuffers
+  , glDrawElements
+  , glDrawElementsBaseVertex
+  , glDrawElementsInstanced
+  , glDrawElementsInstancedBaseVertex
+  , glDrawRangeElements
+  , glDrawRangeElementsBaseVertex
+  , glEnable
+  , glEnableVertexAttribArray
+  , glEnablei
+  , glEndConditionalRender
+  , glEndQuery
+  , glEndTransformFeedback
+  , glFenceSync
+  , glFinish
+  , glFlush
+  , glFlushMappedBufferRange
+  , glFramebufferRenderbuffer
+  , glFramebufferTexture
+  , glFramebufferTexture1D
+  , glFramebufferTexture2D
+  , glFramebufferTexture3D
+  , glFramebufferTextureLayer
+  , glFrontFace
+  , glGenBuffers
+  , glGenFramebuffers
+  , glGenQueries
+  , glGenRenderbuffers
+  , glGenTextures
+  , glGenVertexArrays
+  , glGenerateMipmap
+  , glGetActiveAttrib
+  , glGetActiveUniform
+  , glGetActiveUniformBlockName
+  , glGetActiveUniformBlockiv
+  , glGetActiveUniformName
+  , glGetActiveUniformsiv
+  , glGetAttachedShaders
+  , glGetAttribLocation
+  , glGetBooleani_v
+  , glGetBooleanv
+  , glGetBufferParameteri64v
+  , glGetBufferParameteriv
+  , glGetBufferPointerv
+  , glGetBufferSubData
+  , glGetCompressedTexImage
+  , glGetDoublev
+  , glGetError
+  , glGetFloatv
+  , glGetFragDataLocation
+  , glGetFramebufferAttachmentParameteriv
+  , glGetInteger64i_v
+  , glGetInteger64v
+  , glGetIntegeri_v
+  , glGetIntegerv
+  , glGetMultisamplefv
+  , glGetProgramInfoLog
+  , glGetProgramiv
+  , glGetQueryObjectiv
+  , glGetQueryObjectuiv
+  , glGetQueryiv
+  , glGetRenderbufferParameteriv
+  , glGetShaderInfoLog
+  , glGetShaderSource
+  , glGetShaderiv
+  , glGetString
+  , glGetStringi
+  , glGetSynciv
+  , glGetTexImage
+  , glGetTexLevelParameterfv
+  , glGetTexLevelParameteriv
+  , glGetTexParameterIiv
+  , glGetTexParameterIuiv
+  , glGetTexParameterfv
+  , glGetTexParameteriv
+  , glGetTransformFeedbackVarying
+  , glGetUniformBlockIndex
+  , glGetUniformIndices
+  , glGetUniformLocation
+  , glGetUniformfv
+  , glGetUniformiv
+  , glGetUniformuiv
+  , glGetVertexAttribIiv
+  , glGetVertexAttribIuiv
+  , glGetVertexAttribPointerv
+  , glGetVertexAttribdv
+  , glGetVertexAttribfv
+  , glGetVertexAttribiv
+  , glHint
+  , glIsBuffer
+  , glIsEnabled
+  , glIsEnabledi
+  , glIsFramebuffer
+  , glIsProgram
+  , glIsQuery
+  , glIsRenderbuffer
+  , glIsShader
+  , glIsSync
+  , glIsTexture
+  , glIsVertexArray
+  , glLineWidth
+  , glLinkProgram
+  , glLogicOp
+  , glMapBuffer
+  , glMapBufferRange
+  , glMultiDrawArrays
+  , glMultiDrawElements
+  , glMultiDrawElementsBaseVertex
+  , glPixelStoref
+  , glPixelStorei
+  , glPointParameterf
+  , glPointParameterfv
+  , glPointParameteri
+  , glPointParameteriv
+  , glPointSize
+  , glPolygonMode
+  , glPolygonOffset
+  , glPrimitiveRestartIndex
+  , glProvokingVertex
+  , glReadBuffer
+  , glReadPixels
+  , glRenderbufferStorage
+  , glRenderbufferStorageMultisample
+  , glSampleCoverage
+  , glSampleMaski
+  , glScissor
+  , glShaderSource
+  , glStencilFunc
+  , glStencilFuncSeparate
+  , glStencilMask
+  , glStencilMaskSeparate
+  , glStencilOp
+  , glStencilOpSeparate
+  , glTexBuffer
+  , glTexImage1D
+  , glTexImage2D
+  , glTexImage2DMultisample
+  , glTexImage3D
+  , glTexImage3DMultisample
+  , glTexParameterIiv
+  , glTexParameterIuiv
+  , glTexParameterf
+  , glTexParameterfv
+  , glTexParameteri
+  , glTexParameteriv
+  , glTexSubImage1D
+  , glTexSubImage2D
+  , glTexSubImage3D
+  , glTransformFeedbackVaryings
+  , glUniform1f
+  , glUniform1fv
+  , glUniform1i
+  , glUniform1iv
+  , glUniform1ui
+  , glUniform1uiv
+  , glUniform2f
+  , glUniform2fv
+  , glUniform2i
+  , glUniform2iv
+  , glUniform2ui
+  , glUniform2uiv
+  , glUniform3f
+  , glUniform3fv
+  , glUniform3i
+  , glUniform3iv
+  , glUniform3ui
+  , glUniform3uiv
+  , glUniform4f
+  , glUniform4fv
+  , glUniform4i
+  , glUniform4iv
+  , glUniform4ui
+  , glUniform4uiv
+  , glUniformBlockBinding
+  , glUniformMatrix2fv
+  , glUniformMatrix2x3fv
+  , glUniformMatrix2x4fv
+  , glUniformMatrix3fv
+  , glUniformMatrix3x2fv
+  , glUniformMatrix3x4fv
+  , glUniformMatrix4fv
+  , glUniformMatrix4x2fv
+  , glUniformMatrix4x3fv
+  , glUnmapBuffer
+  , glUseProgram
+  , glValidateProgram
+  , glVertexAttrib1d
+  , glVertexAttrib1dv
+  , glVertexAttrib1f
+  , glVertexAttrib1fv
+  , glVertexAttrib1s
+  , glVertexAttrib1sv
+  , glVertexAttrib2d
+  , glVertexAttrib2dv
+  , glVertexAttrib2f
+  , glVertexAttrib2fv
+  , glVertexAttrib2s
+  , glVertexAttrib2sv
+  , glVertexAttrib3d
+  , glVertexAttrib3dv
+  , glVertexAttrib3f
+  , glVertexAttrib3fv
+  , glVertexAttrib3s
+  , glVertexAttrib3sv
+  , glVertexAttrib4Nbv
+  , glVertexAttrib4Niv
+  , glVertexAttrib4Nsv
+  , glVertexAttrib4Nub
+  , glVertexAttrib4Nubv
+  , glVertexAttrib4Nuiv
+  , glVertexAttrib4Nusv
+  , glVertexAttrib4bv
+  , glVertexAttrib4d
+  , glVertexAttrib4dv
+  , glVertexAttrib4f
+  , glVertexAttrib4fv
+  , glVertexAttrib4iv
+  , glVertexAttrib4s
+  , glVertexAttrib4sv
+  , glVertexAttrib4ubv
+  , glVertexAttrib4uiv
+  , glVertexAttrib4usv
+  , glVertexAttribI1i
+  , glVertexAttribI1iv
+  , glVertexAttribI1ui
+  , glVertexAttribI1uiv
+  , glVertexAttribI2i
+  , glVertexAttribI2iv
+  , glVertexAttribI2ui
+  , glVertexAttribI2uiv
+  , glVertexAttribI3i
+  , glVertexAttribI3iv
+  , glVertexAttribI3ui
+  , glVertexAttribI3uiv
+  , glVertexAttribI4bv
+  , glVertexAttribI4i
+  , glVertexAttribI4iv
+  , glVertexAttribI4sv
+  , glVertexAttribI4ubv
+  , glVertexAttribI4ui
+  , glVertexAttribI4uiv
+  , glVertexAttribI4usv
+  , glVertexAttribIPointer
+  , glVertexAttribPointer
+  , glViewport
+  , glWaitSync
+  , pattern GL_ACTIVE_ATTRIBUTES
+  , pattern GL_ACTIVE_ATTRIBUTE_MAX_LENGTH
+  , pattern GL_ACTIVE_TEXTURE
+  , pattern GL_ACTIVE_UNIFORMS
+  , pattern GL_ACTIVE_UNIFORM_BLOCKS
+  , pattern GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+  , pattern GL_ACTIVE_UNIFORM_MAX_LENGTH
+  , pattern GL_ALIASED_LINE_WIDTH_RANGE
+  , pattern GL_ALPHA
+  , pattern GL_ALREADY_SIGNALED
+  , pattern GL_ALWAYS
+  , pattern GL_AND
+  , pattern GL_AND_INVERTED
+  , pattern GL_AND_REVERSE
+  , pattern GL_ARRAY_BUFFER
+  , pattern GL_ARRAY_BUFFER_BINDING
+  , pattern GL_ATTACHED_SHADERS
+  , pattern GL_BACK
+  , pattern GL_BACK_LEFT
+  , pattern GL_BACK_RIGHT
+  , pattern GL_BGR
+  , pattern GL_BGRA
+  , pattern GL_BGRA_INTEGER
+  , pattern GL_BGR_INTEGER
+  , pattern GL_BLEND
+  , pattern GL_BLEND_DST
+  , pattern GL_BLEND_DST_ALPHA
+  , pattern GL_BLEND_DST_RGB
+  , pattern GL_BLEND_EQUATION_ALPHA
+  , pattern GL_BLEND_EQUATION_RGB
+  , pattern GL_BLEND_SRC
+  , pattern GL_BLEND_SRC_ALPHA
+  , pattern GL_BLEND_SRC_RGB
+  , pattern GL_BLUE
+  , pattern GL_BLUE_INTEGER
+  , pattern GL_BOOL
+  , pattern GL_BOOL_VEC2
+  , pattern GL_BOOL_VEC3
+  , pattern GL_BOOL_VEC4
+  , pattern GL_BUFFER_ACCESS
+  , pattern GL_BUFFER_ACCESS_FLAGS
+  , pattern GL_BUFFER_MAPPED
+  , pattern GL_BUFFER_MAP_LENGTH
+  , pattern GL_BUFFER_MAP_OFFSET
+  , pattern GL_BUFFER_MAP_POINTER
+  , pattern GL_BUFFER_SIZE
+  , pattern GL_BUFFER_USAGE
+  , pattern GL_BYTE
+  , pattern GL_CCW
+  , pattern GL_CLAMP_READ_COLOR
+  , pattern GL_CLAMP_TO_BORDER
+  , pattern GL_CLAMP_TO_EDGE
+  , pattern GL_CLEAR
+  , pattern GL_CLIP_DISTANCE0
+  , pattern GL_CLIP_DISTANCE1
+  , pattern GL_CLIP_DISTANCE2
+  , pattern GL_CLIP_DISTANCE3
+  , pattern GL_CLIP_DISTANCE4
+  , pattern GL_CLIP_DISTANCE5
+  , pattern GL_CLIP_DISTANCE6
+  , pattern GL_CLIP_DISTANCE7
+  , pattern GL_COLOR
+  , pattern GL_COLOR_ATTACHMENT0
+  , pattern GL_COLOR_ATTACHMENT1
+  , pattern GL_COLOR_ATTACHMENT10
+  , pattern GL_COLOR_ATTACHMENT11
+  , pattern GL_COLOR_ATTACHMENT12
+  , pattern GL_COLOR_ATTACHMENT13
+  , pattern GL_COLOR_ATTACHMENT14
+  , pattern GL_COLOR_ATTACHMENT15
+  , pattern GL_COLOR_ATTACHMENT2
+  , pattern GL_COLOR_ATTACHMENT3
+  , pattern GL_COLOR_ATTACHMENT4
+  , pattern GL_COLOR_ATTACHMENT5
+  , pattern GL_COLOR_ATTACHMENT6
+  , pattern GL_COLOR_ATTACHMENT7
+  , pattern GL_COLOR_ATTACHMENT8
+  , pattern GL_COLOR_ATTACHMENT9
+  , pattern GL_COLOR_BUFFER_BIT
+  , pattern GL_COLOR_CLEAR_VALUE
+  , pattern GL_COLOR_LOGIC_OP
+  , pattern GL_COLOR_WRITEMASK
+  , pattern GL_COMPARE_REF_TO_TEXTURE
+  , pattern GL_COMPILE_STATUS
+  , pattern GL_COMPRESSED_RED
+  , pattern GL_COMPRESSED_RED_RGTC1
+  , pattern GL_COMPRESSED_RG
+  , pattern GL_COMPRESSED_RGB
+  , pattern GL_COMPRESSED_RGBA
+  , pattern GL_COMPRESSED_RG_RGTC2
+  , pattern GL_COMPRESSED_SIGNED_RED_RGTC1
+  , pattern GL_COMPRESSED_SIGNED_RG_RGTC2
+  , pattern GL_COMPRESSED_SRGB
+  , pattern GL_COMPRESSED_SRGB_ALPHA
+  , pattern GL_COMPRESSED_TEXTURE_FORMATS
+  , pattern GL_CONDITION_SATISFIED
+  , pattern GL_CONSTANT_ALPHA
+  , pattern GL_CONSTANT_COLOR
+  , pattern GL_CONTEXT_COMPATIBILITY_PROFILE_BIT
+  , pattern GL_CONTEXT_CORE_PROFILE_BIT
+  , pattern GL_CONTEXT_FLAGS
+  , pattern GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT
+  , pattern GL_CONTEXT_PROFILE_MASK
+  , pattern GL_COPY
+  , pattern GL_COPY_INVERTED
+  , pattern GL_COPY_READ_BUFFER
+  , pattern GL_COPY_WRITE_BUFFER
+  , pattern GL_CULL_FACE
+  , pattern GL_CULL_FACE_MODE
+  , pattern GL_CURRENT_PROGRAM
+  , pattern GL_CURRENT_QUERY
+  , pattern GL_CURRENT_VERTEX_ATTRIB
+  , pattern GL_CW
+  , pattern GL_DECR
+  , pattern GL_DECR_WRAP
+  , pattern GL_DELETE_STATUS
+  , pattern GL_DEPTH
+  , pattern GL_DEPTH24_STENCIL8
+  , pattern GL_DEPTH32F_STENCIL8
+  , pattern GL_DEPTH_ATTACHMENT
+  , pattern GL_DEPTH_BUFFER_BIT
+  , pattern GL_DEPTH_CLAMP
+  , pattern GL_DEPTH_CLEAR_VALUE
+  , pattern GL_DEPTH_COMPONENT
+  , pattern GL_DEPTH_COMPONENT16
+  , pattern GL_DEPTH_COMPONENT24
+  , pattern GL_DEPTH_COMPONENT32
+  , pattern GL_DEPTH_COMPONENT32F
+  , pattern GL_DEPTH_FUNC
+  , pattern GL_DEPTH_RANGE
+  , pattern GL_DEPTH_STENCIL
+  , pattern GL_DEPTH_STENCIL_ATTACHMENT
+  , pattern GL_DEPTH_TEST
+  , pattern GL_DEPTH_WRITEMASK
+  , pattern GL_DITHER
+  , pattern GL_DONT_CARE
+  , pattern GL_DOUBLE
+  , pattern GL_DOUBLEBUFFER
+  , pattern GL_DRAW_BUFFER
+  , pattern GL_DRAW_BUFFER0
+  , pattern GL_DRAW_BUFFER1
+  , pattern GL_DRAW_BUFFER10
+  , pattern GL_DRAW_BUFFER11
+  , pattern GL_DRAW_BUFFER12
+  , pattern GL_DRAW_BUFFER13
+  , pattern GL_DRAW_BUFFER14
+  , pattern GL_DRAW_BUFFER15
+  , pattern GL_DRAW_BUFFER2
+  , pattern GL_DRAW_BUFFER3
+  , pattern GL_DRAW_BUFFER4
+  , pattern GL_DRAW_BUFFER5
+  , pattern GL_DRAW_BUFFER6
+  , pattern GL_DRAW_BUFFER7
+  , pattern GL_DRAW_BUFFER8
+  , pattern GL_DRAW_BUFFER9
+  , pattern GL_DRAW_FRAMEBUFFER
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING
+  , pattern GL_DST_ALPHA
+  , pattern GL_DST_COLOR
+  , pattern GL_DYNAMIC_COPY
+  , pattern GL_DYNAMIC_DRAW
+  , pattern GL_DYNAMIC_READ
+  , pattern GL_ELEMENT_ARRAY_BUFFER
+  , pattern GL_ELEMENT_ARRAY_BUFFER_BINDING
+  , pattern GL_EQUAL
+  , pattern GL_EQUIV
+  , pattern GL_EXTENSIONS
+  , pattern GL_FALSE
+  , pattern GL_FASTEST
+  , pattern GL_FILL
+  , pattern GL_FIRST_VERTEX_CONVENTION
+  , pattern GL_FIXED_ONLY
+  , pattern GL_FLOAT
+  , pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV
+  , pattern GL_FLOAT_MAT2
+  , pattern GL_FLOAT_MAT2x3
+  , pattern GL_FLOAT_MAT2x4
+  , pattern GL_FLOAT_MAT3
+  , pattern GL_FLOAT_MAT3x2
+  , pattern GL_FLOAT_MAT3x4
+  , pattern GL_FLOAT_MAT4
+  , pattern GL_FLOAT_MAT4x2
+  , pattern GL_FLOAT_MAT4x3
+  , pattern GL_FLOAT_VEC2
+  , pattern GL_FLOAT_VEC3
+  , pattern GL_FLOAT_VEC4
+  , pattern GL_FRAGMENT_SHADER
+  , pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT
+  , pattern GL_FRAMEBUFFER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
+  , pattern GL_FRAMEBUFFER_BINDING
+  , pattern GL_FRAMEBUFFER_COMPLETE
+  , pattern GL_FRAMEBUFFER_DEFAULT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
+  , pattern GL_FRAMEBUFFER_SRGB
+  , pattern GL_FRAMEBUFFER_UNDEFINED
+  , pattern GL_FRAMEBUFFER_UNSUPPORTED
+  , pattern GL_FRONT
+  , pattern GL_FRONT_AND_BACK
+  , pattern GL_FRONT_FACE
+  , pattern GL_FRONT_LEFT
+  , pattern GL_FRONT_RIGHT
+  , pattern GL_FUNC_ADD
+  , pattern GL_FUNC_REVERSE_SUBTRACT
+  , pattern GL_FUNC_SUBTRACT
+  , pattern GL_GEOMETRY_INPUT_TYPE
+  , pattern GL_GEOMETRY_OUTPUT_TYPE
+  , pattern GL_GEOMETRY_SHADER
+  , pattern GL_GEOMETRY_VERTICES_OUT
+  , pattern GL_GEQUAL
+  , pattern GL_GREATER
+  , pattern GL_GREEN
+  , pattern GL_GREEN_INTEGER
+  , pattern GL_HALF_FLOAT
+  , pattern GL_INCR
+  , pattern GL_INCR_WRAP
+  , pattern GL_INDEX
+  , pattern GL_INFO_LOG_LENGTH
+  , pattern GL_INT
+  , pattern GL_INTERLEAVED_ATTRIBS
+  , pattern GL_INT_SAMPLER_1D
+  , pattern GL_INT_SAMPLER_1D_ARRAY
+  , pattern GL_INT_SAMPLER_2D
+  , pattern GL_INT_SAMPLER_2D_ARRAY
+  , pattern GL_INT_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_INT_SAMPLER_2D_RECT
+  , pattern GL_INT_SAMPLER_3D
+  , pattern GL_INT_SAMPLER_BUFFER
+  , pattern GL_INT_SAMPLER_CUBE
+  , pattern GL_INT_VEC2
+  , pattern GL_INT_VEC3
+  , pattern GL_INT_VEC4
+  , pattern GL_INVALID_ENUM
+  , pattern GL_INVALID_FRAMEBUFFER_OPERATION
+  , pattern GL_INVALID_INDEX
+  , pattern GL_INVALID_OPERATION
+  , pattern GL_INVALID_VALUE
+  , pattern GL_INVERT
+  , pattern GL_KEEP
+  , pattern GL_LAST_VERTEX_CONVENTION
+  , pattern GL_LEFT
+  , pattern GL_LEQUAL
+  , pattern GL_LESS
+  , pattern GL_LINE
+  , pattern GL_LINEAR
+  , pattern GL_LINEAR_MIPMAP_LINEAR
+  , pattern GL_LINEAR_MIPMAP_NEAREST
+  , pattern GL_LINES
+  , pattern GL_LINES_ADJACENCY
+  , pattern GL_LINE_LOOP
+  , pattern GL_LINE_SMOOTH
+  , pattern GL_LINE_SMOOTH_HINT
+  , pattern GL_LINE_STRIP
+  , pattern GL_LINE_STRIP_ADJACENCY
+  , pattern GL_LINE_WIDTH
+  , pattern GL_LINE_WIDTH_GRANULARITY
+  , pattern GL_LINE_WIDTH_RANGE
+  , pattern GL_LINK_STATUS
+  , pattern GL_LOGIC_OP_MODE
+  , pattern GL_LOWER_LEFT
+  , pattern GL_MAJOR_VERSION
+  , pattern GL_MAP_FLUSH_EXPLICIT_BIT
+  , pattern GL_MAP_INVALIDATE_BUFFER_BIT
+  , pattern GL_MAP_INVALIDATE_RANGE_BIT
+  , pattern GL_MAP_READ_BIT
+  , pattern GL_MAP_UNSYNCHRONIZED_BIT
+  , pattern GL_MAP_WRITE_BIT
+  , pattern GL_MAX
+  , pattern GL_MAX_3D_TEXTURE_SIZE
+  , pattern GL_MAX_ARRAY_TEXTURE_LAYERS
+  , pattern GL_MAX_CLIP_DISTANCES
+  , pattern GL_MAX_COLOR_ATTACHMENTS
+  , pattern GL_MAX_COLOR_TEXTURE_SAMPLES
+  , pattern GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_COMBINED_UNIFORM_BLOCKS
+  , pattern GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+  , pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE
+  , pattern GL_MAX_DEPTH_TEXTURE_SAMPLES
+  , pattern GL_MAX_DRAW_BUFFERS
+  , pattern GL_MAX_ELEMENTS_INDICES
+  , pattern GL_MAX_ELEMENTS_VERTICES
+  , pattern GL_MAX_FRAGMENT_INPUT_COMPONENTS
+  , pattern GL_MAX_FRAGMENT_UNIFORM_BLOCKS
+  , pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS
+  , pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS
+  , pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS
+  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES
+  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS
+  , pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS
+  , pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS
+  , pattern GL_MAX_INTEGER_SAMPLES
+  , pattern GL_MAX_PROGRAM_TEXEL_OFFSET
+  , pattern GL_MAX_RECTANGLE_TEXTURE_SIZE
+  , pattern GL_MAX_RENDERBUFFER_SIZE
+  , pattern GL_MAX_SAMPLES
+  , pattern GL_MAX_SAMPLE_MASK_WORDS
+  , pattern GL_MAX_SERVER_WAIT_TIMEOUT
+  , pattern GL_MAX_TEXTURE_BUFFER_SIZE
+  , pattern GL_MAX_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_TEXTURE_LOD_BIAS
+  , pattern GL_MAX_TEXTURE_SIZE
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
+  , pattern GL_MAX_UNIFORM_BLOCK_SIZE
+  , pattern GL_MAX_UNIFORM_BUFFER_BINDINGS
+  , pattern GL_MAX_VARYING_COMPONENTS
+  , pattern GL_MAX_VARYING_FLOATS
+  , pattern GL_MAX_VERTEX_ATTRIBS
+  , pattern GL_MAX_VERTEX_OUTPUT_COMPONENTS
+  , pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_VERTEX_UNIFORM_BLOCKS
+  , pattern GL_MAX_VERTEX_UNIFORM_COMPONENTS
+  , pattern GL_MAX_VIEWPORT_DIMS
+  , pattern GL_MIN
+  , pattern GL_MINOR_VERSION
+  , pattern GL_MIN_PROGRAM_TEXEL_OFFSET
+  , pattern GL_MIRRORED_REPEAT
+  , pattern GL_MULTISAMPLE
+  , pattern GL_NAND
+  , pattern GL_NEAREST
+  , pattern GL_NEAREST_MIPMAP_LINEAR
+  , pattern GL_NEAREST_MIPMAP_NEAREST
+  , pattern GL_NEVER
+  , pattern GL_NICEST
+  , pattern GL_NONE
+  , pattern GL_NOOP
+  , pattern GL_NOR
+  , pattern GL_NOTEQUAL
+  , pattern GL_NO_ERROR
+  , pattern GL_NUM_COMPRESSED_TEXTURE_FORMATS
+  , pattern GL_NUM_EXTENSIONS
+  , pattern GL_OBJECT_TYPE
+  , pattern GL_ONE
+  , pattern GL_ONE_MINUS_CONSTANT_ALPHA
+  , pattern GL_ONE_MINUS_CONSTANT_COLOR
+  , pattern GL_ONE_MINUS_DST_ALPHA
+  , pattern GL_ONE_MINUS_DST_COLOR
+  , pattern GL_ONE_MINUS_SRC_ALPHA
+  , pattern GL_ONE_MINUS_SRC_COLOR
+  , pattern GL_OR
+  , pattern GL_OR_INVERTED
+  , pattern GL_OR_REVERSE
+  , pattern GL_OUT_OF_MEMORY
+  , pattern GL_PACK_ALIGNMENT
+  , pattern GL_PACK_IMAGE_HEIGHT
+  , pattern GL_PACK_LSB_FIRST
+  , pattern GL_PACK_ROW_LENGTH
+  , pattern GL_PACK_SKIP_IMAGES
+  , pattern GL_PACK_SKIP_PIXELS
+  , pattern GL_PACK_SKIP_ROWS
+  , pattern GL_PACK_SWAP_BYTES
+  , pattern GL_PIXEL_PACK_BUFFER
+  , pattern GL_PIXEL_PACK_BUFFER_BINDING
+  , pattern GL_PIXEL_UNPACK_BUFFER
+  , pattern GL_PIXEL_UNPACK_BUFFER_BINDING
+  , pattern GL_POINT
+  , pattern GL_POINTS
+  , pattern GL_POINT_FADE_THRESHOLD_SIZE
+  , pattern GL_POINT_SIZE
+  , pattern GL_POINT_SIZE_GRANULARITY
+  , pattern GL_POINT_SIZE_RANGE
+  , pattern GL_POINT_SPRITE_COORD_ORIGIN
+  , pattern GL_POLYGON_MODE
+  , pattern GL_POLYGON_OFFSET_FACTOR
+  , pattern GL_POLYGON_OFFSET_FILL
+  , pattern GL_POLYGON_OFFSET_LINE
+  , pattern GL_POLYGON_OFFSET_POINT
+  , pattern GL_POLYGON_OFFSET_UNITS
+  , pattern GL_POLYGON_SMOOTH
+  , pattern GL_POLYGON_SMOOTH_HINT
+  , pattern GL_PRIMITIVES_GENERATED
+  , pattern GL_PRIMITIVE_RESTART
+  , pattern GL_PRIMITIVE_RESTART_INDEX
+  , pattern GL_PROGRAM_POINT_SIZE
+  , pattern GL_PROVOKING_VERTEX
+  , pattern GL_PROXY_TEXTURE_1D
+  , pattern GL_PROXY_TEXTURE_1D_ARRAY
+  , pattern GL_PROXY_TEXTURE_2D
+  , pattern GL_PROXY_TEXTURE_2D_ARRAY
+  , pattern GL_PROXY_TEXTURE_2D_MULTISAMPLE
+  , pattern GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_PROXY_TEXTURE_3D
+  , pattern GL_PROXY_TEXTURE_CUBE_MAP
+  , pattern GL_PROXY_TEXTURE_RECTANGLE
+  , pattern GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
+  , pattern GL_QUERY_BY_REGION_NO_WAIT
+  , pattern GL_QUERY_BY_REGION_WAIT
+  , pattern GL_QUERY_COUNTER_BITS
+  , pattern GL_QUERY_NO_WAIT
+  , pattern GL_QUERY_RESULT
+  , pattern GL_QUERY_RESULT_AVAILABLE
+  , pattern GL_QUERY_WAIT
+  , pattern GL_R11F_G11F_B10F
+  , pattern GL_R16
+  , pattern GL_R16F
+  , pattern GL_R16I
+  , pattern GL_R16UI
+  , pattern GL_R16_SNORM
+  , pattern GL_R32F
+  , pattern GL_R32I
+  , pattern GL_R32UI
+  , pattern GL_R3_G3_B2
+  , pattern GL_R8
+  , pattern GL_R8I
+  , pattern GL_R8UI
+  , pattern GL_R8_SNORM
+  , pattern GL_RASTERIZER_DISCARD
+  , pattern GL_READ_BUFFER
+  , pattern GL_READ_FRAMEBUFFER
+  , pattern GL_READ_FRAMEBUFFER_BINDING
+  , pattern GL_READ_ONLY
+  , pattern GL_READ_WRITE
+  , pattern GL_RED
+  , pattern GL_RED_INTEGER
+  , pattern GL_RENDERBUFFER
+  , pattern GL_RENDERBUFFER_ALPHA_SIZE
+  , pattern GL_RENDERBUFFER_BINDING
+  , pattern GL_RENDERBUFFER_BLUE_SIZE
+  , pattern GL_RENDERBUFFER_DEPTH_SIZE
+  , pattern GL_RENDERBUFFER_GREEN_SIZE
+  , pattern GL_RENDERBUFFER_HEIGHT
+  , pattern GL_RENDERBUFFER_INTERNAL_FORMAT
+  , pattern GL_RENDERBUFFER_RED_SIZE
+  , pattern GL_RENDERBUFFER_SAMPLES
+  , pattern GL_RENDERBUFFER_STENCIL_SIZE
+  , pattern GL_RENDERBUFFER_WIDTH
+  , pattern GL_RENDERER
+  , pattern GL_REPEAT
+  , pattern GL_REPLACE
+  , pattern GL_RG
+  , pattern GL_RG16
+  , pattern GL_RG16F
+  , pattern GL_RG16I
+  , pattern GL_RG16UI
+  , pattern GL_RG16_SNORM
+  , pattern GL_RG32F
+  , pattern GL_RG32I
+  , pattern GL_RG32UI
+  , pattern GL_RG8
+  , pattern GL_RG8I
+  , pattern GL_RG8UI
+  , pattern GL_RG8_SNORM
+  , pattern GL_RGB
+  , pattern GL_RGB10
+  , pattern GL_RGB10_A2
+  , pattern GL_RGB12
+  , pattern GL_RGB16
+  , pattern GL_RGB16F
+  , pattern GL_RGB16I
+  , pattern GL_RGB16UI
+  , pattern GL_RGB16_SNORM
+  , pattern GL_RGB32F
+  , pattern GL_RGB32I
+  , pattern GL_RGB32UI
+  , pattern GL_RGB4
+  , pattern GL_RGB5
+  , pattern GL_RGB5_A1
+  , pattern GL_RGB8
+  , pattern GL_RGB8I
+  , pattern GL_RGB8UI
+  , pattern GL_RGB8_SNORM
+  , pattern GL_RGB9_E5
+  , pattern GL_RGBA
+  , pattern GL_RGBA12
+  , pattern GL_RGBA16
+  , pattern GL_RGBA16F
+  , pattern GL_RGBA16I
+  , pattern GL_RGBA16UI
+  , pattern GL_RGBA16_SNORM
+  , pattern GL_RGBA2
+  , pattern GL_RGBA32F
+  , pattern GL_RGBA32I
+  , pattern GL_RGBA32UI
+  , pattern GL_RGBA4
+  , pattern GL_RGBA8
+  , pattern GL_RGBA8I
+  , pattern GL_RGBA8UI
+  , pattern GL_RGBA8_SNORM
+  , pattern GL_RGBA_INTEGER
+  , pattern GL_RGB_INTEGER
+  , pattern GL_RG_INTEGER
+  , pattern GL_RIGHT
+  , pattern GL_SAMPLER_1D
+  , pattern GL_SAMPLER_1D_ARRAY
+  , pattern GL_SAMPLER_1D_ARRAY_SHADOW
+  , pattern GL_SAMPLER_1D_SHADOW
+  , pattern GL_SAMPLER_2D
+  , pattern GL_SAMPLER_2D_ARRAY
+  , pattern GL_SAMPLER_2D_ARRAY_SHADOW
+  , pattern GL_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_SAMPLER_2D_RECT
+  , pattern GL_SAMPLER_2D_RECT_SHADOW
+  , pattern GL_SAMPLER_2D_SHADOW
+  , pattern GL_SAMPLER_3D
+  , pattern GL_SAMPLER_BUFFER
+  , pattern GL_SAMPLER_CUBE
+  , pattern GL_SAMPLER_CUBE_SHADOW
+  , pattern GL_SAMPLES
+  , pattern GL_SAMPLES_PASSED
+  , pattern GL_SAMPLE_ALPHA_TO_COVERAGE
+  , pattern GL_SAMPLE_ALPHA_TO_ONE
+  , pattern GL_SAMPLE_BUFFERS
+  , pattern GL_SAMPLE_COVERAGE
+  , pattern GL_SAMPLE_COVERAGE_INVERT
+  , pattern GL_SAMPLE_COVERAGE_VALUE
+  , pattern GL_SAMPLE_MASK
+  , pattern GL_SAMPLE_MASK_VALUE
+  , pattern GL_SAMPLE_POSITION
+  , pattern GL_SCISSOR_BOX
+  , pattern GL_SCISSOR_TEST
+  , pattern GL_SEPARATE_ATTRIBS
+  , pattern GL_SET
+  , pattern GL_SHADER_SOURCE_LENGTH
+  , pattern GL_SHADER_TYPE
+  , pattern GL_SHADING_LANGUAGE_VERSION
+  , pattern GL_SHORT
+  , pattern GL_SIGNALED
+  , pattern GL_SIGNED_NORMALIZED
+  , pattern GL_SMOOTH_LINE_WIDTH_GRANULARITY
+  , pattern GL_SMOOTH_LINE_WIDTH_RANGE
+  , pattern GL_SMOOTH_POINT_SIZE_GRANULARITY
+  , pattern GL_SMOOTH_POINT_SIZE_RANGE
+  , pattern GL_SRC1_ALPHA
+  , pattern GL_SRC_ALPHA
+  , pattern GL_SRC_ALPHA_SATURATE
+  , pattern GL_SRC_COLOR
+  , pattern GL_SRGB
+  , pattern GL_SRGB8
+  , pattern GL_SRGB8_ALPHA8
+  , pattern GL_SRGB_ALPHA
+  , pattern GL_STATIC_COPY
+  , pattern GL_STATIC_DRAW
+  , pattern GL_STATIC_READ
+  , pattern GL_STENCIL
+  , pattern GL_STENCIL_ATTACHMENT
+  , pattern GL_STENCIL_BACK_FAIL
+  , pattern GL_STENCIL_BACK_FUNC
+  , pattern GL_STENCIL_BACK_PASS_DEPTH_FAIL
+  , pattern GL_STENCIL_BACK_PASS_DEPTH_PASS
+  , pattern GL_STENCIL_BACK_REF
+  , pattern GL_STENCIL_BACK_VALUE_MASK
+  , pattern GL_STENCIL_BACK_WRITEMASK
+  , pattern GL_STENCIL_BUFFER_BIT
+  , pattern GL_STENCIL_CLEAR_VALUE
+  , pattern GL_STENCIL_FAIL
+  , pattern GL_STENCIL_FUNC
+  , pattern GL_STENCIL_INDEX
+  , pattern GL_STENCIL_INDEX1
+  , pattern GL_STENCIL_INDEX16
+  , pattern GL_STENCIL_INDEX4
+  , pattern GL_STENCIL_INDEX8
+  , pattern GL_STENCIL_PASS_DEPTH_FAIL
+  , pattern GL_STENCIL_PASS_DEPTH_PASS
+  , pattern GL_STENCIL_REF
+  , pattern GL_STENCIL_TEST
+  , pattern GL_STENCIL_VALUE_MASK
+  , pattern GL_STENCIL_WRITEMASK
+  , pattern GL_STEREO
+  , pattern GL_STREAM_COPY
+  , pattern GL_STREAM_DRAW
+  , pattern GL_STREAM_READ
+  , pattern GL_SUBPIXEL_BITS
+  , pattern GL_SYNC_CONDITION
+  , pattern GL_SYNC_FENCE
+  , pattern GL_SYNC_FLAGS
+  , pattern GL_SYNC_FLUSH_COMMANDS_BIT
+  , pattern GL_SYNC_GPU_COMMANDS_COMPLETE
+  , pattern GL_SYNC_STATUS
+  , pattern GL_TEXTURE
+  , pattern GL_TEXTURE0
+  , pattern GL_TEXTURE1
+  , pattern GL_TEXTURE10
+  , pattern GL_TEXTURE11
+  , pattern GL_TEXTURE12
+  , pattern GL_TEXTURE13
+  , pattern GL_TEXTURE14
+  , pattern GL_TEXTURE15
+  , pattern GL_TEXTURE16
+  , pattern GL_TEXTURE17
+  , pattern GL_TEXTURE18
+  , pattern GL_TEXTURE19
+  , pattern GL_TEXTURE2
+  , pattern GL_TEXTURE20
+  , pattern GL_TEXTURE21
+  , pattern GL_TEXTURE22
+  , pattern GL_TEXTURE23
+  , pattern GL_TEXTURE24
+  , pattern GL_TEXTURE25
+  , pattern GL_TEXTURE26
+  , pattern GL_TEXTURE27
+  , pattern GL_TEXTURE28
+  , pattern GL_TEXTURE29
+  , pattern GL_TEXTURE3
+  , pattern GL_TEXTURE30
+  , pattern GL_TEXTURE31
+  , pattern GL_TEXTURE4
+  , pattern GL_TEXTURE5
+  , pattern GL_TEXTURE6
+  , pattern GL_TEXTURE7
+  , pattern GL_TEXTURE8
+  , pattern GL_TEXTURE9
+  , pattern GL_TEXTURE_1D
+  , pattern GL_TEXTURE_1D_ARRAY
+  , pattern GL_TEXTURE_2D
+  , pattern GL_TEXTURE_2D_ARRAY
+  , pattern GL_TEXTURE_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_3D
+  , pattern GL_TEXTURE_ALPHA_SIZE
+  , pattern GL_TEXTURE_ALPHA_TYPE
+  , pattern GL_TEXTURE_BASE_LEVEL
+  , pattern GL_TEXTURE_BINDING_1D
+  , pattern GL_TEXTURE_BINDING_1D_ARRAY
+  , pattern GL_TEXTURE_BINDING_2D
+  , pattern GL_TEXTURE_BINDING_2D_ARRAY
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_BINDING_3D
+  , pattern GL_TEXTURE_BINDING_BUFFER
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP
+  , pattern GL_TEXTURE_BINDING_RECTANGLE
+  , pattern GL_TEXTURE_BLUE_SIZE
+  , pattern GL_TEXTURE_BLUE_TYPE
+  , pattern GL_TEXTURE_BORDER_COLOR
+  , pattern GL_TEXTURE_BUFFER
+  , pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING
+  , pattern GL_TEXTURE_COMPARE_FUNC
+  , pattern GL_TEXTURE_COMPARE_MODE
+  , pattern GL_TEXTURE_COMPRESSED
+  , pattern GL_TEXTURE_COMPRESSED_IMAGE_SIZE
+  , pattern GL_TEXTURE_COMPRESSION_HINT
+  , pattern GL_TEXTURE_CUBE_MAP
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z
+  , pattern GL_TEXTURE_CUBE_MAP_SEAMLESS
+  , pattern GL_TEXTURE_DEPTH
+  , pattern GL_TEXTURE_DEPTH_SIZE
+  , pattern GL_TEXTURE_DEPTH_TYPE
+  , pattern GL_TEXTURE_FIXED_SAMPLE_LOCATIONS
+  , pattern GL_TEXTURE_GREEN_SIZE
+  , pattern GL_TEXTURE_GREEN_TYPE
+  , pattern GL_TEXTURE_HEIGHT
+  , pattern GL_TEXTURE_INTERNAL_FORMAT
+  , pattern GL_TEXTURE_LOD_BIAS
+  , pattern GL_TEXTURE_MAG_FILTER
+  , pattern GL_TEXTURE_MAX_LEVEL
+  , pattern GL_TEXTURE_MAX_LOD
+  , pattern GL_TEXTURE_MIN_FILTER
+  , pattern GL_TEXTURE_MIN_LOD
+  , pattern GL_TEXTURE_RECTANGLE
+  , pattern GL_TEXTURE_RED_SIZE
+  , pattern GL_TEXTURE_RED_TYPE
+  , pattern GL_TEXTURE_SAMPLES
+  , pattern GL_TEXTURE_SHARED_SIZE
+  , pattern GL_TEXTURE_STENCIL_SIZE
+  , pattern GL_TEXTURE_WIDTH
+  , pattern GL_TEXTURE_WRAP_R
+  , pattern GL_TEXTURE_WRAP_S
+  , pattern GL_TEXTURE_WRAP_T
+  , pattern GL_TIMEOUT_EXPIRED
+  , pattern GL_TIMEOUT_IGNORED
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_START
+  , pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
+  , pattern GL_TRANSFORM_FEEDBACK_VARYINGS
+  , pattern GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH
+  , pattern GL_TRIANGLES
+  , pattern GL_TRIANGLES_ADJACENCY
+  , pattern GL_TRIANGLE_FAN
+  , pattern GL_TRIANGLE_STRIP
+  , pattern GL_TRIANGLE_STRIP_ADJACENCY
+  , pattern GL_TRUE
+  , pattern GL_UNIFORM_ARRAY_STRIDE
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+  , pattern GL_UNIFORM_BLOCK_BINDING
+  , pattern GL_UNIFORM_BLOCK_DATA_SIZE
+  , pattern GL_UNIFORM_BLOCK_INDEX
+  , pattern GL_UNIFORM_BLOCK_NAME_LENGTH
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_UNIFORM_BUFFER
+  , pattern GL_UNIFORM_BUFFER_BINDING
+  , pattern GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_UNIFORM_BUFFER_SIZE
+  , pattern GL_UNIFORM_BUFFER_START
+  , pattern GL_UNIFORM_IS_ROW_MAJOR
+  , pattern GL_UNIFORM_MATRIX_STRIDE
+  , pattern GL_UNIFORM_NAME_LENGTH
+  , pattern GL_UNIFORM_OFFSET
+  , pattern GL_UNIFORM_SIZE
+  , pattern GL_UNIFORM_TYPE
+  , pattern GL_UNPACK_ALIGNMENT
+  , pattern GL_UNPACK_IMAGE_HEIGHT
+  , pattern GL_UNPACK_LSB_FIRST
+  , pattern GL_UNPACK_ROW_LENGTH
+  , pattern GL_UNPACK_SKIP_IMAGES
+  , pattern GL_UNPACK_SKIP_PIXELS
+  , pattern GL_UNPACK_SKIP_ROWS
+  , pattern GL_UNPACK_SWAP_BYTES
+  , pattern GL_UNSIGNALED
+  , pattern GL_UNSIGNED_BYTE
+  , pattern GL_UNSIGNED_BYTE_2_3_3_REV
+  , pattern GL_UNSIGNED_BYTE_3_3_2
+  , pattern GL_UNSIGNED_INT
+  , pattern GL_UNSIGNED_INT_10F_11F_11F_REV
+  , pattern GL_UNSIGNED_INT_10_10_10_2
+  , pattern GL_UNSIGNED_INT_24_8
+  , pattern GL_UNSIGNED_INT_2_10_10_10_REV
+  , pattern GL_UNSIGNED_INT_5_9_9_9_REV
+  , pattern GL_UNSIGNED_INT_8_8_8_8
+  , pattern GL_UNSIGNED_INT_8_8_8_8_REV
+  , pattern GL_UNSIGNED_INT_SAMPLER_1D
+  , pattern GL_UNSIGNED_INT_SAMPLER_1D_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_RECT
+  , pattern GL_UNSIGNED_INT_SAMPLER_3D
+  , pattern GL_UNSIGNED_INT_SAMPLER_BUFFER
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE
+  , pattern GL_UNSIGNED_INT_VEC2
+  , pattern GL_UNSIGNED_INT_VEC3
+  , pattern GL_UNSIGNED_INT_VEC4
+  , pattern GL_UNSIGNED_NORMALIZED
+  , pattern GL_UNSIGNED_SHORT
+  , pattern GL_UNSIGNED_SHORT_1_5_5_5_REV
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4_REV
+  , pattern GL_UNSIGNED_SHORT_5_5_5_1
+  , pattern GL_UNSIGNED_SHORT_5_6_5
+  , pattern GL_UNSIGNED_SHORT_5_6_5_REV
+  , pattern GL_UPPER_LEFT
+  , pattern GL_VALIDATE_STATUS
+  , pattern GL_VENDOR
+  , pattern GL_VERSION
+  , pattern GL_VERTEX_ARRAY_BINDING
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
+  , pattern GL_VERTEX_ATTRIB_ARRAY_ENABLED
+  , pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER
+  , pattern GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
+  , pattern GL_VERTEX_ATTRIB_ARRAY_POINTER
+  , pattern GL_VERTEX_ATTRIB_ARRAY_SIZE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_STRIDE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_TYPE
+  , pattern GL_VERTEX_PROGRAM_POINT_SIZE
+  , pattern GL_VERTEX_SHADER
+  , pattern GL_VIEWPORT
+  , pattern GL_WAIT_FAILED
+  , pattern GL_WRITE_ONLY
+  , pattern GL_XOR
+  , pattern GL_ZERO
+) where
+
+import Control.Monad.IO.Class
+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
+
+glFramebufferTexture :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
+glFramebufferTexture = ffienumenumuintintIOV glFramebufferTextureFunPtr
+
+glFramebufferTextureFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glFramebufferTextureFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture")
+
+{-# NOINLINE glFramebufferTextureFunPtr #-}
+
+pattern GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002 :: GLenum
+
+pattern GL_CONTEXT_CORE_PROFILE_BIT = 0x00000001 :: GLenum
+
+pattern GL_CONTEXT_PROFILE_MASK = 0x9126 :: GLenum
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7 :: GLenum
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8 :: GLenum
+
+pattern GL_GEOMETRY_INPUT_TYPE = 0x8917 :: GLenum
+
+pattern GL_GEOMETRY_OUTPUT_TYPE = 0x8918 :: GLenum
+
+pattern GL_GEOMETRY_SHADER = 0x8DD9 :: GLenum
+
+pattern GL_GEOMETRY_VERTICES_OUT = 0x8916 :: GLenum
+
+pattern GL_LINES_ADJACENCY = 0x000A :: GLenum
+
+pattern GL_LINE_STRIP_ADJACENCY = 0x000B :: GLenum
+
+pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123 :: GLenum
+
+pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124 :: GLenum
+
+pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0 :: GLenum
+
+pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29 :: GLenum
+
+pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1 :: GLenum
+
+pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF :: GLenum
+
+pattern GL_PROGRAM_POINT_SIZE = 0x8642 :: GLenum
+
+pattern GL_TRIANGLES_ADJACENCY = 0x000C :: GLenum
+
+pattern GL_TRIANGLE_STRIP_ADJACENCY = 0x000D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core33.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core33.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core33.hs
@@ -0,0 +1,54 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core33 (
+  -- * Graphics.GL.Raw.Profile.Core33
+    module Graphics.GL.Raw.Profile.Core32
+  , glBindFragDataLocationIndexed
+  , glBindSampler
+  , glDeleteSamplers
+  , glGenSamplers
+  , glGetFragDataIndex
+  , glGetQueryObjecti64v
+  , glGetQueryObjectui64v
+  , glGetSamplerParameterIiv
+  , glGetSamplerParameterIuiv
+  , glGetSamplerParameterfv
+  , glGetSamplerParameteriv
+  , glIsSampler
+  , glQueryCounter
+  , glSamplerParameterIiv
+  , glSamplerParameterIuiv
+  , glSamplerParameterf
+  , glSamplerParameterfv
+  , glSamplerParameteri
+  , glSamplerParameteriv
+  , glVertexAttribDivisor
+  , glVertexAttribP1ui
+  , glVertexAttribP1uiv
+  , glVertexAttribP2ui
+  , glVertexAttribP2uiv
+  , glVertexAttribP3ui
+  , glVertexAttribP3uiv
+  , glVertexAttribP4ui
+  , glVertexAttribP4uiv
+  , pattern GL_ANY_SAMPLES_PASSED
+  , pattern GL_INT_2_10_10_10_REV
+  , pattern GL_MAX_DUAL_SOURCE_DRAW_BUFFERS
+  , pattern GL_ONE_MINUS_SRC1_ALPHA
+  , pattern GL_ONE_MINUS_SRC1_COLOR
+  , pattern GL_RGB10_A2UI
+  , pattern GL_SAMPLER_BINDING
+  , pattern GL_SRC1_COLOR
+  , pattern GL_TEXTURE_SWIZZLE_A
+  , pattern GL_TEXTURE_SWIZZLE_B
+  , pattern GL_TEXTURE_SWIZZLE_G
+  , pattern GL_TEXTURE_SWIZZLE_R
+  , pattern GL_TEXTURE_SWIZZLE_RGBA
+  , pattern GL_TIMESTAMP
+  , pattern GL_TIME_ELAPSED
+  , pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Core32
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core40.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core40.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core40.hs
@@ -0,0 +1,194 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core40 (
+  -- * Graphics.GL.Raw.Profile.Core40
+    module Graphics.GL.Raw.Profile.Core33
+  , glBeginQueryIndexed
+  , glBindTransformFeedback
+  , glBlendEquationSeparatei
+  , glBlendEquationi
+  , glBlendFuncSeparatei
+  , glBlendFunci
+  , glDeleteTransformFeedbacks
+  , glDrawArraysIndirect
+  , glDrawElementsIndirect
+  , glDrawTransformFeedback
+  , glDrawTransformFeedbackStream
+  , glEndQueryIndexed
+  , glGenTransformFeedbacks
+  , glGetActiveSubroutineName
+  , glGetActiveSubroutineUniformName
+  , glGetActiveSubroutineUniformiv
+  , glGetProgramStageiv
+  , glGetQueryIndexediv
+  , glGetSubroutineIndex
+  , glGetSubroutineUniformLocation
+  , glGetUniformSubroutineuiv
+  , glGetUniformdv
+  , glIsTransformFeedback
+  , glMinSampleShading
+  , glPatchParameterfv
+  , glPatchParameteri
+  , glPauseTransformFeedback
+  , glResumeTransformFeedback
+  , glUniform1d
+  , glUniform1dv
+  , glUniform2d
+  , glUniform2dv
+  , glUniform3d
+  , glUniform3dv
+  , glUniform4d
+  , glUniform4dv
+  , glUniformMatrix2dv
+  , glUniformMatrix2x3dv
+  , glUniformMatrix2x4dv
+  , glUniformMatrix3dv
+  , glUniformMatrix3x2dv
+  , glUniformMatrix3x4dv
+  , glUniformMatrix4dv
+  , glUniformMatrix4x2dv
+  , glUniformMatrix4x3dv
+  , glUniformSubroutinesuiv
+  , pattern GL_ACTIVE_SUBROUTINES
+  , pattern GL_ACTIVE_SUBROUTINE_MAX_LENGTH
+  , pattern GL_ACTIVE_SUBROUTINE_UNIFORMS
+  , pattern GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
+  , pattern GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH
+  , pattern GL_COMPATIBLE_SUBROUTINES
+  , pattern GL_DOUBLE_MAT2
+  , pattern GL_DOUBLE_MAT2x3
+  , pattern GL_DOUBLE_MAT2x4
+  , pattern GL_DOUBLE_MAT3
+  , pattern GL_DOUBLE_MAT3x2
+  , pattern GL_DOUBLE_MAT3x4
+  , pattern GL_DOUBLE_MAT4
+  , pattern GL_DOUBLE_MAT4x2
+  , pattern GL_DOUBLE_MAT4x3
+  , pattern GL_DOUBLE_VEC2
+  , pattern GL_DOUBLE_VEC3
+  , pattern GL_DOUBLE_VEC4
+  , pattern GL_DRAW_INDIRECT_BUFFER
+  , pattern GL_DRAW_INDIRECT_BUFFER_BINDING
+  , pattern GL_FRACTIONAL_EVEN
+  , pattern GL_FRACTIONAL_ODD
+  , pattern GL_FRAGMENT_INTERPOLATION_OFFSET_BITS
+  , pattern GL_GEOMETRY_SHADER_INVOCATIONS
+  , pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY
+  , pattern GL_ISOLINES
+  , pattern GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS
+  , pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET
+  , pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS
+  , pattern GL_MAX_PATCH_VERTICES
+  , pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET
+  , pattern GL_MAX_SUBROUTINES
+  , pattern GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS
+  , pattern GL_MAX_TESS_CONTROL_INPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS
+  , pattern GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS
+  , pattern GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS
+  , pattern GL_MAX_TESS_GEN_LEVEL
+  , pattern GL_MAX_TESS_PATCH_COMPONENTS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_BUFFERS
+  , pattern GL_MAX_VERTEX_STREAMS
+  , pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET
+  , pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET
+  , pattern GL_MIN_SAMPLE_SHADING_VALUE
+  , pattern GL_NUM_COMPATIBLE_SUBROUTINES
+  , pattern GL_PATCHES
+  , pattern GL_PATCH_DEFAULT_INNER_LEVEL
+  , pattern GL_PATCH_DEFAULT_OUTER_LEVEL
+  , pattern GL_PATCH_VERTICES
+  , pattern GL_PROXY_TEXTURE_CUBE_MAP_ARRAY
+  , pattern GL_QUADS
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW
+  , pattern GL_SAMPLE_SHADING
+  , pattern GL_TESS_CONTROL_OUTPUT_VERTICES
+  , pattern GL_TESS_CONTROL_SHADER
+  , pattern GL_TESS_EVALUATION_SHADER
+  , pattern GL_TESS_GEN_MODE
+  , pattern GL_TESS_GEN_POINT_MODE
+  , pattern GL_TESS_GEN_SPACING
+  , pattern GL_TESS_GEN_VERTEX_ORDER
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY
+  , pattern GL_TEXTURE_CUBE_MAP_ARRAY
+  , pattern GL_TRANSFORM_FEEDBACK
+  , pattern GL_TRANSFORM_FEEDBACK_BINDING
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY
+) where
+
+import Control.Monad.IO.Class
+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
+
+import Graphics.GL.Raw.Profile.Core33
+
+glBlendEquationSeparatei :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendEquationSeparatei = ffiuintenumenumIOV glBlendEquationSeparateiFunPtr
+
+glBlendEquationSeparateiFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendEquationSeparateiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparatei")
+
+{-# NOINLINE glBlendEquationSeparateiFunPtr #-}
+
+glBlendEquationi :: MonadIO m => GLuint -> GLenum -> m ()
+glBlendEquationi = ffiuintenumIOV glBlendEquationiFunPtr
+
+glBlendEquationiFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glBlendEquationiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationi")
+
+{-# NOINLINE glBlendEquationiFunPtr #-}
+
+glBlendFuncSeparatei :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glBlendFuncSeparatei = ffiuintenumenumenumenumIOV glBlendFuncSeparateiFunPtr
+
+glBlendFuncSeparateiFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glBlendFuncSeparateiFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparatei")
+
+{-# NOINLINE glBlendFuncSeparateiFunPtr #-}
+
+glBlendFunci :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendFunci = ffiuintenumenumIOV glBlendFunciFunPtr
+
+glBlendFunciFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendFunciFunPtr = unsafePerformIO (getProcAddress "glBlendFunci")
+
+{-# NOINLINE glBlendFunciFunPtr #-}
+
+glMinSampleShading :: MonadIO m => GLfloat -> m ()
+glMinSampleShading = ffifloatIOV glMinSampleShadingFunPtr
+
+glMinSampleShadingFunPtr :: FunPtr (GLfloat -> IO ())
+glMinSampleShadingFunPtr = unsafePerformIO (getProcAddress "glMinSampleShading")
+
+{-# NOINLINE glMinSampleShadingFunPtr #-}
+
+pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E :: GLenum
+
+pattern GL_MIN_SAMPLE_SHADING_VALUE = 0x8C37 :: GLenum
+
+pattern GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B :: GLenum
+
+pattern GL_SAMPLER_CUBE_MAP_ARRAY = 0x900C :: GLenum
+
+pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D :: GLenum
+
+pattern GL_SAMPLE_SHADING = 0x8C36 :: GLenum
+
+pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core41.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core41.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core41.hs
@@ -0,0 +1,133 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core41 (
+  -- * Graphics.GL.Raw.Profile.Core41
+    module Graphics.GL.Raw.Profile.Core40
+  , glActiveShaderProgram
+  , glBindProgramPipeline
+  , glClearDepthf
+  , glCreateShaderProgramv
+  , glDeleteProgramPipelines
+  , glDepthRangeArrayv
+  , glDepthRangeIndexed
+  , glDepthRangef
+  , glGenProgramPipelines
+  , glGetDoublei_v
+  , glGetFloati_v
+  , glGetProgramBinary
+  , glGetProgramPipelineInfoLog
+  , glGetProgramPipelineiv
+  , glGetShaderPrecisionFormat
+  , glGetVertexAttribLdv
+  , glIsProgramPipeline
+  , glProgramBinary
+  , glProgramParameteri
+  , glProgramUniform1d
+  , glProgramUniform1dv
+  , glProgramUniform1f
+  , glProgramUniform1fv
+  , glProgramUniform1i
+  , glProgramUniform1iv
+  , glProgramUniform1ui
+  , glProgramUniform1uiv
+  , glProgramUniform2d
+  , glProgramUniform2dv
+  , glProgramUniform2f
+  , glProgramUniform2fv
+  , glProgramUniform2i
+  , glProgramUniform2iv
+  , glProgramUniform2ui
+  , glProgramUniform2uiv
+  , glProgramUniform3d
+  , glProgramUniform3dv
+  , glProgramUniform3f
+  , glProgramUniform3fv
+  , glProgramUniform3i
+  , glProgramUniform3iv
+  , glProgramUniform3ui
+  , glProgramUniform3uiv
+  , glProgramUniform4d
+  , glProgramUniform4dv
+  , glProgramUniform4f
+  , glProgramUniform4fv
+  , glProgramUniform4i
+  , glProgramUniform4iv
+  , glProgramUniform4ui
+  , glProgramUniform4uiv
+  , glProgramUniformMatrix2dv
+  , glProgramUniformMatrix2fv
+  , glProgramUniformMatrix2x3dv
+  , glProgramUniformMatrix2x3fv
+  , glProgramUniformMatrix2x4dv
+  , glProgramUniformMatrix2x4fv
+  , glProgramUniformMatrix3dv
+  , glProgramUniformMatrix3fv
+  , glProgramUniformMatrix3x2dv
+  , glProgramUniformMatrix3x2fv
+  , glProgramUniformMatrix3x4dv
+  , glProgramUniformMatrix3x4fv
+  , glProgramUniformMatrix4dv
+  , glProgramUniformMatrix4fv
+  , glProgramUniformMatrix4x2dv
+  , glProgramUniformMatrix4x2fv
+  , glProgramUniformMatrix4x3dv
+  , glProgramUniformMatrix4x3fv
+  , glReleaseShaderCompiler
+  , glScissorArrayv
+  , glScissorIndexed
+  , glScissorIndexedv
+  , glShaderBinary
+  , glUseProgramStages
+  , glValidateProgramPipeline
+  , glVertexAttribL1d
+  , glVertexAttribL1dv
+  , glVertexAttribL2d
+  , glVertexAttribL2dv
+  , glVertexAttribL3d
+  , glVertexAttribL3dv
+  , glVertexAttribL4d
+  , glVertexAttribL4dv
+  , glVertexAttribLPointer
+  , glViewportArrayv
+  , glViewportIndexedf
+  , glViewportIndexedfv
+  , pattern GL_ACTIVE_PROGRAM
+  , pattern GL_ALL_SHADER_BITS
+  , pattern GL_FIXED
+  , pattern GL_FRAGMENT_SHADER_BIT
+  , pattern GL_GEOMETRY_SHADER_BIT
+  , pattern GL_HIGH_FLOAT
+  , pattern GL_HIGH_INT
+  , pattern GL_IMPLEMENTATION_COLOR_READ_FORMAT
+  , pattern GL_IMPLEMENTATION_COLOR_READ_TYPE
+  , pattern GL_LAYER_PROVOKING_VERTEX
+  , pattern GL_LOW_FLOAT
+  , pattern GL_LOW_INT
+  , pattern GL_MAX_FRAGMENT_UNIFORM_VECTORS
+  , pattern GL_MAX_VARYING_VECTORS
+  , pattern GL_MAX_VERTEX_UNIFORM_VECTORS
+  , pattern GL_MAX_VIEWPORTS
+  , pattern GL_MEDIUM_FLOAT
+  , pattern GL_MEDIUM_INT
+  , pattern GL_NUM_PROGRAM_BINARY_FORMATS
+  , pattern GL_NUM_SHADER_BINARY_FORMATS
+  , pattern GL_PROGRAM_BINARY_FORMATS
+  , pattern GL_PROGRAM_BINARY_LENGTH
+  , pattern GL_PROGRAM_BINARY_RETRIEVABLE_HINT
+  , pattern GL_PROGRAM_PIPELINE_BINDING
+  , pattern GL_PROGRAM_SEPARABLE
+  , pattern GL_RGB565
+  , pattern GL_SHADER_BINARY_FORMATS
+  , pattern GL_SHADER_COMPILER
+  , pattern GL_TESS_CONTROL_SHADER_BIT
+  , pattern GL_TESS_EVALUATION_SHADER_BIT
+  , pattern GL_UNDEFINED_VERTEX
+  , pattern GL_VERTEX_SHADER_BIT
+  , pattern GL_VIEWPORT_BOUNDS_RANGE
+  , pattern GL_VIEWPORT_INDEX_PROVOKING_VERTEX
+  , pattern GL_VIEWPORT_SUBPIXEL_BITS
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Core40
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core42.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core42.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core42.hs
@@ -0,0 +1,143 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core42 (
+  -- * Graphics.GL.Raw.Profile.Core42
+    module Graphics.GL.Raw.Profile.Core41
+  , glBindImageTexture
+  , glDrawArraysInstancedBaseInstance
+  , glDrawElementsInstancedBaseInstance
+  , glDrawElementsInstancedBaseVertexBaseInstance
+  , glDrawTransformFeedbackInstanced
+  , glDrawTransformFeedbackStreamInstanced
+  , glGetActiveAtomicCounterBufferiv
+  , glGetInternalformativ
+  , glMemoryBarrier
+  , glTexStorage1D
+  , glTexStorage2D
+  , glTexStorage3D
+  , pattern GL_ACTIVE_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_ALL_BARRIER_BITS
+  , pattern GL_ATOMIC_COUNTER_BARRIER_BIT
+  , pattern GL_ATOMIC_COUNTER_BUFFER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS
+  , pattern GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES
+  , pattern GL_ATOMIC_COUNTER_BUFFER_BINDING
+  , pattern GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_SIZE
+  , pattern GL_ATOMIC_COUNTER_BUFFER_START
+  , pattern GL_BUFFER_UPDATE_BARRIER_BIT
+  , pattern GL_COMMAND_BARRIER_BIT
+  , pattern GL_COMPRESSED_RGBA_BPTC_UNORM
+  , pattern GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT
+  , pattern GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT
+  , pattern GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM
+  , pattern GL_COPY_READ_BUFFER_BINDING
+  , pattern GL_COPY_WRITE_BUFFER_BINDING
+  , pattern GL_ELEMENT_ARRAY_BARRIER_BIT
+  , pattern GL_FRAMEBUFFER_BARRIER_BIT
+  , pattern GL_IMAGE_1D
+  , pattern GL_IMAGE_1D_ARRAY
+  , pattern GL_IMAGE_2D
+  , pattern GL_IMAGE_2D_ARRAY
+  , pattern GL_IMAGE_2D_MULTISAMPLE
+  , pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_IMAGE_2D_RECT
+  , pattern GL_IMAGE_3D
+  , pattern GL_IMAGE_BINDING_ACCESS
+  , pattern GL_IMAGE_BINDING_FORMAT
+  , pattern GL_IMAGE_BINDING_LAYER
+  , pattern GL_IMAGE_BINDING_LAYERED
+  , pattern GL_IMAGE_BINDING_LEVEL
+  , pattern GL_IMAGE_BINDING_NAME
+  , pattern GL_IMAGE_BUFFER
+  , pattern GL_IMAGE_CUBE
+  , pattern GL_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_TYPE
+  , pattern GL_INT_IMAGE_1D
+  , pattern GL_INT_IMAGE_1D_ARRAY
+  , pattern GL_INT_IMAGE_2D
+  , pattern GL_INT_IMAGE_2D_ARRAY
+  , pattern GL_INT_IMAGE_2D_MULTISAMPLE
+  , pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_INT_IMAGE_2D_RECT
+  , pattern GL_INT_IMAGE_3D
+  , pattern GL_INT_IMAGE_BUFFER
+  , pattern GL_INT_IMAGE_CUBE
+  , pattern GL_INT_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS
+  , pattern GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE
+  , pattern GL_MAX_COMBINED_ATOMIC_COUNTERS
+  , pattern GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_COMBINED_IMAGE_UNIFORMS
+  , pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS
+  , pattern GL_MAX_FRAGMENT_ATOMIC_COUNTERS
+  , pattern GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_FRAGMENT_IMAGE_UNIFORMS
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS
+  , pattern GL_MAX_IMAGE_SAMPLES
+  , pattern GL_MAX_IMAGE_UNITS
+  , pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS
+  , pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS
+  , pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS
+  , pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS
+  , pattern GL_MAX_VERTEX_ATOMIC_COUNTERS
+  , pattern GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_VERTEX_IMAGE_UNIFORMS
+  , pattern GL_MIN_MAP_BUFFER_ALIGNMENT
+  , pattern GL_NUM_SAMPLE_COUNTS
+  , pattern GL_PACK_COMPRESSED_BLOCK_DEPTH
+  , pattern GL_PACK_COMPRESSED_BLOCK_HEIGHT
+  , pattern GL_PACK_COMPRESSED_BLOCK_SIZE
+  , pattern GL_PACK_COMPRESSED_BLOCK_WIDTH
+  , pattern GL_PIXEL_BUFFER_BARRIER_BIT
+  , pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT
+  , pattern GL_TEXTURE_FETCH_BARRIER_BIT
+  , pattern GL_TEXTURE_IMMUTABLE_FORMAT
+  , pattern GL_TEXTURE_UPDATE_BARRIER_BIT
+  , pattern GL_TRANSFORM_FEEDBACK_ACTIVE
+  , pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT
+  , pattern GL_TRANSFORM_FEEDBACK_PAUSED
+  , pattern GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX
+  , pattern GL_UNIFORM_BARRIER_BIT
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_DEPTH
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_HEIGHT
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_SIZE
+  , pattern GL_UNPACK_COMPRESSED_BLOCK_WIDTH
+  , pattern GL_UNSIGNED_INT_ATOMIC_COUNTER
+  , pattern GL_UNSIGNED_INT_IMAGE_1D
+  , pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY
+  , pattern GL_UNSIGNED_INT_IMAGE_2D
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_RECT
+  , pattern GL_UNSIGNED_INT_IMAGE_3D
+  , pattern GL_UNSIGNED_INT_IMAGE_BUFFER
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+import Graphics.GL.Raw.Profile.Core41
+
+pattern GL_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C :: GLenum
+
+pattern GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E :: GLenum
+
+pattern GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F :: GLenum
+
+pattern GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core43.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core43.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core43.hs
@@ -0,0 +1,320 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core43 (
+  -- * Graphics.GL.Raw.Profile.Core43
+    module Graphics.GL.Raw.Profile.Core42
+  , glBindVertexBuffer
+  , glClearBufferData
+  , glClearBufferSubData
+  , glCopyImageSubData
+  , glDebugMessageCallback
+  , glDebugMessageControl
+  , glDebugMessageInsert
+  , glDispatchCompute
+  , glDispatchComputeIndirect
+  , glFramebufferParameteri
+  , glGetDebugMessageLog
+  , glGetFramebufferParameteriv
+  , glGetInternalformati64v
+  , glGetObjectLabel
+  , glGetObjectPtrLabel
+  , glGetPointerv
+  , glGetProgramInterfaceiv
+  , glGetProgramResourceIndex
+  , glGetProgramResourceLocation
+  , glGetProgramResourceLocationIndex
+  , glGetProgramResourceName
+  , glGetProgramResourceiv
+  , glInvalidateBufferData
+  , glInvalidateBufferSubData
+  , glInvalidateFramebuffer
+  , glInvalidateSubFramebuffer
+  , glInvalidateTexImage
+  , glInvalidateTexSubImage
+  , glMultiDrawArraysIndirect
+  , glMultiDrawElementsIndirect
+  , glObjectLabel
+  , glObjectPtrLabel
+  , glPopDebugGroup
+  , glPushDebugGroup
+  , glShaderStorageBlockBinding
+  , glTexBufferRange
+  , glTexStorage2DMultisample
+  , glTexStorage3DMultisample
+  , glTextureView
+  , glVertexAttribBinding
+  , glVertexAttribFormat
+  , glVertexAttribIFormat
+  , glVertexAttribLFormat
+  , glVertexBindingDivisor
+  , pattern GL_ACTIVE_RESOURCES
+  , pattern GL_ACTIVE_VARIABLES
+  , pattern GL_ANY_SAMPLES_PASSED_CONSERVATIVE
+  , pattern GL_ARRAY_SIZE
+  , pattern GL_ARRAY_STRIDE
+  , pattern GL_ATOMIC_COUNTER_BUFFER_INDEX
+  , pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER
+  , pattern GL_AUTO_GENERATE_MIPMAP
+  , pattern GL_BLOCK_INDEX
+  , pattern GL_BUFFER
+  , pattern GL_BUFFER_BINDING
+  , pattern GL_BUFFER_DATA_SIZE
+  , pattern GL_BUFFER_VARIABLE
+  , pattern GL_CAVEAT_SUPPORT
+  , pattern GL_CLEAR_BUFFER
+  , pattern GL_COLOR_COMPONENTS
+  , pattern GL_COLOR_ENCODING
+  , pattern GL_COLOR_RENDERABLE
+  , pattern GL_COMPRESSED_R11_EAC
+  , pattern GL_COMPRESSED_RG11_EAC
+  , pattern GL_COMPRESSED_RGB8_ETC2
+  , pattern GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
+  , pattern GL_COMPRESSED_RGBA8_ETC2_EAC
+  , pattern GL_COMPRESSED_SIGNED_R11_EAC
+  , pattern GL_COMPRESSED_SIGNED_RG11_EAC
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
+  , pattern GL_COMPRESSED_SRGB8_ETC2
+  , pattern GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
+  , pattern GL_COMPUTE_SHADER
+  , pattern GL_COMPUTE_SHADER_BIT
+  , pattern GL_COMPUTE_SUBROUTINE
+  , pattern GL_COMPUTE_SUBROUTINE_UNIFORM
+  , pattern GL_COMPUTE_TEXTURE
+  , pattern GL_COMPUTE_WORK_GROUP_SIZE
+  , pattern GL_CONTEXT_FLAG_DEBUG_BIT
+  , pattern GL_DEBUG_CALLBACK_FUNCTION
+  , pattern GL_DEBUG_CALLBACK_USER_PARAM
+  , pattern GL_DEBUG_GROUP_STACK_DEPTH
+  , pattern GL_DEBUG_LOGGED_MESSAGES
+  , pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH
+  , pattern GL_DEBUG_OUTPUT
+  , pattern GL_DEBUG_OUTPUT_SYNCHRONOUS
+  , pattern GL_DEBUG_SEVERITY_HIGH
+  , pattern GL_DEBUG_SEVERITY_LOW
+  , pattern GL_DEBUG_SEVERITY_MEDIUM
+  , pattern GL_DEBUG_SEVERITY_NOTIFICATION
+  , pattern GL_DEBUG_SOURCE_API
+  , pattern GL_DEBUG_SOURCE_APPLICATION
+  , pattern GL_DEBUG_SOURCE_OTHER
+  , pattern GL_DEBUG_SOURCE_SHADER_COMPILER
+  , pattern GL_DEBUG_SOURCE_THIRD_PARTY
+  , pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM
+  , pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
+  , pattern GL_DEBUG_TYPE_ERROR
+  , pattern GL_DEBUG_TYPE_MARKER
+  , pattern GL_DEBUG_TYPE_OTHER
+  , pattern GL_DEBUG_TYPE_PERFORMANCE
+  , pattern GL_DEBUG_TYPE_POP_GROUP
+  , pattern GL_DEBUG_TYPE_PORTABILITY
+  , pattern GL_DEBUG_TYPE_PUSH_GROUP
+  , pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
+  , pattern GL_DEPTH_COMPONENTS
+  , pattern GL_DEPTH_RENDERABLE
+  , pattern GL_DEPTH_STENCIL_TEXTURE_MODE
+  , pattern GL_DISPATCH_INDIRECT_BUFFER
+  , pattern GL_DISPATCH_INDIRECT_BUFFER_BINDING
+  , pattern GL_FILTER
+  , pattern GL_FRAGMENT_SUBROUTINE
+  , pattern GL_FRAGMENT_SUBROUTINE_UNIFORM
+  , pattern GL_FRAGMENT_TEXTURE
+  , pattern GL_FRAMEBUFFER_BLEND
+  , pattern GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS
+  , pattern GL_FRAMEBUFFER_DEFAULT_HEIGHT
+  , pattern GL_FRAMEBUFFER_DEFAULT_LAYERS
+  , pattern GL_FRAMEBUFFER_DEFAULT_SAMPLES
+  , pattern GL_FRAMEBUFFER_DEFAULT_WIDTH
+  , pattern GL_FRAMEBUFFER_RENDERABLE
+  , pattern GL_FRAMEBUFFER_RENDERABLE_LAYERED
+  , pattern GL_FULL_SUPPORT
+  , pattern GL_GEOMETRY_SUBROUTINE
+  , pattern GL_GEOMETRY_SUBROUTINE_UNIFORM
+  , pattern GL_GEOMETRY_TEXTURE
+  , pattern GL_GET_TEXTURE_IMAGE_FORMAT
+  , pattern GL_GET_TEXTURE_IMAGE_TYPE
+  , pattern GL_IMAGE_CLASS_10_10_10_2
+  , pattern GL_IMAGE_CLASS_11_11_10
+  , pattern GL_IMAGE_CLASS_1_X_16
+  , pattern GL_IMAGE_CLASS_1_X_32
+  , pattern GL_IMAGE_CLASS_1_X_8
+  , pattern GL_IMAGE_CLASS_2_X_16
+  , pattern GL_IMAGE_CLASS_2_X_32
+  , pattern GL_IMAGE_CLASS_2_X_8
+  , pattern GL_IMAGE_CLASS_4_X_16
+  , pattern GL_IMAGE_CLASS_4_X_32
+  , pattern GL_IMAGE_CLASS_4_X_8
+  , pattern GL_IMAGE_COMPATIBILITY_CLASS
+  , pattern GL_IMAGE_PIXEL_FORMAT
+  , pattern GL_IMAGE_PIXEL_TYPE
+  , pattern GL_IMAGE_TEXEL_SIZE
+  , pattern GL_INTERNALFORMAT_ALPHA_SIZE
+  , pattern GL_INTERNALFORMAT_ALPHA_TYPE
+  , pattern GL_INTERNALFORMAT_BLUE_SIZE
+  , pattern GL_INTERNALFORMAT_BLUE_TYPE
+  , pattern GL_INTERNALFORMAT_DEPTH_SIZE
+  , pattern GL_INTERNALFORMAT_DEPTH_TYPE
+  , pattern GL_INTERNALFORMAT_GREEN_SIZE
+  , pattern GL_INTERNALFORMAT_GREEN_TYPE
+  , pattern GL_INTERNALFORMAT_PREFERRED
+  , pattern GL_INTERNALFORMAT_RED_SIZE
+  , pattern GL_INTERNALFORMAT_RED_TYPE
+  , pattern GL_INTERNALFORMAT_SHARED_SIZE
+  , pattern GL_INTERNALFORMAT_STENCIL_SIZE
+  , pattern GL_INTERNALFORMAT_STENCIL_TYPE
+  , pattern GL_INTERNALFORMAT_SUPPORTED
+  , pattern GL_IS_PER_PATCH
+  , pattern GL_IS_ROW_MAJOR
+  , pattern GL_LOCATION
+  , pattern GL_LOCATION_INDEX
+  , pattern GL_MANUAL_GENERATE_MIPMAP
+  , pattern GL_MATRIX_STRIDE
+  , pattern GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_DIMENSIONS
+  , pattern GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES
+  , pattern GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_COMPUTE_ATOMIC_COUNTERS
+  , pattern GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_COMPUTE_IMAGE_UNIFORMS
+  , pattern GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
+  , pattern GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_COMPUTE_UNIFORM_BLOCKS
+  , pattern GL_MAX_COMPUTE_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_COUNT
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_SIZE
+  , pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH
+  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES
+  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH
+  , pattern GL_MAX_DEPTH
+  , pattern GL_MAX_ELEMENT_INDEX
+  , pattern GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_FRAMEBUFFER_HEIGHT
+  , pattern GL_MAX_FRAMEBUFFER_LAYERS
+  , pattern GL_MAX_FRAMEBUFFER_SAMPLES
+  , pattern GL_MAX_FRAMEBUFFER_WIDTH
+  , pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_HEIGHT
+  , pattern GL_MAX_LABEL_LENGTH
+  , pattern GL_MAX_LAYERS
+  , pattern GL_MAX_NAME_LENGTH
+  , pattern GL_MAX_NUM_ACTIVE_VARIABLES
+  , pattern GL_MAX_NUM_COMPATIBLE_SUBROUTINES
+  , pattern GL_MAX_SHADER_STORAGE_BLOCK_SIZE
+  , pattern GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
+  , pattern GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_UNIFORM_LOCATIONS
+  , pattern GL_MAX_VERTEX_ATTRIB_BINDINGS
+  , pattern GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET
+  , pattern GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_WIDTH
+  , pattern GL_MIPMAP
+  , pattern GL_NAME_LENGTH
+  , pattern GL_NUM_ACTIVE_VARIABLES
+  , pattern GL_NUM_SHADING_LANGUAGE_VERSIONS
+  , pattern GL_OFFSET
+  , pattern GL_PRIMITIVE_RESTART_FIXED_INDEX
+  , pattern GL_PROGRAM
+  , pattern GL_PROGRAM_INPUT
+  , pattern GL_PROGRAM_OUTPUT
+  , pattern GL_PROGRAM_PIPELINE
+  , pattern GL_QUERY
+  , pattern GL_READ_PIXELS
+  , pattern GL_READ_PIXELS_FORMAT
+  , pattern GL_READ_PIXELS_TYPE
+  , pattern GL_REFERENCED_BY_COMPUTE_SHADER
+  , pattern GL_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_REFERENCED_BY_TESS_CONTROL_SHADER
+  , pattern GL_REFERENCED_BY_TESS_EVALUATION_SHADER
+  , pattern GL_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_SAMPLER
+  , pattern GL_SHADER
+  , pattern GL_SHADER_IMAGE_ATOMIC
+  , pattern GL_SHADER_IMAGE_LOAD
+  , pattern GL_SHADER_IMAGE_STORE
+  , pattern GL_SHADER_STORAGE_BARRIER_BIT
+  , pattern GL_SHADER_STORAGE_BLOCK
+  , pattern GL_SHADER_STORAGE_BUFFER
+  , pattern GL_SHADER_STORAGE_BUFFER_BINDING
+  , pattern GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_SHADER_STORAGE_BUFFER_SIZE
+  , pattern GL_SHADER_STORAGE_BUFFER_START
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST
+  , pattern GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE
+  , pattern GL_SRGB_READ
+  , pattern GL_SRGB_WRITE
+  , pattern GL_STACK_OVERFLOW
+  , pattern GL_STACK_UNDERFLOW
+  , pattern GL_STENCIL_COMPONENTS
+  , pattern GL_STENCIL_RENDERABLE
+  , pattern GL_TESS_CONTROL_SUBROUTINE
+  , pattern GL_TESS_CONTROL_SUBROUTINE_UNIFORM
+  , pattern GL_TESS_CONTROL_TEXTURE
+  , pattern GL_TESS_EVALUATION_SUBROUTINE
+  , pattern GL_TESS_EVALUATION_SUBROUTINE_UNIFORM
+  , pattern GL_TESS_EVALUATION_TEXTURE
+  , pattern GL_TEXTURE_BUFFER_OFFSET
+  , pattern GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_TEXTURE_BUFFER_SIZE
+  , pattern GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT
+  , pattern GL_TEXTURE_COMPRESSED_BLOCK_SIZE
+  , pattern GL_TEXTURE_COMPRESSED_BLOCK_WIDTH
+  , pattern GL_TEXTURE_GATHER
+  , pattern GL_TEXTURE_GATHER_SHADOW
+  , pattern GL_TEXTURE_IMAGE_FORMAT
+  , pattern GL_TEXTURE_IMAGE_TYPE
+  , pattern GL_TEXTURE_IMMUTABLE_LEVELS
+  , pattern GL_TEXTURE_SHADOW
+  , pattern GL_TEXTURE_VIEW
+  , pattern GL_TEXTURE_VIEW_MIN_LAYER
+  , pattern GL_TEXTURE_VIEW_MIN_LEVEL
+  , pattern GL_TEXTURE_VIEW_NUM_LAYERS
+  , pattern GL_TEXTURE_VIEW_NUM_LEVELS
+  , pattern GL_TOP_LEVEL_ARRAY_SIZE
+  , pattern GL_TOP_LEVEL_ARRAY_STRIDE
+  , pattern GL_TRANSFORM_FEEDBACK_VARYING
+  , pattern GL_TYPE
+  , pattern GL_UNIFORM
+  , pattern GL_UNIFORM_BLOCK
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER
+  , pattern GL_VERTEX_ARRAY
+  , pattern GL_VERTEX_ATTRIB_ARRAY_LONG
+  , pattern GL_VERTEX_ATTRIB_BINDING
+  , pattern GL_VERTEX_ATTRIB_RELATIVE_OFFSET
+  , pattern GL_VERTEX_BINDING_BUFFER
+  , pattern GL_VERTEX_BINDING_DIVISOR
+  , pattern GL_VERTEX_BINDING_OFFSET
+  , pattern GL_VERTEX_BINDING_STRIDE
+  , pattern GL_VERTEX_SUBROUTINE
+  , pattern GL_VERTEX_SUBROUTINE_UNIFORM
+  , pattern GL_VERTEX_TEXTURE
+  , pattern GL_VIEW_CLASS_128_BITS
+  , pattern GL_VIEW_CLASS_16_BITS
+  , pattern GL_VIEW_CLASS_24_BITS
+  , pattern GL_VIEW_CLASS_32_BITS
+  , pattern GL_VIEW_CLASS_48_BITS
+  , pattern GL_VIEW_CLASS_64_BITS
+  , pattern GL_VIEW_CLASS_8_BITS
+  , pattern GL_VIEW_CLASS_96_BITS
+  , pattern GL_VIEW_CLASS_BPTC_FLOAT
+  , pattern GL_VIEW_CLASS_BPTC_UNORM
+  , pattern GL_VIEW_CLASS_RGTC1_RED
+  , pattern GL_VIEW_CLASS_RGTC2_RG
+  , pattern GL_VIEW_CLASS_S3TC_DXT1_RGB
+  , pattern GL_VIEW_CLASS_S3TC_DXT1_RGBA
+  , pattern GL_VIEW_CLASS_S3TC_DXT3_RGBA
+  , pattern GL_VIEW_CLASS_S3TC_DXT5_RGBA
+  , pattern GL_VIEW_COMPATIBILITY_CLASS
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+import Graphics.GL.Raw.Profile.Core42
+
+pattern GL_NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9 :: GLenum
+
+pattern GL_VERTEX_ATTRIB_ARRAY_LONG = 0x874E :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core44.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core44.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core44.hs
@@ -0,0 +1,41 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core44 (
+  -- * Graphics.GL.Raw.Profile.Core44
+    module Graphics.GL.Raw.Profile.Core43
+  , glBindBuffersBase
+  , glBindBuffersRange
+  , glBindImageTextures
+  , glBindSamplers
+  , glBindTextures
+  , glBindVertexBuffers
+  , glBufferStorage
+  , glClearTexImage
+  , glClearTexSubImage
+  , pattern GL_BUFFER_IMMUTABLE_STORAGE
+  , pattern GL_BUFFER_STORAGE_FLAGS
+  , pattern GL_CLEAR_TEXTURE
+  , pattern GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT
+  , pattern GL_CLIENT_STORAGE_BIT
+  , pattern GL_DYNAMIC_STORAGE_BIT
+  , pattern GL_LOCATION_COMPONENT
+  , pattern GL_MAP_COHERENT_BIT
+  , pattern GL_MAP_PERSISTENT_BIT
+  , pattern GL_MAX_VERTEX_ATTRIB_STRIDE
+  , pattern GL_MIRROR_CLAMP_TO_EDGE
+  , pattern GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED
+  , pattern GL_QUERY_BUFFER
+  , pattern GL_QUERY_BUFFER_BARRIER_BIT
+  , pattern GL_QUERY_BUFFER_BINDING
+  , pattern GL_QUERY_RESULT_NO_WAIT
+  , pattern GL_TEXTURE_BUFFER_BINDING
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_INDEX
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+import Graphics.GL.Raw.Profile.Core43
+
+pattern GL_TEXTURE_BUFFER_BINDING = 0x8C2A :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Core45.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Core45.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Core45.hs
@@ -0,0 +1,175 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Core45 (
+  -- * Graphics.GL.Raw.Profile.Core45
+    module Graphics.GL.Raw.Profile.Core44
+  , glBindTextureUnit
+  , glBlitNamedFramebuffer
+  , glCheckNamedFramebufferStatus
+  , glClearNamedBufferData
+  , glClearNamedBufferSubData
+  , glClearNamedFramebufferfi
+  , glClearNamedFramebufferfv
+  , glClearNamedFramebufferiv
+  , glClearNamedFramebufferuiv
+  , glClipControl
+  , glCompressedTextureSubImage1D
+  , glCompressedTextureSubImage2D
+  , glCompressedTextureSubImage3D
+  , glCopyNamedBufferSubData
+  , glCopyTextureSubImage1D
+  , glCopyTextureSubImage2D
+  , glCopyTextureSubImage3D
+  , glCreateBuffers
+  , glCreateFramebuffers
+  , glCreateProgramPipelines
+  , glCreateQueries
+  , glCreateRenderbuffers
+  , glCreateSamplers
+  , glCreateTextures
+  , glCreateTransformFeedbacks
+  , glCreateVertexArrays
+  , glDisableVertexArrayAttrib
+  , glEnableVertexArrayAttrib
+  , glFlushMappedNamedBufferRange
+  , glGenerateTextureMipmap
+  , glGetCompressedTextureImage
+  , glGetCompressedTextureSubImage
+  , glGetGraphicsResetStatus
+  , glGetNamedBufferParameteri64v
+  , glGetNamedBufferParameteriv
+  , glGetNamedBufferPointerv
+  , glGetNamedBufferSubData
+  , glGetNamedFramebufferAttachmentParameteriv
+  , glGetNamedFramebufferParameteriv
+  , glGetNamedRenderbufferParameteriv
+  , glGetQueryBufferObjecti64v
+  , glGetQueryBufferObjectiv
+  , glGetQueryBufferObjectui64v
+  , glGetQueryBufferObjectuiv
+  , glGetTextureImage
+  , glGetTextureLevelParameterfv
+  , glGetTextureLevelParameteriv
+  , glGetTextureParameterIiv
+  , glGetTextureParameterIuiv
+  , glGetTextureParameterfv
+  , glGetTextureParameteriv
+  , glGetTextureSubImage
+  , glGetTransformFeedbacki64_v
+  , glGetTransformFeedbacki_v
+  , glGetTransformFeedbackiv
+  , glGetVertexArrayIndexed64iv
+  , glGetVertexArrayIndexediv
+  , glGetVertexArrayiv
+  , glGetnCompressedTexImage
+  , glGetnTexImage
+  , glGetnUniformdv
+  , glGetnUniformfv
+  , glGetnUniformiv
+  , glGetnUniformuiv
+  , glInvalidateNamedFramebufferData
+  , glInvalidateNamedFramebufferSubData
+  , glMapNamedBuffer
+  , glMapNamedBufferRange
+  , glMemoryBarrierByRegion
+  , glNamedBufferData
+  , glNamedBufferStorage
+  , glNamedBufferSubData
+  , glNamedFramebufferDrawBuffer
+  , glNamedFramebufferDrawBuffers
+  , glNamedFramebufferParameteri
+  , glNamedFramebufferReadBuffer
+  , glNamedFramebufferRenderbuffer
+  , glNamedFramebufferTexture
+  , glNamedFramebufferTextureLayer
+  , glNamedRenderbufferStorage
+  , glNamedRenderbufferStorageMultisample
+  , glReadnPixels
+  , glTextureBarrier
+  , glTextureBuffer
+  , glTextureBufferRange
+  , glTextureParameterIiv
+  , glTextureParameterIuiv
+  , glTextureParameterf
+  , glTextureParameterfv
+  , glTextureParameteri
+  , glTextureParameteriv
+  , glTextureStorage1D
+  , glTextureStorage2D
+  , glTextureStorage2DMultisample
+  , glTextureStorage3D
+  , glTextureStorage3DMultisample
+  , glTextureSubImage1D
+  , glTextureSubImage2D
+  , glTextureSubImage3D
+  , glTransformFeedbackBufferBase
+  , glTransformFeedbackBufferRange
+  , glUnmapNamedBuffer
+  , glVertexArrayAttribBinding
+  , glVertexArrayAttribFormat
+  , glVertexArrayAttribIFormat
+  , glVertexArrayAttribLFormat
+  , glVertexArrayBindingDivisor
+  , glVertexArrayElementBuffer
+  , glVertexArrayVertexBuffer
+  , glVertexArrayVertexBuffers
+  , pattern GL_CLIP_DEPTH_MODE
+  , pattern GL_CLIP_ORIGIN
+  , pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT
+  , pattern GL_CONTEXT_LOST
+  , pattern GL_CONTEXT_RELEASE_BEHAVIOR
+  , pattern GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH
+  , pattern GL_GUILTY_CONTEXT_RESET
+  , pattern GL_INNOCENT_CONTEXT_RESET
+  , pattern GL_LOSE_CONTEXT_ON_RESET
+  , pattern GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES
+  , pattern GL_MAX_CULL_DISTANCES
+  , pattern GL_NEGATIVE_ONE_TO_ONE
+  , pattern GL_NO_RESET_NOTIFICATION
+  , pattern GL_QUERY_BY_REGION_NO_WAIT_INVERTED
+  , pattern GL_QUERY_BY_REGION_WAIT_INVERTED
+  , pattern GL_QUERY_NO_WAIT_INVERTED
+  , pattern GL_QUERY_TARGET
+  , pattern GL_QUERY_WAIT_INVERTED
+  , pattern GL_RESET_NOTIFICATION_STRATEGY
+  , pattern GL_TEXTURE_BINDING
+  , pattern GL_TEXTURE_TARGET
+  , pattern GL_UNKNOWN_CONTEXT_RESET
+  , pattern GL_ZERO_TO_ONE
+) where
+
+import Control.Monad.IO.Class
+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
+
+import Graphics.GL.Raw.Profile.Core44
+
+glGetnCompressedTexImage :: MonadIO m => GLenum -> GLint -> GLsizei -> Ptr () -> m ()
+glGetnCompressedTexImage = ffienumintsizeiPtrVIOV glGetnCompressedTexImageFunPtr
+
+glGetnCompressedTexImageFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> Ptr () -> IO ())
+glGetnCompressedTexImageFunPtr = unsafePerformIO (getProcAddress "glGetnCompressedTexImage")
+
+{-# NOINLINE glGetnCompressedTexImageFunPtr #-}
+
+glGetnTexImage :: MonadIO m => GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
+glGetnTexImage = ffienumintenumenumsizeiPtrVIOV glGetnTexImageFunPtr
+
+glGetnTexImageFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
+glGetnTexImageFunPtr = unsafePerformIO (getProcAddress "glGetnTexImage")
+
+{-# NOINLINE glGetnTexImageFunPtr #-}
+
+glGetnUniformdv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
+glGetnUniformdv = ffiuintintsizeiPtrdoubleIOV glGetnUniformdvFunPtr
+
+glGetnUniformdvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
+glGetnUniformdvFunPtr = unsafePerformIO (getProcAddress "glGetnUniformdv")
+
+{-# NOINLINE glGetnUniformdvFunPtr #-}
+
+pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded20.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded20.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded20.hs
@@ -0,0 +1,453 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Embedded20 (
+  -- * Graphics.GL.Raw.Profile.Embedded20
+    glActiveTexture
+  , glAttachShader
+  , glBindAttribLocation
+  , glBindBuffer
+  , glBindFramebuffer
+  , glBindRenderbuffer
+  , glBindTexture
+  , glBlendColor
+  , glBlendEquation
+  , glBlendEquationSeparate
+  , glBlendFunc
+  , glBlendFuncSeparate
+  , glBufferData
+  , glBufferSubData
+  , glCheckFramebufferStatus
+  , glClear
+  , glClearColor
+  , glClearDepthf
+  , glClearStencil
+  , glColorMask
+  , glCompileShader
+  , glCompressedTexImage2D
+  , glCompressedTexSubImage2D
+  , glCopyTexImage2D
+  , glCopyTexSubImage2D
+  , glCreateProgram
+  , glCreateShader
+  , glCullFace
+  , glDeleteBuffers
+  , glDeleteFramebuffers
+  , glDeleteProgram
+  , glDeleteRenderbuffers
+  , glDeleteShader
+  , glDeleteTextures
+  , glDepthFunc
+  , glDepthMask
+  , glDepthRangef
+  , glDetachShader
+  , glDisable
+  , glDisableVertexAttribArray
+  , glDrawArrays
+  , glDrawElements
+  , glEnable
+  , glEnableVertexAttribArray
+  , glFinish
+  , glFlush
+  , glFramebufferRenderbuffer
+  , glFramebufferTexture2D
+  , glFrontFace
+  , glGenBuffers
+  , glGenFramebuffers
+  , glGenRenderbuffers
+  , glGenTextures
+  , glGenerateMipmap
+  , glGetActiveAttrib
+  , glGetActiveUniform
+  , glGetAttachedShaders
+  , glGetAttribLocation
+  , glGetBooleanv
+  , glGetBufferParameteriv
+  , glGetError
+  , glGetFloatv
+  , glGetFramebufferAttachmentParameteriv
+  , glGetIntegerv
+  , glGetProgramInfoLog
+  , glGetProgramiv
+  , glGetRenderbufferParameteriv
+  , glGetShaderInfoLog
+  , glGetShaderPrecisionFormat
+  , glGetShaderSource
+  , glGetShaderiv
+  , glGetString
+  , glGetTexParameterfv
+  , glGetTexParameteriv
+  , glGetUniformLocation
+  , glGetUniformfv
+  , glGetUniformiv
+  , glGetVertexAttribPointerv
+  , glGetVertexAttribfv
+  , glGetVertexAttribiv
+  , glHint
+  , glIsBuffer
+  , glIsEnabled
+  , glIsFramebuffer
+  , glIsProgram
+  , glIsRenderbuffer
+  , glIsShader
+  , glIsTexture
+  , glLineWidth
+  , glLinkProgram
+  , glPixelStorei
+  , glPolygonOffset
+  , glReadPixels
+  , glReleaseShaderCompiler
+  , glRenderbufferStorage
+  , glSampleCoverage
+  , glScissor
+  , glShaderBinary
+  , glShaderSource
+  , glStencilFunc
+  , glStencilFuncSeparate
+  , glStencilMask
+  , glStencilMaskSeparate
+  , glStencilOp
+  , glStencilOpSeparate
+  , glTexImage2D
+  , glTexParameterf
+  , glTexParameterfv
+  , glTexParameteri
+  , glTexParameteriv
+  , glTexSubImage2D
+  , glUniform1f
+  , glUniform1fv
+  , glUniform1i
+  , glUniform1iv
+  , glUniform2f
+  , glUniform2fv
+  , glUniform2i
+  , glUniform2iv
+  , glUniform3f
+  , glUniform3fv
+  , glUniform3i
+  , glUniform3iv
+  , glUniform4f
+  , glUniform4fv
+  , glUniform4i
+  , glUniform4iv
+  , glUniformMatrix2fv
+  , glUniformMatrix3fv
+  , glUniformMatrix4fv
+  , glUseProgram
+  , glValidateProgram
+  , glVertexAttrib1f
+  , glVertexAttrib1fv
+  , glVertexAttrib2f
+  , glVertexAttrib2fv
+  , glVertexAttrib3f
+  , glVertexAttrib3fv
+  , glVertexAttrib4f
+  , glVertexAttrib4fv
+  , glVertexAttribPointer
+  , glViewport
+  , pattern GL_ACTIVE_ATTRIBUTES
+  , pattern GL_ACTIVE_ATTRIBUTE_MAX_LENGTH
+  , pattern GL_ACTIVE_TEXTURE
+  , pattern GL_ACTIVE_UNIFORMS
+  , pattern GL_ACTIVE_UNIFORM_MAX_LENGTH
+  , pattern GL_ALIASED_LINE_WIDTH_RANGE
+  , pattern GL_ALIASED_POINT_SIZE_RANGE
+  , pattern GL_ALPHA
+  , pattern GL_ALPHA_BITS
+  , pattern GL_ALWAYS
+  , pattern GL_ARRAY_BUFFER
+  , pattern GL_ARRAY_BUFFER_BINDING
+  , pattern GL_ATTACHED_SHADERS
+  , pattern GL_BACK
+  , pattern GL_BLEND
+  , pattern GL_BLEND_COLOR
+  , pattern GL_BLEND_DST_ALPHA
+  , pattern GL_BLEND_DST_RGB
+  , pattern GL_BLEND_EQUATION
+  , pattern GL_BLEND_EQUATION_ALPHA
+  , pattern GL_BLEND_EQUATION_RGB
+  , pattern GL_BLEND_SRC_ALPHA
+  , pattern GL_BLEND_SRC_RGB
+  , pattern GL_BLUE_BITS
+  , pattern GL_BOOL
+  , pattern GL_BOOL_VEC2
+  , pattern GL_BOOL_VEC3
+  , pattern GL_BOOL_VEC4
+  , pattern GL_BUFFER_SIZE
+  , pattern GL_BUFFER_USAGE
+  , pattern GL_BYTE
+  , pattern GL_CCW
+  , pattern GL_CLAMP_TO_EDGE
+  , pattern GL_COLOR_ATTACHMENT0
+  , pattern GL_COLOR_BUFFER_BIT
+  , pattern GL_COLOR_CLEAR_VALUE
+  , pattern GL_COLOR_WRITEMASK
+  , pattern GL_COMPILE_STATUS
+  , pattern GL_COMPRESSED_TEXTURE_FORMATS
+  , pattern GL_CONSTANT_ALPHA
+  , pattern GL_CONSTANT_COLOR
+  , pattern GL_CULL_FACE
+  , pattern GL_CULL_FACE_MODE
+  , pattern GL_CURRENT_PROGRAM
+  , pattern GL_CURRENT_VERTEX_ATTRIB
+  , pattern GL_CW
+  , pattern GL_DECR
+  , pattern GL_DECR_WRAP
+  , pattern GL_DELETE_STATUS
+  , pattern GL_DEPTH_ATTACHMENT
+  , pattern GL_DEPTH_BITS
+  , pattern GL_DEPTH_BUFFER_BIT
+  , pattern GL_DEPTH_CLEAR_VALUE
+  , pattern GL_DEPTH_COMPONENT
+  , pattern GL_DEPTH_COMPONENT16
+  , pattern GL_DEPTH_FUNC
+  , pattern GL_DEPTH_RANGE
+  , pattern GL_DEPTH_TEST
+  , pattern GL_DEPTH_WRITEMASK
+  , pattern GL_DITHER
+  , pattern GL_DONT_CARE
+  , pattern GL_DST_ALPHA
+  , pattern GL_DST_COLOR
+  , pattern GL_DYNAMIC_DRAW
+  , pattern GL_ELEMENT_ARRAY_BUFFER
+  , pattern GL_ELEMENT_ARRAY_BUFFER_BINDING
+  , pattern GL_EQUAL
+  , pattern GL_EXTENSIONS
+  , pattern GL_FALSE
+  , pattern GL_FASTEST
+  , pattern GL_FIXED
+  , pattern GL_FLOAT
+  , pattern GL_FLOAT_MAT2
+  , pattern GL_FLOAT_MAT3
+  , pattern GL_FLOAT_MAT4
+  , pattern GL_FLOAT_VEC2
+  , pattern GL_FLOAT_VEC3
+  , pattern GL_FLOAT_VEC4
+  , pattern GL_FRAGMENT_SHADER
+  , pattern GL_FRAMEBUFFER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
+  , pattern GL_FRAMEBUFFER_BINDING
+  , pattern GL_FRAMEBUFFER_COMPLETE
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_UNSUPPORTED
+  , pattern GL_FRONT
+  , pattern GL_FRONT_AND_BACK
+  , pattern GL_FRONT_FACE
+  , pattern GL_FUNC_ADD
+  , pattern GL_FUNC_REVERSE_SUBTRACT
+  , pattern GL_FUNC_SUBTRACT
+  , pattern GL_GENERATE_MIPMAP_HINT
+  , pattern GL_GEQUAL
+  , pattern GL_GREATER
+  , pattern GL_GREEN_BITS
+  , pattern GL_HIGH_FLOAT
+  , pattern GL_HIGH_INT
+  , pattern GL_IMPLEMENTATION_COLOR_READ_FORMAT
+  , pattern GL_IMPLEMENTATION_COLOR_READ_TYPE
+  , pattern GL_INCR
+  , pattern GL_INCR_WRAP
+  , pattern GL_INFO_LOG_LENGTH
+  , pattern GL_INT
+  , pattern GL_INT_VEC2
+  , pattern GL_INT_VEC3
+  , pattern GL_INT_VEC4
+  , pattern GL_INVALID_ENUM
+  , pattern GL_INVALID_FRAMEBUFFER_OPERATION
+  , pattern GL_INVALID_OPERATION
+  , pattern GL_INVALID_VALUE
+  , pattern GL_INVERT
+  , pattern GL_KEEP
+  , pattern GL_LEQUAL
+  , pattern GL_LESS
+  , pattern GL_LINEAR
+  , pattern GL_LINEAR_MIPMAP_LINEAR
+  , pattern GL_LINEAR_MIPMAP_NEAREST
+  , pattern GL_LINES
+  , pattern GL_LINE_LOOP
+  , pattern GL_LINE_STRIP
+  , pattern GL_LINE_WIDTH
+  , pattern GL_LINK_STATUS
+  , pattern GL_LOW_FLOAT
+  , pattern GL_LOW_INT
+  , pattern GL_LUMINANCE
+  , pattern GL_LUMINANCE_ALPHA
+  , pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE
+  , pattern GL_MAX_FRAGMENT_UNIFORM_VECTORS
+  , pattern GL_MAX_RENDERBUFFER_SIZE
+  , pattern GL_MAX_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_TEXTURE_SIZE
+  , pattern GL_MAX_VARYING_VECTORS
+  , pattern GL_MAX_VERTEX_ATTRIBS
+  , pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_VERTEX_UNIFORM_VECTORS
+  , pattern GL_MAX_VIEWPORT_DIMS
+  , pattern GL_MEDIUM_FLOAT
+  , pattern GL_MEDIUM_INT
+  , pattern GL_MIRRORED_REPEAT
+  , pattern GL_NEAREST
+  , pattern GL_NEAREST_MIPMAP_LINEAR
+  , pattern GL_NEAREST_MIPMAP_NEAREST
+  , pattern GL_NEVER
+  , pattern GL_NICEST
+  , pattern GL_NONE
+  , pattern GL_NOTEQUAL
+  , pattern GL_NO_ERROR
+  , pattern GL_NUM_COMPRESSED_TEXTURE_FORMATS
+  , pattern GL_NUM_SHADER_BINARY_FORMATS
+  , pattern GL_ONE
+  , pattern GL_ONE_MINUS_CONSTANT_ALPHA
+  , pattern GL_ONE_MINUS_CONSTANT_COLOR
+  , pattern GL_ONE_MINUS_DST_ALPHA
+  , pattern GL_ONE_MINUS_DST_COLOR
+  , pattern GL_ONE_MINUS_SRC_ALPHA
+  , pattern GL_ONE_MINUS_SRC_COLOR
+  , pattern GL_OUT_OF_MEMORY
+  , pattern GL_PACK_ALIGNMENT
+  , pattern GL_POINTS
+  , pattern GL_POLYGON_OFFSET_FACTOR
+  , pattern GL_POLYGON_OFFSET_FILL
+  , pattern GL_POLYGON_OFFSET_UNITS
+  , pattern GL_RED_BITS
+  , pattern GL_RENDERBUFFER
+  , pattern GL_RENDERBUFFER_ALPHA_SIZE
+  , pattern GL_RENDERBUFFER_BINDING
+  , pattern GL_RENDERBUFFER_BLUE_SIZE
+  , pattern GL_RENDERBUFFER_DEPTH_SIZE
+  , pattern GL_RENDERBUFFER_GREEN_SIZE
+  , pattern GL_RENDERBUFFER_HEIGHT
+  , pattern GL_RENDERBUFFER_INTERNAL_FORMAT
+  , pattern GL_RENDERBUFFER_RED_SIZE
+  , pattern GL_RENDERBUFFER_STENCIL_SIZE
+  , pattern GL_RENDERBUFFER_WIDTH
+  , pattern GL_RENDERER
+  , pattern GL_REPEAT
+  , pattern GL_REPLACE
+  , pattern GL_RGB
+  , pattern GL_RGB565
+  , pattern GL_RGB5_A1
+  , pattern GL_RGBA
+  , pattern GL_RGBA4
+  , pattern GL_SAMPLER_2D
+  , pattern GL_SAMPLER_CUBE
+  , pattern GL_SAMPLES
+  , pattern GL_SAMPLE_ALPHA_TO_COVERAGE
+  , pattern GL_SAMPLE_BUFFERS
+  , pattern GL_SAMPLE_COVERAGE
+  , pattern GL_SAMPLE_COVERAGE_INVERT
+  , pattern GL_SAMPLE_COVERAGE_VALUE
+  , pattern GL_SCISSOR_BOX
+  , pattern GL_SCISSOR_TEST
+  , pattern GL_SHADER_BINARY_FORMATS
+  , pattern GL_SHADER_COMPILER
+  , pattern GL_SHADER_SOURCE_LENGTH
+  , pattern GL_SHADER_TYPE
+  , pattern GL_SHADING_LANGUAGE_VERSION
+  , pattern GL_SHORT
+  , pattern GL_SRC_ALPHA
+  , pattern GL_SRC_ALPHA_SATURATE
+  , pattern GL_SRC_COLOR
+  , pattern GL_STATIC_DRAW
+  , pattern GL_STENCIL_ATTACHMENT
+  , pattern GL_STENCIL_BACK_FAIL
+  , pattern GL_STENCIL_BACK_FUNC
+  , pattern GL_STENCIL_BACK_PASS_DEPTH_FAIL
+  , pattern GL_STENCIL_BACK_PASS_DEPTH_PASS
+  , pattern GL_STENCIL_BACK_REF
+  , pattern GL_STENCIL_BACK_VALUE_MASK
+  , pattern GL_STENCIL_BACK_WRITEMASK
+  , pattern GL_STENCIL_BITS
+  , pattern GL_STENCIL_BUFFER_BIT
+  , pattern GL_STENCIL_CLEAR_VALUE
+  , pattern GL_STENCIL_FAIL
+  , pattern GL_STENCIL_FUNC
+  , pattern GL_STENCIL_INDEX8
+  , pattern GL_STENCIL_PASS_DEPTH_FAIL
+  , pattern GL_STENCIL_PASS_DEPTH_PASS
+  , pattern GL_STENCIL_REF
+  , pattern GL_STENCIL_TEST
+  , pattern GL_STENCIL_VALUE_MASK
+  , pattern GL_STENCIL_WRITEMASK
+  , pattern GL_STREAM_DRAW
+  , pattern GL_SUBPIXEL_BITS
+  , pattern GL_TEXTURE
+  , pattern GL_TEXTURE0
+  , pattern GL_TEXTURE1
+  , pattern GL_TEXTURE10
+  , pattern GL_TEXTURE11
+  , pattern GL_TEXTURE12
+  , pattern GL_TEXTURE13
+  , pattern GL_TEXTURE14
+  , pattern GL_TEXTURE15
+  , pattern GL_TEXTURE16
+  , pattern GL_TEXTURE17
+  , pattern GL_TEXTURE18
+  , pattern GL_TEXTURE19
+  , pattern GL_TEXTURE2
+  , pattern GL_TEXTURE20
+  , pattern GL_TEXTURE21
+  , pattern GL_TEXTURE22
+  , pattern GL_TEXTURE23
+  , pattern GL_TEXTURE24
+  , pattern GL_TEXTURE25
+  , pattern GL_TEXTURE26
+  , pattern GL_TEXTURE27
+  , pattern GL_TEXTURE28
+  , pattern GL_TEXTURE29
+  , pattern GL_TEXTURE3
+  , pattern GL_TEXTURE30
+  , pattern GL_TEXTURE31
+  , pattern GL_TEXTURE4
+  , pattern GL_TEXTURE5
+  , pattern GL_TEXTURE6
+  , pattern GL_TEXTURE7
+  , pattern GL_TEXTURE8
+  , pattern GL_TEXTURE9
+  , pattern GL_TEXTURE_2D
+  , pattern GL_TEXTURE_BINDING_2D
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP
+  , pattern GL_TEXTURE_CUBE_MAP
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z
+  , pattern GL_TEXTURE_MAG_FILTER
+  , pattern GL_TEXTURE_MIN_FILTER
+  , pattern GL_TEXTURE_WRAP_S
+  , pattern GL_TEXTURE_WRAP_T
+  , pattern GL_TRIANGLES
+  , pattern GL_TRIANGLE_FAN
+  , pattern GL_TRIANGLE_STRIP
+  , pattern GL_TRUE
+  , pattern GL_UNPACK_ALIGNMENT
+  , pattern GL_UNSIGNED_BYTE
+  , pattern GL_UNSIGNED_INT
+  , pattern GL_UNSIGNED_SHORT
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4
+  , pattern GL_UNSIGNED_SHORT_5_5_5_1
+  , pattern GL_UNSIGNED_SHORT_5_6_5
+  , pattern GL_VALIDATE_STATUS
+  , pattern GL_VENDOR
+  , pattern GL_VERSION
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
+  , pattern GL_VERTEX_ATTRIB_ARRAY_ENABLED
+  , pattern GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
+  , pattern GL_VERTEX_ATTRIB_ARRAY_POINTER
+  , pattern GL_VERTEX_ATTRIB_ARRAY_SIZE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_STRIDE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_TYPE
+  , pattern GL_VERTEX_SHADER
+  , pattern GL_VIEWPORT
+  , pattern GL_ZERO
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+import Graphics.GL.Raw.Types
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9 :: GLenum
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded30.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded30.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded30.hs
@@ -0,0 +1,419 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Embedded30 (
+  -- * Graphics.GL.Raw.Profile.Embedded30
+    module Graphics.GL.Raw.Profile.Embedded20
+  , glBeginQuery
+  , glBeginTransformFeedback
+  , glBindBufferBase
+  , glBindBufferRange
+  , glBindSampler
+  , glBindTransformFeedback
+  , glBindVertexArray
+  , glBlitFramebuffer
+  , glClearBufferfi
+  , glClearBufferfv
+  , glClearBufferiv
+  , glClearBufferuiv
+  , glClientWaitSync
+  , glCompressedTexImage3D
+  , glCompressedTexSubImage3D
+  , glCopyBufferSubData
+  , glCopyTexSubImage3D
+  , glDeleteQueries
+  , glDeleteSamplers
+  , glDeleteSync
+  , glDeleteTransformFeedbacks
+  , glDeleteVertexArrays
+  , glDrawArraysInstanced
+  , glDrawBuffers
+  , glDrawElementsInstanced
+  , glDrawRangeElements
+  , glEndQuery
+  , glEndTransformFeedback
+  , glFenceSync
+  , glFlushMappedBufferRange
+  , glFramebufferTextureLayer
+  , glGenQueries
+  , glGenSamplers
+  , glGenTransformFeedbacks
+  , glGenVertexArrays
+  , glGetActiveUniformBlockName
+  , glGetActiveUniformBlockiv
+  , glGetActiveUniformsiv
+  , glGetBufferParameteri64v
+  , glGetBufferPointerv
+  , glGetFragDataLocation
+  , glGetInteger64i_v
+  , glGetInteger64v
+  , glGetIntegeri_v
+  , glGetInternalformativ
+  , glGetProgramBinary
+  , glGetQueryObjectuiv
+  , glGetQueryiv
+  , glGetSamplerParameterfv
+  , glGetSamplerParameteriv
+  , glGetStringi
+  , glGetSynciv
+  , glGetTransformFeedbackVarying
+  , glGetUniformBlockIndex
+  , glGetUniformIndices
+  , glGetUniformuiv
+  , glGetVertexAttribIiv
+  , glGetVertexAttribIuiv
+  , glInvalidateFramebuffer
+  , glInvalidateSubFramebuffer
+  , glIsQuery
+  , glIsSampler
+  , glIsSync
+  , glIsTransformFeedback
+  , glIsVertexArray
+  , glMapBufferRange
+  , glPauseTransformFeedback
+  , glProgramBinary
+  , glProgramParameteri
+  , glReadBuffer
+  , glRenderbufferStorageMultisample
+  , glResumeTransformFeedback
+  , glSamplerParameterf
+  , glSamplerParameterfv
+  , glSamplerParameteri
+  , glSamplerParameteriv
+  , glTexImage3D
+  , glTexStorage2D
+  , glTexStorage3D
+  , glTexSubImage3D
+  , glTransformFeedbackVaryings
+  , glUniform1ui
+  , glUniform1uiv
+  , glUniform2ui
+  , glUniform2uiv
+  , glUniform3ui
+  , glUniform3uiv
+  , glUniform4ui
+  , glUniform4uiv
+  , glUniformBlockBinding
+  , glUniformMatrix2x3fv
+  , glUniformMatrix2x4fv
+  , glUniformMatrix3x2fv
+  , glUniformMatrix3x4fv
+  , glUniformMatrix4x2fv
+  , glUniformMatrix4x3fv
+  , glUnmapBuffer
+  , glVertexAttribDivisor
+  , glVertexAttribI4i
+  , glVertexAttribI4iv
+  , glVertexAttribI4ui
+  , glVertexAttribI4uiv
+  , glVertexAttribIPointer
+  , glWaitSync
+  , pattern GL_ACTIVE_UNIFORM_BLOCKS
+  , pattern GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+  , pattern GL_ALREADY_SIGNALED
+  , pattern GL_ANY_SAMPLES_PASSED
+  , pattern GL_ANY_SAMPLES_PASSED_CONSERVATIVE
+  , pattern GL_BLUE
+  , pattern GL_BUFFER_ACCESS_FLAGS
+  , pattern GL_BUFFER_MAPPED
+  , pattern GL_BUFFER_MAP_LENGTH
+  , pattern GL_BUFFER_MAP_OFFSET
+  , pattern GL_BUFFER_MAP_POINTER
+  , pattern GL_COLOR
+  , pattern GL_COLOR_ATTACHMENT1
+  , pattern GL_COLOR_ATTACHMENT10
+  , pattern GL_COLOR_ATTACHMENT11
+  , pattern GL_COLOR_ATTACHMENT12
+  , pattern GL_COLOR_ATTACHMENT13
+  , pattern GL_COLOR_ATTACHMENT14
+  , pattern GL_COLOR_ATTACHMENT15
+  , pattern GL_COLOR_ATTACHMENT2
+  , pattern GL_COLOR_ATTACHMENT3
+  , pattern GL_COLOR_ATTACHMENT4
+  , pattern GL_COLOR_ATTACHMENT5
+  , pattern GL_COLOR_ATTACHMENT6
+  , pattern GL_COLOR_ATTACHMENT7
+  , pattern GL_COLOR_ATTACHMENT8
+  , pattern GL_COLOR_ATTACHMENT9
+  , pattern GL_COMPARE_REF_TO_TEXTURE
+  , pattern GL_COMPRESSED_R11_EAC
+  , pattern GL_COMPRESSED_RG11_EAC
+  , pattern GL_COMPRESSED_RGB8_ETC2
+  , pattern GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
+  , pattern GL_COMPRESSED_RGBA8_ETC2_EAC
+  , pattern GL_COMPRESSED_SIGNED_R11_EAC
+  , pattern GL_COMPRESSED_SIGNED_RG11_EAC
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
+  , pattern GL_COMPRESSED_SRGB8_ETC2
+  , pattern GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
+  , pattern GL_CONDITION_SATISFIED
+  , pattern GL_COPY_READ_BUFFER
+  , pattern GL_COPY_READ_BUFFER_BINDING
+  , pattern GL_COPY_WRITE_BUFFER
+  , pattern GL_COPY_WRITE_BUFFER_BINDING
+  , pattern GL_CURRENT_QUERY
+  , pattern GL_DEPTH
+  , pattern GL_DEPTH24_STENCIL8
+  , pattern GL_DEPTH32F_STENCIL8
+  , pattern GL_DEPTH_COMPONENT24
+  , pattern GL_DEPTH_COMPONENT32F
+  , pattern GL_DEPTH_STENCIL
+  , pattern GL_DEPTH_STENCIL_ATTACHMENT
+  , pattern GL_DRAW_BUFFER0
+  , pattern GL_DRAW_BUFFER1
+  , pattern GL_DRAW_BUFFER10
+  , pattern GL_DRAW_BUFFER11
+  , pattern GL_DRAW_BUFFER12
+  , pattern GL_DRAW_BUFFER13
+  , pattern GL_DRAW_BUFFER14
+  , pattern GL_DRAW_BUFFER15
+  , pattern GL_DRAW_BUFFER2
+  , pattern GL_DRAW_BUFFER3
+  , pattern GL_DRAW_BUFFER4
+  , pattern GL_DRAW_BUFFER5
+  , pattern GL_DRAW_BUFFER6
+  , pattern GL_DRAW_BUFFER7
+  , pattern GL_DRAW_BUFFER8
+  , pattern GL_DRAW_BUFFER9
+  , pattern GL_DRAW_FRAMEBUFFER
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING
+  , pattern GL_DYNAMIC_COPY
+  , pattern GL_DYNAMIC_READ
+  , pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV
+  , pattern GL_FLOAT_MAT2x3
+  , pattern GL_FLOAT_MAT2x4
+  , pattern GL_FLOAT_MAT3x2
+  , pattern GL_FLOAT_MAT3x4
+  , pattern GL_FLOAT_MAT4x2
+  , pattern GL_FLOAT_MAT4x3
+  , pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+  , pattern GL_FRAMEBUFFER_DEFAULT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
+  , pattern GL_FRAMEBUFFER_UNDEFINED
+  , pattern GL_GREEN
+  , pattern GL_HALF_FLOAT
+  , pattern GL_INTERLEAVED_ATTRIBS
+  , pattern GL_INT_2_10_10_10_REV
+  , pattern GL_INT_SAMPLER_2D
+  , pattern GL_INT_SAMPLER_2D_ARRAY
+  , pattern GL_INT_SAMPLER_3D
+  , pattern GL_INT_SAMPLER_CUBE
+  , pattern GL_INVALID_INDEX
+  , pattern GL_MAJOR_VERSION
+  , pattern GL_MAP_FLUSH_EXPLICIT_BIT
+  , pattern GL_MAP_INVALIDATE_BUFFER_BIT
+  , pattern GL_MAP_INVALIDATE_RANGE_BIT
+  , pattern GL_MAP_READ_BIT
+  , pattern GL_MAP_UNSYNCHRONIZED_BIT
+  , pattern GL_MAP_WRITE_BIT
+  , pattern GL_MAX
+  , pattern GL_MAX_3D_TEXTURE_SIZE
+  , pattern GL_MAX_ARRAY_TEXTURE_LAYERS
+  , pattern GL_MAX_COLOR_ATTACHMENTS
+  , pattern GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_UNIFORM_BLOCKS
+  , pattern GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+  , pattern GL_MAX_DRAW_BUFFERS
+  , pattern GL_MAX_ELEMENTS_INDICES
+  , pattern GL_MAX_ELEMENTS_VERTICES
+  , pattern GL_MAX_ELEMENT_INDEX
+  , pattern GL_MAX_FRAGMENT_INPUT_COMPONENTS
+  , pattern GL_MAX_FRAGMENT_UNIFORM_BLOCKS
+  , pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS
+  , pattern GL_MAX_PROGRAM_TEXEL_OFFSET
+  , pattern GL_MAX_SAMPLES
+  , pattern GL_MAX_SERVER_WAIT_TIMEOUT
+  , pattern GL_MAX_TEXTURE_LOD_BIAS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
+  , pattern GL_MAX_UNIFORM_BLOCK_SIZE
+  , pattern GL_MAX_UNIFORM_BUFFER_BINDINGS
+  , pattern GL_MAX_VARYING_COMPONENTS
+  , pattern GL_MAX_VERTEX_OUTPUT_COMPONENTS
+  , pattern GL_MAX_VERTEX_UNIFORM_BLOCKS
+  , pattern GL_MAX_VERTEX_UNIFORM_COMPONENTS
+  , pattern GL_MIN
+  , pattern GL_MINOR_VERSION
+  , pattern GL_MIN_PROGRAM_TEXEL_OFFSET
+  , pattern GL_NUM_EXTENSIONS
+  , pattern GL_NUM_PROGRAM_BINARY_FORMATS
+  , pattern GL_NUM_SAMPLE_COUNTS
+  , pattern GL_OBJECT_TYPE
+  , pattern GL_PACK_ROW_LENGTH
+  , pattern GL_PACK_SKIP_PIXELS
+  , pattern GL_PACK_SKIP_ROWS
+  , pattern GL_PIXEL_PACK_BUFFER
+  , pattern GL_PIXEL_PACK_BUFFER_BINDING
+  , pattern GL_PIXEL_UNPACK_BUFFER
+  , pattern GL_PIXEL_UNPACK_BUFFER_BINDING
+  , pattern GL_PRIMITIVE_RESTART_FIXED_INDEX
+  , pattern GL_PROGRAM_BINARY_FORMATS
+  , pattern GL_PROGRAM_BINARY_LENGTH
+  , pattern GL_PROGRAM_BINARY_RETRIEVABLE_HINT
+  , pattern GL_QUERY_RESULT
+  , pattern GL_QUERY_RESULT_AVAILABLE
+  , pattern GL_R11F_G11F_B10F
+  , pattern GL_R16F
+  , pattern GL_R16I
+  , pattern GL_R16UI
+  , pattern GL_R32F
+  , pattern GL_R32I
+  , pattern GL_R32UI
+  , pattern GL_R8
+  , pattern GL_R8I
+  , pattern GL_R8UI
+  , pattern GL_R8_SNORM
+  , pattern GL_RASTERIZER_DISCARD
+  , pattern GL_READ_BUFFER
+  , pattern GL_READ_FRAMEBUFFER
+  , pattern GL_READ_FRAMEBUFFER_BINDING
+  , pattern GL_RED
+  , pattern GL_RED_INTEGER
+  , pattern GL_RENDERBUFFER_SAMPLES
+  , pattern GL_RG
+  , pattern GL_RG16F
+  , pattern GL_RG16I
+  , pattern GL_RG16UI
+  , pattern GL_RG32F
+  , pattern GL_RG32I
+  , pattern GL_RG32UI
+  , pattern GL_RG8
+  , pattern GL_RG8I
+  , pattern GL_RG8UI
+  , pattern GL_RG8_SNORM
+  , pattern GL_RGB10_A2
+  , pattern GL_RGB10_A2UI
+  , pattern GL_RGB16F
+  , pattern GL_RGB16I
+  , pattern GL_RGB16UI
+  , pattern GL_RGB32F
+  , pattern GL_RGB32I
+  , pattern GL_RGB32UI
+  , pattern GL_RGB8
+  , pattern GL_RGB8I
+  , pattern GL_RGB8UI
+  , pattern GL_RGB8_SNORM
+  , pattern GL_RGB9_E5
+  , pattern GL_RGBA16F
+  , pattern GL_RGBA16I
+  , pattern GL_RGBA16UI
+  , pattern GL_RGBA32F
+  , pattern GL_RGBA32I
+  , pattern GL_RGBA32UI
+  , pattern GL_RGBA8
+  , pattern GL_RGBA8I
+  , pattern GL_RGBA8UI
+  , pattern GL_RGBA8_SNORM
+  , pattern GL_RGBA_INTEGER
+  , pattern GL_RGB_INTEGER
+  , pattern GL_RG_INTEGER
+  , pattern GL_SAMPLER_2D_ARRAY
+  , pattern GL_SAMPLER_2D_ARRAY_SHADOW
+  , pattern GL_SAMPLER_2D_SHADOW
+  , pattern GL_SAMPLER_3D
+  , pattern GL_SAMPLER_BINDING
+  , pattern GL_SAMPLER_CUBE_SHADOW
+  , pattern GL_SEPARATE_ATTRIBS
+  , pattern GL_SIGNALED
+  , pattern GL_SIGNED_NORMALIZED
+  , pattern GL_SRGB
+  , pattern GL_SRGB8
+  , pattern GL_SRGB8_ALPHA8
+  , pattern GL_STATIC_COPY
+  , pattern GL_STATIC_READ
+  , pattern GL_STENCIL
+  , pattern GL_STREAM_COPY
+  , pattern GL_STREAM_READ
+  , pattern GL_SYNC_CONDITION
+  , pattern GL_SYNC_FENCE
+  , pattern GL_SYNC_FLAGS
+  , pattern GL_SYNC_FLUSH_COMMANDS_BIT
+  , pattern GL_SYNC_GPU_COMMANDS_COMPLETE
+  , pattern GL_SYNC_STATUS
+  , pattern GL_TEXTURE_2D_ARRAY
+  , pattern GL_TEXTURE_3D
+  , pattern GL_TEXTURE_BASE_LEVEL
+  , pattern GL_TEXTURE_BINDING_2D_ARRAY
+  , pattern GL_TEXTURE_BINDING_3D
+  , pattern GL_TEXTURE_COMPARE_FUNC
+  , pattern GL_TEXTURE_COMPARE_MODE
+  , pattern GL_TEXTURE_IMMUTABLE_FORMAT
+  , pattern GL_TEXTURE_IMMUTABLE_LEVELS
+  , pattern GL_TEXTURE_MAX_LEVEL
+  , pattern GL_TEXTURE_MAX_LOD
+  , pattern GL_TEXTURE_MIN_LOD
+  , pattern GL_TEXTURE_SWIZZLE_A
+  , pattern GL_TEXTURE_SWIZZLE_B
+  , pattern GL_TEXTURE_SWIZZLE_G
+  , pattern GL_TEXTURE_SWIZZLE_R
+  , pattern GL_TEXTURE_WRAP_R
+  , pattern GL_TIMEOUT_EXPIRED
+  , pattern GL_TIMEOUT_IGNORED
+  , pattern GL_TRANSFORM_FEEDBACK
+  , pattern GL_TRANSFORM_FEEDBACK_ACTIVE
+  , pattern GL_TRANSFORM_FEEDBACK_BINDING
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_START
+  , pattern GL_TRANSFORM_FEEDBACK_PAUSED
+  , pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
+  , pattern GL_TRANSFORM_FEEDBACK_VARYINGS
+  , pattern GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH
+  , pattern GL_UNIFORM_ARRAY_STRIDE
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+  , pattern GL_UNIFORM_BLOCK_BINDING
+  , pattern GL_UNIFORM_BLOCK_DATA_SIZE
+  , pattern GL_UNIFORM_BLOCK_INDEX
+  , pattern GL_UNIFORM_BLOCK_NAME_LENGTH
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_UNIFORM_BUFFER
+  , pattern GL_UNIFORM_BUFFER_BINDING
+  , pattern GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_UNIFORM_BUFFER_SIZE
+  , pattern GL_UNIFORM_BUFFER_START
+  , pattern GL_UNIFORM_IS_ROW_MAJOR
+  , pattern GL_UNIFORM_MATRIX_STRIDE
+  , pattern GL_UNIFORM_NAME_LENGTH
+  , pattern GL_UNIFORM_OFFSET
+  , pattern GL_UNIFORM_SIZE
+  , pattern GL_UNIFORM_TYPE
+  , pattern GL_UNPACK_IMAGE_HEIGHT
+  , pattern GL_UNPACK_ROW_LENGTH
+  , pattern GL_UNPACK_SKIP_IMAGES
+  , pattern GL_UNPACK_SKIP_PIXELS
+  , pattern GL_UNPACK_SKIP_ROWS
+  , pattern GL_UNSIGNALED
+  , pattern GL_UNSIGNED_INT_10F_11F_11F_REV
+  , pattern GL_UNSIGNED_INT_24_8
+  , pattern GL_UNSIGNED_INT_2_10_10_10_REV
+  , pattern GL_UNSIGNED_INT_5_9_9_9_REV
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_3D
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE
+  , pattern GL_UNSIGNED_INT_VEC2
+  , pattern GL_UNSIGNED_INT_VEC3
+  , pattern GL_UNSIGNED_INT_VEC4
+  , pattern GL_UNSIGNED_NORMALIZED
+  , pattern GL_VERTEX_ARRAY_BINDING
+  , pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR
+  , pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER
+  , pattern GL_WAIT_FAILED
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Embedded20
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded31.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded31.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Embedded31.hs
@@ -0,0 +1,251 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Embedded31 (
+  -- * Graphics.GL.Raw.Profile.Embedded31
+    module Graphics.GL.Raw.Profile.Embedded30
+  , glActiveShaderProgram
+  , glBindImageTexture
+  , glBindProgramPipeline
+  , glBindVertexBuffer
+  , glCreateShaderProgramv
+  , glDeleteProgramPipelines
+  , glDispatchCompute
+  , glDispatchComputeIndirect
+  , glDrawArraysIndirect
+  , glDrawElementsIndirect
+  , glFramebufferParameteri
+  , glGenProgramPipelines
+  , glGetBooleani_v
+  , glGetFramebufferParameteriv
+  , glGetMultisamplefv
+  , glGetProgramInterfaceiv
+  , glGetProgramPipelineInfoLog
+  , glGetProgramPipelineiv
+  , glGetProgramResourceIndex
+  , glGetProgramResourceLocation
+  , glGetProgramResourceName
+  , glGetProgramResourceiv
+  , glGetTexLevelParameterfv
+  , glGetTexLevelParameteriv
+  , glIsProgramPipeline
+  , glMemoryBarrier
+  , glMemoryBarrierByRegion
+  , glProgramUniform1f
+  , glProgramUniform1fv
+  , glProgramUniform1i
+  , glProgramUniform1iv
+  , glProgramUniform1ui
+  , glProgramUniform1uiv
+  , glProgramUniform2f
+  , glProgramUniform2fv
+  , glProgramUniform2i
+  , glProgramUniform2iv
+  , glProgramUniform2ui
+  , glProgramUniform2uiv
+  , glProgramUniform3f
+  , glProgramUniform3fv
+  , glProgramUniform3i
+  , glProgramUniform3iv
+  , glProgramUniform3ui
+  , glProgramUniform3uiv
+  , glProgramUniform4f
+  , glProgramUniform4fv
+  , glProgramUniform4i
+  , glProgramUniform4iv
+  , glProgramUniform4ui
+  , glProgramUniform4uiv
+  , glProgramUniformMatrix2fv
+  , glProgramUniformMatrix2x3fv
+  , glProgramUniformMatrix2x4fv
+  , glProgramUniformMatrix3fv
+  , glProgramUniformMatrix3x2fv
+  , glProgramUniformMatrix3x4fv
+  , glProgramUniformMatrix4fv
+  , glProgramUniformMatrix4x2fv
+  , glProgramUniformMatrix4x3fv
+  , glSampleMaski
+  , glTexStorage2DMultisample
+  , glUseProgramStages
+  , glValidateProgramPipeline
+  , glVertexAttribBinding
+  , glVertexAttribFormat
+  , glVertexAttribIFormat
+  , glVertexBindingDivisor
+  , pattern GL_ACTIVE_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_ACTIVE_PROGRAM
+  , pattern GL_ACTIVE_RESOURCES
+  , pattern GL_ACTIVE_VARIABLES
+  , pattern GL_ALL_BARRIER_BITS
+  , pattern GL_ALL_SHADER_BITS
+  , pattern GL_ARRAY_SIZE
+  , pattern GL_ARRAY_STRIDE
+  , pattern GL_ATOMIC_COUNTER_BARRIER_BIT
+  , pattern GL_ATOMIC_COUNTER_BUFFER
+  , pattern GL_ATOMIC_COUNTER_BUFFER_BINDING
+  , pattern GL_ATOMIC_COUNTER_BUFFER_INDEX
+  , pattern GL_ATOMIC_COUNTER_BUFFER_SIZE
+  , pattern GL_ATOMIC_COUNTER_BUFFER_START
+  , pattern GL_BLOCK_INDEX
+  , pattern GL_BUFFER_BINDING
+  , pattern GL_BUFFER_DATA_SIZE
+  , pattern GL_BUFFER_UPDATE_BARRIER_BIT
+  , pattern GL_BUFFER_VARIABLE
+  , pattern GL_COMMAND_BARRIER_BIT
+  , pattern GL_COMPUTE_SHADER
+  , pattern GL_COMPUTE_SHADER_BIT
+  , pattern GL_COMPUTE_WORK_GROUP_SIZE
+  , pattern GL_DEPTH_STENCIL_TEXTURE_MODE
+  , pattern GL_DISPATCH_INDIRECT_BUFFER
+  , pattern GL_DISPATCH_INDIRECT_BUFFER_BINDING
+  , pattern GL_DRAW_INDIRECT_BUFFER
+  , pattern GL_DRAW_INDIRECT_BUFFER_BINDING
+  , pattern GL_ELEMENT_ARRAY_BARRIER_BIT
+  , pattern GL_FRAGMENT_SHADER_BIT
+  , pattern GL_FRAMEBUFFER_BARRIER_BIT
+  , pattern GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS
+  , pattern GL_FRAMEBUFFER_DEFAULT_HEIGHT
+  , pattern GL_FRAMEBUFFER_DEFAULT_SAMPLES
+  , pattern GL_FRAMEBUFFER_DEFAULT_WIDTH
+  , pattern GL_IMAGE_2D
+  , pattern GL_IMAGE_2D_ARRAY
+  , pattern GL_IMAGE_3D
+  , pattern GL_IMAGE_BINDING_ACCESS
+  , pattern GL_IMAGE_BINDING_FORMAT
+  , pattern GL_IMAGE_BINDING_LAYER
+  , pattern GL_IMAGE_BINDING_LAYERED
+  , pattern GL_IMAGE_BINDING_LEVEL
+  , pattern GL_IMAGE_BINDING_NAME
+  , pattern GL_IMAGE_CUBE
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE
+  , pattern GL_IMAGE_FORMAT_COMPATIBILITY_TYPE
+  , pattern GL_INT_IMAGE_2D
+  , pattern GL_INT_IMAGE_2D_ARRAY
+  , pattern GL_INT_IMAGE_3D
+  , pattern GL_INT_IMAGE_CUBE
+  , pattern GL_INT_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_IS_ROW_MAJOR
+  , pattern GL_LOCATION
+  , pattern GL_MATRIX_STRIDE
+  , pattern GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS
+  , pattern GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE
+  , pattern GL_MAX_COLOR_TEXTURE_SAMPLES
+  , pattern GL_MAX_COMBINED_ATOMIC_COUNTERS
+  , pattern GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_IMAGE_UNIFORMS
+  , pattern GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES
+  , pattern GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_COMPUTE_ATOMIC_COUNTERS
+  , pattern GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_COMPUTE_IMAGE_UNIFORMS
+  , pattern GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
+  , pattern GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_COMPUTE_UNIFORM_BLOCKS
+  , pattern GL_MAX_COMPUTE_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_COUNT
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS
+  , pattern GL_MAX_COMPUTE_WORK_GROUP_SIZE
+  , pattern GL_MAX_DEPTH_TEXTURE_SAMPLES
+  , pattern GL_MAX_FRAGMENT_ATOMIC_COUNTERS
+  , pattern GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_FRAGMENT_IMAGE_UNIFORMS
+  , pattern GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS
+  , pattern GL_MAX_FRAMEBUFFER_HEIGHT
+  , pattern GL_MAX_FRAMEBUFFER_SAMPLES
+  , pattern GL_MAX_FRAMEBUFFER_WIDTH
+  , pattern GL_MAX_IMAGE_UNITS
+  , pattern GL_MAX_INTEGER_SAMPLES
+  , pattern GL_MAX_NAME_LENGTH
+  , pattern GL_MAX_NUM_ACTIVE_VARIABLES
+  , pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET
+  , pattern GL_MAX_SAMPLE_MASK_WORDS
+  , pattern GL_MAX_SHADER_STORAGE_BLOCK_SIZE
+  , pattern GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS
+  , pattern GL_MAX_UNIFORM_LOCATIONS
+  , pattern GL_MAX_VERTEX_ATOMIC_COUNTERS
+  , pattern GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_VERTEX_ATTRIB_BINDINGS
+  , pattern GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET
+  , pattern GL_MAX_VERTEX_ATTRIB_STRIDE
+  , pattern GL_MAX_VERTEX_IMAGE_UNIFORMS
+  , pattern GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS
+  , pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET
+  , pattern GL_NAME_LENGTH
+  , pattern GL_NUM_ACTIVE_VARIABLES
+  , pattern GL_OFFSET
+  , pattern GL_PIXEL_BUFFER_BARRIER_BIT
+  , pattern GL_PROGRAM_INPUT
+  , pattern GL_PROGRAM_OUTPUT
+  , pattern GL_PROGRAM_PIPELINE_BINDING
+  , pattern GL_PROGRAM_SEPARABLE
+  , pattern GL_READ_ONLY
+  , pattern GL_READ_WRITE
+  , pattern GL_REFERENCED_BY_COMPUTE_SHADER
+  , pattern GL_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_SAMPLE_MASK
+  , pattern GL_SAMPLE_MASK_VALUE
+  , pattern GL_SAMPLE_POSITION
+  , pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT
+  , pattern GL_SHADER_STORAGE_BARRIER_BIT
+  , pattern GL_SHADER_STORAGE_BLOCK
+  , pattern GL_SHADER_STORAGE_BUFFER
+  , pattern GL_SHADER_STORAGE_BUFFER_BINDING
+  , pattern GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_SHADER_STORAGE_BUFFER_SIZE
+  , pattern GL_SHADER_STORAGE_BUFFER_START
+  , pattern GL_STENCIL_INDEX
+  , pattern GL_TEXTURE_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_ALPHA_SIZE
+  , pattern GL_TEXTURE_ALPHA_TYPE
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE
+  , pattern GL_TEXTURE_BLUE_SIZE
+  , pattern GL_TEXTURE_BLUE_TYPE
+  , pattern GL_TEXTURE_COMPRESSED
+  , pattern GL_TEXTURE_DEPTH
+  , pattern GL_TEXTURE_DEPTH_SIZE
+  , pattern GL_TEXTURE_DEPTH_TYPE
+  , pattern GL_TEXTURE_FETCH_BARRIER_BIT
+  , pattern GL_TEXTURE_FIXED_SAMPLE_LOCATIONS
+  , pattern GL_TEXTURE_GREEN_SIZE
+  , pattern GL_TEXTURE_GREEN_TYPE
+  , pattern GL_TEXTURE_HEIGHT
+  , pattern GL_TEXTURE_INTERNAL_FORMAT
+  , pattern GL_TEXTURE_RED_SIZE
+  , pattern GL_TEXTURE_RED_TYPE
+  , pattern GL_TEXTURE_SAMPLES
+  , pattern GL_TEXTURE_SHARED_SIZE
+  , pattern GL_TEXTURE_STENCIL_SIZE
+  , pattern GL_TEXTURE_UPDATE_BARRIER_BIT
+  , pattern GL_TEXTURE_WIDTH
+  , pattern GL_TOP_LEVEL_ARRAY_SIZE
+  , pattern GL_TOP_LEVEL_ARRAY_STRIDE
+  , pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT
+  , pattern GL_TRANSFORM_FEEDBACK_VARYING
+  , pattern GL_TYPE
+  , pattern GL_UNIFORM
+  , pattern GL_UNIFORM_BARRIER_BIT
+  , pattern GL_UNIFORM_BLOCK
+  , pattern GL_UNSIGNED_INT_ATOMIC_COUNTER
+  , pattern GL_UNSIGNED_INT_IMAGE_2D
+  , pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY
+  , pattern GL_UNSIGNED_INT_IMAGE_3D
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT
+  , pattern GL_VERTEX_ATTRIB_BINDING
+  , pattern GL_VERTEX_ATTRIB_RELATIVE_OFFSET
+  , pattern GL_VERTEX_BINDING_BUFFER
+  , pattern GL_VERTEX_BINDING_DIVISOR
+  , pattern GL_VERTEX_BINDING_OFFSET
+  , pattern GL_VERTEX_BINDING_STRIDE
+  , pattern GL_VERTEX_SHADER_BIT
+  , pattern GL_WRITE_ONLY
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Embedded30
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/EmbeddedCommon11.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/EmbeddedCommon11.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/EmbeddedCommon11.hs
@@ -0,0 +1,5 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.EmbeddedCommon11 (
+) where
+
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/EmbeddedLite11.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/EmbeddedLite11.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/EmbeddedLite11.hs
@@ -0,0 +1,5 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.EmbeddedLite11 (
+) where
+
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard10.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard10.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard10.hs
@@ -0,0 +1,313 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard10 (
+  -- * Graphics.GL.Raw.Profile.Standard10
+    glAccum
+  , glAlphaFunc
+  , glBegin
+  , glBitmap
+  , glBlendFunc
+  , glCallList
+  , glCallLists
+  , glClear
+  , glClearAccum
+  , glClearColor
+  , glClearDepth
+  , glClearIndex
+  , glClearStencil
+  , glClipPlane
+  , glColor3b
+  , glColor3bv
+  , glColor3d
+  , glColor3dv
+  , glColor3f
+  , glColor3fv
+  , glColor3i
+  , glColor3iv
+  , glColor3s
+  , glColor3sv
+  , glColor3ub
+  , glColor3ubv
+  , glColor3ui
+  , glColor3uiv
+  , glColor3us
+  , glColor3usv
+  , glColor4b
+  , glColor4bv
+  , glColor4d
+  , glColor4dv
+  , glColor4f
+  , glColor4fv
+  , glColor4i
+  , glColor4iv
+  , glColor4s
+  , glColor4sv
+  , glColor4ub
+  , glColor4ubv
+  , glColor4ui
+  , glColor4uiv
+  , glColor4us
+  , glColor4usv
+  , glColorMask
+  , glColorMaterial
+  , glCopyPixels
+  , glCullFace
+  , glDeleteLists
+  , glDepthFunc
+  , glDepthMask
+  , glDepthRange
+  , glDisable
+  , glDrawBuffer
+  , glDrawPixels
+  , glEdgeFlag
+  , glEdgeFlagv
+  , glEnable
+  , glEnd
+  , glEndList
+  , glEvalCoord1d
+  , glEvalCoord1dv
+  , glEvalCoord1f
+  , glEvalCoord1fv
+  , glEvalCoord2d
+  , glEvalCoord2dv
+  , glEvalCoord2f
+  , glEvalCoord2fv
+  , glEvalMesh1
+  , glEvalMesh2
+  , glEvalPoint1
+  , glEvalPoint2
+  , glFeedbackBuffer
+  , glFinish
+  , glFlush
+  , glFogf
+  , glFogfv
+  , glFogi
+  , glFogiv
+  , glFrontFace
+  , glFrustum
+  , glGenLists
+  , glGetBooleanv
+  , glGetClipPlane
+  , glGetDoublev
+  , glGetError
+  , glGetFloatv
+  , glGetIntegerv
+  , glGetLightfv
+  , glGetLightiv
+  , glGetMapdv
+  , glGetMapfv
+  , glGetMapiv
+  , glGetMaterialfv
+  , glGetMaterialiv
+  , glGetPixelMapfv
+  , glGetPixelMapuiv
+  , glGetPixelMapusv
+  , glGetPolygonStipple
+  , glGetString
+  , glGetTexEnvfv
+  , glGetTexEnviv
+  , glGetTexGendv
+  , glGetTexGenfv
+  , glGetTexGeniv
+  , glGetTexImage
+  , glGetTexLevelParameterfv
+  , glGetTexLevelParameteriv
+  , glGetTexParameterfv
+  , glGetTexParameteriv
+  , glHint
+  , glIndexMask
+  , glIndexd
+  , glIndexdv
+  , glIndexf
+  , glIndexfv
+  , glIndexi
+  , glIndexiv
+  , glIndexs
+  , glIndexsv
+  , glInitNames
+  , glIsEnabled
+  , glIsList
+  , glLightModelf
+  , glLightModelfv
+  , glLightModeli
+  , glLightModeliv
+  , glLightf
+  , glLightfv
+  , glLighti
+  , glLightiv
+  , glLineStipple
+  , glLineWidth
+  , glListBase
+  , glLoadIdentity
+  , glLoadMatrixd
+  , glLoadMatrixf
+  , glLoadName
+  , glLogicOp
+  , glMap1d
+  , glMap1f
+  , glMap2d
+  , glMap2f
+  , glMapGrid1d
+  , glMapGrid1f
+  , glMapGrid2d
+  , glMapGrid2f
+  , glMaterialf
+  , glMaterialfv
+  , glMateriali
+  , glMaterialiv
+  , glMatrixMode
+  , glMultMatrixd
+  , glMultMatrixf
+  , glNewList
+  , glNormal3b
+  , glNormal3bv
+  , glNormal3d
+  , glNormal3dv
+  , glNormal3f
+  , glNormal3fv
+  , glNormal3i
+  , glNormal3iv
+  , glNormal3s
+  , glNormal3sv
+  , glOrtho
+  , glPassThrough
+  , glPixelMapfv
+  , glPixelMapuiv
+  , glPixelMapusv
+  , glPixelStoref
+  , glPixelStorei
+  , glPixelTransferf
+  , glPixelTransferi
+  , glPixelZoom
+  , glPointSize
+  , glPolygonMode
+  , glPolygonStipple
+  , glPopAttrib
+  , glPopMatrix
+  , glPopName
+  , glPushAttrib
+  , glPushMatrix
+  , glPushName
+  , glRasterPos2d
+  , glRasterPos2dv
+  , glRasterPos2f
+  , glRasterPos2fv
+  , glRasterPos2i
+  , glRasterPos2iv
+  , glRasterPos2s
+  , glRasterPos2sv
+  , glRasterPos3d
+  , glRasterPos3dv
+  , glRasterPos3f
+  , glRasterPos3fv
+  , glRasterPos3i
+  , glRasterPos3iv
+  , glRasterPos3s
+  , glRasterPos3sv
+  , glRasterPos4d
+  , glRasterPos4dv
+  , glRasterPos4f
+  , glRasterPos4fv
+  , glRasterPos4i
+  , glRasterPos4iv
+  , glRasterPos4s
+  , glRasterPos4sv
+  , glReadBuffer
+  , glReadPixels
+  , glRectd
+  , glRectdv
+  , glRectf
+  , glRectfv
+  , glRecti
+  , glRectiv
+  , glRects
+  , glRectsv
+  , glRenderMode
+  , glRotated
+  , glRotatef
+  , glScaled
+  , glScalef
+  , glScissor
+  , glSelectBuffer
+  , glShadeModel
+  , glStencilFunc
+  , glStencilMask
+  , glStencilOp
+  , glTexCoord1d
+  , glTexCoord1dv
+  , glTexCoord1f
+  , glTexCoord1fv
+  , glTexCoord1i
+  , glTexCoord1iv
+  , glTexCoord1s
+  , glTexCoord1sv
+  , glTexCoord2d
+  , glTexCoord2dv
+  , glTexCoord2f
+  , glTexCoord2fv
+  , glTexCoord2i
+  , glTexCoord2iv
+  , glTexCoord2s
+  , glTexCoord2sv
+  , glTexCoord3d
+  , glTexCoord3dv
+  , glTexCoord3f
+  , glTexCoord3fv
+  , glTexCoord3i
+  , glTexCoord3iv
+  , glTexCoord3s
+  , glTexCoord3sv
+  , glTexCoord4d
+  , glTexCoord4dv
+  , glTexCoord4f
+  , glTexCoord4fv
+  , glTexCoord4i
+  , glTexCoord4iv
+  , glTexCoord4s
+  , glTexCoord4sv
+  , glTexEnvf
+  , glTexEnvfv
+  , glTexEnvi
+  , glTexEnviv
+  , glTexGend
+  , glTexGendv
+  , glTexGenf
+  , glTexGenfv
+  , glTexGeni
+  , glTexGeniv
+  , glTexImage1D
+  , glTexImage2D
+  , glTexParameterf
+  , glTexParameterfv
+  , glTexParameteri
+  , glTexParameteriv
+  , glTranslated
+  , glTranslatef
+  , glVertex2d
+  , glVertex2dv
+  , glVertex2f
+  , glVertex2fv
+  , glVertex2i
+  , glVertex2iv
+  , glVertex2s
+  , glVertex2sv
+  , glVertex3d
+  , glVertex3dv
+  , glVertex3f
+  , glVertex3fv
+  , glVertex3i
+  , glVertex3iv
+  , glVertex3s
+  , glVertex3sv
+  , glVertex4d
+  , glVertex4dv
+  , glVertex4f
+  , glVertex4fv
+  , glVertex4i
+  , glVertex4iv
+  , glVertex4s
+  , glVertex4sv
+  , glViewport
+) where
+
+import Graphics.GL.Raw.Internal.Shared
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard11.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard11.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard11.hs
@@ -0,0 +1,568 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard11 (
+  -- * Graphics.GL.Raw.Profile.Standard11
+    module Graphics.GL.Raw.Profile.Standard10
+  , glAreTexturesResident
+  , glArrayElement
+  , glBindTexture
+  , glColorPointer
+  , glCopyTexImage1D
+  , glCopyTexImage2D
+  , glCopyTexSubImage1D
+  , glCopyTexSubImage2D
+  , glDeleteTextures
+  , glDisableClientState
+  , glDrawArrays
+  , glDrawElements
+  , glEdgeFlagPointer
+  , glEnableClientState
+  , glGenTextures
+  , glGetPointerv
+  , glIndexPointer
+  , glIndexub
+  , glIndexubv
+  , glInterleavedArrays
+  , glIsTexture
+  , glNormalPointer
+  , glPolygonOffset
+  , glPopClientAttrib
+  , glPrioritizeTextures
+  , glPushClientAttrib
+  , glTexCoordPointer
+  , glTexSubImage1D
+  , glTexSubImage2D
+  , glVertexPointer
+  , pattern GL_2D
+  , pattern GL_2_BYTES
+  , pattern GL_3D
+  , pattern GL_3D_COLOR
+  , pattern GL_3D_COLOR_TEXTURE
+  , pattern GL_3_BYTES
+  , pattern GL_4D_COLOR_TEXTURE
+  , pattern GL_4_BYTES
+  , pattern GL_ACCUM
+  , pattern GL_ACCUM_ALPHA_BITS
+  , pattern GL_ACCUM_BLUE_BITS
+  , pattern GL_ACCUM_BUFFER_BIT
+  , pattern GL_ACCUM_CLEAR_VALUE
+  , pattern GL_ACCUM_GREEN_BITS
+  , pattern GL_ACCUM_RED_BITS
+  , pattern GL_ADD
+  , pattern GL_ALL_ATTRIB_BITS
+  , pattern GL_ALPHA
+  , pattern GL_ALPHA12
+  , pattern GL_ALPHA16
+  , pattern GL_ALPHA4
+  , pattern GL_ALPHA8
+  , pattern GL_ALPHA_BIAS
+  , pattern GL_ALPHA_BITS
+  , pattern GL_ALPHA_SCALE
+  , pattern GL_ALPHA_TEST
+  , pattern GL_ALPHA_TEST_FUNC
+  , pattern GL_ALPHA_TEST_REF
+  , pattern GL_ALWAYS
+  , pattern GL_AMBIENT
+  , pattern GL_AMBIENT_AND_DIFFUSE
+  , pattern GL_AND
+  , pattern GL_AND_INVERTED
+  , pattern GL_AND_REVERSE
+  , pattern GL_ATTRIB_STACK_DEPTH
+  , pattern GL_AUTO_NORMAL
+  , pattern GL_AUX0
+  , pattern GL_AUX1
+  , pattern GL_AUX2
+  , pattern GL_AUX3
+  , pattern GL_AUX_BUFFERS
+  , pattern GL_BACK
+  , pattern GL_BACK_LEFT
+  , pattern GL_BACK_RIGHT
+  , pattern GL_BITMAP
+  , pattern GL_BITMAP_TOKEN
+  , pattern GL_BLEND
+  , pattern GL_BLEND_DST
+  , pattern GL_BLEND_SRC
+  , pattern GL_BLUE
+  , pattern GL_BLUE_BIAS
+  , pattern GL_BLUE_BITS
+  , pattern GL_BLUE_SCALE
+  , pattern GL_BYTE
+  , pattern GL_C3F_V3F
+  , pattern GL_C4F_N3F_V3F
+  , pattern GL_C4UB_V2F
+  , pattern GL_C4UB_V3F
+  , pattern GL_CCW
+  , pattern GL_CLAMP
+  , pattern GL_CLEAR
+  , pattern GL_CLIENT_ALL_ATTRIB_BITS
+  , pattern GL_CLIENT_ATTRIB_STACK_DEPTH
+  , pattern GL_CLIENT_PIXEL_STORE_BIT
+  , pattern GL_CLIENT_VERTEX_ARRAY_BIT
+  , pattern GL_CLIP_PLANE0
+  , pattern GL_CLIP_PLANE1
+  , pattern GL_CLIP_PLANE2
+  , pattern GL_CLIP_PLANE3
+  , pattern GL_CLIP_PLANE4
+  , pattern GL_CLIP_PLANE5
+  , pattern GL_COEFF
+  , pattern GL_COLOR
+  , pattern GL_COLOR_ARRAY
+  , pattern GL_COLOR_ARRAY_POINTER
+  , pattern GL_COLOR_ARRAY_SIZE
+  , pattern GL_COLOR_ARRAY_STRIDE
+  , pattern GL_COLOR_ARRAY_TYPE
+  , pattern GL_COLOR_BUFFER_BIT
+  , pattern GL_COLOR_CLEAR_VALUE
+  , pattern GL_COLOR_INDEX
+  , pattern GL_COLOR_INDEXES
+  , pattern GL_COLOR_LOGIC_OP
+  , pattern GL_COLOR_MATERIAL
+  , pattern GL_COLOR_MATERIAL_FACE
+  , pattern GL_COLOR_MATERIAL_PARAMETER
+  , pattern GL_COLOR_WRITEMASK
+  , pattern GL_COMPILE
+  , pattern GL_COMPILE_AND_EXECUTE
+  , pattern GL_CONSTANT_ATTENUATION
+  , pattern GL_COPY
+  , pattern GL_COPY_INVERTED
+  , pattern GL_COPY_PIXEL_TOKEN
+  , pattern GL_CULL_FACE
+  , pattern GL_CULL_FACE_MODE
+  , pattern GL_CURRENT_BIT
+  , pattern GL_CURRENT_COLOR
+  , pattern GL_CURRENT_INDEX
+  , pattern GL_CURRENT_NORMAL
+  , pattern GL_CURRENT_RASTER_COLOR
+  , pattern GL_CURRENT_RASTER_DISTANCE
+  , pattern GL_CURRENT_RASTER_INDEX
+  , pattern GL_CURRENT_RASTER_POSITION
+  , pattern GL_CURRENT_RASTER_POSITION_VALID
+  , pattern GL_CURRENT_RASTER_TEXTURE_COORDS
+  , pattern GL_CURRENT_TEXTURE_COORDS
+  , pattern GL_CW
+  , pattern GL_DECAL
+  , pattern GL_DECR
+  , pattern GL_DEPTH
+  , pattern GL_DEPTH_BIAS
+  , pattern GL_DEPTH_BITS
+  , pattern GL_DEPTH_BUFFER_BIT
+  , pattern GL_DEPTH_CLEAR_VALUE
+  , pattern GL_DEPTH_COMPONENT
+  , pattern GL_DEPTH_FUNC
+  , pattern GL_DEPTH_RANGE
+  , pattern GL_DEPTH_SCALE
+  , pattern GL_DEPTH_TEST
+  , pattern GL_DEPTH_WRITEMASK
+  , pattern GL_DIFFUSE
+  , pattern GL_DITHER
+  , pattern GL_DOMAIN
+  , pattern GL_DONT_CARE
+  , pattern GL_DOUBLE
+  , pattern GL_DOUBLEBUFFER
+  , pattern GL_DRAW_BUFFER
+  , pattern GL_DRAW_PIXEL_TOKEN
+  , pattern GL_DST_ALPHA
+  , pattern GL_DST_COLOR
+  , pattern GL_EDGE_FLAG
+  , pattern GL_EDGE_FLAG_ARRAY
+  , pattern GL_EDGE_FLAG_ARRAY_POINTER
+  , pattern GL_EDGE_FLAG_ARRAY_STRIDE
+  , pattern GL_EMISSION
+  , pattern GL_ENABLE_BIT
+  , pattern GL_EQUAL
+  , pattern GL_EQUIV
+  , pattern GL_EVAL_BIT
+  , pattern GL_EXP
+  , pattern GL_EXP2
+  , pattern GL_EXTENSIONS
+  , pattern GL_EYE_LINEAR
+  , pattern GL_EYE_PLANE
+  , pattern GL_FALSE
+  , pattern GL_FASTEST
+  , pattern GL_FEEDBACK
+  , pattern GL_FEEDBACK_BUFFER_POINTER
+  , pattern GL_FEEDBACK_BUFFER_SIZE
+  , pattern GL_FEEDBACK_BUFFER_TYPE
+  , pattern GL_FILL
+  , pattern GL_FLAT
+  , pattern GL_FLOAT
+  , pattern GL_FOG
+  , pattern GL_FOG_BIT
+  , pattern GL_FOG_COLOR
+  , pattern GL_FOG_DENSITY
+  , pattern GL_FOG_END
+  , pattern GL_FOG_HINT
+  , pattern GL_FOG_INDEX
+  , pattern GL_FOG_MODE
+  , pattern GL_FOG_START
+  , pattern GL_FRONT
+  , pattern GL_FRONT_AND_BACK
+  , pattern GL_FRONT_FACE
+  , pattern GL_FRONT_LEFT
+  , pattern GL_FRONT_RIGHT
+  , pattern GL_GEQUAL
+  , pattern GL_GREATER
+  , pattern GL_GREEN
+  , pattern GL_GREEN_BIAS
+  , pattern GL_GREEN_BITS
+  , pattern GL_GREEN_SCALE
+  , pattern GL_HINT_BIT
+  , pattern GL_INCR
+  , pattern GL_INDEX_ARRAY
+  , pattern GL_INDEX_ARRAY_POINTER
+  , pattern GL_INDEX_ARRAY_STRIDE
+  , pattern GL_INDEX_ARRAY_TYPE
+  , pattern GL_INDEX_BITS
+  , pattern GL_INDEX_CLEAR_VALUE
+  , pattern GL_INDEX_LOGIC_OP
+  , pattern GL_INDEX_MODE
+  , pattern GL_INDEX_OFFSET
+  , pattern GL_INDEX_SHIFT
+  , pattern GL_INDEX_WRITEMASK
+  , pattern GL_INT
+  , pattern GL_INTENSITY
+  , pattern GL_INTENSITY12
+  , pattern GL_INTENSITY16
+  , pattern GL_INTENSITY4
+  , pattern GL_INTENSITY8
+  , pattern GL_INVALID_ENUM
+  , pattern GL_INVALID_OPERATION
+  , pattern GL_INVALID_VALUE
+  , pattern GL_INVERT
+  , pattern GL_KEEP
+  , pattern GL_LEFT
+  , pattern GL_LEQUAL
+  , pattern GL_LESS
+  , pattern GL_LIGHT0
+  , pattern GL_LIGHT1
+  , pattern GL_LIGHT2
+  , pattern GL_LIGHT3
+  , pattern GL_LIGHT4
+  , pattern GL_LIGHT5
+  , pattern GL_LIGHT6
+  , pattern GL_LIGHT7
+  , pattern GL_LIGHTING
+  , pattern GL_LIGHTING_BIT
+  , pattern GL_LIGHT_MODEL_AMBIENT
+  , pattern GL_LIGHT_MODEL_LOCAL_VIEWER
+  , pattern GL_LIGHT_MODEL_TWO_SIDE
+  , pattern GL_LINE
+  , pattern GL_LINEAR
+  , pattern GL_LINEAR_ATTENUATION
+  , pattern GL_LINEAR_MIPMAP_LINEAR
+  , pattern GL_LINEAR_MIPMAP_NEAREST
+  , pattern GL_LINES
+  , pattern GL_LINE_BIT
+  , pattern GL_LINE_LOOP
+  , pattern GL_LINE_RESET_TOKEN
+  , pattern GL_LINE_SMOOTH
+  , pattern GL_LINE_SMOOTH_HINT
+  , pattern GL_LINE_STIPPLE
+  , pattern GL_LINE_STIPPLE_PATTERN
+  , pattern GL_LINE_STIPPLE_REPEAT
+  , pattern GL_LINE_STRIP
+  , pattern GL_LINE_TOKEN
+  , pattern GL_LINE_WIDTH
+  , pattern GL_LINE_WIDTH_GRANULARITY
+  , pattern GL_LINE_WIDTH_RANGE
+  , pattern GL_LIST_BASE
+  , pattern GL_LIST_BIT
+  , pattern GL_LIST_INDEX
+  , pattern GL_LIST_MODE
+  , pattern GL_LOAD
+  , pattern GL_LOGIC_OP
+  , pattern GL_LOGIC_OP_MODE
+  , pattern GL_LUMINANCE
+  , pattern GL_LUMINANCE12
+  , pattern GL_LUMINANCE12_ALPHA12
+  , pattern GL_LUMINANCE12_ALPHA4
+  , pattern GL_LUMINANCE16
+  , pattern GL_LUMINANCE16_ALPHA16
+  , pattern GL_LUMINANCE4
+  , pattern GL_LUMINANCE4_ALPHA4
+  , pattern GL_LUMINANCE6_ALPHA2
+  , pattern GL_LUMINANCE8
+  , pattern GL_LUMINANCE8_ALPHA8
+  , pattern GL_LUMINANCE_ALPHA
+  , pattern GL_MAP1_COLOR_4
+  , pattern GL_MAP1_GRID_DOMAIN
+  , pattern GL_MAP1_GRID_SEGMENTS
+  , pattern GL_MAP1_INDEX
+  , pattern GL_MAP1_NORMAL
+  , pattern GL_MAP1_TEXTURE_COORD_1
+  , pattern GL_MAP1_TEXTURE_COORD_2
+  , pattern GL_MAP1_TEXTURE_COORD_3
+  , pattern GL_MAP1_TEXTURE_COORD_4
+  , pattern GL_MAP1_VERTEX_3
+  , pattern GL_MAP1_VERTEX_4
+  , pattern GL_MAP2_COLOR_4
+  , pattern GL_MAP2_GRID_DOMAIN
+  , pattern GL_MAP2_GRID_SEGMENTS
+  , pattern GL_MAP2_INDEX
+  , pattern GL_MAP2_NORMAL
+  , pattern GL_MAP2_TEXTURE_COORD_1
+  , pattern GL_MAP2_TEXTURE_COORD_2
+  , pattern GL_MAP2_TEXTURE_COORD_3
+  , pattern GL_MAP2_TEXTURE_COORD_4
+  , pattern GL_MAP2_VERTEX_3
+  , pattern GL_MAP2_VERTEX_4
+  , pattern GL_MAP_COLOR
+  , pattern GL_MAP_STENCIL
+  , pattern GL_MATRIX_MODE
+  , pattern GL_MAX_ATTRIB_STACK_DEPTH
+  , pattern GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
+  , pattern GL_MAX_CLIP_PLANES
+  , pattern GL_MAX_EVAL_ORDER
+  , pattern GL_MAX_LIGHTS
+  , pattern GL_MAX_LIST_NESTING
+  , pattern GL_MAX_MODELVIEW_STACK_DEPTH
+  , pattern GL_MAX_NAME_STACK_DEPTH
+  , pattern GL_MAX_PIXEL_MAP_TABLE
+  , pattern GL_MAX_PROJECTION_STACK_DEPTH
+  , pattern GL_MAX_TEXTURE_SIZE
+  , pattern GL_MAX_TEXTURE_STACK_DEPTH
+  , pattern GL_MAX_VIEWPORT_DIMS
+  , pattern GL_MODELVIEW
+  , pattern GL_MODELVIEW_MATRIX
+  , pattern GL_MODELVIEW_STACK_DEPTH
+  , pattern GL_MODULATE
+  , pattern GL_MULT
+  , pattern GL_N3F_V3F
+  , pattern GL_NAME_STACK_DEPTH
+  , pattern GL_NAND
+  , pattern GL_NEAREST
+  , pattern GL_NEAREST_MIPMAP_LINEAR
+  , pattern GL_NEAREST_MIPMAP_NEAREST
+  , pattern GL_NEVER
+  , pattern GL_NICEST
+  , pattern GL_NONE
+  , pattern GL_NOOP
+  , pattern GL_NOR
+  , pattern GL_NORMALIZE
+  , pattern GL_NORMAL_ARRAY
+  , pattern GL_NORMAL_ARRAY_POINTER
+  , pattern GL_NORMAL_ARRAY_STRIDE
+  , pattern GL_NORMAL_ARRAY_TYPE
+  , pattern GL_NOTEQUAL
+  , pattern GL_NO_ERROR
+  , pattern GL_OBJECT_LINEAR
+  , pattern GL_OBJECT_PLANE
+  , pattern GL_ONE
+  , pattern GL_ONE_MINUS_DST_ALPHA
+  , pattern GL_ONE_MINUS_DST_COLOR
+  , pattern GL_ONE_MINUS_SRC_ALPHA
+  , pattern GL_ONE_MINUS_SRC_COLOR
+  , pattern GL_OR
+  , pattern GL_ORDER
+  , pattern GL_OR_INVERTED
+  , pattern GL_OR_REVERSE
+  , pattern GL_OUT_OF_MEMORY
+  , pattern GL_PACK_ALIGNMENT
+  , pattern GL_PACK_LSB_FIRST
+  , pattern GL_PACK_ROW_LENGTH
+  , pattern GL_PACK_SKIP_PIXELS
+  , pattern GL_PACK_SKIP_ROWS
+  , pattern GL_PACK_SWAP_BYTES
+  , pattern GL_PASS_THROUGH_TOKEN
+  , pattern GL_PERSPECTIVE_CORRECTION_HINT
+  , pattern GL_PIXEL_MAP_A_TO_A
+  , pattern GL_PIXEL_MAP_A_TO_A_SIZE
+  , pattern GL_PIXEL_MAP_B_TO_B
+  , pattern GL_PIXEL_MAP_B_TO_B_SIZE
+  , pattern GL_PIXEL_MAP_G_TO_G
+  , pattern GL_PIXEL_MAP_G_TO_G_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_A
+  , pattern GL_PIXEL_MAP_I_TO_A_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_B
+  , pattern GL_PIXEL_MAP_I_TO_B_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_G
+  , pattern GL_PIXEL_MAP_I_TO_G_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_I
+  , pattern GL_PIXEL_MAP_I_TO_I_SIZE
+  , pattern GL_PIXEL_MAP_I_TO_R
+  , pattern GL_PIXEL_MAP_I_TO_R_SIZE
+  , pattern GL_PIXEL_MAP_R_TO_R
+  , pattern GL_PIXEL_MAP_R_TO_R_SIZE
+  , pattern GL_PIXEL_MAP_S_TO_S
+  , pattern GL_PIXEL_MAP_S_TO_S_SIZE
+  , pattern GL_PIXEL_MODE_BIT
+  , pattern GL_POINT
+  , pattern GL_POINTS
+  , pattern GL_POINT_BIT
+  , pattern GL_POINT_SIZE
+  , pattern GL_POINT_SIZE_GRANULARITY
+  , pattern GL_POINT_SIZE_RANGE
+  , pattern GL_POINT_SMOOTH
+  , pattern GL_POINT_SMOOTH_HINT
+  , pattern GL_POINT_TOKEN
+  , pattern GL_POLYGON
+  , pattern GL_POLYGON_BIT
+  , pattern GL_POLYGON_MODE
+  , pattern GL_POLYGON_OFFSET_FACTOR
+  , pattern GL_POLYGON_OFFSET_FILL
+  , pattern GL_POLYGON_OFFSET_LINE
+  , pattern GL_POLYGON_OFFSET_POINT
+  , pattern GL_POLYGON_OFFSET_UNITS
+  , pattern GL_POLYGON_SMOOTH
+  , pattern GL_POLYGON_SMOOTH_HINT
+  , pattern GL_POLYGON_STIPPLE
+  , pattern GL_POLYGON_STIPPLE_BIT
+  , pattern GL_POLYGON_TOKEN
+  , pattern GL_POSITION
+  , pattern GL_PROJECTION
+  , pattern GL_PROJECTION_MATRIX
+  , pattern GL_PROJECTION_STACK_DEPTH
+  , pattern GL_PROXY_TEXTURE_1D
+  , pattern GL_PROXY_TEXTURE_2D
+  , pattern GL_Q
+  , pattern GL_QUADRATIC_ATTENUATION
+  , pattern GL_QUADS
+  , pattern GL_QUAD_STRIP
+  , pattern GL_R
+  , pattern GL_R3_G3_B2
+  , pattern GL_READ_BUFFER
+  , pattern GL_RED
+  , pattern GL_RED_BIAS
+  , pattern GL_RED_BITS
+  , pattern GL_RED_SCALE
+  , pattern GL_RENDER
+  , pattern GL_RENDERER
+  , pattern GL_RENDER_MODE
+  , pattern GL_REPEAT
+  , pattern GL_REPLACE
+  , pattern GL_RETURN
+  , pattern GL_RGB
+  , pattern GL_RGB10
+  , pattern GL_RGB10_A2
+  , pattern GL_RGB12
+  , pattern GL_RGB16
+  , pattern GL_RGB4
+  , pattern GL_RGB5
+  , pattern GL_RGB5_A1
+  , pattern GL_RGB8
+  , pattern GL_RGBA
+  , pattern GL_RGBA12
+  , pattern GL_RGBA16
+  , pattern GL_RGBA2
+  , pattern GL_RGBA4
+  , pattern GL_RGBA8
+  , pattern GL_RGBA_MODE
+  , pattern GL_RIGHT
+  , pattern GL_S
+  , pattern GL_SCISSOR_BIT
+  , pattern GL_SCISSOR_BOX
+  , pattern GL_SCISSOR_TEST
+  , pattern GL_SELECT
+  , pattern GL_SELECTION_BUFFER_POINTER
+  , pattern GL_SELECTION_BUFFER_SIZE
+  , pattern GL_SET
+  , pattern GL_SHADE_MODEL
+  , pattern GL_SHININESS
+  , pattern GL_SHORT
+  , pattern GL_SMOOTH
+  , pattern GL_SPECULAR
+  , pattern GL_SPHERE_MAP
+  , pattern GL_SPOT_CUTOFF
+  , pattern GL_SPOT_DIRECTION
+  , pattern GL_SPOT_EXPONENT
+  , pattern GL_SRC_ALPHA
+  , pattern GL_SRC_ALPHA_SATURATE
+  , pattern GL_SRC_COLOR
+  , pattern GL_STACK_OVERFLOW
+  , pattern GL_STACK_UNDERFLOW
+  , pattern GL_STENCIL
+  , pattern GL_STENCIL_BITS
+  , pattern GL_STENCIL_BUFFER_BIT
+  , pattern GL_STENCIL_CLEAR_VALUE
+  , pattern GL_STENCIL_FAIL
+  , pattern GL_STENCIL_FUNC
+  , pattern GL_STENCIL_INDEX
+  , pattern GL_STENCIL_PASS_DEPTH_FAIL
+  , pattern GL_STENCIL_PASS_DEPTH_PASS
+  , pattern GL_STENCIL_REF
+  , pattern GL_STENCIL_TEST
+  , pattern GL_STENCIL_VALUE_MASK
+  , pattern GL_STENCIL_WRITEMASK
+  , pattern GL_STEREO
+  , pattern GL_SUBPIXEL_BITS
+  , pattern GL_T
+  , pattern GL_T2F_C3F_V3F
+  , pattern GL_T2F_C4F_N3F_V3F
+  , pattern GL_T2F_C4UB_V3F
+  , pattern GL_T2F_N3F_V3F
+  , pattern GL_T2F_V3F
+  , pattern GL_T4F_C4F_N3F_V4F
+  , pattern GL_T4F_V4F
+  , pattern GL_TEXTURE
+  , pattern GL_TEXTURE_1D
+  , pattern GL_TEXTURE_2D
+  , pattern GL_TEXTURE_ALPHA_SIZE
+  , pattern GL_TEXTURE_BINDING_1D
+  , pattern GL_TEXTURE_BINDING_2D
+  , pattern GL_TEXTURE_BIT
+  , pattern GL_TEXTURE_BLUE_SIZE
+  , pattern GL_TEXTURE_BORDER
+  , pattern GL_TEXTURE_BORDER_COLOR
+  , pattern GL_TEXTURE_COMPONENTS
+  , pattern GL_TEXTURE_COORD_ARRAY
+  , pattern GL_TEXTURE_COORD_ARRAY_POINTER
+  , pattern GL_TEXTURE_COORD_ARRAY_SIZE
+  , pattern GL_TEXTURE_COORD_ARRAY_STRIDE
+  , pattern GL_TEXTURE_COORD_ARRAY_TYPE
+  , pattern GL_TEXTURE_ENV
+  , pattern GL_TEXTURE_ENV_COLOR
+  , pattern GL_TEXTURE_ENV_MODE
+  , pattern GL_TEXTURE_GEN_MODE
+  , pattern GL_TEXTURE_GEN_Q
+  , pattern GL_TEXTURE_GEN_R
+  , pattern GL_TEXTURE_GEN_S
+  , pattern GL_TEXTURE_GEN_T
+  , pattern GL_TEXTURE_GREEN_SIZE
+  , pattern GL_TEXTURE_HEIGHT
+  , pattern GL_TEXTURE_INTENSITY_SIZE
+  , pattern GL_TEXTURE_INTERNAL_FORMAT
+  , pattern GL_TEXTURE_LUMINANCE_SIZE
+  , pattern GL_TEXTURE_MAG_FILTER
+  , pattern GL_TEXTURE_MATRIX
+  , pattern GL_TEXTURE_MIN_FILTER
+  , pattern GL_TEXTURE_PRIORITY
+  , pattern GL_TEXTURE_RED_SIZE
+  , pattern GL_TEXTURE_RESIDENT
+  , pattern GL_TEXTURE_STACK_DEPTH
+  , pattern GL_TEXTURE_WIDTH
+  , pattern GL_TEXTURE_WRAP_S
+  , pattern GL_TEXTURE_WRAP_T
+  , pattern GL_TRANSFORM_BIT
+  , pattern GL_TRIANGLES
+  , pattern GL_TRIANGLE_FAN
+  , pattern GL_TRIANGLE_STRIP
+  , pattern GL_TRUE
+  , pattern GL_UNPACK_ALIGNMENT
+  , pattern GL_UNPACK_LSB_FIRST
+  , pattern GL_UNPACK_ROW_LENGTH
+  , pattern GL_UNPACK_SKIP_PIXELS
+  , pattern GL_UNPACK_SKIP_ROWS
+  , pattern GL_UNPACK_SWAP_BYTES
+  , pattern GL_UNSIGNED_BYTE
+  , pattern GL_UNSIGNED_INT
+  , pattern GL_UNSIGNED_SHORT
+  , pattern GL_V2F
+  , pattern GL_V3F
+  , pattern GL_VENDOR
+  , pattern GL_VERSION
+  , pattern GL_VERTEX_ARRAY
+  , pattern GL_VERTEX_ARRAY_POINTER
+  , pattern GL_VERTEX_ARRAY_SIZE
+  , pattern GL_VERTEX_ARRAY_STRIDE
+  , pattern GL_VERTEX_ARRAY_TYPE
+  , pattern GL_VIEWPORT
+  , pattern GL_VIEWPORT_BIT
+  , pattern GL_XOR
+  , pattern GL_ZERO
+  , pattern GL_ZOOM_X
+  , pattern GL_ZOOM_Y
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard10
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard12.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard12.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard12.hs
@@ -0,0 +1,55 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard12 (
+  -- * Graphics.GL.Raw.Profile.Standard12
+    module Graphics.GL.Raw.Profile.Standard11
+  , glCopyTexSubImage3D
+  , glDrawRangeElements
+  , glTexImage3D
+  , glTexSubImage3D
+  , pattern GL_ALIASED_LINE_WIDTH_RANGE
+  , pattern GL_ALIASED_POINT_SIZE_RANGE
+  , pattern GL_BGR
+  , pattern GL_BGRA
+  , pattern GL_CLAMP_TO_EDGE
+  , pattern GL_LIGHT_MODEL_COLOR_CONTROL
+  , pattern GL_MAX_3D_TEXTURE_SIZE
+  , pattern GL_MAX_ELEMENTS_INDICES
+  , pattern GL_MAX_ELEMENTS_VERTICES
+  , pattern GL_PACK_IMAGE_HEIGHT
+  , pattern GL_PACK_SKIP_IMAGES
+  , pattern GL_PROXY_TEXTURE_3D
+  , pattern GL_RESCALE_NORMAL
+  , pattern GL_SEPARATE_SPECULAR_COLOR
+  , pattern GL_SINGLE_COLOR
+  , pattern GL_SMOOTH_LINE_WIDTH_GRANULARITY
+  , pattern GL_SMOOTH_LINE_WIDTH_RANGE
+  , pattern GL_SMOOTH_POINT_SIZE_GRANULARITY
+  , pattern GL_SMOOTH_POINT_SIZE_RANGE
+  , pattern GL_TEXTURE_3D
+  , pattern GL_TEXTURE_BASE_LEVEL
+  , pattern GL_TEXTURE_BINDING_3D
+  , pattern GL_TEXTURE_DEPTH
+  , pattern GL_TEXTURE_MAX_LEVEL
+  , pattern GL_TEXTURE_MAX_LOD
+  , pattern GL_TEXTURE_MIN_LOD
+  , pattern GL_TEXTURE_WRAP_R
+  , pattern GL_UNPACK_IMAGE_HEIGHT
+  , pattern GL_UNPACK_SKIP_IMAGES
+  , pattern GL_UNSIGNED_BYTE_2_3_3_REV
+  , pattern GL_UNSIGNED_BYTE_3_3_2
+  , pattern GL_UNSIGNED_INT_10_10_10_2
+  , pattern GL_UNSIGNED_INT_2_10_10_10_REV
+  , pattern GL_UNSIGNED_INT_8_8_8_8
+  , pattern GL_UNSIGNED_INT_8_8_8_8_REV
+  , pattern GL_UNSIGNED_SHORT_1_5_5_5_REV
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4
+  , pattern GL_UNSIGNED_SHORT_4_4_4_4_REV
+  , pattern GL_UNSIGNED_SHORT_5_5_5_1
+  , pattern GL_UNSIGNED_SHORT_5_6_5
+  , pattern GL_UNSIGNED_SHORT_5_6_5_REV
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard11
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard13.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard13.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard13.hs
@@ -0,0 +1,152 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard13 (
+  -- * Graphics.GL.Raw.Profile.Standard13
+    module Graphics.GL.Raw.Profile.Standard12
+  , glActiveTexture
+  , glClientActiveTexture
+  , glCompressedTexImage1D
+  , glCompressedTexImage2D
+  , glCompressedTexImage3D
+  , glCompressedTexSubImage1D
+  , glCompressedTexSubImage2D
+  , glCompressedTexSubImage3D
+  , glGetCompressedTexImage
+  , glLoadTransposeMatrixd
+  , glLoadTransposeMatrixf
+  , glMultTransposeMatrixd
+  , glMultTransposeMatrixf
+  , glMultiTexCoord1d
+  , glMultiTexCoord1dv
+  , glMultiTexCoord1f
+  , glMultiTexCoord1fv
+  , glMultiTexCoord1i
+  , glMultiTexCoord1iv
+  , glMultiTexCoord1s
+  , glMultiTexCoord1sv
+  , glMultiTexCoord2d
+  , glMultiTexCoord2dv
+  , glMultiTexCoord2f
+  , glMultiTexCoord2fv
+  , glMultiTexCoord2i
+  , glMultiTexCoord2iv
+  , glMultiTexCoord2s
+  , glMultiTexCoord2sv
+  , glMultiTexCoord3d
+  , glMultiTexCoord3dv
+  , glMultiTexCoord3f
+  , glMultiTexCoord3fv
+  , glMultiTexCoord3i
+  , glMultiTexCoord3iv
+  , glMultiTexCoord3s
+  , glMultiTexCoord3sv
+  , glMultiTexCoord4d
+  , glMultiTexCoord4dv
+  , glMultiTexCoord4f
+  , glMultiTexCoord4fv
+  , glMultiTexCoord4i
+  , glMultiTexCoord4iv
+  , glMultiTexCoord4s
+  , glMultiTexCoord4sv
+  , glSampleCoverage
+  , pattern GL_ACTIVE_TEXTURE
+  , pattern GL_ADD_SIGNED
+  , pattern GL_CLAMP_TO_BORDER
+  , pattern GL_CLIENT_ACTIVE_TEXTURE
+  , pattern GL_COMBINE
+  , pattern GL_COMBINE_ALPHA
+  , pattern GL_COMBINE_RGB
+  , pattern GL_COMPRESSED_ALPHA
+  , pattern GL_COMPRESSED_INTENSITY
+  , pattern GL_COMPRESSED_LUMINANCE
+  , pattern GL_COMPRESSED_LUMINANCE_ALPHA
+  , pattern GL_COMPRESSED_RGB
+  , pattern GL_COMPRESSED_RGBA
+  , pattern GL_COMPRESSED_TEXTURE_FORMATS
+  , pattern GL_CONSTANT
+  , pattern GL_DOT3_RGB
+  , pattern GL_DOT3_RGBA
+  , pattern GL_INTERPOLATE
+  , pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE
+  , pattern GL_MAX_TEXTURE_UNITS
+  , pattern GL_MULTISAMPLE
+  , pattern GL_MULTISAMPLE_BIT
+  , pattern GL_NORMAL_MAP
+  , pattern GL_NUM_COMPRESSED_TEXTURE_FORMATS
+  , pattern GL_OPERAND0_ALPHA
+  , pattern GL_OPERAND0_RGB
+  , pattern GL_OPERAND1_ALPHA
+  , pattern GL_OPERAND1_RGB
+  , pattern GL_OPERAND2_ALPHA
+  , pattern GL_OPERAND2_RGB
+  , pattern GL_PREVIOUS
+  , pattern GL_PRIMARY_COLOR
+  , pattern GL_PROXY_TEXTURE_CUBE_MAP
+  , pattern GL_REFLECTION_MAP
+  , pattern GL_RGB_SCALE
+  , pattern GL_SAMPLES
+  , pattern GL_SAMPLE_ALPHA_TO_COVERAGE
+  , pattern GL_SAMPLE_ALPHA_TO_ONE
+  , pattern GL_SAMPLE_BUFFERS
+  , pattern GL_SAMPLE_COVERAGE
+  , pattern GL_SAMPLE_COVERAGE_INVERT
+  , pattern GL_SAMPLE_COVERAGE_VALUE
+  , pattern GL_SOURCE0_ALPHA
+  , pattern GL_SOURCE0_RGB
+  , pattern GL_SOURCE1_ALPHA
+  , pattern GL_SOURCE1_RGB
+  , pattern GL_SOURCE2_ALPHA
+  , pattern GL_SOURCE2_RGB
+  , pattern GL_SUBTRACT
+  , pattern GL_TEXTURE0
+  , pattern GL_TEXTURE1
+  , pattern GL_TEXTURE10
+  , pattern GL_TEXTURE11
+  , pattern GL_TEXTURE12
+  , pattern GL_TEXTURE13
+  , pattern GL_TEXTURE14
+  , pattern GL_TEXTURE15
+  , pattern GL_TEXTURE16
+  , pattern GL_TEXTURE17
+  , pattern GL_TEXTURE18
+  , pattern GL_TEXTURE19
+  , pattern GL_TEXTURE2
+  , pattern GL_TEXTURE20
+  , pattern GL_TEXTURE21
+  , pattern GL_TEXTURE22
+  , pattern GL_TEXTURE23
+  , pattern GL_TEXTURE24
+  , pattern GL_TEXTURE25
+  , pattern GL_TEXTURE26
+  , pattern GL_TEXTURE27
+  , pattern GL_TEXTURE28
+  , pattern GL_TEXTURE29
+  , pattern GL_TEXTURE3
+  , pattern GL_TEXTURE30
+  , pattern GL_TEXTURE31
+  , pattern GL_TEXTURE4
+  , pattern GL_TEXTURE5
+  , pattern GL_TEXTURE6
+  , pattern GL_TEXTURE7
+  , pattern GL_TEXTURE8
+  , pattern GL_TEXTURE9
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP
+  , pattern GL_TEXTURE_COMPRESSED
+  , pattern GL_TEXTURE_COMPRESSED_IMAGE_SIZE
+  , pattern GL_TEXTURE_COMPRESSION_HINT
+  , pattern GL_TEXTURE_CUBE_MAP
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
+  , pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y
+  , pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z
+  , pattern GL_TRANSPOSE_COLOR_MATRIX
+  , pattern GL_TRANSPOSE_MODELVIEW_MATRIX
+  , pattern GL_TRANSPOSE_PROJECTION_MATRIX
+  , pattern GL_TRANSPOSE_TEXTURE_MATRIX
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard12
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard14.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard14.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard14.hs
@@ -0,0 +1,105 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard14 (
+  -- * Graphics.GL.Raw.Profile.Standard14
+    module Graphics.GL.Raw.Profile.Standard13
+  , glBlendColor
+  , glBlendEquation
+  , glBlendFuncSeparate
+  , glFogCoordPointer
+  , glFogCoordd
+  , glFogCoorddv
+  , glFogCoordf
+  , glFogCoordfv
+  , glMultiDrawArrays
+  , glMultiDrawElements
+  , glPointParameterf
+  , glPointParameterfv
+  , glPointParameteri
+  , glPointParameteriv
+  , glSecondaryColor3b
+  , glSecondaryColor3bv
+  , glSecondaryColor3d
+  , glSecondaryColor3dv
+  , glSecondaryColor3f
+  , glSecondaryColor3fv
+  , glSecondaryColor3i
+  , glSecondaryColor3iv
+  , glSecondaryColor3s
+  , glSecondaryColor3sv
+  , glSecondaryColor3ub
+  , glSecondaryColor3ubv
+  , glSecondaryColor3ui
+  , glSecondaryColor3uiv
+  , glSecondaryColor3us
+  , glSecondaryColor3usv
+  , glSecondaryColorPointer
+  , glWindowPos2d
+  , glWindowPos2dv
+  , glWindowPos2f
+  , glWindowPos2fv
+  , glWindowPos2i
+  , glWindowPos2iv
+  , glWindowPos2s
+  , glWindowPos2sv
+  , glWindowPos3d
+  , glWindowPos3dv
+  , glWindowPos3f
+  , glWindowPos3fv
+  , glWindowPos3i
+  , glWindowPos3iv
+  , glWindowPos3s
+  , glWindowPos3sv
+  , pattern GL_BLEND_DST_ALPHA
+  , pattern GL_BLEND_DST_RGB
+  , pattern GL_BLEND_SRC_ALPHA
+  , pattern GL_BLEND_SRC_RGB
+  , pattern GL_COLOR_SUM
+  , pattern GL_COMPARE_R_TO_TEXTURE
+  , pattern GL_CONSTANT_ALPHA
+  , pattern GL_CONSTANT_COLOR
+  , pattern GL_CURRENT_FOG_COORDINATE
+  , pattern GL_CURRENT_SECONDARY_COLOR
+  , pattern GL_DECR_WRAP
+  , pattern GL_DEPTH_COMPONENT16
+  , pattern GL_DEPTH_COMPONENT24
+  , pattern GL_DEPTH_COMPONENT32
+  , pattern GL_DEPTH_TEXTURE_MODE
+  , pattern GL_FOG_COORDINATE
+  , pattern GL_FOG_COORDINATE_ARRAY
+  , pattern GL_FOG_COORDINATE_ARRAY_POINTER
+  , pattern GL_FOG_COORDINATE_ARRAY_STRIDE
+  , pattern GL_FOG_COORDINATE_ARRAY_TYPE
+  , pattern GL_FOG_COORDINATE_SOURCE
+  , pattern GL_FRAGMENT_DEPTH
+  , pattern GL_FUNC_ADD
+  , pattern GL_FUNC_REVERSE_SUBTRACT
+  , pattern GL_FUNC_SUBTRACT
+  , pattern GL_GENERATE_MIPMAP
+  , pattern GL_GENERATE_MIPMAP_HINT
+  , pattern GL_INCR_WRAP
+  , pattern GL_MAX
+  , pattern GL_MAX_TEXTURE_LOD_BIAS
+  , pattern GL_MIN
+  , pattern GL_MIRRORED_REPEAT
+  , pattern GL_ONE_MINUS_CONSTANT_ALPHA
+  , pattern GL_ONE_MINUS_CONSTANT_COLOR
+  , pattern GL_POINT_DISTANCE_ATTENUATION
+  , pattern GL_POINT_FADE_THRESHOLD_SIZE
+  , pattern GL_POINT_SIZE_MAX
+  , pattern GL_POINT_SIZE_MIN
+  , pattern GL_SECONDARY_COLOR_ARRAY
+  , pattern GL_SECONDARY_COLOR_ARRAY_POINTER
+  , pattern GL_SECONDARY_COLOR_ARRAY_SIZE
+  , pattern GL_SECONDARY_COLOR_ARRAY_STRIDE
+  , pattern GL_SECONDARY_COLOR_ARRAY_TYPE
+  , pattern GL_TEXTURE_COMPARE_FUNC
+  , pattern GL_TEXTURE_COMPARE_MODE
+  , pattern GL_TEXTURE_DEPTH_SIZE
+  , pattern GL_TEXTURE_FILTER_CONTROL
+  , pattern GL_TEXTURE_LOD_BIAS
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard13
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard15.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard15.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard15.hs
@@ -0,0 +1,79 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard15 (
+  -- * Graphics.GL.Raw.Profile.Standard15
+    module Graphics.GL.Raw.Profile.Standard14
+  , glBeginQuery
+  , glBindBuffer
+  , glBufferData
+  , glBufferSubData
+  , glDeleteBuffers
+  , glDeleteQueries
+  , glEndQuery
+  , glGenBuffers
+  , glGenQueries
+  , glGetBufferParameteriv
+  , glGetBufferPointerv
+  , glGetBufferSubData
+  , glGetQueryObjectiv
+  , glGetQueryObjectuiv
+  , glGetQueryiv
+  , glIsBuffer
+  , glIsQuery
+  , glMapBuffer
+  , glUnmapBuffer
+  , pattern GL_ARRAY_BUFFER
+  , pattern GL_ARRAY_BUFFER_BINDING
+  , pattern GL_BUFFER_ACCESS
+  , pattern GL_BUFFER_MAPPED
+  , pattern GL_BUFFER_MAP_POINTER
+  , pattern GL_BUFFER_SIZE
+  , pattern GL_BUFFER_USAGE
+  , pattern GL_COLOR_ARRAY_BUFFER_BINDING
+  , pattern GL_CURRENT_FOG_COORD
+  , pattern GL_CURRENT_QUERY
+  , pattern GL_DYNAMIC_COPY
+  , pattern GL_DYNAMIC_DRAW
+  , pattern GL_DYNAMIC_READ
+  , pattern GL_EDGE_FLAG_ARRAY_BUFFER_BINDING
+  , pattern GL_ELEMENT_ARRAY_BUFFER
+  , pattern GL_ELEMENT_ARRAY_BUFFER_BINDING
+  , pattern GL_FOG_COORD
+  , pattern GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+  , pattern GL_FOG_COORD_ARRAY
+  , pattern GL_FOG_COORD_ARRAY_BUFFER_BINDING
+  , pattern GL_FOG_COORD_ARRAY_POINTER
+  , pattern GL_FOG_COORD_ARRAY_STRIDE
+  , pattern GL_FOG_COORD_ARRAY_TYPE
+  , pattern GL_FOG_COORD_SRC
+  , pattern GL_INDEX_ARRAY_BUFFER_BINDING
+  , pattern GL_NORMAL_ARRAY_BUFFER_BINDING
+  , pattern GL_QUERY_COUNTER_BITS
+  , pattern GL_QUERY_RESULT
+  , pattern GL_QUERY_RESULT_AVAILABLE
+  , pattern GL_READ_ONLY
+  , pattern GL_READ_WRITE
+  , pattern GL_SAMPLES_PASSED
+  , pattern GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING
+  , pattern GL_SRC0_ALPHA
+  , pattern GL_SRC0_RGB
+  , pattern GL_SRC1_ALPHA
+  , pattern GL_SRC1_RGB
+  , pattern GL_SRC2_ALPHA
+  , pattern GL_SRC2_RGB
+  , pattern GL_STATIC_COPY
+  , pattern GL_STATIC_DRAW
+  , pattern GL_STATIC_READ
+  , pattern GL_STREAM_COPY
+  , pattern GL_STREAM_DRAW
+  , pattern GL_STREAM_READ
+  , pattern GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING
+  , pattern GL_VERTEX_ARRAY_BUFFER_BINDING
+  , pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
+  , pattern GL_WEIGHT_ARRAY_BUFFER_BINDING
+  , pattern GL_WRITE_ONLY
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard14
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard20.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard20.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard20.hs
@@ -0,0 +1,187 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard20 (
+  -- * Graphics.GL.Raw.Profile.Standard20
+    module Graphics.GL.Raw.Profile.Standard15
+  , glAttachShader
+  , glBindAttribLocation
+  , glBlendEquationSeparate
+  , glCompileShader
+  , glCreateProgram
+  , glCreateShader
+  , glDeleteProgram
+  , glDeleteShader
+  , glDetachShader
+  , glDisableVertexAttribArray
+  , glDrawBuffers
+  , glEnableVertexAttribArray
+  , glGetActiveAttrib
+  , glGetActiveUniform
+  , glGetAttachedShaders
+  , glGetAttribLocation
+  , glGetProgramInfoLog
+  , glGetProgramiv
+  , glGetShaderInfoLog
+  , glGetShaderSource
+  , glGetShaderiv
+  , glGetUniformLocation
+  , glGetUniformfv
+  , glGetUniformiv
+  , glGetVertexAttribPointerv
+  , glGetVertexAttribdv
+  , glGetVertexAttribfv
+  , glGetVertexAttribiv
+  , glIsProgram
+  , glIsShader
+  , glLinkProgram
+  , glShaderSource
+  , glStencilFuncSeparate
+  , glStencilMaskSeparate
+  , glStencilOpSeparate
+  , glUniform1f
+  , glUniform1fv
+  , glUniform1i
+  , glUniform1iv
+  , glUniform2f
+  , glUniform2fv
+  , glUniform2i
+  , glUniform2iv
+  , glUniform3f
+  , glUniform3fv
+  , glUniform3i
+  , glUniform3iv
+  , glUniform4f
+  , glUniform4fv
+  , glUniform4i
+  , glUniform4iv
+  , glUniformMatrix2fv
+  , glUniformMatrix3fv
+  , glUniformMatrix4fv
+  , glUseProgram
+  , glValidateProgram
+  , glVertexAttrib1d
+  , glVertexAttrib1dv
+  , glVertexAttrib1f
+  , glVertexAttrib1fv
+  , glVertexAttrib1s
+  , glVertexAttrib1sv
+  , glVertexAttrib2d
+  , glVertexAttrib2dv
+  , glVertexAttrib2f
+  , glVertexAttrib2fv
+  , glVertexAttrib2s
+  , glVertexAttrib2sv
+  , glVertexAttrib3d
+  , glVertexAttrib3dv
+  , glVertexAttrib3f
+  , glVertexAttrib3fv
+  , glVertexAttrib3s
+  , glVertexAttrib3sv
+  , glVertexAttrib4Nbv
+  , glVertexAttrib4Niv
+  , glVertexAttrib4Nsv
+  , glVertexAttrib4Nub
+  , glVertexAttrib4Nubv
+  , glVertexAttrib4Nuiv
+  , glVertexAttrib4Nusv
+  , glVertexAttrib4bv
+  , glVertexAttrib4d
+  , glVertexAttrib4dv
+  , glVertexAttrib4f
+  , glVertexAttrib4fv
+  , glVertexAttrib4iv
+  , glVertexAttrib4s
+  , glVertexAttrib4sv
+  , glVertexAttrib4ubv
+  , glVertexAttrib4uiv
+  , glVertexAttrib4usv
+  , glVertexAttribPointer
+  , pattern GL_ACTIVE_ATTRIBUTES
+  , pattern GL_ACTIVE_ATTRIBUTE_MAX_LENGTH
+  , pattern GL_ACTIVE_UNIFORMS
+  , pattern GL_ACTIVE_UNIFORM_MAX_LENGTH
+  , pattern GL_ATTACHED_SHADERS
+  , pattern GL_BLEND_EQUATION_ALPHA
+  , pattern GL_BLEND_EQUATION_RGB
+  , pattern GL_BOOL
+  , pattern GL_BOOL_VEC2
+  , pattern GL_BOOL_VEC3
+  , pattern GL_BOOL_VEC4
+  , pattern GL_COMPILE_STATUS
+  , pattern GL_COORD_REPLACE
+  , pattern GL_CURRENT_PROGRAM
+  , pattern GL_CURRENT_VERTEX_ATTRIB
+  , pattern GL_DELETE_STATUS
+  , pattern GL_DRAW_BUFFER0
+  , pattern GL_DRAW_BUFFER1
+  , pattern GL_DRAW_BUFFER10
+  , pattern GL_DRAW_BUFFER11
+  , pattern GL_DRAW_BUFFER12
+  , pattern GL_DRAW_BUFFER13
+  , pattern GL_DRAW_BUFFER14
+  , pattern GL_DRAW_BUFFER15
+  , pattern GL_DRAW_BUFFER2
+  , pattern GL_DRAW_BUFFER3
+  , pattern GL_DRAW_BUFFER4
+  , pattern GL_DRAW_BUFFER5
+  , pattern GL_DRAW_BUFFER6
+  , pattern GL_DRAW_BUFFER7
+  , pattern GL_DRAW_BUFFER8
+  , pattern GL_DRAW_BUFFER9
+  , pattern GL_FLOAT_MAT2
+  , pattern GL_FLOAT_MAT3
+  , pattern GL_FLOAT_MAT4
+  , pattern GL_FLOAT_VEC2
+  , pattern GL_FLOAT_VEC3
+  , pattern GL_FLOAT_VEC4
+  , pattern GL_FRAGMENT_SHADER
+  , pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT
+  , pattern GL_INFO_LOG_LENGTH
+  , pattern GL_INT_VEC2
+  , pattern GL_INT_VEC3
+  , pattern GL_INT_VEC4
+  , pattern GL_LINK_STATUS
+  , pattern GL_LOWER_LEFT
+  , pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_DRAW_BUFFERS
+  , pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS
+  , pattern GL_MAX_TEXTURE_COORDS
+  , pattern GL_MAX_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_VARYING_FLOATS
+  , pattern GL_MAX_VERTEX_ATTRIBS
+  , pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS
+  , pattern GL_MAX_VERTEX_UNIFORM_COMPONENTS
+  , pattern GL_POINT_SPRITE
+  , pattern GL_POINT_SPRITE_COORD_ORIGIN
+  , pattern GL_SAMPLER_1D
+  , pattern GL_SAMPLER_1D_SHADOW
+  , pattern GL_SAMPLER_2D
+  , pattern GL_SAMPLER_2D_SHADOW
+  , pattern GL_SAMPLER_3D
+  , pattern GL_SAMPLER_CUBE
+  , pattern GL_SHADER_SOURCE_LENGTH
+  , pattern GL_SHADER_TYPE
+  , pattern GL_SHADING_LANGUAGE_VERSION
+  , pattern GL_STENCIL_BACK_FAIL
+  , pattern GL_STENCIL_BACK_FUNC
+  , pattern GL_STENCIL_BACK_PASS_DEPTH_FAIL
+  , pattern GL_STENCIL_BACK_PASS_DEPTH_PASS
+  , pattern GL_STENCIL_BACK_REF
+  , pattern GL_STENCIL_BACK_VALUE_MASK
+  , pattern GL_STENCIL_BACK_WRITEMASK
+  , pattern GL_UPPER_LEFT
+  , pattern GL_VALIDATE_STATUS
+  , pattern GL_VERTEX_ATTRIB_ARRAY_ENABLED
+  , pattern GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
+  , pattern GL_VERTEX_ATTRIB_ARRAY_POINTER
+  , pattern GL_VERTEX_ATTRIB_ARRAY_SIZE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_STRIDE
+  , pattern GL_VERTEX_ATTRIB_ARRAY_TYPE
+  , pattern GL_VERTEX_PROGRAM_POINT_SIZE
+  , pattern GL_VERTEX_PROGRAM_TWO_SIDE
+  , pattern GL_VERTEX_SHADER
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard15
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard21.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard21.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard21.hs
@@ -0,0 +1,39 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard21 (
+  -- * Graphics.GL.Raw.Profile.Standard21
+    module Graphics.GL.Raw.Profile.Standard20
+  , glUniformMatrix2x3fv
+  , glUniformMatrix2x4fv
+  , glUniformMatrix3x2fv
+  , glUniformMatrix3x4fv
+  , glUniformMatrix4x2fv
+  , glUniformMatrix4x3fv
+  , pattern GL_COMPRESSED_SLUMINANCE
+  , pattern GL_COMPRESSED_SLUMINANCE_ALPHA
+  , pattern GL_COMPRESSED_SRGB
+  , pattern GL_COMPRESSED_SRGB_ALPHA
+  , pattern GL_CURRENT_RASTER_SECONDARY_COLOR
+  , pattern GL_FLOAT_MAT2x3
+  , pattern GL_FLOAT_MAT2x4
+  , pattern GL_FLOAT_MAT3x2
+  , pattern GL_FLOAT_MAT3x4
+  , pattern GL_FLOAT_MAT4x2
+  , pattern GL_FLOAT_MAT4x3
+  , pattern GL_PIXEL_PACK_BUFFER
+  , pattern GL_PIXEL_PACK_BUFFER_BINDING
+  , pattern GL_PIXEL_UNPACK_BUFFER
+  , pattern GL_PIXEL_UNPACK_BUFFER_BINDING
+  , pattern GL_SLUMINANCE
+  , pattern GL_SLUMINANCE8
+  , pattern GL_SLUMINANCE8_ALPHA8
+  , pattern GL_SLUMINANCE_ALPHA
+  , pattern GL_SRGB
+  , pattern GL_SRGB8
+  , pattern GL_SRGB8_ALPHA8
+  , pattern GL_SRGB_ALPHA
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard20
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard30.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard30.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard30.hs
@@ -0,0 +1,315 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard30 (
+  -- * Graphics.GL.Raw.Profile.Standard30
+    module Graphics.GL.Raw.Profile.Standard21
+  , glBeginConditionalRender
+  , glBeginTransformFeedback
+  , glBindBufferBase
+  , glBindBufferRange
+  , glBindFragDataLocation
+  , glBindFramebuffer
+  , glBindRenderbuffer
+  , glBindVertexArray
+  , glBlitFramebuffer
+  , glCheckFramebufferStatus
+  , glClampColor
+  , glClearBufferfi
+  , glClearBufferfv
+  , glClearBufferiv
+  , glClearBufferuiv
+  , glColorMaski
+  , glDeleteFramebuffers
+  , glDeleteRenderbuffers
+  , glDeleteVertexArrays
+  , glDisablei
+  , glEnablei
+  , glEndConditionalRender
+  , glEndTransformFeedback
+  , glFlushMappedBufferRange
+  , glFramebufferRenderbuffer
+  , glFramebufferTexture1D
+  , glFramebufferTexture2D
+  , glFramebufferTexture3D
+  , glFramebufferTextureLayer
+  , glGenFramebuffers
+  , glGenRenderbuffers
+  , glGenVertexArrays
+  , glGenerateMipmap
+  , glGetBooleani_v
+  , glGetFragDataLocation
+  , glGetFramebufferAttachmentParameteriv
+  , glGetIntegeri_v
+  , glGetRenderbufferParameteriv
+  , glGetStringi
+  , glGetTexParameterIiv
+  , glGetTexParameterIuiv
+  , glGetTransformFeedbackVarying
+  , glGetUniformuiv
+  , glGetVertexAttribIiv
+  , glGetVertexAttribIuiv
+  , glIsEnabledi
+  , glIsFramebuffer
+  , glIsRenderbuffer
+  , glIsVertexArray
+  , glMapBufferRange
+  , glRenderbufferStorage
+  , glRenderbufferStorageMultisample
+  , glTexParameterIiv
+  , glTexParameterIuiv
+  , glTransformFeedbackVaryings
+  , glUniform1ui
+  , glUniform1uiv
+  , glUniform2ui
+  , glUniform2uiv
+  , glUniform3ui
+  , glUniform3uiv
+  , glUniform4ui
+  , glUniform4uiv
+  , glVertexAttribI1i
+  , glVertexAttribI1iv
+  , glVertexAttribI1ui
+  , glVertexAttribI1uiv
+  , glVertexAttribI2i
+  , glVertexAttribI2iv
+  , glVertexAttribI2ui
+  , glVertexAttribI2uiv
+  , glVertexAttribI3i
+  , glVertexAttribI3iv
+  , glVertexAttribI3ui
+  , glVertexAttribI3uiv
+  , glVertexAttribI4bv
+  , glVertexAttribI4i
+  , glVertexAttribI4iv
+  , glVertexAttribI4sv
+  , glVertexAttribI4ubv
+  , glVertexAttribI4ui
+  , glVertexAttribI4uiv
+  , glVertexAttribI4usv
+  , glVertexAttribIPointer
+  , pattern GL_ALPHA_INTEGER
+  , pattern GL_BGRA_INTEGER
+  , pattern GL_BGR_INTEGER
+  , pattern GL_BLUE_INTEGER
+  , pattern GL_BUFFER_ACCESS_FLAGS
+  , pattern GL_BUFFER_MAP_LENGTH
+  , pattern GL_BUFFER_MAP_OFFSET
+  , pattern GL_CLAMP_FRAGMENT_COLOR
+  , pattern GL_CLAMP_READ_COLOR
+  , pattern GL_CLAMP_VERTEX_COLOR
+  , pattern GL_CLIP_DISTANCE0
+  , pattern GL_CLIP_DISTANCE1
+  , pattern GL_CLIP_DISTANCE2
+  , pattern GL_CLIP_DISTANCE3
+  , pattern GL_CLIP_DISTANCE4
+  , pattern GL_CLIP_DISTANCE5
+  , pattern GL_CLIP_DISTANCE6
+  , pattern GL_CLIP_DISTANCE7
+  , pattern GL_COLOR_ATTACHMENT0
+  , pattern GL_COLOR_ATTACHMENT1
+  , pattern GL_COLOR_ATTACHMENT10
+  , pattern GL_COLOR_ATTACHMENT11
+  , pattern GL_COLOR_ATTACHMENT12
+  , pattern GL_COLOR_ATTACHMENT13
+  , pattern GL_COLOR_ATTACHMENT14
+  , pattern GL_COLOR_ATTACHMENT15
+  , pattern GL_COLOR_ATTACHMENT2
+  , pattern GL_COLOR_ATTACHMENT3
+  , pattern GL_COLOR_ATTACHMENT4
+  , pattern GL_COLOR_ATTACHMENT5
+  , pattern GL_COLOR_ATTACHMENT6
+  , pattern GL_COLOR_ATTACHMENT7
+  , pattern GL_COLOR_ATTACHMENT8
+  , pattern GL_COLOR_ATTACHMENT9
+  , pattern GL_COMPARE_REF_TO_TEXTURE
+  , pattern GL_COMPRESSED_RED
+  , pattern GL_COMPRESSED_RED_RGTC1
+  , pattern GL_COMPRESSED_RG
+  , pattern GL_COMPRESSED_RG_RGTC2
+  , pattern GL_COMPRESSED_SIGNED_RED_RGTC1
+  , pattern GL_COMPRESSED_SIGNED_RG_RGTC2
+  , pattern GL_CONTEXT_FLAGS
+  , pattern GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT
+  , pattern GL_DEPTH24_STENCIL8
+  , pattern GL_DEPTH32F_STENCIL8
+  , pattern GL_DEPTH_ATTACHMENT
+  , pattern GL_DEPTH_COMPONENT32F
+  , pattern GL_DEPTH_STENCIL
+  , pattern GL_DEPTH_STENCIL_ATTACHMENT
+  , pattern GL_DRAW_FRAMEBUFFER
+  , pattern GL_DRAW_FRAMEBUFFER_BINDING
+  , pattern GL_FIXED_ONLY
+  , pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV
+  , pattern GL_FRAMEBUFFER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
+  , pattern GL_FRAMEBUFFER_BINDING
+  , pattern GL_FRAMEBUFFER_COMPLETE
+  , pattern GL_FRAMEBUFFER_DEFAULT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
+  , pattern GL_FRAMEBUFFER_SRGB
+  , pattern GL_FRAMEBUFFER_UNDEFINED
+  , pattern GL_FRAMEBUFFER_UNSUPPORTED
+  , pattern GL_GREEN_INTEGER
+  , pattern GL_HALF_FLOAT
+  , pattern GL_INDEX
+  , pattern GL_INTERLEAVED_ATTRIBS
+  , pattern GL_INT_SAMPLER_1D
+  , pattern GL_INT_SAMPLER_1D_ARRAY
+  , pattern GL_INT_SAMPLER_2D
+  , pattern GL_INT_SAMPLER_2D_ARRAY
+  , pattern GL_INT_SAMPLER_3D
+  , pattern GL_INT_SAMPLER_CUBE
+  , pattern GL_INVALID_FRAMEBUFFER_OPERATION
+  , pattern GL_MAJOR_VERSION
+  , pattern GL_MAP_FLUSH_EXPLICIT_BIT
+  , pattern GL_MAP_INVALIDATE_BUFFER_BIT
+  , pattern GL_MAP_INVALIDATE_RANGE_BIT
+  , pattern GL_MAP_READ_BIT
+  , pattern GL_MAP_UNSYNCHRONIZED_BIT
+  , pattern GL_MAP_WRITE_BIT
+  , pattern GL_MAX_ARRAY_TEXTURE_LAYERS
+  , pattern GL_MAX_CLIP_DISTANCES
+  , pattern GL_MAX_COLOR_ATTACHMENTS
+  , pattern GL_MAX_PROGRAM_TEXEL_OFFSET
+  , pattern GL_MAX_RENDERBUFFER_SIZE
+  , pattern GL_MAX_SAMPLES
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
+  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
+  , pattern GL_MAX_VARYING_COMPONENTS
+  , pattern GL_MINOR_VERSION
+  , pattern GL_MIN_PROGRAM_TEXEL_OFFSET
+  , pattern GL_NUM_EXTENSIONS
+  , pattern GL_PRIMITIVES_GENERATED
+  , pattern GL_PROXY_TEXTURE_1D_ARRAY
+  , pattern GL_PROXY_TEXTURE_2D_ARRAY
+  , pattern GL_QUERY_BY_REGION_NO_WAIT
+  , pattern GL_QUERY_BY_REGION_WAIT
+  , pattern GL_QUERY_NO_WAIT
+  , pattern GL_QUERY_WAIT
+  , pattern GL_R11F_G11F_B10F
+  , pattern GL_R16
+  , pattern GL_R16F
+  , pattern GL_R16I
+  , pattern GL_R16UI
+  , pattern GL_R32F
+  , pattern GL_R32I
+  , pattern GL_R32UI
+  , pattern GL_R8
+  , pattern GL_R8I
+  , pattern GL_R8UI
+  , pattern GL_RASTERIZER_DISCARD
+  , pattern GL_READ_FRAMEBUFFER
+  , pattern GL_READ_FRAMEBUFFER_BINDING
+  , pattern GL_RED_INTEGER
+  , pattern GL_RENDERBUFFER
+  , pattern GL_RENDERBUFFER_ALPHA_SIZE
+  , pattern GL_RENDERBUFFER_BINDING
+  , pattern GL_RENDERBUFFER_BLUE_SIZE
+  , pattern GL_RENDERBUFFER_DEPTH_SIZE
+  , pattern GL_RENDERBUFFER_GREEN_SIZE
+  , pattern GL_RENDERBUFFER_HEIGHT
+  , pattern GL_RENDERBUFFER_INTERNAL_FORMAT
+  , pattern GL_RENDERBUFFER_RED_SIZE
+  , pattern GL_RENDERBUFFER_SAMPLES
+  , pattern GL_RENDERBUFFER_STENCIL_SIZE
+  , pattern GL_RENDERBUFFER_WIDTH
+  , pattern GL_RG
+  , pattern GL_RG16
+  , pattern GL_RG16F
+  , pattern GL_RG16I
+  , pattern GL_RG16UI
+  , pattern GL_RG32F
+  , pattern GL_RG32I
+  , pattern GL_RG32UI
+  , pattern GL_RG8
+  , pattern GL_RG8I
+  , pattern GL_RG8UI
+  , pattern GL_RGB16F
+  , pattern GL_RGB16I
+  , pattern GL_RGB16UI
+  , pattern GL_RGB32F
+  , pattern GL_RGB32I
+  , pattern GL_RGB32UI
+  , pattern GL_RGB8I
+  , pattern GL_RGB8UI
+  , pattern GL_RGB9_E5
+  , pattern GL_RGBA16F
+  , pattern GL_RGBA16I
+  , pattern GL_RGBA16UI
+  , pattern GL_RGBA32F
+  , pattern GL_RGBA32I
+  , pattern GL_RGBA32UI
+  , pattern GL_RGBA8I
+  , pattern GL_RGBA8UI
+  , pattern GL_RGBA_INTEGER
+  , pattern GL_RGB_INTEGER
+  , pattern GL_RG_INTEGER
+  , pattern GL_SAMPLER_1D_ARRAY
+  , pattern GL_SAMPLER_1D_ARRAY_SHADOW
+  , pattern GL_SAMPLER_2D_ARRAY
+  , pattern GL_SAMPLER_2D_ARRAY_SHADOW
+  , pattern GL_SAMPLER_CUBE_SHADOW
+  , pattern GL_SEPARATE_ATTRIBS
+  , pattern GL_STENCIL_ATTACHMENT
+  , pattern GL_STENCIL_INDEX1
+  , pattern GL_STENCIL_INDEX16
+  , pattern GL_STENCIL_INDEX4
+  , pattern GL_STENCIL_INDEX8
+  , pattern GL_TEXTURE_1D_ARRAY
+  , pattern GL_TEXTURE_2D_ARRAY
+  , pattern GL_TEXTURE_ALPHA_TYPE
+  , pattern GL_TEXTURE_BINDING_1D_ARRAY
+  , pattern GL_TEXTURE_BINDING_2D_ARRAY
+  , pattern GL_TEXTURE_BLUE_TYPE
+  , pattern GL_TEXTURE_DEPTH_TYPE
+  , pattern GL_TEXTURE_GREEN_TYPE
+  , pattern GL_TEXTURE_INTENSITY_TYPE
+  , pattern GL_TEXTURE_LUMINANCE_TYPE
+  , pattern GL_TEXTURE_RED_TYPE
+  , pattern GL_TEXTURE_SHARED_SIZE
+  , pattern GL_TEXTURE_STENCIL_SIZE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
+  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_START
+  , pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
+  , pattern GL_TRANSFORM_FEEDBACK_VARYINGS
+  , pattern GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH
+  , pattern GL_UNSIGNED_INT_10F_11F_11F_REV
+  , pattern GL_UNSIGNED_INT_24_8
+  , pattern GL_UNSIGNED_INT_5_9_9_9_REV
+  , pattern GL_UNSIGNED_INT_SAMPLER_1D
+  , pattern GL_UNSIGNED_INT_SAMPLER_1D_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_3D
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE
+  , pattern GL_UNSIGNED_INT_VEC2
+  , pattern GL_UNSIGNED_INT_VEC3
+  , pattern GL_UNSIGNED_INT_VEC4
+  , pattern GL_UNSIGNED_NORMALIZED
+  , pattern GL_VERTEX_ARRAY_BINDING
+  , pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard21
diff --git a/dist/build/autogen/Graphics/GL/Raw/Profile/Standard31.hs b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard31.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Raw/Profile/Standard31.hs
@@ -0,0 +1,83 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Raw.Profile.Standard31 (
+  -- * Graphics.GL.Raw.Profile.Standard31
+    module Graphics.GL.Raw.Profile.Standard30
+  , glCopyBufferSubData
+  , glDrawArraysInstanced
+  , glDrawElementsInstanced
+  , glGetActiveUniformBlockName
+  , glGetActiveUniformBlockiv
+  , glGetActiveUniformName
+  , glGetActiveUniformsiv
+  , glGetUniformBlockIndex
+  , glGetUniformIndices
+  , glPrimitiveRestartIndex
+  , glTexBuffer
+  , glUniformBlockBinding
+  , pattern GL_ACTIVE_UNIFORM_BLOCKS
+  , pattern GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+  , pattern GL_COPY_READ_BUFFER
+  , pattern GL_COPY_WRITE_BUFFER
+  , pattern GL_INT_SAMPLER_2D_RECT
+  , pattern GL_INT_SAMPLER_BUFFER
+  , pattern GL_INVALID_INDEX
+  , pattern GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_UNIFORM_BLOCKS
+  , pattern GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+  , pattern GL_MAX_FRAGMENT_UNIFORM_BLOCKS
+  , pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS
+  , pattern GL_MAX_RECTANGLE_TEXTURE_SIZE
+  , pattern GL_MAX_TEXTURE_BUFFER_SIZE
+  , pattern GL_MAX_UNIFORM_BLOCK_SIZE
+  , pattern GL_MAX_UNIFORM_BUFFER_BINDINGS
+  , pattern GL_MAX_VERTEX_UNIFORM_BLOCKS
+  , pattern GL_PRIMITIVE_RESTART
+  , pattern GL_PRIMITIVE_RESTART_INDEX
+  , pattern GL_PROXY_TEXTURE_RECTANGLE
+  , pattern GL_R16_SNORM
+  , pattern GL_R8_SNORM
+  , pattern GL_RG16_SNORM
+  , pattern GL_RG8_SNORM
+  , pattern GL_RGB16_SNORM
+  , pattern GL_RGB8_SNORM
+  , pattern GL_RGBA16_SNORM
+  , pattern GL_RGBA8_SNORM
+  , pattern GL_SAMPLER_2D_RECT
+  , pattern GL_SAMPLER_2D_RECT_SHADOW
+  , pattern GL_SAMPLER_BUFFER
+  , pattern GL_SIGNED_NORMALIZED
+  , pattern GL_TEXTURE_BINDING_BUFFER
+  , pattern GL_TEXTURE_BINDING_RECTANGLE
+  , pattern GL_TEXTURE_BUFFER
+  , pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING
+  , pattern GL_TEXTURE_RECTANGLE
+  , pattern GL_UNIFORM_ARRAY_STRIDE
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
+  , pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+  , pattern GL_UNIFORM_BLOCK_BINDING
+  , pattern GL_UNIFORM_BLOCK_DATA_SIZE
+  , pattern GL_UNIFORM_BLOCK_INDEX
+  , pattern GL_UNIFORM_BLOCK_NAME_LENGTH
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+  , pattern GL_UNIFORM_BUFFER
+  , pattern GL_UNIFORM_BUFFER_BINDING
+  , pattern GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_UNIFORM_BUFFER_SIZE
+  , pattern GL_UNIFORM_BUFFER_START
+  , pattern GL_UNIFORM_IS_ROW_MAJOR
+  , pattern GL_UNIFORM_MATRIX_STRIDE
+  , pattern GL_UNIFORM_NAME_LENGTH
+  , pattern GL_UNIFORM_OFFSET
+  , pattern GL_UNIFORM_SIZE
+  , pattern GL_UNIFORM_TYPE
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_RECT
+  , pattern GL_UNSIGNED_INT_SAMPLER_BUFFER
+) where
+
+import Graphics.GL.Raw.Internal.Shared
+
+import Graphics.GL.Raw.Profile.Standard30
diff --git a/gl.cabal b/gl.cabal
new file mode 100644
--- /dev/null
+++ b/gl.cabal
@@ -0,0 +1,825 @@
+name:          gl
+version:       0.1
+synopsis:      Complete OpenGL raw bindings
+description:   Complete OpenGL raw bindings
+license:       BSD3
+license-file:  LICENSE
+author:        Edward A. Kmett, Gabríel Arthúr Pétursson, Sven Panne
+maintainer:    ekmett@gmail.com
+copyright:     Copyright © 2014 Edward A. Kmett
+               Copyright © 2014 Gabríel Arthúr Pétursson
+               Copyright © 2013 Sven Panne
+category:      Graphics
+build-type:    Custom
+cabal-version: >=1.18
+extra-source-files:
+  gl.xml
+  CHANGELOG.markdown README.markdown TODO.markdown
+  Generator.hs Module.hs Parser.hs Registry.hs Utils.hs
+
+
+source-repository head
+  type:     git
+  location: https://github.com/ekmett/gl
+
+flag UseNativeWindowsLibraries
+   description:
+      When compiling under Windows, use the native libraries instead of e.g. the
+      ones coming with Cygwin.
+
+flag UseGlXGetProcAddress
+   description:
+      Use glXGetProcAddress instead of dlsym on non-Windows/-Darwin platforms.
+
+library
+  hs-source-dirs: src
+  c-sources: cbits/gl.c
+  ghc-options: -Wall -O2
+
+  build-depends:
+      base == 4.*
+    , containers == 0.5.*
+    , transformers >= 0.2 && < 0.5
+    , vector == 0.10.*
+
+  -- for Setup.hs
+  build-depends:
+      directory == 1.2.*
+    , filepath == 1.3.*
+    , hxt == 9.3.*
+    , split == 0.2.*
+
+  default-language: Haskell2010
+
+  if os(windows) && flag(UseNativeWindowsLibraries)
+    if arch(i386)
+      cpp-options: "-DCALLCONV=stdcall"
+    else
+       cpp-options: "-DCALLCONV=ccall"
+    cc-options: "-DUSE_WGLGETPROCADDRESS"
+    extra-libraries: opengl32
+  else
+    cpp-options: "-DCALLCONV=ccall"
+    if !os(darwin) && !os(ios) && flag(UseGlXGetProcAddress)
+      cc-options: "-DUSE_GLXGETPROCADDRESS"
+    else
+      cc-options: "-DUSE_DLSYM"
+    if os(darwin)
+      cpp-options: "-DHANDLE_IS_POINTER"
+      frameworks: OpenGL
+    else
+      if os(ios)
+        frameworks: OpenGLES
+      else
+        extra-libraries: GL
+
+  exposed-modules:
+    Graphics.GL.Raw.Internal.FFI
+    Graphics.GL.Raw.Internal.Proc
+    Graphics.GL.Raw.Types
+    Graphics.GL.Raw.Extension
+    Graphics.GL.Raw.Extension.ThreeDFX
+    Graphics.GL.Raw.Extension.ThreeDFX.Multisample
+    Graphics.GL.Raw.Extension.ThreeDFX.Tbuffer
+    Graphics.GL.Raw.Extension.ThreeDFX.TextureCompressionFXT1
+    Graphics.GL.Raw.Extension.AMD
+    Graphics.GL.Raw.Extension.AMD.BlendMinmaxFactor
+    Graphics.GL.Raw.Extension.AMD.Compressed3DCTexture
+    Graphics.GL.Raw.Extension.AMD.CompressedATCTexture
+    Graphics.GL.Raw.Extension.AMD.ConservativeDepth
+    Graphics.GL.Raw.Extension.AMD.DebugOutput
+    Graphics.GL.Raw.Extension.AMD.DepthClampSeparate
+    Graphics.GL.Raw.Extension.AMD.DrawBuffersBlend
+    Graphics.GL.Raw.Extension.AMD.GcnShader
+    Graphics.GL.Raw.Extension.AMD.GpuShaderInt64
+    Graphics.GL.Raw.Extension.AMD.InterleavedElements
+    Graphics.GL.Raw.Extension.AMD.MultiDrawIndirect
+    Graphics.GL.Raw.Extension.AMD.NameGenDelete
+    Graphics.GL.Raw.Extension.AMD.OcclusionQueryEvent
+    Graphics.GL.Raw.Extension.AMD.PerformanceMonitor
+    Graphics.GL.Raw.Extension.AMD.PinnedMemory
+    Graphics.GL.Raw.Extension.AMD.ProgramBinaryZ400
+    Graphics.GL.Raw.Extension.AMD.QueryBufferObject
+    Graphics.GL.Raw.Extension.AMD.SamplePositions
+    Graphics.GL.Raw.Extension.AMD.SeamlessCubemapPerTexture
+    Graphics.GL.Raw.Extension.AMD.ShaderAtomicCounterOps
+    Graphics.GL.Raw.Extension.AMD.ShaderStencilExport
+    Graphics.GL.Raw.Extension.AMD.ShaderTrinaryMinmax
+    Graphics.GL.Raw.Extension.AMD.SparseTexture
+    Graphics.GL.Raw.Extension.AMD.StencilOperationExtended
+    Graphics.GL.Raw.Extension.AMD.TextureTexture4
+    Graphics.GL.Raw.Extension.AMD.TransformFeedback3LinesTriangles
+    Graphics.GL.Raw.Extension.AMD.TransformFeedback4
+    Graphics.GL.Raw.Extension.AMD.VertexShaderLayer
+    Graphics.GL.Raw.Extension.AMD.VertexShaderTessellator
+    Graphics.GL.Raw.Extension.AMD.VertexShaderViewportIndex
+    Graphics.GL.Raw.Extension.ANDROID
+    Graphics.GL.Raw.Extension.ANDROID.ExtensionPackEs31a
+    Graphics.GL.Raw.Extension.ANGLE
+    Graphics.GL.Raw.Extension.ANGLE.DepthTexture
+    Graphics.GL.Raw.Extension.ANGLE.FramebufferBlit
+    Graphics.GL.Raw.Extension.ANGLE.FramebufferMultisample
+    Graphics.GL.Raw.Extension.ANGLE.InstancedArrays
+    Graphics.GL.Raw.Extension.ANGLE.PackReverseRowOrder
+    Graphics.GL.Raw.Extension.ANGLE.ProgramBinary
+    Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt3
+    Graphics.GL.Raw.Extension.ANGLE.TextureCompressionDxt5
+    Graphics.GL.Raw.Extension.ANGLE.TextureUsage
+    Graphics.GL.Raw.Extension.ANGLE.TranslatedShaderSource
+    Graphics.GL.Raw.Extension.APPLE
+    Graphics.GL.Raw.Extension.APPLE.AuxDepthStencil
+    Graphics.GL.Raw.Extension.APPLE.ClientStorage
+    Graphics.GL.Raw.Extension.APPLE.ClipDistance
+    Graphics.GL.Raw.Extension.APPLE.ColorBufferPackedFloat
+    Graphics.GL.Raw.Extension.APPLE.CopyTextureLevels
+    Graphics.GL.Raw.Extension.APPLE.ElementArray
+    Graphics.GL.Raw.Extension.APPLE.Fence
+    Graphics.GL.Raw.Extension.APPLE.FloatPixels
+    Graphics.GL.Raw.Extension.APPLE.FlushBufferRange
+    Graphics.GL.Raw.Extension.APPLE.FramebufferMultisample
+    Graphics.GL.Raw.Extension.APPLE.ObjectPurgeable
+    Graphics.GL.Raw.Extension.APPLE.Rgb422
+    Graphics.GL.Raw.Extension.APPLE.RowBytes
+    Graphics.GL.Raw.Extension.APPLE.SpecularVector
+    Graphics.GL.Raw.Extension.APPLE.Sync
+    Graphics.GL.Raw.Extension.APPLE.Texture2DLimitedNpot
+    Graphics.GL.Raw.Extension.APPLE.TextureFormatBGRA8888
+    Graphics.GL.Raw.Extension.APPLE.TextureMaxLevel
+    Graphics.GL.Raw.Extension.APPLE.TexturePackedFloat
+    Graphics.GL.Raw.Extension.APPLE.TextureRange
+    Graphics.GL.Raw.Extension.APPLE.TransformHint
+    Graphics.GL.Raw.Extension.APPLE.VertexArrayObject
+    Graphics.GL.Raw.Extension.APPLE.VertexArrayRange
+    Graphics.GL.Raw.Extension.APPLE.VertexProgramEvaluators
+    Graphics.GL.Raw.Extension.APPLE.Ycbcr422
+    Graphics.GL.Raw.Extension.ARB
+    Graphics.GL.Raw.Extension.ARB.ES2Compatibility
+    Graphics.GL.Raw.Extension.ARB.ES31Compatibility
+    Graphics.GL.Raw.Extension.ARB.ES3Compatibility
+    Graphics.GL.Raw.Extension.ARB.ArraysOfArrays
+    Graphics.GL.Raw.Extension.ARB.BaseInstance
+    Graphics.GL.Raw.Extension.ARB.BindlessTexture
+    Graphics.GL.Raw.Extension.ARB.BlendFuncExtended
+    Graphics.GL.Raw.Extension.ARB.BufferStorage
+    Graphics.GL.Raw.Extension.ARB.ClEvent
+    Graphics.GL.Raw.Extension.ARB.ClearBufferObject
+    Graphics.GL.Raw.Extension.ARB.ClearTexture
+    Graphics.GL.Raw.Extension.ARB.ClipControl
+    Graphics.GL.Raw.Extension.ARB.ColorBufferFloat
+    Graphics.GL.Raw.Extension.ARB.Compatibility
+    Graphics.GL.Raw.Extension.ARB.CompressedTexturePixelStorage
+    Graphics.GL.Raw.Extension.ARB.ComputeShader
+    Graphics.GL.Raw.Extension.ARB.ComputeVariableGroupSize
+    Graphics.GL.Raw.Extension.ARB.ConditionalRenderInverted
+    Graphics.GL.Raw.Extension.ARB.ConservativeDepth
+    Graphics.GL.Raw.Extension.ARB.CopyBuffer
+    Graphics.GL.Raw.Extension.ARB.CopyImage
+    Graphics.GL.Raw.Extension.ARB.CullDistance
+    Graphics.GL.Raw.Extension.ARB.DebugOutput
+    Graphics.GL.Raw.Extension.ARB.DepthBufferFloat
+    Graphics.GL.Raw.Extension.ARB.DepthClamp
+    Graphics.GL.Raw.Extension.ARB.DepthTexture
+    Graphics.GL.Raw.Extension.ARB.DerivativeControl
+    Graphics.GL.Raw.Extension.ARB.DirectStateAccess
+    Graphics.GL.Raw.Extension.ARB.DrawBuffers
+    Graphics.GL.Raw.Extension.ARB.DrawBuffersBlend
+    Graphics.GL.Raw.Extension.ARB.DrawElementsBaseVertex
+    Graphics.GL.Raw.Extension.ARB.DrawIndirect
+    Graphics.GL.Raw.Extension.ARB.DrawInstanced
+    Graphics.GL.Raw.Extension.ARB.EnhancedLayouts
+    Graphics.GL.Raw.Extension.ARB.ExplicitAttribLocation
+    Graphics.GL.Raw.Extension.ARB.ExplicitUniformLocation
+    Graphics.GL.Raw.Extension.ARB.FragmentCoordConventions
+    Graphics.GL.Raw.Extension.ARB.FragmentLayerViewport
+    Graphics.GL.Raw.Extension.ARB.FragmentProgram
+    Graphics.GL.Raw.Extension.ARB.FragmentProgramShadow
+    Graphics.GL.Raw.Extension.ARB.FragmentShader
+    Graphics.GL.Raw.Extension.ARB.FramebufferNoAttachments
+    Graphics.GL.Raw.Extension.ARB.FramebufferObject
+    Graphics.GL.Raw.Extension.ARB.FramebufferSRGB
+    Graphics.GL.Raw.Extension.ARB.GeometryShader4
+    Graphics.GL.Raw.Extension.ARB.GetProgramBinary
+    Graphics.GL.Raw.Extension.ARB.GetTextureSubImage
+    Graphics.GL.Raw.Extension.ARB.GpuShader5
+    Graphics.GL.Raw.Extension.ARB.GpuShaderFp64
+    Graphics.GL.Raw.Extension.ARB.HalfFloatPixel
+    Graphics.GL.Raw.Extension.ARB.HalfFloatVertex
+    Graphics.GL.Raw.Extension.ARB.Imaging
+    Graphics.GL.Raw.Extension.ARB.IndirectParameters
+    Graphics.GL.Raw.Extension.ARB.InstancedArrays
+    Graphics.GL.Raw.Extension.ARB.InternalformatQuery
+    Graphics.GL.Raw.Extension.ARB.InternalformatQuery2
+    Graphics.GL.Raw.Extension.ARB.InvalidateSubdata
+    Graphics.GL.Raw.Extension.ARB.MapBufferAlignment
+    Graphics.GL.Raw.Extension.ARB.MapBufferRange
+    Graphics.GL.Raw.Extension.ARB.MatrixPalette
+    Graphics.GL.Raw.Extension.ARB.MultiBind
+    Graphics.GL.Raw.Extension.ARB.MultiDrawIndirect
+    Graphics.GL.Raw.Extension.ARB.Multisample
+    Graphics.GL.Raw.Extension.ARB.Multitexture
+    Graphics.GL.Raw.Extension.ARB.OcclusionQuery
+    Graphics.GL.Raw.Extension.ARB.OcclusionQuery2
+    Graphics.GL.Raw.Extension.ARB.PipelineStatisticsQuery
+    Graphics.GL.Raw.Extension.ARB.PixelBufferObject
+    Graphics.GL.Raw.Extension.ARB.PointParameters
+    Graphics.GL.Raw.Extension.ARB.PointSprite
+    Graphics.GL.Raw.Extension.ARB.ProgramInterfaceQuery
+    Graphics.GL.Raw.Extension.ARB.ProvokingVertex
+    Graphics.GL.Raw.Extension.ARB.QueryBufferObject
+    Graphics.GL.Raw.Extension.ARB.RobustBufferAccessBehavior
+    Graphics.GL.Raw.Extension.ARB.Robustness
+    Graphics.GL.Raw.Extension.ARB.RobustnessIsolation
+    Graphics.GL.Raw.Extension.ARB.SampleShading
+    Graphics.GL.Raw.Extension.ARB.SamplerObjects
+    Graphics.GL.Raw.Extension.ARB.SeamlessCubeMap
+    Graphics.GL.Raw.Extension.ARB.SeamlessCubemapPerTexture
+    Graphics.GL.Raw.Extension.ARB.SeparateShaderObjects
+    Graphics.GL.Raw.Extension.ARB.ShaderAtomicCounters
+    Graphics.GL.Raw.Extension.ARB.ShaderBitEncoding
+    Graphics.GL.Raw.Extension.ARB.ShaderDrawParameters
+    Graphics.GL.Raw.Extension.ARB.ShaderGroupVote
+    Graphics.GL.Raw.Extension.ARB.ShaderImageLoadStore
+    Graphics.GL.Raw.Extension.ARB.ShaderImageSize
+    Graphics.GL.Raw.Extension.ARB.ShaderObjects
+    Graphics.GL.Raw.Extension.ARB.ShaderPrecision
+    Graphics.GL.Raw.Extension.ARB.ShaderStencilExport
+    Graphics.GL.Raw.Extension.ARB.ShaderStorageBufferObject
+    Graphics.GL.Raw.Extension.ARB.ShaderSubroutine
+    Graphics.GL.Raw.Extension.ARB.ShaderTextureImageSamples
+    Graphics.GL.Raw.Extension.ARB.ShaderTextureLod
+    Graphics.GL.Raw.Extension.ARB.ShadingLanguage100
+    Graphics.GL.Raw.Extension.ARB.ShadingLanguage420pack
+    Graphics.GL.Raw.Extension.ARB.ShadingLanguageInclude
+    Graphics.GL.Raw.Extension.ARB.ShadingLanguagePacking
+    Graphics.GL.Raw.Extension.ARB.Shadow
+    Graphics.GL.Raw.Extension.ARB.ShadowAmbient
+    Graphics.GL.Raw.Extension.ARB.SparseBuffer
+    Graphics.GL.Raw.Extension.ARB.SparseTexture
+    Graphics.GL.Raw.Extension.ARB.StencilTexturing
+    Graphics.GL.Raw.Extension.ARB.Sync
+    Graphics.GL.Raw.Extension.ARB.TessellationShader
+    Graphics.GL.Raw.Extension.ARB.TextureBarrier
+    Graphics.GL.Raw.Extension.ARB.TextureBorderClamp
+    Graphics.GL.Raw.Extension.ARB.TextureBufferObject
+    Graphics.GL.Raw.Extension.ARB.TextureBufferObjectRgb32
+    Graphics.GL.Raw.Extension.ARB.TextureBufferRange
+    Graphics.GL.Raw.Extension.ARB.TextureCompression
+    Graphics.GL.Raw.Extension.ARB.TextureCompressionBptc
+    Graphics.GL.Raw.Extension.ARB.TextureCompressionRgtc
+    Graphics.GL.Raw.Extension.ARB.TextureCubeMap
+    Graphics.GL.Raw.Extension.ARB.TextureCubeMapArray
+    Graphics.GL.Raw.Extension.ARB.TextureEnvAdd
+    Graphics.GL.Raw.Extension.ARB.TextureEnvCombine
+    Graphics.GL.Raw.Extension.ARB.TextureEnvCrossbar
+    Graphics.GL.Raw.Extension.ARB.TextureEnvDot3
+    Graphics.GL.Raw.Extension.ARB.TextureFloat
+    Graphics.GL.Raw.Extension.ARB.TextureGather
+    Graphics.GL.Raw.Extension.ARB.TextureMirrorClampToEdge
+    Graphics.GL.Raw.Extension.ARB.TextureMirroredRepeat
+    Graphics.GL.Raw.Extension.ARB.TextureMultisample
+    Graphics.GL.Raw.Extension.ARB.TextureNonPowerOfTwo
+    Graphics.GL.Raw.Extension.ARB.TextureQueryLevels
+    Graphics.GL.Raw.Extension.ARB.TextureQueryLod
+    Graphics.GL.Raw.Extension.ARB.TextureRectangle
+    Graphics.GL.Raw.Extension.ARB.TextureRg
+    Graphics.GL.Raw.Extension.ARB.TextureRgb10A2ui
+    Graphics.GL.Raw.Extension.ARB.TextureStencil8
+    Graphics.GL.Raw.Extension.ARB.TextureStorage
+    Graphics.GL.Raw.Extension.ARB.TextureStorageMultisample
+    Graphics.GL.Raw.Extension.ARB.TextureSwizzle
+    Graphics.GL.Raw.Extension.ARB.TextureView
+    Graphics.GL.Raw.Extension.ARB.TimerQuery
+    Graphics.GL.Raw.Extension.ARB.TransformFeedback2
+    Graphics.GL.Raw.Extension.ARB.TransformFeedback3
+    Graphics.GL.Raw.Extension.ARB.TransformFeedbackInstanced
+    Graphics.GL.Raw.Extension.ARB.TransformFeedbackOverflowQuery
+    Graphics.GL.Raw.Extension.ARB.TransposeMatrix
+    Graphics.GL.Raw.Extension.ARB.UniformBufferObject
+    Graphics.GL.Raw.Extension.ARB.VertexArrayBgra
+    Graphics.GL.Raw.Extension.ARB.VertexArrayObject
+    Graphics.GL.Raw.Extension.ARB.VertexAttrib64bit
+    Graphics.GL.Raw.Extension.ARB.VertexAttribBinding
+    Graphics.GL.Raw.Extension.ARB.VertexBlend
+    Graphics.GL.Raw.Extension.ARB.VertexBufferObject
+    Graphics.GL.Raw.Extension.ARB.VertexProgram
+    Graphics.GL.Raw.Extension.ARB.VertexShader
+    Graphics.GL.Raw.Extension.ARB.VertexType10f11f11fRev
+    Graphics.GL.Raw.Extension.ARB.VertexType2101010Rev
+    Graphics.GL.Raw.Extension.ARB.ViewportArray
+    Graphics.GL.Raw.Extension.ARB.WindowPos
+    Graphics.GL.Raw.Extension.ARM
+    Graphics.GL.Raw.Extension.ARM.MaliProgramBinary
+    Graphics.GL.Raw.Extension.ARM.MaliShaderBinary
+    Graphics.GL.Raw.Extension.ARM.Rgba8
+    Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetch
+    Graphics.GL.Raw.Extension.ARM.ShaderFramebufferFetchDepthStencil
+    Graphics.GL.Raw.Extension.ATI
+    Graphics.GL.Raw.Extension.ATI.DrawBuffers
+    Graphics.GL.Raw.Extension.ATI.ElementArray
+    Graphics.GL.Raw.Extension.ATI.EnvmapBumpmap
+    Graphics.GL.Raw.Extension.ATI.FragmentShader
+    Graphics.GL.Raw.Extension.ATI.MapObjectBuffer
+    Graphics.GL.Raw.Extension.ATI.Meminfo
+    Graphics.GL.Raw.Extension.ATI.PixelFormatFloat
+    Graphics.GL.Raw.Extension.ATI.PnTriangles
+    Graphics.GL.Raw.Extension.ATI.SeparateStencil
+    Graphics.GL.Raw.Extension.ATI.TextFragmentShader
+    Graphics.GL.Raw.Extension.ATI.TextureEnvCombine3
+    Graphics.GL.Raw.Extension.ATI.TextureFloat
+    Graphics.GL.Raw.Extension.ATI.TextureMirrorOnce
+    Graphics.GL.Raw.Extension.ATI.VertexArrayObject
+    Graphics.GL.Raw.Extension.ATI.VertexAttribArrayObject
+    Graphics.GL.Raw.Extension.ATI.VertexStreams
+    Graphics.GL.Raw.Extension.DMP
+    Graphics.GL.Raw.Extension.DMP.ProgramBinary
+    Graphics.GL.Raw.Extension.DMP.ShaderBinary
+    Graphics.GL.Raw.Extension.EXT
+    Graphics.GL.Raw.Extension.EXT.FourTwoTwoPixels
+    Graphics.GL.Raw.Extension.EXT.Abgr
+    Graphics.GL.Raw.Extension.EXT.Bgra
+    Graphics.GL.Raw.Extension.EXT.BindableUniform
+    Graphics.GL.Raw.Extension.EXT.BlendColor
+    Graphics.GL.Raw.Extension.EXT.BlendEquationSeparate
+    Graphics.GL.Raw.Extension.EXT.BlendFuncSeparate
+    Graphics.GL.Raw.Extension.EXT.BlendLogicOp
+    Graphics.GL.Raw.Extension.EXT.BlendMinmax
+    Graphics.GL.Raw.Extension.EXT.BlendSubtract
+    Graphics.GL.Raw.Extension.EXT.ClipVolumeHint
+    Graphics.GL.Raw.Extension.EXT.Cmyka
+    Graphics.GL.Raw.Extension.EXT.ColorBufferHalfFloat
+    Graphics.GL.Raw.Extension.EXT.ColorSubtable
+    Graphics.GL.Raw.Extension.EXT.CompiledVertexArray
+    Graphics.GL.Raw.Extension.EXT.Convolution
+    Graphics.GL.Raw.Extension.EXT.CoordinateFrame
+    Graphics.GL.Raw.Extension.EXT.CopyImage
+    Graphics.GL.Raw.Extension.EXT.CopyTexture
+    Graphics.GL.Raw.Extension.EXT.CullVertex
+    Graphics.GL.Raw.Extension.EXT.DebugLabel
+    Graphics.GL.Raw.Extension.EXT.DebugMarker
+    Graphics.GL.Raw.Extension.EXT.DepthBoundsTest
+    Graphics.GL.Raw.Extension.EXT.DirectStateAccess
+    Graphics.GL.Raw.Extension.EXT.DiscardFramebuffer
+    Graphics.GL.Raw.Extension.EXT.DisjointTimerQuery
+    Graphics.GL.Raw.Extension.EXT.DrawBuffers
+    Graphics.GL.Raw.Extension.EXT.DrawBuffers2
+    Graphics.GL.Raw.Extension.EXT.DrawBuffersIndexed
+    Graphics.GL.Raw.Extension.EXT.DrawInstanced
+    Graphics.GL.Raw.Extension.EXT.DrawRangeElements
+    Graphics.GL.Raw.Extension.EXT.FogCoord
+    Graphics.GL.Raw.Extension.EXT.FramebufferBlit
+    Graphics.GL.Raw.Extension.EXT.FramebufferMultisample
+    Graphics.GL.Raw.Extension.EXT.FramebufferMultisampleBlitScaled
+    Graphics.GL.Raw.Extension.EXT.FramebufferObject
+    Graphics.GL.Raw.Extension.EXT.FramebufferSRGB
+    Graphics.GL.Raw.Extension.EXT.GeometryPointSize
+    Graphics.GL.Raw.Extension.EXT.GeometryShader
+    Graphics.GL.Raw.Extension.EXT.GeometryShader4
+    Graphics.GL.Raw.Extension.EXT.GpuProgramParameters
+    Graphics.GL.Raw.Extension.EXT.GpuShader4
+    Graphics.GL.Raw.Extension.EXT.GpuShader5
+    Graphics.GL.Raw.Extension.EXT.Histogram
+    Graphics.GL.Raw.Extension.EXT.IndexArrayFormats
+    Graphics.GL.Raw.Extension.EXT.IndexFunc
+    Graphics.GL.Raw.Extension.EXT.IndexMaterial
+    Graphics.GL.Raw.Extension.EXT.IndexTexture
+    Graphics.GL.Raw.Extension.EXT.InstancedArrays
+    Graphics.GL.Raw.Extension.EXT.LightTexture
+    Graphics.GL.Raw.Extension.EXT.MapBufferRange
+    Graphics.GL.Raw.Extension.EXT.MiscAttribute
+    Graphics.GL.Raw.Extension.EXT.MultiDrawArrays
+    Graphics.GL.Raw.Extension.EXT.Multisample
+    Graphics.GL.Raw.Extension.EXT.MultisampledRenderToTexture
+    Graphics.GL.Raw.Extension.EXT.MultiviewDrawBuffers
+    Graphics.GL.Raw.Extension.EXT.OcclusionQueryBoolean
+    Graphics.GL.Raw.Extension.EXT.PackedDepthStencil
+    Graphics.GL.Raw.Extension.EXT.PackedFloat
+    Graphics.GL.Raw.Extension.EXT.PackedPixels
+    Graphics.GL.Raw.Extension.EXT.PalettedTexture
+    Graphics.GL.Raw.Extension.EXT.PixelBufferObject
+    Graphics.GL.Raw.Extension.EXT.PixelTransform
+    Graphics.GL.Raw.Extension.EXT.PixelTransformColorTable
+    Graphics.GL.Raw.Extension.EXT.PointParameters
+    Graphics.GL.Raw.Extension.EXT.PolygonOffset
+    Graphics.GL.Raw.Extension.EXT.PolygonOffsetClamp
+    Graphics.GL.Raw.Extension.EXT.PostDepthCoverage
+    Graphics.GL.Raw.Extension.EXT.PrimitiveBoundingBox
+    Graphics.GL.Raw.Extension.EXT.ProvokingVertex
+    Graphics.GL.Raw.Extension.EXT.PvrtcSRGB
+    Graphics.GL.Raw.Extension.EXT.RasterMultisample
+    Graphics.GL.Raw.Extension.EXT.ReadFormatBgra
+    Graphics.GL.Raw.Extension.EXT.RescaleNormal
+    Graphics.GL.Raw.Extension.EXT.Robustness
+    Graphics.GL.Raw.Extension.EXT.SRGB
+    Graphics.GL.Raw.Extension.EXT.SRGBWriteControl
+    Graphics.GL.Raw.Extension.EXT.SecondaryColor
+    Graphics.GL.Raw.Extension.EXT.SeparateShaderObjects
+    Graphics.GL.Raw.Extension.EXT.SeparateSpecularColor
+    Graphics.GL.Raw.Extension.EXT.ShaderFramebufferFetch
+    Graphics.GL.Raw.Extension.EXT.ShaderImageLoadFormatted
+    Graphics.GL.Raw.Extension.EXT.ShaderImageLoadStore
+    Graphics.GL.Raw.Extension.EXT.ShaderImplicitConversions
+    Graphics.GL.Raw.Extension.EXT.ShaderIntegerMix
+    Graphics.GL.Raw.Extension.EXT.ShaderIoBlocks
+    Graphics.GL.Raw.Extension.EXT.ShaderPixelLocalStorage
+    Graphics.GL.Raw.Extension.EXT.ShaderTextureLod
+    Graphics.GL.Raw.Extension.EXT.ShadowFuncs
+    Graphics.GL.Raw.Extension.EXT.ShadowSamplers
+    Graphics.GL.Raw.Extension.EXT.SharedTexturePalette
+    Graphics.GL.Raw.Extension.EXT.SparseTexture2
+    Graphics.GL.Raw.Extension.EXT.StencilClearTag
+    Graphics.GL.Raw.Extension.EXT.StencilTwoSide
+    Graphics.GL.Raw.Extension.EXT.StencilWrap
+    Graphics.GL.Raw.Extension.EXT.Subtexture
+    Graphics.GL.Raw.Extension.EXT.TessellationPointSize
+    Graphics.GL.Raw.Extension.EXT.TessellationShader
+    Graphics.GL.Raw.Extension.EXT.Texture
+    Graphics.GL.Raw.Extension.EXT.Texture3D
+    Graphics.GL.Raw.Extension.EXT.TextureArray
+    Graphics.GL.Raw.Extension.EXT.TextureBorderClamp
+    Graphics.GL.Raw.Extension.EXT.TextureBuffer
+    Graphics.GL.Raw.Extension.EXT.TextureBufferObject
+    Graphics.GL.Raw.Extension.EXT.TextureCompressionDxt1
+    Graphics.GL.Raw.Extension.EXT.TextureCompressionLatc
+    Graphics.GL.Raw.Extension.EXT.TextureCompressionRgtc
+    Graphics.GL.Raw.Extension.EXT.TextureCompressionS3tc
+    Graphics.GL.Raw.Extension.EXT.TextureCubeMap
+    Graphics.GL.Raw.Extension.EXT.TextureCubeMapArray
+    Graphics.GL.Raw.Extension.EXT.TextureEnvAdd
+    Graphics.GL.Raw.Extension.EXT.TextureEnvCombine
+    Graphics.GL.Raw.Extension.EXT.TextureEnvDot3
+    Graphics.GL.Raw.Extension.EXT.TextureFilterAnisotropic
+    Graphics.GL.Raw.Extension.EXT.TextureFilterMinmax
+    Graphics.GL.Raw.Extension.EXT.TextureFormatBGRA8888
+    Graphics.GL.Raw.Extension.EXT.TextureInteger
+    Graphics.GL.Raw.Extension.EXT.TextureLodBias
+    Graphics.GL.Raw.Extension.EXT.TextureMirrorClamp
+    Graphics.GL.Raw.Extension.EXT.TextureObject
+    Graphics.GL.Raw.Extension.EXT.TexturePerturbNormal
+    Graphics.GL.Raw.Extension.EXT.TextureRg
+    Graphics.GL.Raw.Extension.EXT.TextureSRGB
+    Graphics.GL.Raw.Extension.EXT.TextureSRGBDecode
+    Graphics.GL.Raw.Extension.EXT.TextureSharedExponent
+    Graphics.GL.Raw.Extension.EXT.TextureSnorm
+    Graphics.GL.Raw.Extension.EXT.TextureStorage
+    Graphics.GL.Raw.Extension.EXT.TextureSwizzle
+    Graphics.GL.Raw.Extension.EXT.TextureType2101010REV
+    Graphics.GL.Raw.Extension.EXT.TextureView
+    Graphics.GL.Raw.Extension.EXT.TimerQuery
+    Graphics.GL.Raw.Extension.EXT.TransformFeedback
+    Graphics.GL.Raw.Extension.EXT.UnpackSubimage
+    Graphics.GL.Raw.Extension.EXT.VertexArray
+    Graphics.GL.Raw.Extension.EXT.VertexArrayBgra
+    Graphics.GL.Raw.Extension.EXT.VertexAttrib64bit
+    Graphics.GL.Raw.Extension.EXT.VertexShader
+    Graphics.GL.Raw.Extension.EXT.VertexWeighting
+    Graphics.GL.Raw.Extension.EXT.X11SyncObject
+    Graphics.GL.Raw.Extension.FJ
+    Graphics.GL.Raw.Extension.FJ.ShaderBinaryGCCSO
+    Graphics.GL.Raw.Extension.GREMEDY
+    Graphics.GL.Raw.Extension.GREMEDY.FrameTerminator
+    Graphics.GL.Raw.Extension.GREMEDY.StringMarker
+    Graphics.GL.Raw.Extension.HP
+    Graphics.GL.Raw.Extension.HP.ConvolutionBorderModes
+    Graphics.GL.Raw.Extension.HP.ImageTransform
+    Graphics.GL.Raw.Extension.HP.OcclusionTest
+    Graphics.GL.Raw.Extension.HP.TextureLighting
+    Graphics.GL.Raw.Extension.IBM
+    Graphics.GL.Raw.Extension.IBM.CullVertex
+    Graphics.GL.Raw.Extension.IBM.MultimodeDrawArrays
+    Graphics.GL.Raw.Extension.IBM.RasterposClip
+    Graphics.GL.Raw.Extension.IBM.StaticData
+    Graphics.GL.Raw.Extension.IBM.TextureMirroredRepeat
+    Graphics.GL.Raw.Extension.IBM.VertexArrayLists
+    Graphics.GL.Raw.Extension.IMG
+    Graphics.GL.Raw.Extension.IMG.MultisampledRenderToTexture
+    Graphics.GL.Raw.Extension.IMG.ProgramBinary
+    Graphics.GL.Raw.Extension.IMG.ReadFormat
+    Graphics.GL.Raw.Extension.IMG.ShaderBinary
+    Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc
+    Graphics.GL.Raw.Extension.IMG.TextureCompressionPvrtc2
+    Graphics.GL.Raw.Extension.IMG.TextureEnvEnhancedFixedFunction
+    Graphics.GL.Raw.Extension.IMG.UserClipPlane
+    Graphics.GL.Raw.Extension.INGR
+    Graphics.GL.Raw.Extension.INGR.BlendFuncSeparate
+    Graphics.GL.Raw.Extension.INGR.ColorClamp
+    Graphics.GL.Raw.Extension.INGR.InterlaceRead
+    Graphics.GL.Raw.Extension.INTEL
+    Graphics.GL.Raw.Extension.INTEL.FragmentShaderOrdering
+    Graphics.GL.Raw.Extension.INTEL.MapTexture
+    Graphics.GL.Raw.Extension.INTEL.ParallelArrays
+    Graphics.GL.Raw.Extension.INTEL.PerformanceQuery
+    Graphics.GL.Raw.Extension.KHR
+    Graphics.GL.Raw.Extension.KHR.BlendEquationAdvanced
+    Graphics.GL.Raw.Extension.KHR.BlendEquationAdvancedCoherent
+    Graphics.GL.Raw.Extension.KHR.ContextFlushControl
+    Graphics.GL.Raw.Extension.KHR.Debug
+    Graphics.GL.Raw.Extension.KHR.RobustBufferAccessBehavior
+    Graphics.GL.Raw.Extension.KHR.Robustness
+    Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcHdr
+    Graphics.GL.Raw.Extension.KHR.TextureCompressionAstcLdr
+    Graphics.GL.Raw.Extension.MESAX
+    Graphics.GL.Raw.Extension.MESAX.TextureStack
+    Graphics.GL.Raw.Extension.MESA
+    Graphics.GL.Raw.Extension.MESA.PackInvert
+    Graphics.GL.Raw.Extension.MESA.ResizeBuffers
+    Graphics.GL.Raw.Extension.MESA.WindowPos
+    Graphics.GL.Raw.Extension.MESA.YcbcrTexture
+    Graphics.GL.Raw.Extension.NVX
+    Graphics.GL.Raw.Extension.NVX.ConditionalRender
+    Graphics.GL.Raw.Extension.NVX.GpuMemoryInfo
+    Graphics.GL.Raw.Extension.NV
+    Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirect
+    Graphics.GL.Raw.Extension.NV.BindlessMultiDrawIndirectCount
+    Graphics.GL.Raw.Extension.NV.BindlessTexture
+    Graphics.GL.Raw.Extension.NV.BlendEquationAdvanced
+    Graphics.GL.Raw.Extension.NV.BlendEquationAdvancedCoherent
+    Graphics.GL.Raw.Extension.NV.BlendSquare
+    Graphics.GL.Raw.Extension.NV.ComputeProgram5
+    Graphics.GL.Raw.Extension.NV.ConditionalRender
+    Graphics.GL.Raw.Extension.NV.ConservativeRaster
+    Graphics.GL.Raw.Extension.NV.CopyBuffer
+    Graphics.GL.Raw.Extension.NV.CopyDepthToColor
+    Graphics.GL.Raw.Extension.NV.CopyImage
+    Graphics.GL.Raw.Extension.NV.CoverageSample
+    Graphics.GL.Raw.Extension.NV.DeepTexture3D
+    Graphics.GL.Raw.Extension.NV.DepthBufferFloat
+    Graphics.GL.Raw.Extension.NV.DepthClamp
+    Graphics.GL.Raw.Extension.NV.DepthNonlinear
+    Graphics.GL.Raw.Extension.NV.DrawBuffers
+    Graphics.GL.Raw.Extension.NV.DrawInstanced
+    Graphics.GL.Raw.Extension.NV.DrawTexture
+    Graphics.GL.Raw.Extension.NV.Evaluators
+    Graphics.GL.Raw.Extension.NV.ExplicitAttribLocation
+    Graphics.GL.Raw.Extension.NV.ExplicitMultisample
+    Graphics.GL.Raw.Extension.NV.FboColorAttachments
+    Graphics.GL.Raw.Extension.NV.Fence
+    Graphics.GL.Raw.Extension.NV.FillRectangle
+    Graphics.GL.Raw.Extension.NV.FloatBuffer
+    Graphics.GL.Raw.Extension.NV.FogDistance
+    Graphics.GL.Raw.Extension.NV.FragmentCoverageToColor
+    Graphics.GL.Raw.Extension.NV.FragmentProgram
+    Graphics.GL.Raw.Extension.NV.FragmentProgram2
+    Graphics.GL.Raw.Extension.NV.FragmentProgram4
+    Graphics.GL.Raw.Extension.NV.FragmentProgramOption
+    Graphics.GL.Raw.Extension.NV.FragmentShaderInterlock
+    Graphics.GL.Raw.Extension.NV.FramebufferBlit
+    Graphics.GL.Raw.Extension.NV.FramebufferMixedSamples
+    Graphics.GL.Raw.Extension.NV.FramebufferMultisample
+    Graphics.GL.Raw.Extension.NV.FramebufferMultisampleCoverage
+    Graphics.GL.Raw.Extension.NV.GenerateMipmapSRGB
+    Graphics.GL.Raw.Extension.NV.GeometryProgram4
+    Graphics.GL.Raw.Extension.NV.GeometryShader4
+    Graphics.GL.Raw.Extension.NV.GeometryShaderPassthrough
+    Graphics.GL.Raw.Extension.NV.GpuProgram4
+    Graphics.GL.Raw.Extension.NV.GpuProgram5
+    Graphics.GL.Raw.Extension.NV.GpuProgram5MemExtended
+    Graphics.GL.Raw.Extension.NV.GpuShader5
+    Graphics.GL.Raw.Extension.NV.HalfFloat
+    Graphics.GL.Raw.Extension.NV.InstancedArrays
+    Graphics.GL.Raw.Extension.NV.InternalformatSampleQuery
+    Graphics.GL.Raw.Extension.NV.LightMaxExponent
+    Graphics.GL.Raw.Extension.NV.MultisampleCoverage
+    Graphics.GL.Raw.Extension.NV.MultisampleFilterHint
+    Graphics.GL.Raw.Extension.NV.NonSquareMatrices
+    Graphics.GL.Raw.Extension.NV.OcclusionQuery
+    Graphics.GL.Raw.Extension.NV.PackedDepthStencil
+    Graphics.GL.Raw.Extension.NV.ParameterBufferObject
+    Graphics.GL.Raw.Extension.NV.ParameterBufferObject2
+    Graphics.GL.Raw.Extension.NV.PathRendering
+    Graphics.GL.Raw.Extension.NV.PixelDataRange
+    Graphics.GL.Raw.Extension.NV.PointSprite
+    Graphics.GL.Raw.Extension.NV.PresentVideo
+    Graphics.GL.Raw.Extension.NV.PrimitiveRestart
+    Graphics.GL.Raw.Extension.NV.ReadBuffer
+    Graphics.GL.Raw.Extension.NV.ReadBufferFront
+    Graphics.GL.Raw.Extension.NV.ReadDepth
+    Graphics.GL.Raw.Extension.NV.ReadDepthStencil
+    Graphics.GL.Raw.Extension.NV.ReadStencil
+    Graphics.GL.Raw.Extension.NV.RegisterCombiners
+    Graphics.GL.Raw.Extension.NV.PathRenderingSharedEdge
+    Graphics.GL.Raw.Extension.NV.RegisterCombiners2
+    Graphics.GL.Raw.Extension.NV.SRGBFormats
+    Graphics.GL.Raw.Extension.NV.SampleLocations
+    Graphics.GL.Raw.Extension.NV.SampleMaskOverrideCoverage
+    Graphics.GL.Raw.Extension.NV.ShaderAtomicCounters
+    Graphics.GL.Raw.Extension.NV.ShaderAtomicFloat
+    Graphics.GL.Raw.Extension.NV.ShaderAtomicFp16Vector
+    Graphics.GL.Raw.Extension.NV.ShaderAtomicInt64
+    Graphics.GL.Raw.Extension.NV.ShaderBufferLoad
+    Graphics.GL.Raw.Extension.NV.ShaderBufferStore
+    Graphics.GL.Raw.Extension.NV.ShaderStorageBufferObject
+    Graphics.GL.Raw.Extension.NV.ShaderThreadGroup
+    Graphics.GL.Raw.Extension.NV.ShaderThreadShuffle
+    Graphics.GL.Raw.Extension.NV.ShadowSamplersArray
+    Graphics.GL.Raw.Extension.NV.ShadowSamplersCube
+    Graphics.GL.Raw.Extension.NV.TessellationProgram5
+    Graphics.GL.Raw.Extension.NV.TexgenEmboss
+    Graphics.GL.Raw.Extension.NV.TexgenReflection
+    Graphics.GL.Raw.Extension.NV.TextureBarrier
+    Graphics.GL.Raw.Extension.NV.TextureBorderClamp
+    Graphics.GL.Raw.Extension.NV.TextureCompressionS3tcUpdate
+    Graphics.GL.Raw.Extension.NV.TextureCompressionVtc
+    Graphics.GL.Raw.Extension.NV.TextureEnvCombine4
+    Graphics.GL.Raw.Extension.NV.TextureExpandNormal
+    Graphics.GL.Raw.Extension.NV.TextureMultisample
+    Graphics.GL.Raw.Extension.NV.TextureNpot2DMipmap
+    Graphics.GL.Raw.Extension.NV.TextureRectangle
+    Graphics.GL.Raw.Extension.NV.TextureShader
+    Graphics.GL.Raw.Extension.NV.TextureShader2
+    Graphics.GL.Raw.Extension.NV.TextureShader3
+    Graphics.GL.Raw.Extension.NV.TransformFeedback
+    Graphics.GL.Raw.Extension.NV.TransformFeedback2
+    Graphics.GL.Raw.Extension.NV.UniformBufferUnifiedMemory
+    Graphics.GL.Raw.Extension.NV.VdpauInterop
+    Graphics.GL.Raw.Extension.NV.VertexArrayRange
+    Graphics.GL.Raw.Extension.NV.VertexArrayRange2
+    Graphics.GL.Raw.Extension.NV.VertexAttribInteger64bit
+    Graphics.GL.Raw.Extension.NV.VertexBufferUnifiedMemory
+    Graphics.GL.Raw.Extension.NV.VertexProgram
+    Graphics.GL.Raw.Extension.NV.VertexProgram11
+    Graphics.GL.Raw.Extension.NV.VertexProgram2
+    Graphics.GL.Raw.Extension.NV.VertexProgram2Option
+    Graphics.GL.Raw.Extension.NV.VertexProgram3
+    Graphics.GL.Raw.Extension.NV.VertexProgram4
+    Graphics.GL.Raw.Extension.NV.VideoCapture
+    Graphics.GL.Raw.Extension.OES
+    Graphics.GL.Raw.Extension.OES.EGLImage
+    Graphics.GL.Raw.Extension.OES.EGLImageExternal
+    Graphics.GL.Raw.Extension.OES.BlendEquationSeparate
+    Graphics.GL.Raw.Extension.OES.BlendFuncSeparate
+    Graphics.GL.Raw.Extension.OES.BlendSubtract
+    Graphics.GL.Raw.Extension.OES.ByteCoordinates
+    Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8SubTexture
+    Graphics.GL.Raw.Extension.OES.CompressedETC1RGB8Texture
+    Graphics.GL.Raw.Extension.OES.CompressedPalettedTexture
+    Graphics.GL.Raw.Extension.OES.Depth24
+    Graphics.GL.Raw.Extension.OES.Depth32
+    Graphics.GL.Raw.Extension.OES.DepthTexture
+    Graphics.GL.Raw.Extension.OES.DrawTexture
+    Graphics.GL.Raw.Extension.OES.ElementIndexUint
+    Graphics.GL.Raw.Extension.OES.ExtendedMatrixPalette
+    Graphics.GL.Raw.Extension.OES.FboRenderMipmap
+    Graphics.GL.Raw.Extension.OES.FixedPoint
+    Graphics.GL.Raw.Extension.OES.FragmentPrecisionHigh
+    Graphics.GL.Raw.Extension.OES.FramebufferObject
+    Graphics.GL.Raw.Extension.OES.GetProgramBinary
+    Graphics.GL.Raw.Extension.OES.Mapbuffer
+    Graphics.GL.Raw.Extension.OES.MatrixGet
+    Graphics.GL.Raw.Extension.OES.MatrixPalette
+    Graphics.GL.Raw.Extension.OES.PackedDepthStencil
+    Graphics.GL.Raw.Extension.OES.PointSizeArray
+    Graphics.GL.Raw.Extension.OES.PointSprite
+    Graphics.GL.Raw.Extension.OES.QueryMatrix
+    Graphics.GL.Raw.Extension.OES.ReadFormat
+    Graphics.GL.Raw.Extension.OES.RequiredInternalformat
+    Graphics.GL.Raw.Extension.OES.Rgb8Rgba8
+    Graphics.GL.Raw.Extension.OES.SampleShading
+    Graphics.GL.Raw.Extension.OES.SampleVariables
+    Graphics.GL.Raw.Extension.OES.ShaderImageAtomic
+    Graphics.GL.Raw.Extension.OES.ShaderMultisampleInterpolation
+    Graphics.GL.Raw.Extension.OES.SinglePrecision
+    Graphics.GL.Raw.Extension.OES.StandardDerivatives
+    Graphics.GL.Raw.Extension.OES.Stencil1
+    Graphics.GL.Raw.Extension.OES.Stencil4
+    Graphics.GL.Raw.Extension.OES.Stencil8
+    Graphics.GL.Raw.Extension.OES.StencilWrap
+    Graphics.GL.Raw.Extension.OES.SurfacelessContext
+    Graphics.GL.Raw.Extension.OES.Texture3D
+    Graphics.GL.Raw.Extension.OES.TextureCompressionAstc
+    Graphics.GL.Raw.Extension.OES.TextureCubeMap
+    Graphics.GL.Raw.Extension.OES.TextureEnvCrossbar
+    Graphics.GL.Raw.Extension.OES.TextureFloat
+    Graphics.GL.Raw.Extension.OES.TextureFloatLinear
+    Graphics.GL.Raw.Extension.OES.TextureHalfFloat
+    Graphics.GL.Raw.Extension.OES.TextureHalfFloatLinear
+    Graphics.GL.Raw.Extension.OES.TextureMirroredRepeat
+    Graphics.GL.Raw.Extension.OES.TextureNpot
+    Graphics.GL.Raw.Extension.OES.TextureStencil8
+    Graphics.GL.Raw.Extension.OES.TextureStorageMultisample2dArray
+    Graphics.GL.Raw.Extension.OES.VertexArrayObject
+    Graphics.GL.Raw.Extension.OES.VertexHalfFloat
+    Graphics.GL.Raw.Extension.OES.VertexType1010102
+    Graphics.GL.Raw.Extension.OML
+    Graphics.GL.Raw.Extension.OML.Interlace
+    Graphics.GL.Raw.Extension.OML.Resample
+    Graphics.GL.Raw.Extension.OML.Subsample
+    Graphics.GL.Raw.Extension.PGI
+    Graphics.GL.Raw.Extension.PGI.MiscHints
+    Graphics.GL.Raw.Extension.PGI.VertexHints
+    Graphics.GL.Raw.Extension.QCOM
+    Graphics.GL.Raw.Extension.QCOM.AlphaTest
+    Graphics.GL.Raw.Extension.QCOM.BinningControl
+    Graphics.GL.Raw.Extension.QCOM.DriverControl
+    Graphics.GL.Raw.Extension.QCOM.ExtendedGet
+    Graphics.GL.Raw.Extension.QCOM.ExtendedGet2
+    Graphics.GL.Raw.Extension.QCOM.PerfmonGlobalMode
+    Graphics.GL.Raw.Extension.QCOM.TiledRendering
+    Graphics.GL.Raw.Extension.QCOM.WriteonlyRendering
+    Graphics.GL.Raw.Extension.REND
+    Graphics.GL.Raw.Extension.REND.ScreenCoordinates
+    Graphics.GL.Raw.Extension.S3
+    Graphics.GL.Raw.Extension.S3.S3tc
+    Graphics.GL.Raw.Extension.SGIS
+    Graphics.GL.Raw.Extension.SGIS.DetailTexture
+    Graphics.GL.Raw.Extension.SGIS.FogFunction
+    Graphics.GL.Raw.Extension.SGIS.GenerateMipmap
+    Graphics.GL.Raw.Extension.SGIS.Multisample
+    Graphics.GL.Raw.Extension.SGIS.PixelTexture
+    Graphics.GL.Raw.Extension.SGIS.PointLineTexgen
+    Graphics.GL.Raw.Extension.SGIS.PointParameters
+    Graphics.GL.Raw.Extension.SGIS.SharpenTexture
+    Graphics.GL.Raw.Extension.SGIS.Texture4D
+    Graphics.GL.Raw.Extension.SGIS.TextureBorderClamp
+    Graphics.GL.Raw.Extension.SGIS.TextureColorMask
+    Graphics.GL.Raw.Extension.SGIS.TextureEdgeClamp
+    Graphics.GL.Raw.Extension.SGIS.TextureFilter4
+    Graphics.GL.Raw.Extension.SGIS.TextureLod
+    Graphics.GL.Raw.Extension.SGIS.TextureSelect
+    Graphics.GL.Raw.Extension.SGIX
+    Graphics.GL.Raw.Extension.SGIX.Async
+    Graphics.GL.Raw.Extension.SGIX.AsyncHistogram
+    Graphics.GL.Raw.Extension.SGIX.AsyncPixel
+    Graphics.GL.Raw.Extension.SGIX.BlendAlphaMinmax
+    Graphics.GL.Raw.Extension.SGIX.CalligraphicFragment
+    Graphics.GL.Raw.Extension.SGIX.Clipmap
+    Graphics.GL.Raw.Extension.SGIX.ConvolutionAccuracy
+    Graphics.GL.Raw.Extension.SGIX.DepthPassInstrument
+    Graphics.GL.Raw.Extension.SGIX.DepthTexture
+    Graphics.GL.Raw.Extension.SGIX.FlushRaster
+    Graphics.GL.Raw.Extension.SGIX.FogOffset
+    Graphics.GL.Raw.Extension.SGIX.FragmentLighting
+    Graphics.GL.Raw.Extension.SGIX.Framezoom
+    Graphics.GL.Raw.Extension.SGIX.IglooInterface
+    Graphics.GL.Raw.Extension.SGIX.Instruments
+    Graphics.GL.Raw.Extension.SGIX.Interlace
+    Graphics.GL.Raw.Extension.SGIX.IrInstrument1
+    Graphics.GL.Raw.Extension.SGIX.ListPriority
+    Graphics.GL.Raw.Extension.SGIX.PixelTexture
+    Graphics.GL.Raw.Extension.SGIX.PixelTiles
+    Graphics.GL.Raw.Extension.SGIX.PolynomialFfd
+    Graphics.GL.Raw.Extension.SGIX.ReferencePlane
+    Graphics.GL.Raw.Extension.SGIX.Resample
+    Graphics.GL.Raw.Extension.SGIX.ScalebiasHint
+    Graphics.GL.Raw.Extension.SGIX.Shadow
+    Graphics.GL.Raw.Extension.SGIX.ShadowAmbient
+    Graphics.GL.Raw.Extension.SGIX.Sprite
+    Graphics.GL.Raw.Extension.SGIX.Subsample
+    Graphics.GL.Raw.Extension.SGIX.TagSampleBuffer
+    Graphics.GL.Raw.Extension.SGIX.TextureAddEnv
+    Graphics.GL.Raw.Extension.SGIX.TextureCoordinateClamp
+    Graphics.GL.Raw.Extension.SGIX.TextureLodBias
+    Graphics.GL.Raw.Extension.SGIX.TextureMultiBuffer
+    Graphics.GL.Raw.Extension.SGIX.TextureScaleBias
+    Graphics.GL.Raw.Extension.SGIX.VertexPreclip
+    Graphics.GL.Raw.Extension.SGIX.Ycrcb
+    Graphics.GL.Raw.Extension.SGIX.YcrcbSubsample
+    Graphics.GL.Raw.Extension.SGIX.Ycrcba
+    Graphics.GL.Raw.Extension.SGI
+    Graphics.GL.Raw.Extension.SGI.ColorMatrix
+    Graphics.GL.Raw.Extension.SGI.ColorTable
+    Graphics.GL.Raw.Extension.SGI.TextureColorTable
+    Graphics.GL.Raw.Extension.SUNX
+    Graphics.GL.Raw.Extension.SUNX.ConstantData
+    Graphics.GL.Raw.Extension.SUN
+    Graphics.GL.Raw.Extension.SUN.ConvolutionBorderModes
+    Graphics.GL.Raw.Extension.SUN.GlobalAlpha
+    Graphics.GL.Raw.Extension.SUN.MeshArray
+    Graphics.GL.Raw.Extension.SUN.SliceAccum
+    Graphics.GL.Raw.Extension.SUN.TriangleList
+    Graphics.GL.Raw.Extension.SUN.Vertex
+    Graphics.GL.Raw.Extension.VIV
+    Graphics.GL.Raw.Extension.VIV.ShaderBinary
+    Graphics.GL.Raw.Extension.WIN
+    Graphics.GL.Raw.Extension.WIN.PhongShading
+    Graphics.GL.Raw.Extension.WIN.SpecularFog
+    Graphics.GL.Raw.Profile.Compatibility32
+    Graphics.GL.Raw.Profile.Compatibility33
+    Graphics.GL.Raw.Profile.Compatibility40
+    Graphics.GL.Raw.Profile.Compatibility41
+    Graphics.GL.Raw.Profile.Compatibility42
+    Graphics.GL.Raw.Profile.Compatibility43
+    Graphics.GL.Raw.Profile.Compatibility44
+    Graphics.GL.Raw.Profile.Compatibility45
+    Graphics.GL.Raw.Profile.Core32
+    Graphics.GL.Raw.Profile.Core33
+    Graphics.GL.Raw.Profile.Core40
+    Graphics.GL.Raw.Profile.Core41
+    Graphics.GL.Raw.Profile.Core42
+    Graphics.GL.Raw.Profile.Core43
+    Graphics.GL.Raw.Profile.Core44
+    Graphics.GL.Raw.Profile.Core45
+    Graphics.GL.Raw.Profile.EmbeddedCommon11
+    Graphics.GL.Raw.Profile.EmbeddedLite11
+    Graphics.GL.Raw.Profile.Embedded20
+    Graphics.GL.Raw.Profile.Embedded30
+    Graphics.GL.Raw.Profile.Embedded31
+    Graphics.GL.Raw.Profile.Standard10
+    Graphics.GL.Raw.Profile.Standard11
+    Graphics.GL.Raw.Profile.Standard12
+    Graphics.GL.Raw.Profile.Standard13
+    Graphics.GL.Raw.Profile.Standard14
+    Graphics.GL.Raw.Profile.Standard15
+    Graphics.GL.Raw.Profile.Standard20
+    Graphics.GL.Raw.Profile.Standard21
+    Graphics.GL.Raw.Profile.Standard30
+    Graphics.GL.Raw.Profile.Standard31
diff --git a/gl.xml b/gl.xml
new file mode 100644
# file too large to diff: gl.xml
diff --git a/src/Graphics/GL/Raw/Internal/Proc.hs b/src/Graphics/GL/Raw/Internal/Proc.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/GL/Raw/Internal/Proc.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Copyright   :  (c) Edward Kmett 2014, (c) Sven Panne 2013
+-- License     :  BSD3
+--
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- This module offers a portable way to retrieve OpenGL extension entries,
+-- providing a portability layer upon platform-specific mechanisms like
+-- @glXGetProcAddress@, @wglGetProcAddress@ or @NSAddressOfSymbol@.
+--
+-- This internal module offers convenience functions and re-exports for OpenGL
+-- extension loading.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.GL.Raw.Internal.Proc
+  ( getProcAddress
+  , getProcAddressWithSuffixes
+  , Invoker
+  , getExtensionEntry
+  , extensions
+  ) where
+
+import Control.Monad
+import Data.Functor
+import Data.Set as Set
+import Foreign.C.String
+import Foreign.Marshal.Alloc
+import Foreign.Marshal.Error
+import Foreign.Ptr
+import Foreign.Storable
+import Graphics.GL.Raw.Internal.FFI (ffienumuintIOPtrubyte, ffienumPtrintIOV)
+import System.IO.Unsafe
+
+--------------------------------------------------------------------------------
+
+-- | Retrieve an OpenGL extension entry by name. Returns 'nullFunPtr' when no
+-- extension entry with the given name was found.
+getProcAddress :: String -> IO (FunPtr a)
+getProcAddress extensionEntry =
+   withCString extensionEntry hs_gl_getProcAddress
+
+foreign import ccall unsafe "hs_gl_getProcAddress"
+   hs_gl_getProcAddress :: CString -> IO (FunPtr a)
+
+-- | Retrieve an OpenGL extension entry by name, trying a list of name suffixes
+-- in the given order. Returns 'nullFunPtr' when no extension entry with the
+-- given name plus any of the suffixes was found.
+getProcAddressWithSuffixes :: String -> [String] -> IO (FunPtr a)
+getProcAddressWithSuffixes extensionEntry = foldM gpa nullFunPtr
+   where gpa p s | p == nullFunPtr = getProcAddress (extensionEntry ++ s)
+                 | otherwise       = return p
+
+--------------------------------------------------------------------------------
+
+type Invoker a = FunPtr a -> a
+
+getExtensionEntry :: String -> String -> IO (FunPtr a)
+getExtensionEntry extensionNameString extensionEntry =
+   throwIfNullFunPtr ("unknown OpenGL extension entry " ++ extensionEntry ++
+                      ", check for " ++ extensionNameString) $
+      getProcAddressWithSuffixes extensionEntry extensionSuffixes
+
+throwIfNullFunPtr :: String -> IO (FunPtr a) -> IO (FunPtr a)
+throwIfNullFunPtr = throwIf (== nullFunPtr) . const
+
+-- non-ARB extension suffixes are in descending order of number of extensions
+extensionSuffixes :: [String]
+extensionSuffixes = [
+   "", "ARB", "EXT", "NV", "SGIX", "SGIS", "ATI", "APPLE", "SUN", "OES", "IBM",
+   "MESA", "HP", "SGI", "OML", "AMD", "3DFX", "WIN", "PGI", "INTEL", "INGR",
+   "GREMEDY", "SUNX", "S3", "REND", "MESAX" ]
+
+extensions :: Set String
+extensions = unsafePerformIO $ do
+  glGetStringi  <- ffienumuintIOPtrubyte <$> getProcAddress "glGetStringi"
+  glGetIntegerv <- ffienumPtrintIOV <$> getProcAddress "glGetIntegerv"
+  numExtensions <- alloca $ \p -> glGetIntegerv 0x821D p >> peek p
+  supported <- forM [0..(fromIntegral numExtensions)-1] $ \n -> peekCString . castPtr =<< glGetStringi 0x1F03 n
+  return $ Set.fromList supported
+{-# NOINLINE extensions #-}
diff --git a/src/Graphics/GL/Raw/Types.hs b/src/Graphics/GL/Raw/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/GL/Raw/Types.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE CPP #-}
+-----------------------------------------------------------------------------
+-- |
+-- Copyright   :  (C) 2014 Edward Kmett and Gabríel Arthúr Pétursson
+-- License     :  BSD-style (see the file LICENSE)
+-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
+-- Stability   :  experimental
+-- Portability :  portable
+--
+----------------------------------------------------------------------------
+module Graphics.GL.Raw.Types (
+  -- * Types
+  -- ** Function Types
+    GLDEBUGPROC
+  , GLDEBUGPROCAMD
+  , GLDEBUGPROCARB
+  , GLDEBUGPROCKHR
+
+  , mkGLDEBUGPROC
+  , mkGLDEBUGPROCAMD
+  , mkGLDEBUGPROCARB
+  , mkGLDEBUGPROCKHR
+
+  -- ** Common Types
+  , GLbitfield
+  , GLboolean
+  , GLbyte
+  , GLchar
+  , GLcharARB
+  , GLclampd
+  , GLclampf
+  , GLclampx
+  , GLdouble
+  , GLeglImageOES
+  , GLenum
+  , GLfixed
+  , GLfloat
+  , GLhalfNV
+  , GLhandleARB
+  , GLint
+  , GLint64
+  , GLint64EXT
+  , GLintptr
+  , GLintptrARB
+  , GLshort
+  , GLsizei
+  , GLsizeiptr
+  , GLsizeiptrARB
+  , GLsync
+  , GLubyte
+  , GLuint
+  , GLuint64
+  , GLuint64EXT
+  , GLushort
+  , GLvdpauSurfaceNV
+) where
+
+import Data.Int
+import Data.Word
+import Foreign.C.Types
+import Foreign.Ptr
+
+type GLDEBUGPROC =
+  FunPtr (GLenum
+       -> GLenum
+       -> GLuint
+       -> GLenum
+       -> GLsizei
+       -> Ptr GLchar
+       -> Ptr ()
+       -> IO ())
+
+type GLDEBUGPROCAMD =
+  FunPtr (GLuint
+       -> GLenum
+       -> GLenum
+       -> GLsizei
+       -> Ptr GLchar
+       -> Ptr ()
+       -> IO ())
+
+type GLDEBUGPROCARB =
+  FunPtr (GLenum
+       -> GLenum
+       -> GLuint
+       -> GLenum
+       -> GLsizei
+       -> Ptr GLchar
+       -> Ptr ()
+       -> IO ())
+
+type GLDEBUGPROCKHR =
+  FunPtr (GLenum
+       -> GLenum
+       -> GLuint
+       -> GLenum
+       -> GLsizei
+       -> Ptr GLchar
+       -> Ptr ()
+       -> IO ())
+
+foreign import ccall "wrapper"
+  mkGLDEBUGPROC :: (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> Ptr () -> IO ()) -> IO GLDEBUGPROC
+
+foreign import ccall "wrapper"
+  mkGLDEBUGPROCAMD :: (GLuint -> GLenum -> GLenum -> GLsizei -> Ptr GLchar -> Ptr () -> IO ()) -> IO GLDEBUGPROCAMD
+
+foreign import ccall "wrapper"
+  mkGLDEBUGPROCARB :: (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> Ptr () -> IO ()) -> IO GLDEBUGPROCARB
+
+foreign import ccall "wrapper"
+  mkGLDEBUGPROCKHR :: (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> Ptr () -> IO ()) -> IO GLDEBUGPROCKHR
+
+type GLbitfield = CUInt
+type GLboolean = CUChar
+type GLbyte = CSChar
+type GLchar = CChar
+type GLcharARB = CChar
+type GLclampd = CDouble
+type GLclampf = CFloat
+type GLclampx = CInt
+type GLdouble = CDouble
+type GLeglImageOES = Ptr ()
+type GLenum = CUInt
+type GLfixed = GLint
+type GLfloat = CFloat
+type GLhalfNV = CUShort
+type GLint = CInt
+type GLint64 = Int64
+type GLint64EXT = Int64
+type GLintptr = CPtrdiff
+type GLintptrARB = CPtrdiff
+type GLshort = CShort
+type GLsizei = CInt
+type GLsizeiptr = CPtrdiff
+type GLsizeiptrARB = CPtrdiff
+type GLsync = Ptr ()
+type GLubyte = CUChar
+type GLuint = CUInt
+type GLuint64 = Word64
+type GLuint64EXT = Word64
+type GLushort = CUShort
+type GLvdpauSurfaceNV = GLintptr
+
+#if __APPLE__
+type GLhandleARB = Ptr ()
+#else
+type GLhandleARB = CUInt
+#endif
