diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,57 @@
+0.8.0
+-----
+* Added support for cabal setup dependencies. This should ensure we build correctly in more environments going forward.
+* Added support for OpenGL ES 3.2
+* Added support for OpenGL SC 2.0
+* Added missing `_EXT` suffix to pattern synonyms for `EXT_buffer_storage`
+* Fixed incorrect export of the `ARB` variant of `glTexPageCommitment` in `EXT_sparse_texture`
+* Added missing pattern synonym `GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR` for `OVR_multiview`
+* Added suuport for fourty-four new extensions:
+  * `AMD_framebuffer_sample_positions`
+  * `AMD_gpu_shader_half_float`
+  * `AMD_shader_ballot`
+  * `AMD_shader_explicit_vertex_parameter`
+  * `ARB_ES3_2_compatibility`
+  * `ARB_fragment_shader_interlock`
+  * `ARB_gpu_shader_int64`
+  * `ARB_parallel_shader_compile`
+  * `ARB_post_depth_coverage`
+  * `ARB_sample_locations`
+  * `ARB_shader_atomic_counter_ops`
+  * `ARB_shader_ballot`
+  * `ARB_shader_clock`
+  * `ARB_shader_viewport_layer_array`
+  * `ARB_sparse_texture2`
+  * `ARB_sparse_texture_clamp`
+  * `ARB_texture_filter_minmax`
+  * `EXT_blend_func_extended`
+  * `EXT_clear_texture`
+  * `EXT_clip_cull_distance`
+  * `EXT_color_buffer_float`
+  * `EXT_conservative_depth`
+  * `EXT_draw_transform_feedback`
+  * `EXT_multisample_compatibility`
+  * `EXT_protected_textures`
+  * `EXT_shader_group_vote`
+  * `EXT_shader_non_constant_global_initializers`
+  * `EXT_shader_pixel_local_storage2`
+  * `EXT_window_rectangles`
+  * `IMG_bindless_texture`
+  * `IMG_framebuffer_downsample`
+  * `IMG_texture_filter_cubic`
+  * `INTEL_conservative_rasterization`
+  * `INTEL_framebufer_CMAA`
+  * `KHR_texture_compression_astc_sliced_3d`
+  * `NV_clip_space_w_scaling`
+  * `NV_conservative_raster_dilate`
+  * `NV_conservative_raster_pre_snap_triangles`
+  * `NV_robustness_video_memory_purge`
+  * `NV_shader_atomic_float64`
+  * `NV_stereo_view_rendering`
+  * `NV_viewport_swizzle`
+  * `OES_viewport_array`
+  * `OVR_multiview_multisampled_render_to_texture`
+
 0.7.8.1
 -------
 * Cleaned up the remaining unused import warnings
diff --git a/Generator.hs b/Generator.hs
--- a/Generator.hs
+++ b/Generator.hs
@@ -188,7 +188,10 @@
       ("GL_ES_VERSION_2_0", _) -> ("Embedded20", Nothing)
       ("GL_ES_VERSION_3_0", _) -> ("Embedded30", Nothing)
       ("GL_ES_VERSION_3_1", _) -> ("Embedded31", Nothing)
+      ("GL_ES_VERSION_3_2", _) -> ("Embedded32", Nothing)
 
+      ("GL_SC_VERSION_2_0", _) -> ("SafetyCritical20", Nothing)
+
       a -> error $ show a
 
 implicitPrelude :: String -> ([String], [Body])
@@ -254,6 +257,9 @@
   "Graphics.GL.Embedded31" -> mk [
       "Graphics.GL.Embedded30"
     ]
+  "Graphics.GL.Embedded32" -> mk [
+      "Graphics.GL.Embedded31"
+    ]
   "Graphics.GL.Standard11" -> mk [
       "Graphics.GL.Standard10"
     ]
@@ -404,6 +410,8 @@
       , "Embedded20"
       , "Embedded30"
       , "Embedded31"
+      , "Embedded32"
+      , "SafetyCritical20"
       , "Standard10"
       , "Standard11"
       , "Standard12"
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2016 Edward A. Kmett and Gabríel Arthúr Pétursson
+Copyright (c) 2014-2017 Edward A. Kmett and Gabríel Arthúr Pétursson
 Copyright (c) 2013 Sven Panne
 
 All rights reserved.
diff --git a/Registry.hs b/Registry.hs
--- a/Registry.hs
+++ b/Registry.hs
@@ -105,13 +105,21 @@
   { registryFeatures =
      cleanFeature "GL_VERSION_3_1" clean31require .
      cleanFeature "GL_VERSION_4_4" clean44require .
-     cleanFeature "GL_VERSION_4_5" clean45require <$> registryFeatures registry
+     cleanFeature "GL_VERSION_4_5" clean45require .
+     cleanFeature "GL_ES_VERSION_3_2" cleanES32require <$> registryFeatures registry
   , registryCommands = cleanCommand <$> registryCommands registry
+  , registryExtensions = cleanExtensions <$> registryExtensions registry
   }
 
 cleanCommand :: Command -> Command
 cleanCommand cmd = cmd { commandParameters = cleanParameter <$> commandParameters cmd }
 
+cleanExtensions :: Extension -> Extension
+cleanExtensions ext
+  | extensionName ext == "GL_EXT_multisampled_compatibility" =
+      ext { extensionName = "GL_EXT_multisample_compatibility" }
+  | otherwise = ext
+
 cleanParameter :: Parameter -> Parameter
 cleanParameter param
   | parameterName param == "baseAndCount" = param { parameterType = (parameterType param) { typePointer = 1 }}
@@ -174,4 +182,19 @@
     , "GL_TEXTURE_BINDING_CUBE_MAP_ARRAY"
     , "GL_TEXTURE_BINDING_RECTANGLE"
     , "GL_UPPER_LEFT"
+    ]
+
+cleanES32require :: Require -> Require
+cleanES32require require = require
+  { requireEnums = filter (`notElem` removed) $
+    requireEnums require
+  } where
+  removed =
+    [ "GL_CCW"
+    , "GL_CW"
+    , "GL_EQUAL"
+    , "GL_NO_ERROR"
+    , "GL_STENCIL_INDEX"
+    , "GL_STENCIL_INDEX8"
+    , "GL_TRIANGLES"
     ]
diff --git a/dist/build/autogen/Graphics/GL/Core32.hs b/dist/build/autogen/Graphics/GL/Core32.hs
--- a/dist/build/autogen/Graphics/GL/Core32.hs
+++ b/dist/build/autogen/Graphics/GL/Core32.hs
@@ -1122,63 +1122,12 @@
   , pattern GL_ZERO
 ) where
 
-import Control.Monad.IO.Class
-import Foreign.Ptr
-import Graphics.GL.Internal.FFI
-import Graphics.GL.Internal.Proc
 import Graphics.GL.Internal.Shared
-import Graphics.GL.Types
-import System.IO.Unsafe
 
--- | Usage: @'glFramebufferTexture' target attachment texture level@
---
--- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFramebufferTexture.xhtml>
-
-
-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
 
 pattern GL_CONTEXT_CORE_PROFILE_BIT = 0x00000001
 
 pattern GL_CONTEXT_PROFILE_MASK = 0x9126
 
-pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7
-
-pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8
-
-pattern GL_GEOMETRY_INPUT_TYPE = 0x8917
-
-pattern GL_GEOMETRY_OUTPUT_TYPE = 0x8918
-
-pattern GL_GEOMETRY_SHADER = 0x8DD9
-
-pattern GL_GEOMETRY_VERTICES_OUT = 0x8916
-
-pattern GL_LINES_ADJACENCY = 0x000A
-
-pattern GL_LINE_STRIP_ADJACENCY = 0x000B
-
-pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123
-
-pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124
-
-pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0
-
-pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29
-
-pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1
-
-pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF
-
 pattern GL_PROGRAM_POINT_SIZE = 0x8642
-
-pattern GL_TRIANGLES_ADJACENCY = 0x000C
-
-pattern GL_TRIANGLE_STRIP_ADJACENCY = 0x000D
diff --git a/dist/build/autogen/Graphics/GL/Core40.hs b/dist/build/autogen/Graphics/GL/Core40.hs
--- a/dist/build/autogen/Graphics/GL/Core40.hs
+++ b/dist/build/autogen/Graphics/GL/Core40.hs
@@ -129,85 +129,8 @@
   , pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY
 ) where
 
-import Control.Monad.IO.Class
-import Foreign.Ptr
-import Graphics.GL.Internal.FFI
-import Graphics.GL.Internal.Proc
 import Graphics.GL.Internal.Shared
-import Graphics.GL.Types
-import System.IO.Unsafe
 
 import Graphics.GL.Core33
 
--- | Usage: @'glBlendEquationSeparatei' buf modeRGB modeAlpha@
-
-
-glBlendEquationSeparatei :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
-glBlendEquationSeparatei = ffiuintenumenumIOV glBlendEquationSeparateiFunPtr
-
-glBlendEquationSeparateiFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
-glBlendEquationSeparateiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparatei")
-
-{-# NOINLINE glBlendEquationSeparateiFunPtr #-}
-
--- | Usage: @'glBlendEquationi' buf mode@
-
-
-glBlendEquationi :: MonadIO m => GLuint -> GLenum -> m ()
-glBlendEquationi = ffiuintenumIOV glBlendEquationiFunPtr
-
-glBlendEquationiFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
-glBlendEquationiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationi")
-
-{-# NOINLINE glBlendEquationiFunPtr #-}
-
--- | Usage: @'glBlendFuncSeparatei' buf srcRGB dstRGB srcAlpha dstAlpha@
-
-
-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 #-}
-
--- | Usage: @'glBlendFunci' buf src dst@
-
-
-glBlendFunci :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
-glBlendFunci = ffiuintenumenumIOV glBlendFunciFunPtr
-
-glBlendFunciFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
-glBlendFunciFunPtr = unsafePerformIO (getProcAddress "glBlendFunci")
-
-{-# NOINLINE glBlendFunciFunPtr #-}
-
--- | Usage: @'glMinSampleShading' value@
---
--- The parameter @value@ is a @ColorF@.
---
--- Manual page: <https://www.opengl.org/sdk/docs/man/html/glMinSampleShading.xhtml>
-
-
-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
-
-pattern GL_MIN_SAMPLE_SHADING_VALUE = 0x8C37
-
 pattern GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B
-
-pattern GL_SAMPLER_CUBE_MAP_ARRAY = 0x900C
-
-pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D
-
-pattern GL_SAMPLE_SHADING = 0x8C36
-
-pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F
diff --git a/dist/build/autogen/Graphics/GL/Core44.hs b/dist/build/autogen/Graphics/GL/Core44.hs
--- a/dist/build/autogen/Graphics/GL/Core44.hs
+++ b/dist/build/autogen/Graphics/GL/Core44.hs
@@ -36,5 +36,3 @@
 import Graphics.GL.Internal.Shared
 
 import Graphics.GL.Core43
-
-pattern GL_TEXTURE_BUFFER_BINDING = 0x8C2A
diff --git a/dist/build/autogen/Graphics/GL/Core45.hs b/dist/build/autogen/Graphics/GL/Core45.hs
--- a/dist/build/autogen/Graphics/GL/Core45.hs
+++ b/dist/build/autogen/Graphics/GL/Core45.hs
@@ -179,5 +179,3 @@
 glGetnUniformdvFunPtr = unsafePerformIO (getProcAddress "glGetnUniformdv")
 
 {-# NOINLINE glGetnUniformdvFunPtr #-}
-
-pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004
diff --git a/dist/build/autogen/Graphics/GL/Embedded20.hs b/dist/build/autogen/Graphics/GL/Embedded20.hs
--- a/dist/build/autogen/Graphics/GL/Embedded20.hs
+++ b/dist/build/autogen/Graphics/GL/Embedded20.hs
@@ -448,5 +448,3 @@
 ) where
 
 import Graphics.GL.Internal.Shared
-
-pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9
diff --git a/dist/build/autogen/Graphics/GL/Embedded32.hs b/dist/build/autogen/Graphics/GL/Embedded32.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Embedded32.hs
@@ -0,0 +1,380 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Embedded32 (
+  -- * Graphics.GL.Embedded32
+    module Graphics.GL.Embedded31
+  , glBlendBarrier
+  , glBlendEquationSeparatei
+  , glBlendEquationi
+  , glBlendFuncSeparatei
+  , glBlendFunci
+  , glColorMaski
+  , glCopyImageSubData
+  , glDebugMessageCallback
+  , glDebugMessageControl
+  , glDebugMessageInsert
+  , glDisablei
+  , glDrawElementsBaseVertex
+  , glDrawElementsInstancedBaseVertex
+  , glDrawRangeElementsBaseVertex
+  , glEnablei
+  , glFramebufferTexture
+  , glGetDebugMessageLog
+  , glGetGraphicsResetStatus
+  , glGetObjectLabel
+  , glGetObjectPtrLabel
+  , glGetPointerv
+  , glGetSamplerParameterIiv
+  , glGetSamplerParameterIuiv
+  , glGetTexParameterIiv
+  , glGetTexParameterIuiv
+  , glGetnUniformfv
+  , glGetnUniformiv
+  , glGetnUniformuiv
+  , glIsEnabledi
+  , glMinSampleShading
+  , glObjectLabel
+  , glObjectPtrLabel
+  , glPatchParameteri
+  , glPopDebugGroup
+  , glPrimitiveBoundingBox
+  , glPushDebugGroup
+  , glReadnPixels
+  , glSamplerParameterIiv
+  , glSamplerParameterIuiv
+  , glTexBuffer
+  , glTexBufferRange
+  , glTexParameterIiv
+  , glTexParameterIuiv
+  , glTexStorage3DMultisample
+  , pattern GL_BUFFER
+  , pattern GL_CLAMP_TO_BORDER
+  , pattern GL_COLORBURN
+  , pattern GL_COLORDODGE
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x10
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x5
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x6
+  , pattern GL_COMPRESSED_RGBA_ASTC_10x8
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x10
+  , pattern GL_COMPRESSED_RGBA_ASTC_12x12
+  , pattern GL_COMPRESSED_RGBA_ASTC_4x4
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x4
+  , pattern GL_COMPRESSED_RGBA_ASTC_5x5
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x5
+  , pattern GL_COMPRESSED_RGBA_ASTC_6x6
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x5
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x6
+  , pattern GL_COMPRESSED_RGBA_ASTC_8x8
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6
+  , pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8
+  , pattern GL_CONTEXT_FLAGS
+  , pattern GL_CONTEXT_FLAG_DEBUG_BIT
+  , pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT
+  , pattern GL_CONTEXT_LOST
+  , pattern GL_DARKEN
+  , 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_DIFFERENCE
+  , pattern GL_EXCLUSION
+  , pattern GL_FIRST_VERTEX_CONVENTION
+  , pattern GL_FRACTIONAL_EVEN
+  , pattern GL_FRACTIONAL_ODD
+  , pattern GL_FRAGMENT_INTERPOLATION_OFFSET_BITS
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED
+  , pattern GL_FRAMEBUFFER_DEFAULT_LAYERS
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS
+  , pattern GL_GEOMETRY_INPUT_TYPE
+  , pattern GL_GEOMETRY_OUTPUT_TYPE
+  , pattern GL_GEOMETRY_SHADER
+  , pattern GL_GEOMETRY_SHADER_BIT
+  , pattern GL_GEOMETRY_SHADER_INVOCATIONS
+  , pattern GL_GEOMETRY_VERTICES_OUT
+  , pattern GL_GUILTY_CONTEXT_RESET
+  , pattern GL_HARDLIGHT
+  , pattern GL_HSL_COLOR
+  , pattern GL_HSL_HUE
+  , pattern GL_HSL_LUMINOSITY
+  , pattern GL_HSL_SATURATION
+  , pattern GL_IMAGE_BUFFER
+  , pattern GL_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_INNOCENT_CONTEXT_RESET
+  , pattern GL_INT_IMAGE_BUFFER
+  , pattern GL_INT_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_INT_SAMPLER_BUFFER
+  , pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY
+  , pattern GL_ISOLINES
+  , pattern GL_IS_PER_PATCH
+  , pattern GL_LAST_VERTEX_CONVENTION
+  , pattern GL_LAYER_PROVOKING_VERTEX
+  , pattern GL_LIGHTEN
+  , pattern GL_LINES_ADJACENCY
+  , pattern GL_LINE_STRIP_ADJACENCY
+  , pattern GL_LOSE_CONTEXT_ON_RESET
+  , pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS
+  , pattern GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS
+  , pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH
+  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES
+  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH
+  , pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET
+  , pattern GL_MAX_FRAMEBUFFER_LAYERS
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS
+  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS
+  , pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS
+  , pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS
+  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES
+  , pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS
+  , pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS
+  , 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_LABEL_LENGTH
+  , pattern GL_MAX_PATCH_VERTICES
+  , 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_CONTROL_INPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS
+  , 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_ATOMIC_COUNTERS
+  , pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS
+  , pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS
+  , pattern GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS
+  , pattern GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS
+  , 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_TEXTURE_BUFFER_SIZE
+  , pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET
+  , pattern GL_MIN_SAMPLE_SHADING_VALUE
+  , pattern GL_MULTIPLY
+  , pattern GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY
+  , pattern GL_MULTISAMPLE_LINE_WIDTH_RANGE
+  , pattern GL_NO_RESET_NOTIFICATION
+  , pattern GL_OVERLAY
+  , pattern GL_PATCHES
+  , pattern GL_PATCH_VERTICES
+  , pattern GL_PRIMITIVES_GENERATED
+  , pattern GL_PRIMITIVE_BOUNDING_BOX
+  , pattern GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED
+  , pattern GL_PROGRAM
+  , pattern GL_PROGRAM_PIPELINE
+  , pattern GL_QUADS
+  , pattern GL_QUERY
+  , pattern GL_REFERENCED_BY_GEOMETRY_SHADER
+  , pattern GL_REFERENCED_BY_TESS_CONTROL_SHADER
+  , pattern GL_REFERENCED_BY_TESS_EVALUATION_SHADER
+  , pattern GL_RESET_NOTIFICATION_STRATEGY
+  , pattern GL_SAMPLER
+  , pattern GL_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_SAMPLER_BUFFER
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY
+  , pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW
+  , pattern GL_SAMPLE_SHADING
+  , pattern GL_SCREEN
+  , pattern GL_SHADER
+  , pattern GL_SOFTLIGHT
+  , pattern GL_STACK_OVERFLOW
+  , pattern GL_STACK_UNDERFLOW
+  , pattern GL_TESS_CONTROL_OUTPUT_VERTICES
+  , pattern GL_TESS_CONTROL_SHADER
+  , pattern GL_TESS_CONTROL_SHADER_BIT
+  , pattern GL_TESS_EVALUATION_SHADER
+  , pattern GL_TESS_EVALUATION_SHADER_BIT
+  , 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_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+  , pattern GL_TEXTURE_BINDING_BUFFER
+  , pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY
+  , pattern GL_TEXTURE_BORDER_COLOR
+  , pattern GL_TEXTURE_BUFFER
+  , pattern GL_TEXTURE_BUFFER_BINDING
+  , pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING
+  , pattern GL_TEXTURE_BUFFER_OFFSET
+  , pattern GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT
+  , pattern GL_TEXTURE_BUFFER_SIZE
+  , pattern GL_TEXTURE_CUBE_MAP_ARRAY
+  , pattern GL_TRIANGLES_ADJACENCY
+  , pattern GL_TRIANGLE_STRIP_ADJACENCY
+  , pattern GL_UNDEFINED_VERTEX
+  , pattern GL_UNKNOWN_CONTEXT_RESET
+  , pattern GL_UNSIGNED_INT_IMAGE_BUFFER
+  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+  , pattern GL_UNSIGNED_INT_SAMPLER_BUFFER
+  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY
+  , pattern GL_VERTEX_ARRAY
+) where
+
+import Control.Monad.IO.Class
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+import Graphics.GL.Embedded31
+
+-- | Usage: @'glBlendBarrier'@
+
+
+glBlendBarrier :: MonadIO m => m ()
+glBlendBarrier = ffiIOV glBlendBarrierFunPtr
+
+glBlendBarrierFunPtr :: FunPtr (IO ())
+glBlendBarrierFunPtr = unsafePerformIO (getProcAddress "glBlendBarrier")
+
+{-# NOINLINE glBlendBarrierFunPtr #-}
+
+-- | Usage: @'glPrimitiveBoundingBox' minX minY minZ minW maxX maxY maxZ maxW@
+
+
+glPrimitiveBoundingBox :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glPrimitiveBoundingBox = ffifloatfloatfloatfloatfloatfloatfloatfloatIOV glPrimitiveBoundingBoxFunPtr
+
+glPrimitiveBoundingBoxFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glPrimitiveBoundingBoxFunPtr = unsafePerformIO (getProcAddress "glPrimitiveBoundingBox")
+
+{-# NOINLINE glPrimitiveBoundingBoxFunPtr #-}
+
+pattern GL_COLORBURN = 0x929A
+
+pattern GL_COLORDODGE = 0x9299
+
+pattern GL_COMPRESSED_RGBA_ASTC_10x10 = 0x93BB
+
+pattern GL_COMPRESSED_RGBA_ASTC_10x5 = 0x93B8
+
+pattern GL_COMPRESSED_RGBA_ASTC_10x6 = 0x93B9
+
+pattern GL_COMPRESSED_RGBA_ASTC_10x8 = 0x93BA
+
+pattern GL_COMPRESSED_RGBA_ASTC_12x10 = 0x93BC
+
+pattern GL_COMPRESSED_RGBA_ASTC_12x12 = 0x93BD
+
+pattern GL_COMPRESSED_RGBA_ASTC_4x4 = 0x93B0
+
+pattern GL_COMPRESSED_RGBA_ASTC_5x4 = 0x93B1
+
+pattern GL_COMPRESSED_RGBA_ASTC_5x5 = 0x93B2
+
+pattern GL_COMPRESSED_RGBA_ASTC_6x5 = 0x93B3
+
+pattern GL_COMPRESSED_RGBA_ASTC_6x6 = 0x93B4
+
+pattern GL_COMPRESSED_RGBA_ASTC_8x5 = 0x93B5
+
+pattern GL_COMPRESSED_RGBA_ASTC_8x6 = 0x93B6
+
+pattern GL_COMPRESSED_RGBA_ASTC_8x8 = 0x93B7
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 = 0x93DB
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 = 0x93D8
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 = 0x93D9
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 = 0x93DA
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 = 0x93DC
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 = 0x93DD
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 = 0x93D0
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 = 0x93D1
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 = 0x93D2
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 = 0x93D3
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 = 0x93D4
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 = 0x93D5
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 = 0x93D6
+
+pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 = 0x93D7
+
+pattern GL_DARKEN = 0x9297
+
+pattern GL_DIFFERENCE = 0x929E
+
+pattern GL_EXCLUSION = 0x92A0
+
+pattern GL_HARDLIGHT = 0x929B
+
+pattern GL_HSL_COLOR = 0x92AF
+
+pattern GL_HSL_HUE = 0x92AD
+
+pattern GL_HSL_LUMINOSITY = 0x92B0
+
+pattern GL_HSL_SATURATION = 0x92AE
+
+pattern GL_LIGHTEN = 0x9298
+
+pattern GL_MULTIPLY = 0x9294
+
+pattern GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY = 0x9382
+
+pattern GL_MULTISAMPLE_LINE_WIDTH_RANGE = 0x9381
+
+pattern GL_OVERLAY = 0x9296
+
+pattern GL_PRIMITIVE_BOUNDING_BOX = 0x92BE
+
+pattern GL_SCREEN = 0x9295
+
+pattern GL_SOFTLIGHT = 0x929C
diff --git a/dist/build/autogen/Graphics/GL/Ext/AMD.hs b/dist/build/autogen/Graphics/GL/Ext/AMD.hs
--- a/dist/build/autogen/Graphics/GL/Ext/AMD.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/AMD.hs
@@ -9,7 +9,9 @@
   , module Graphics.GL.Ext.AMD.DebugOutput
   , module Graphics.GL.Ext.AMD.DepthClampSeparate
   , module Graphics.GL.Ext.AMD.DrawBuffersBlend
+  , module Graphics.GL.Ext.AMD.FramebufferSamplePositions
   , module Graphics.GL.Ext.AMD.GcnShader
+  , module Graphics.GL.Ext.AMD.GpuShaderHalfFloat
   , module Graphics.GL.Ext.AMD.GpuShaderInt64
   , module Graphics.GL.Ext.AMD.InterleavedElements
   , module Graphics.GL.Ext.AMD.MultiDrawIndirect
@@ -22,6 +24,8 @@
   , module Graphics.GL.Ext.AMD.SamplePositions
   , module Graphics.GL.Ext.AMD.SeamlessCubemapPerTexture
   , module Graphics.GL.Ext.AMD.ShaderAtomicCounterOps
+  , module Graphics.GL.Ext.AMD.ShaderBallot
+  , module Graphics.GL.Ext.AMD.ShaderExplicitVertexParameter
   , module Graphics.GL.Ext.AMD.ShaderStencilExport
   , module Graphics.GL.Ext.AMD.ShaderTrinaryMinmax
   , module Graphics.GL.Ext.AMD.SparseTexture
@@ -41,7 +45,9 @@
 import Graphics.GL.Ext.AMD.DebugOutput
 import Graphics.GL.Ext.AMD.DepthClampSeparate
 import Graphics.GL.Ext.AMD.DrawBuffersBlend
+import Graphics.GL.Ext.AMD.FramebufferSamplePositions
 import Graphics.GL.Ext.AMD.GcnShader
+import Graphics.GL.Ext.AMD.GpuShaderHalfFloat
 import Graphics.GL.Ext.AMD.GpuShaderInt64
 import Graphics.GL.Ext.AMD.InterleavedElements
 import Graphics.GL.Ext.AMD.MultiDrawIndirect
@@ -54,6 +60,8 @@
 import Graphics.GL.Ext.AMD.SamplePositions
 import Graphics.GL.Ext.AMD.SeamlessCubemapPerTexture
 import Graphics.GL.Ext.AMD.ShaderAtomicCounterOps
+import Graphics.GL.Ext.AMD.ShaderBallot
+import Graphics.GL.Ext.AMD.ShaderExplicitVertexParameter
 import Graphics.GL.Ext.AMD.ShaderStencilExport
 import Graphics.GL.Ext.AMD.ShaderTrinaryMinmax
 import Graphics.GL.Ext.AMD.SparseTexture
diff --git a/dist/build/autogen/Graphics/GL/Ext/AMD/DrawBuffersBlend.hs b/dist/build/autogen/Graphics/GL/Ext/AMD/DrawBuffersBlend.hs
--- a/dist/build/autogen/Graphics/GL/Ext/AMD/DrawBuffersBlend.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/AMD/DrawBuffersBlend.hs
@@ -27,7 +27,7 @@
 
 -- | Usage: @'glBlendEquationIndexedAMD' buf mode@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationi'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationi'.
 
 
 glBlendEquationIndexedAMD :: MonadIO m => GLuint -> GLenum -> m ()
@@ -40,7 +40,7 @@
 
 -- | Usage: @'glBlendEquationSeparateIndexedAMD' buf modeRGB modeAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationSeparatei'.
 
 
 glBlendEquationSeparateIndexedAMD :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
@@ -53,7 +53,7 @@
 
 -- | Usage: @'glBlendFuncIndexedAMD' buf src dst@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFunci'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFunci'.
 
 
 glBlendFuncIndexedAMD :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
@@ -66,7 +66,7 @@
 
 -- | Usage: @'glBlendFuncSeparateIndexedAMD' buf srcRGB dstRGB srcAlpha dstAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFuncSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFuncSeparatei'.
 
 
 glBlendFuncSeparateIndexedAMD :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/AMD/FramebufferSamplePositions.hs b/dist/build/autogen/Graphics/GL/Ext/AMD/FramebufferSamplePositions.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/AMD/FramebufferSamplePositions.hs
@@ -0,0 +1,81 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.AMD.FramebufferSamplePositions (
+  -- * Extension Support
+    gl_AMD_framebuffer_sample_positions
+
+  -- * GL_AMD_framebuffer_sample_positions
+  , glFramebufferSamplePositionsfvAMD
+  , glGetFramebufferParameterfvAMD
+  , glGetNamedFramebufferParameterfvAMD
+  , glNamedFramebufferSamplePositionsfvAMD
+  , pattern GL_ALL_PIXELS_AMD
+  , pattern GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD
+  , pattern GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD
+  , pattern GL_SUBSAMPLE_DISTANCE_AMD
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_sample_positions.txt GL_AMD_framebuffer_sample_positions> extension is available.
+
+gl_AMD_framebuffer_sample_positions :: Bool
+gl_AMD_framebuffer_sample_positions = member "GL_AMD_framebuffer_sample_positions" extensions
+{-# NOINLINE gl_AMD_framebuffer_sample_positions #-}
+
+-- | Usage: @'glFramebufferSamplePositionsfvAMD' target numsamples pixelindex values@
+
+
+glFramebufferSamplePositionsfvAMD :: MonadIO m => GLenum -> GLuint -> GLuint -> Ptr GLfloat -> m ()
+glFramebufferSamplePositionsfvAMD = ffienumuintuintPtrfloatIOV glFramebufferSamplePositionsfvAMDFunPtr
+
+glFramebufferSamplePositionsfvAMDFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> Ptr GLfloat -> IO ())
+glFramebufferSamplePositionsfvAMDFunPtr = unsafePerformIO (getProcAddress "glFramebufferSamplePositionsfvAMD")
+
+{-# NOINLINE glFramebufferSamplePositionsfvAMDFunPtr #-}
+
+-- | Usage: @'glGetFramebufferParameterfvAMD' target pname numsamples pixelindex size values@
+
+
+glGetFramebufferParameterfvAMD :: MonadIO m => GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glGetFramebufferParameterfvAMD = ffienumenumuintuintsizeiPtrfloatIOV glGetFramebufferParameterfvAMDFunPtr
+
+glGetFramebufferParameterfvAMDFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glGetFramebufferParameterfvAMDFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferParameterfvAMD")
+
+{-# NOINLINE glGetFramebufferParameterfvAMDFunPtr #-}
+
+-- | Usage: @'glGetNamedFramebufferParameterfvAMD' framebuffer pname numsamples pixelindex size values@
+
+
+glGetNamedFramebufferParameterfvAMD :: MonadIO m => GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glGetNamedFramebufferParameterfvAMD = ffienumenumuintuintsizeiPtrfloatIOV glGetNamedFramebufferParameterfvAMDFunPtr
+
+glGetNamedFramebufferParameterfvAMDFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glGetNamedFramebufferParameterfvAMDFunPtr = unsafePerformIO (getProcAddress "glGetNamedFramebufferParameterfvAMD")
+
+{-# NOINLINE glGetNamedFramebufferParameterfvAMDFunPtr #-}
+
+-- | Usage: @'glNamedFramebufferSamplePositionsfvAMD' framebuffer numsamples pixelindex values@
+
+
+glNamedFramebufferSamplePositionsfvAMD :: MonadIO m => GLuint -> GLuint -> GLuint -> Ptr GLfloat -> m ()
+glNamedFramebufferSamplePositionsfvAMD = ffiuintuintuintPtrfloatIOV glNamedFramebufferSamplePositionsfvAMDFunPtr
+
+glNamedFramebufferSamplePositionsfvAMDFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLfloat -> IO ())
+glNamedFramebufferSamplePositionsfvAMDFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferSamplePositionsfvAMD")
+
+{-# NOINLINE glNamedFramebufferSamplePositionsfvAMDFunPtr #-}
+
+pattern GL_ALL_PIXELS_AMD = 0xFFFFFFFF
+
+pattern GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD = 0x91AE
+
+pattern GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD = 0x91AF
diff --git a/dist/build/autogen/Graphics/GL/Ext/AMD/GpuShaderHalfFloat.hs b/dist/build/autogen/Graphics/GL/Ext/AMD/GpuShaderHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/AMD/GpuShaderHalfFloat.hs
@@ -0,0 +1,49 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.AMD.GpuShaderHalfFloat (
+  -- * Extension Support
+    gl_AMD_gpu_shader_half_float
+
+  -- * GL_AMD_gpu_shader_half_float
+  , pattern GL_FLOAT16_MAT2_AMD
+  , pattern GL_FLOAT16_MAT2x3_AMD
+  , pattern GL_FLOAT16_MAT2x4_AMD
+  , pattern GL_FLOAT16_MAT3_AMD
+  , pattern GL_FLOAT16_MAT3x2_AMD
+  , pattern GL_FLOAT16_MAT3x4_AMD
+  , pattern GL_FLOAT16_MAT4_AMD
+  , pattern GL_FLOAT16_MAT4x2_AMD
+  , pattern GL_FLOAT16_MAT4x3_AMD
+  , pattern GL_FLOAT16_NV
+  , pattern GL_FLOAT16_VEC2_NV
+  , pattern GL_FLOAT16_VEC3_NV
+  , pattern GL_FLOAT16_VEC4_NV
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/gpu_shader_half_float.txt GL_AMD_gpu_shader_half_float> extension is available.
+
+gl_AMD_gpu_shader_half_float :: Bool
+gl_AMD_gpu_shader_half_float = member "GL_AMD_gpu_shader_half_float" extensions
+{-# NOINLINE gl_AMD_gpu_shader_half_float #-}
+
+pattern GL_FLOAT16_MAT2_AMD = 0x91C5
+
+pattern GL_FLOAT16_MAT2x3_AMD = 0x91C8
+
+pattern GL_FLOAT16_MAT2x4_AMD = 0x91C9
+
+pattern GL_FLOAT16_MAT3_AMD = 0x91C6
+
+pattern GL_FLOAT16_MAT3x2_AMD = 0x91CA
+
+pattern GL_FLOAT16_MAT3x4_AMD = 0x91CB
+
+pattern GL_FLOAT16_MAT4_AMD = 0x91C7
+
+pattern GL_FLOAT16_MAT4x2_AMD = 0x91CC
+
+pattern GL_FLOAT16_MAT4x3_AMD = 0x91CD
diff --git a/dist/build/autogen/Graphics/GL/Ext/AMD/SamplePositions.hs b/dist/build/autogen/Graphics/GL/Ext/AMD/SamplePositions.hs
--- a/dist/build/autogen/Graphics/GL/Ext/AMD/SamplePositions.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/AMD/SamplePositions.hs
@@ -14,6 +14,7 @@
 import Foreign.Ptr
 import Graphics.GL.Internal.FFI
 import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
 import Graphics.GL.Types
 import System.IO.Unsafe
 
@@ -35,5 +36,3 @@
 glSetMultisamplefvAMDFunPtr = unsafePerformIO (getProcAddress "glSetMultisamplefvAMD")
 
 {-# NOINLINE glSetMultisamplefvAMDFunPtr #-}
-
-pattern GL_SUBSAMPLE_DISTANCE_AMD = 0x883F
diff --git a/dist/build/autogen/Graphics/GL/Ext/AMD/ShaderBallot.hs b/dist/build/autogen/Graphics/GL/Ext/AMD/ShaderBallot.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/AMD/ShaderBallot.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.AMD.ShaderBallot (
+  -- * Extension Support
+    gl_AMD_shader_ballot
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_ballot.txt GL_AMD_shader_ballot> extension is available.
+
+gl_AMD_shader_ballot :: Bool
+gl_AMD_shader_ballot = member "GL_AMD_shader_ballot" extensions
+{-# NOINLINE gl_AMD_shader_ballot #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/AMD/ShaderExplicitVertexParameter.hs b/dist/build/autogen/Graphics/GL/Ext/AMD/ShaderExplicitVertexParameter.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/AMD/ShaderExplicitVertexParameter.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.AMD.ShaderExplicitVertexParameter (
+  -- * Extension Support
+    gl_AMD_shader_explicit_vertex_parameter
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_explicit_vertex_parameter.txt GL_AMD_shader_explicit_vertex_parameter> extension is available.
+
+gl_AMD_shader_explicit_vertex_parameter :: Bool
+gl_AMD_shader_explicit_vertex_parameter = member "GL_AMD_shader_explicit_vertex_parameter" extensions
+{-# NOINLINE gl_AMD_shader_explicit_vertex_parameter #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ANGLE/InstancedArrays.hs b/dist/build/autogen/Graphics/GL/Ext/ANGLE/InstancedArrays.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ANGLE/InstancedArrays.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ANGLE/InstancedArrays.hs
@@ -27,7 +27,7 @@
 
 -- | Usage: @'glDrawArraysInstancedANGLE' mode first count primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawArraysInstanced'.
 
@@ -42,7 +42,7 @@
 
 -- | Usage: @'glDrawElementsInstancedANGLE' mode count type indices primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @indices@ should be @COMPSIZE(count,type)@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/APPLE/ElementArray.hs b/dist/build/autogen/Graphics/GL/Ext/APPLE/ElementArray.hs
--- a/dist/build/autogen/Graphics/GL/Ext/APPLE/ElementArray.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/APPLE/ElementArray.hs
@@ -31,7 +31,7 @@
 
 -- | Usage: @'glDrawElementArrayAPPLE' mode first count@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 
 
 glDrawElementArrayAPPLE :: MonadIO m => GLenum -> GLint -> GLsizei -> m ()
@@ -44,7 +44,7 @@
 
 -- | Usage: @'glDrawRangeElementArrayAPPLE' mode start end first count@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 
 
 glDrawRangeElementArrayAPPLE :: MonadIO m => GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> m ()
@@ -72,7 +72,7 @@
 
 -- | Usage: @'glMultiDrawElementArrayAPPLE' mode first count primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @first@ should be @primcount@.
 --
@@ -89,7 +89,7 @@
 
 -- | Usage: @'glMultiDrawRangeElementArrayAPPLE' mode start end first count primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @first@ should be @primcount@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB.hs b/dist/build/autogen/Graphics/GL/Ext/ARB.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ARB.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB.hs
@@ -34,6 +34,7 @@
   , module Graphics.GL.Ext.ARB.DrawInstanced
   , module Graphics.GL.Ext.ARB.ES2Compatibility
   , module Graphics.GL.Ext.ARB.ES31Compatibility
+  , module Graphics.GL.Ext.ARB.ES32Compatibility
   , module Graphics.GL.Ext.ARB.ES3Compatibility
   , module Graphics.GL.Ext.ARB.EnhancedLayouts
   , module Graphics.GL.Ext.ARB.ExplicitAttribLocation
@@ -43,6 +44,7 @@
   , module Graphics.GL.Ext.ARB.FragmentProgram
   , module Graphics.GL.Ext.ARB.FragmentProgramShadow
   , module Graphics.GL.Ext.ARB.FragmentShader
+  , module Graphics.GL.Ext.ARB.FragmentShaderInterlock
   , module Graphics.GL.Ext.ARB.FramebufferNoAttachments
   , module Graphics.GL.Ext.ARB.FramebufferObject
   , module Graphics.GL.Ext.ARB.FramebufferSRGB
@@ -51,6 +53,7 @@
   , module Graphics.GL.Ext.ARB.GetTextureSubImage
   , module Graphics.GL.Ext.ARB.GpuShader5
   , module Graphics.GL.Ext.ARB.GpuShaderFp64
+  , module Graphics.GL.Ext.ARB.GpuShaderInt64
   , module Graphics.GL.Ext.ARB.HalfFloatPixel
   , module Graphics.GL.Ext.ARB.HalfFloatVertex
   , module Graphics.GL.Ext.ARB.Imaging
@@ -68,23 +71,29 @@
   , module Graphics.GL.Ext.ARB.Multitexture
   , module Graphics.GL.Ext.ARB.OcclusionQuery
   , module Graphics.GL.Ext.ARB.OcclusionQuery2
+  , module Graphics.GL.Ext.ARB.ParallelShaderCompile
   , module Graphics.GL.Ext.ARB.PipelineStatisticsQuery
   , module Graphics.GL.Ext.ARB.PixelBufferObject
   , module Graphics.GL.Ext.ARB.PointParameters
   , module Graphics.GL.Ext.ARB.PointSprite
+  , module Graphics.GL.Ext.ARB.PostDepthCoverage
   , module Graphics.GL.Ext.ARB.ProgramInterfaceQuery
   , module Graphics.GL.Ext.ARB.ProvokingVertex
   , module Graphics.GL.Ext.ARB.QueryBufferObject
   , module Graphics.GL.Ext.ARB.RobustBufferAccessBehavior
   , module Graphics.GL.Ext.ARB.Robustness
   , module Graphics.GL.Ext.ARB.RobustnessIsolation
+  , module Graphics.GL.Ext.ARB.SampleLocations
   , module Graphics.GL.Ext.ARB.SampleShading
   , module Graphics.GL.Ext.ARB.SamplerObjects
   , module Graphics.GL.Ext.ARB.SeamlessCubeMap
   , module Graphics.GL.Ext.ARB.SeamlessCubemapPerTexture
   , module Graphics.GL.Ext.ARB.SeparateShaderObjects
+  , module Graphics.GL.Ext.ARB.ShaderAtomicCounterOps
   , module Graphics.GL.Ext.ARB.ShaderAtomicCounters
+  , module Graphics.GL.Ext.ARB.ShaderBallot
   , module Graphics.GL.Ext.ARB.ShaderBitEncoding
+  , module Graphics.GL.Ext.ARB.ShaderClock
   , module Graphics.GL.Ext.ARB.ShaderDrawParameters
   , module Graphics.GL.Ext.ARB.ShaderGroupVote
   , module Graphics.GL.Ext.ARB.ShaderImageLoadStore
@@ -96,6 +105,7 @@
   , module Graphics.GL.Ext.ARB.ShaderSubroutine
   , module Graphics.GL.Ext.ARB.ShaderTextureImageSamples
   , module Graphics.GL.Ext.ARB.ShaderTextureLod
+  , module Graphics.GL.Ext.ARB.ShaderViewportLayerArray
   , module Graphics.GL.Ext.ARB.ShadingLanguage100
   , module Graphics.GL.Ext.ARB.ShadingLanguage420pack
   , module Graphics.GL.Ext.ARB.ShadingLanguageInclude
@@ -104,6 +114,8 @@
   , module Graphics.GL.Ext.ARB.ShadowAmbient
   , module Graphics.GL.Ext.ARB.SparseBuffer
   , module Graphics.GL.Ext.ARB.SparseTexture
+  , module Graphics.GL.Ext.ARB.SparseTexture2
+  , module Graphics.GL.Ext.ARB.SparseTextureClamp
   , module Graphics.GL.Ext.ARB.StencilTexturing
   , module Graphics.GL.Ext.ARB.Sync
   , module Graphics.GL.Ext.ARB.TessellationShader
@@ -121,6 +133,7 @@
   , module Graphics.GL.Ext.ARB.TextureEnvCombine
   , module Graphics.GL.Ext.ARB.TextureEnvCrossbar
   , module Graphics.GL.Ext.ARB.TextureEnvDot3
+  , module Graphics.GL.Ext.ARB.TextureFilterMinmax
   , module Graphics.GL.Ext.ARB.TextureFloat
   , module Graphics.GL.Ext.ARB.TextureGather
   , module Graphics.GL.Ext.ARB.TextureMirrorClampToEdge
@@ -190,6 +203,7 @@
 import Graphics.GL.Ext.ARB.DrawInstanced
 import Graphics.GL.Ext.ARB.ES2Compatibility
 import Graphics.GL.Ext.ARB.ES31Compatibility
+import Graphics.GL.Ext.ARB.ES32Compatibility
 import Graphics.GL.Ext.ARB.ES3Compatibility
 import Graphics.GL.Ext.ARB.EnhancedLayouts
 import Graphics.GL.Ext.ARB.ExplicitAttribLocation
@@ -199,6 +213,7 @@
 import Graphics.GL.Ext.ARB.FragmentProgram
 import Graphics.GL.Ext.ARB.FragmentProgramShadow
 import Graphics.GL.Ext.ARB.FragmentShader
+import Graphics.GL.Ext.ARB.FragmentShaderInterlock
 import Graphics.GL.Ext.ARB.FramebufferNoAttachments
 import Graphics.GL.Ext.ARB.FramebufferObject
 import Graphics.GL.Ext.ARB.FramebufferSRGB
@@ -207,6 +222,7 @@
 import Graphics.GL.Ext.ARB.GetTextureSubImage
 import Graphics.GL.Ext.ARB.GpuShader5
 import Graphics.GL.Ext.ARB.GpuShaderFp64
+import Graphics.GL.Ext.ARB.GpuShaderInt64
 import Graphics.GL.Ext.ARB.HalfFloatPixel
 import Graphics.GL.Ext.ARB.HalfFloatVertex
 import Graphics.GL.Ext.ARB.Imaging
@@ -224,23 +240,29 @@
 import Graphics.GL.Ext.ARB.Multitexture
 import Graphics.GL.Ext.ARB.OcclusionQuery
 import Graphics.GL.Ext.ARB.OcclusionQuery2
+import Graphics.GL.Ext.ARB.ParallelShaderCompile
 import Graphics.GL.Ext.ARB.PipelineStatisticsQuery
 import Graphics.GL.Ext.ARB.PixelBufferObject
 import Graphics.GL.Ext.ARB.PointParameters
 import Graphics.GL.Ext.ARB.PointSprite
+import Graphics.GL.Ext.ARB.PostDepthCoverage
 import Graphics.GL.Ext.ARB.ProgramInterfaceQuery
 import Graphics.GL.Ext.ARB.ProvokingVertex
 import Graphics.GL.Ext.ARB.QueryBufferObject
 import Graphics.GL.Ext.ARB.RobustBufferAccessBehavior
 import Graphics.GL.Ext.ARB.Robustness
 import Graphics.GL.Ext.ARB.RobustnessIsolation
+import Graphics.GL.Ext.ARB.SampleLocations
 import Graphics.GL.Ext.ARB.SampleShading
 import Graphics.GL.Ext.ARB.SamplerObjects
 import Graphics.GL.Ext.ARB.SeamlessCubeMap
 import Graphics.GL.Ext.ARB.SeamlessCubemapPerTexture
 import Graphics.GL.Ext.ARB.SeparateShaderObjects
+import Graphics.GL.Ext.ARB.ShaderAtomicCounterOps
 import Graphics.GL.Ext.ARB.ShaderAtomicCounters
+import Graphics.GL.Ext.ARB.ShaderBallot
 import Graphics.GL.Ext.ARB.ShaderBitEncoding
+import Graphics.GL.Ext.ARB.ShaderClock
 import Graphics.GL.Ext.ARB.ShaderDrawParameters
 import Graphics.GL.Ext.ARB.ShaderGroupVote
 import Graphics.GL.Ext.ARB.ShaderImageLoadStore
@@ -252,6 +274,7 @@
 import Graphics.GL.Ext.ARB.ShaderSubroutine
 import Graphics.GL.Ext.ARB.ShaderTextureImageSamples
 import Graphics.GL.Ext.ARB.ShaderTextureLod
+import Graphics.GL.Ext.ARB.ShaderViewportLayerArray
 import Graphics.GL.Ext.ARB.ShadingLanguage100
 import Graphics.GL.Ext.ARB.ShadingLanguage420pack
 import Graphics.GL.Ext.ARB.ShadingLanguageInclude
@@ -260,6 +283,8 @@
 import Graphics.GL.Ext.ARB.ShadowAmbient
 import Graphics.GL.Ext.ARB.SparseBuffer
 import Graphics.GL.Ext.ARB.SparseTexture
+import Graphics.GL.Ext.ARB.SparseTexture2
+import Graphics.GL.Ext.ARB.SparseTextureClamp
 import Graphics.GL.Ext.ARB.StencilTexturing
 import Graphics.GL.Ext.ARB.Sync
 import Graphics.GL.Ext.ARB.TessellationShader
@@ -277,6 +302,7 @@
 import Graphics.GL.Ext.ARB.TextureEnvCombine
 import Graphics.GL.Ext.ARB.TextureEnvCrossbar
 import Graphics.GL.Ext.ARB.TextureEnvDot3
+import Graphics.GL.Ext.ARB.TextureFilterMinmax
 import Graphics.GL.Ext.ARB.TextureFloat
 import Graphics.GL.Ext.ARB.TextureGather
 import Graphics.GL.Ext.ARB.TextureMirrorClampToEdge
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/BindlessTexture.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/BindlessTexture.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ARB/BindlessTexture.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/BindlessTexture.hs
@@ -29,6 +29,7 @@
 import Foreign.Ptr
 import Graphics.GL.Internal.FFI
 import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
 import Graphics.GL.Types
 import System.IO.Unsafe
 
@@ -217,5 +218,3 @@
 glVertexAttribL1ui64vARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1ui64vARB")
 
 {-# NOINLINE glVertexAttribL1ui64vARBFunPtr #-}
-
-pattern GL_UNSIGNED_INT64_ARB = 0x140F
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/DrawBuffersBlend.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/DrawBuffersBlend.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ARB/DrawBuffersBlend.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/DrawBuffersBlend.hs
@@ -27,7 +27,7 @@
 
 -- | Usage: @'glBlendEquationSeparateiARB' buf modeRGB modeAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationSeparatei'.
 
 
 glBlendEquationSeparateiARB :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
@@ -40,7 +40,7 @@
 
 -- | Usage: @'glBlendEquationiARB' buf mode@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationi'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationi'.
 
 
 glBlendEquationiARB :: MonadIO m => GLuint -> GLenum -> m ()
@@ -53,7 +53,7 @@
 
 -- | Usage: @'glBlendFuncSeparateiARB' buf srcRGB dstRGB srcAlpha dstAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFuncSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFuncSeparatei'.
 
 
 glBlendFuncSeparateiARB :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
@@ -66,7 +66,7 @@
 
 -- | Usage: @'glBlendFunciARB' buf src dst@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFunci'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFunci'.
 
 
 glBlendFunciARB :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/DrawInstanced.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/DrawInstanced.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ARB/DrawInstanced.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/DrawInstanced.hs
@@ -25,7 +25,7 @@
 
 -- | Usage: @'glDrawArraysInstancedARB' mode first count primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawArraysInstanced'.
 
@@ -40,7 +40,7 @@
 
 -- | Usage: @'glDrawElementsInstancedARB' mode count type indices primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/ES32Compatibility.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/ES32Compatibility.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/ES32Compatibility.hs
@@ -0,0 +1,45 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.ES32Compatibility (
+  -- * Extension Support
+    gl_ARB_ES3_2_compatibility
+
+  -- * GL_ARB_ES3_2_compatibility
+  , glPrimitiveBoundingBoxARB
+  , pattern GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB
+  , pattern GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB
+  , pattern GL_PRIMITIVE_BOUNDING_BOX_ARB
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/ES3_2_compatibility.txt GL_ARB_ES3_2_compatibility> extension is available.
+
+gl_ARB_ES3_2_compatibility :: Bool
+gl_ARB_ES3_2_compatibility = member "GL_ARB_ES3_2_compatibility" extensions
+{-# NOINLINE gl_ARB_ES3_2_compatibility #-}
+
+-- | Usage: @'glPrimitiveBoundingBoxARB' minX minY minZ minW maxX maxY maxZ maxW@
+--
+-- This command is an alias for 'Graphics.GL.Embedded32.glPrimitiveBoundingBox'.
+
+
+glPrimitiveBoundingBoxARB :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glPrimitiveBoundingBoxARB = ffifloatfloatfloatfloatfloatfloatfloatfloatIOV glPrimitiveBoundingBoxARBFunPtr
+
+glPrimitiveBoundingBoxARBFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glPrimitiveBoundingBoxARBFunPtr = unsafePerformIO (getProcAddress "glPrimitiveBoundingBoxARB")
+
+{-# NOINLINE glPrimitiveBoundingBoxARBFunPtr #-}
+
+pattern GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB = 0x9382
+
+pattern GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB = 0x9381
+
+pattern GL_PRIMITIVE_BOUNDING_BOX_ARB = 0x92BE
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/FragmentShaderInterlock.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/FragmentShaderInterlock.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/FragmentShaderInterlock.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.FragmentShaderInterlock (
+  -- * Extension Support
+    gl_ARB_fragment_shader_interlock
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/fragment_shader_interlock.txt GL_ARB_fragment_shader_interlock> extension is available.
+
+gl_ARB_fragment_shader_interlock :: Bool
+gl_ARB_fragment_shader_interlock = member "GL_ARB_fragment_shader_interlock" extensions
+{-# NOINLINE gl_ARB_fragment_shader_interlock #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/GeometryShader4.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/GeometryShader4.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ARB/GeometryShader4.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/GeometryShader4.hs
@@ -56,7 +56,7 @@
 --
 -- The parameter @level@ is a @CheckedInt32@.
 --
--- This command is an alias for 'Graphics.GL.Core32.glFramebufferTexture'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glFramebufferTexture'.
 
 
 glFramebufferTextureARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/GpuShaderInt64.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/GpuShaderInt64.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/GpuShaderInt64.hs
@@ -0,0 +1,513 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.GpuShaderInt64 (
+  -- * Extension Support
+    gl_ARB_gpu_shader_int64
+
+  -- * GL_ARB_gpu_shader_int64
+  , glGetUniformi64vARB
+  , glGetUniformui64vARB
+  , glGetnUniformi64vARB
+  , glGetnUniformui64vARB
+  , glProgramUniform1i64ARB
+  , glProgramUniform1i64vARB
+  , glProgramUniform1ui64ARB
+  , glProgramUniform1ui64vARB
+  , glProgramUniform2i64ARB
+  , glProgramUniform2i64vARB
+  , glProgramUniform2ui64ARB
+  , glProgramUniform2ui64vARB
+  , glProgramUniform3i64ARB
+  , glProgramUniform3i64vARB
+  , glProgramUniform3ui64ARB
+  , glProgramUniform3ui64vARB
+  , glProgramUniform4i64ARB
+  , glProgramUniform4i64vARB
+  , glProgramUniform4ui64ARB
+  , glProgramUniform4ui64vARB
+  , glUniform1i64ARB
+  , glUniform1i64vARB
+  , glUniform1ui64ARB
+  , glUniform1ui64vARB
+  , glUniform2i64ARB
+  , glUniform2i64vARB
+  , glUniform2ui64ARB
+  , glUniform2ui64vARB
+  , glUniform3i64ARB
+  , glUniform3i64vARB
+  , glUniform3ui64ARB
+  , glUniform3ui64vARB
+  , glUniform4i64ARB
+  , glUniform4i64vARB
+  , glUniform4ui64ARB
+  , glUniform4ui64vARB
+  , pattern GL_INT64_ARB
+  , pattern GL_INT64_VEC2_ARB
+  , pattern GL_INT64_VEC3_ARB
+  , pattern GL_INT64_VEC4_ARB
+  , pattern GL_UNSIGNED_INT64_ARB
+  , pattern GL_UNSIGNED_INT64_VEC2_ARB
+  , pattern GL_UNSIGNED_INT64_VEC3_ARB
+  , pattern GL_UNSIGNED_INT64_VEC4_ARB
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/gpu_shader_int64.txt GL_ARB_gpu_shader_int64> extension is available.
+
+gl_ARB_gpu_shader_int64 :: Bool
+gl_ARB_gpu_shader_int64 = member "GL_ARB_gpu_shader_int64" extensions
+{-# NOINLINE gl_ARB_gpu_shader_int64 #-}
+
+-- | Usage: @'glGetUniformi64vARB' program location params@
+--
+-- The length of @params@ should be @COMPSIZE(program,location)@.
+
+
+glGetUniformi64vARB :: MonadIO m => GLuint -> GLint -> Ptr GLint64 -> m ()
+glGetUniformi64vARB = ffiuintintPtrint64IOV glGetUniformi64vARBFunPtr
+
+glGetUniformi64vARBFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLint64 -> IO ())
+glGetUniformi64vARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformi64vARB")
+
+{-# NOINLINE glGetUniformi64vARBFunPtr #-}
+
+-- | Usage: @'glGetUniformui64vARB' program location params@
+--
+-- The length of @params@ should be @COMPSIZE(program,location)@.
+
+
+glGetUniformui64vARB :: MonadIO m => GLuint -> GLint -> Ptr GLuint64 -> m ()
+glGetUniformui64vARB = ffiuintintPtruint64IOV glGetUniformui64vARBFunPtr
+
+glGetUniformui64vARBFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLuint64 -> IO ())
+glGetUniformui64vARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformui64vARB")
+
+{-# NOINLINE glGetUniformui64vARBFunPtr #-}
+
+-- | Usage: @'glGetnUniformi64vARB' program location bufSize params@
+
+
+glGetnUniformi64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64 -> m ()
+glGetnUniformi64vARB = ffiuintintsizeiPtrint64IOV glGetnUniformi64vARBFunPtr
+
+glGetnUniformi64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glGetnUniformi64vARBFunPtr = unsafePerformIO (getProcAddress "glGetnUniformi64vARB")
+
+{-# NOINLINE glGetnUniformi64vARBFunPtr #-}
+
+-- | Usage: @'glGetnUniformui64vARB' program location bufSize params@
+
+
+glGetnUniformui64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glGetnUniformui64vARB = ffiuintintsizeiPtruint64IOV glGetnUniformui64vARBFunPtr
+
+glGetnUniformui64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glGetnUniformui64vARBFunPtr = unsafePerformIO (getProcAddress "glGetnUniformui64vARB")
+
+{-# NOINLINE glGetnUniformui64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform1i64ARB' program location x@
+
+
+glProgramUniform1i64ARB :: MonadIO m => GLuint -> GLint -> GLint64 -> m ()
+glProgramUniform1i64ARB = ffiuintintint64IOV glProgramUniform1i64ARBFunPtr
+
+glProgramUniform1i64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLint64 -> IO ())
+glProgramUniform1i64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i64ARB")
+
+{-# NOINLINE glProgramUniform1i64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform1i64vARB' program location count value@
+--
+-- The length of @value@ should be @count@.
+
+
+glProgramUniform1i64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64 -> m ()
+glProgramUniform1i64vARB = ffiuintintsizeiPtrint64IOV glProgramUniform1i64vARBFunPtr
+
+glProgramUniform1i64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glProgramUniform1i64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i64vARB")
+
+{-# NOINLINE glProgramUniform1i64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform1ui64ARB' program location x@
+
+
+glProgramUniform1ui64ARB :: MonadIO m => GLuint -> GLint -> GLuint64 -> m ()
+glProgramUniform1ui64ARB = ffiuintintuint64IOV glProgramUniform1ui64ARBFunPtr
+
+glProgramUniform1ui64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
+glProgramUniform1ui64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui64ARB")
+
+{-# NOINLINE glProgramUniform1ui64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform1ui64vARB' program location count value@
+--
+-- The length of @value@ should be @count@.
+
+
+glProgramUniform1ui64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glProgramUniform1ui64vARB = ffiuintintsizeiPtruint64IOV glProgramUniform1ui64vARBFunPtr
+
+glProgramUniform1ui64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glProgramUniform1ui64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui64vARB")
+
+{-# NOINLINE glProgramUniform1ui64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform2i64ARB' program location x y@
+
+
+glProgramUniform2i64ARB :: MonadIO m => GLuint -> GLint -> GLint64 -> GLint64 -> m ()
+glProgramUniform2i64ARB = ffiuintintint64int64IOV glProgramUniform2i64ARBFunPtr
+
+glProgramUniform2i64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> IO ())
+glProgramUniform2i64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i64ARB")
+
+{-# NOINLINE glProgramUniform2i64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform2i64vARB' program location count value@
+--
+-- The length of @value@ should be @count*2@.
+
+
+glProgramUniform2i64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64 -> m ()
+glProgramUniform2i64vARB = ffiuintintsizeiPtrint64IOV glProgramUniform2i64vARBFunPtr
+
+glProgramUniform2i64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glProgramUniform2i64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i64vARB")
+
+{-# NOINLINE glProgramUniform2i64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform2ui64ARB' program location x y@
+
+
+glProgramUniform2ui64ARB :: MonadIO m => GLuint -> GLint -> GLuint64 -> GLuint64 -> m ()
+glProgramUniform2ui64ARB = ffiuintintuint64uint64IOV glProgramUniform2ui64ARBFunPtr
+
+glProgramUniform2ui64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> IO ())
+glProgramUniform2ui64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui64ARB")
+
+{-# NOINLINE glProgramUniform2ui64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform2ui64vARB' program location count value@
+--
+-- The length of @value@ should be @count*2@.
+
+
+glProgramUniform2ui64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glProgramUniform2ui64vARB = ffiuintintsizeiPtruint64IOV glProgramUniform2ui64vARBFunPtr
+
+glProgramUniform2ui64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glProgramUniform2ui64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui64vARB")
+
+{-# NOINLINE glProgramUniform2ui64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform3i64ARB' program location x y z@
+
+
+glProgramUniform3i64ARB :: MonadIO m => GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> m ()
+glProgramUniform3i64ARB = ffiuintintint64int64int64IOV glProgramUniform3i64ARBFunPtr
+
+glProgramUniform3i64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> IO ())
+glProgramUniform3i64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i64ARB")
+
+{-# NOINLINE glProgramUniform3i64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform3i64vARB' program location count value@
+--
+-- The length of @value@ should be @count*3@.
+
+
+glProgramUniform3i64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64 -> m ()
+glProgramUniform3i64vARB = ffiuintintsizeiPtrint64IOV glProgramUniform3i64vARBFunPtr
+
+glProgramUniform3i64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glProgramUniform3i64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i64vARB")
+
+{-# NOINLINE glProgramUniform3i64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform3ui64ARB' program location x y z@
+
+
+glProgramUniform3ui64ARB :: MonadIO m => GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+glProgramUniform3ui64ARB = ffiuintintuint64uint64uint64IOV glProgramUniform3ui64ARBFunPtr
+
+glProgramUniform3ui64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ())
+glProgramUniform3ui64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui64ARB")
+
+{-# NOINLINE glProgramUniform3ui64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform3ui64vARB' program location count value@
+--
+-- The length of @value@ should be @count*3@.
+
+
+glProgramUniform3ui64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glProgramUniform3ui64vARB = ffiuintintsizeiPtruint64IOV glProgramUniform3ui64vARBFunPtr
+
+glProgramUniform3ui64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glProgramUniform3ui64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui64vARB")
+
+{-# NOINLINE glProgramUniform3ui64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform4i64ARB' program location x y z w@
+
+
+glProgramUniform4i64ARB :: MonadIO m => GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> m ()
+glProgramUniform4i64ARB = ffiuintintint64int64int64int64IOV glProgramUniform4i64ARBFunPtr
+
+glProgramUniform4i64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ())
+glProgramUniform4i64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i64ARB")
+
+{-# NOINLINE glProgramUniform4i64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform4i64vARB' program location count value@
+--
+-- The length of @value@ should be @count*4@.
+
+
+glProgramUniform4i64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64 -> m ()
+glProgramUniform4i64vARB = ffiuintintsizeiPtrint64IOV glProgramUniform4i64vARBFunPtr
+
+glProgramUniform4i64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glProgramUniform4i64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i64vARB")
+
+{-# NOINLINE glProgramUniform4i64vARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform4ui64ARB' program location x y z w@
+
+
+glProgramUniform4ui64ARB :: MonadIO m => GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+glProgramUniform4ui64ARB = ffiuintintuint64uint64uint64uint64IOV glProgramUniform4ui64ARBFunPtr
+
+glProgramUniform4ui64ARBFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ())
+glProgramUniform4ui64ARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui64ARB")
+
+{-# NOINLINE glProgramUniform4ui64ARBFunPtr #-}
+
+-- | Usage: @'glProgramUniform4ui64vARB' program location count value@
+--
+-- The length of @value@ should be @count*4@.
+
+
+glProgramUniform4ui64vARB :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glProgramUniform4ui64vARB = ffiuintintsizeiPtruint64IOV glProgramUniform4ui64vARBFunPtr
+
+glProgramUniform4ui64vARBFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glProgramUniform4ui64vARBFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui64vARB")
+
+{-# NOINLINE glProgramUniform4ui64vARBFunPtr #-}
+
+-- | Usage: @'glUniform1i64ARB' location x@
+
+
+glUniform1i64ARB :: MonadIO m => GLint -> GLint64 -> m ()
+glUniform1i64ARB = ffiintint64IOV glUniform1i64ARBFunPtr
+
+glUniform1i64ARBFunPtr :: FunPtr (GLint -> GLint64 -> IO ())
+glUniform1i64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform1i64ARB")
+
+{-# NOINLINE glUniform1i64ARBFunPtr #-}
+
+-- | Usage: @'glUniform1i64vARB' location count value@
+--
+-- The length of @value@ should be @count*1@.
+
+
+glUniform1i64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint64 -> m ()
+glUniform1i64vARB = ffiintsizeiPtrint64IOV glUniform1i64vARBFunPtr
+
+glUniform1i64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glUniform1i64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform1i64vARB")
+
+{-# NOINLINE glUniform1i64vARBFunPtr #-}
+
+-- | Usage: @'glUniform1ui64ARB' location x@
+
+
+glUniform1ui64ARB :: MonadIO m => GLint -> GLuint64 -> m ()
+glUniform1ui64ARB = ffiintuint64IOV glUniform1ui64ARBFunPtr
+
+glUniform1ui64ARBFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
+glUniform1ui64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform1ui64ARB")
+
+{-# NOINLINE glUniform1ui64ARBFunPtr #-}
+
+-- | Usage: @'glUniform1ui64vARB' location count value@
+--
+-- The length of @value@ should be @count*1@.
+
+
+glUniform1ui64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glUniform1ui64vARB = ffiintsizeiPtruint64IOV glUniform1ui64vARBFunPtr
+
+glUniform1ui64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glUniform1ui64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform1ui64vARB")
+
+{-# NOINLINE glUniform1ui64vARBFunPtr #-}
+
+-- | Usage: @'glUniform2i64ARB' location x y@
+
+
+glUniform2i64ARB :: MonadIO m => GLint -> GLint64 -> GLint64 -> m ()
+glUniform2i64ARB = ffiintint64int64IOV glUniform2i64ARBFunPtr
+
+glUniform2i64ARBFunPtr :: FunPtr (GLint -> GLint64 -> GLint64 -> IO ())
+glUniform2i64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform2i64ARB")
+
+{-# NOINLINE glUniform2i64ARBFunPtr #-}
+
+-- | Usage: @'glUniform2i64vARB' location count value@
+--
+-- The length of @value@ should be @count*2@.
+
+
+glUniform2i64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint64 -> m ()
+glUniform2i64vARB = ffiintsizeiPtrint64IOV glUniform2i64vARBFunPtr
+
+glUniform2i64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glUniform2i64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform2i64vARB")
+
+{-# NOINLINE glUniform2i64vARBFunPtr #-}
+
+-- | Usage: @'glUniform2ui64ARB' location x y@
+
+
+glUniform2ui64ARB :: MonadIO m => GLint -> GLuint64 -> GLuint64 -> m ()
+glUniform2ui64ARB = ffiintuint64uint64IOV glUniform2ui64ARBFunPtr
+
+glUniform2ui64ARBFunPtr :: FunPtr (GLint -> GLuint64 -> GLuint64 -> IO ())
+glUniform2ui64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform2ui64ARB")
+
+{-# NOINLINE glUniform2ui64ARBFunPtr #-}
+
+-- | Usage: @'glUniform2ui64vARB' location count value@
+--
+-- The length of @value@ should be @count*2@.
+
+
+glUniform2ui64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glUniform2ui64vARB = ffiintsizeiPtruint64IOV glUniform2ui64vARBFunPtr
+
+glUniform2ui64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glUniform2ui64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform2ui64vARB")
+
+{-# NOINLINE glUniform2ui64vARBFunPtr #-}
+
+-- | Usage: @'glUniform3i64ARB' location x y z@
+
+
+glUniform3i64ARB :: MonadIO m => GLint -> GLint64 -> GLint64 -> GLint64 -> m ()
+glUniform3i64ARB = ffiintint64int64int64IOV glUniform3i64ARBFunPtr
+
+glUniform3i64ARBFunPtr :: FunPtr (GLint -> GLint64 -> GLint64 -> GLint64 -> IO ())
+glUniform3i64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform3i64ARB")
+
+{-# NOINLINE glUniform3i64ARBFunPtr #-}
+
+-- | Usage: @'glUniform3i64vARB' location count value@
+--
+-- The length of @value@ should be @count*3@.
+
+
+glUniform3i64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint64 -> m ()
+glUniform3i64vARB = ffiintsizeiPtrint64IOV glUniform3i64vARBFunPtr
+
+glUniform3i64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glUniform3i64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform3i64vARB")
+
+{-# NOINLINE glUniform3i64vARBFunPtr #-}
+
+-- | Usage: @'glUniform3ui64ARB' location x y z@
+
+
+glUniform3ui64ARB :: MonadIO m => GLint -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+glUniform3ui64ARB = ffiintuint64uint64uint64IOV glUniform3ui64ARBFunPtr
+
+glUniform3ui64ARBFunPtr :: FunPtr (GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ())
+glUniform3ui64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform3ui64ARB")
+
+{-# NOINLINE glUniform3ui64ARBFunPtr #-}
+
+-- | Usage: @'glUniform3ui64vARB' location count value@
+--
+-- The length of @value@ should be @count*3@.
+
+
+glUniform3ui64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glUniform3ui64vARB = ffiintsizeiPtruint64IOV glUniform3ui64vARBFunPtr
+
+glUniform3ui64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glUniform3ui64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform3ui64vARB")
+
+{-# NOINLINE glUniform3ui64vARBFunPtr #-}
+
+-- | Usage: @'glUniform4i64ARB' location x y z w@
+
+
+glUniform4i64ARB :: MonadIO m => GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> m ()
+glUniform4i64ARB = ffiintint64int64int64int64IOV glUniform4i64ARBFunPtr
+
+glUniform4i64ARBFunPtr :: FunPtr (GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ())
+glUniform4i64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform4i64ARB")
+
+{-# NOINLINE glUniform4i64ARBFunPtr #-}
+
+-- | Usage: @'glUniform4i64vARB' location count value@
+--
+-- The length of @value@ should be @count*4@.
+
+
+glUniform4i64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint64 -> m ()
+glUniform4i64vARB = ffiintsizeiPtrint64IOV glUniform4i64vARBFunPtr
+
+glUniform4i64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64 -> IO ())
+glUniform4i64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform4i64vARB")
+
+{-# NOINLINE glUniform4i64vARBFunPtr #-}
+
+-- | Usage: @'glUniform4ui64ARB' location x y z w@
+
+
+glUniform4ui64ARB :: MonadIO m => GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+glUniform4ui64ARB = ffiintuint64uint64uint64uint64IOV glUniform4ui64ARBFunPtr
+
+glUniform4ui64ARBFunPtr :: FunPtr (GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ())
+glUniform4ui64ARBFunPtr = unsafePerformIO (getProcAddress "glUniform4ui64ARB")
+
+{-# NOINLINE glUniform4ui64ARBFunPtr #-}
+
+-- | Usage: @'glUniform4ui64vARB' location count value@
+--
+-- The length of @value@ should be @count*4@.
+
+
+glUniform4ui64vARB :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glUniform4ui64vARB = ffiintsizeiPtruint64IOV glUniform4ui64vARBFunPtr
+
+glUniform4ui64vARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glUniform4ui64vARBFunPtr = unsafePerformIO (getProcAddress "glUniform4ui64vARB")
+
+{-# NOINLINE glUniform4ui64vARBFunPtr #-}
+
+pattern GL_INT64_ARB = 0x140E
+
+pattern GL_INT64_VEC2_ARB = 0x8FE9
+
+pattern GL_INT64_VEC3_ARB = 0x8FEA
+
+pattern GL_INT64_VEC4_ARB = 0x8FEB
+
+pattern GL_UNSIGNED_INT64_VEC2_ARB = 0x8FF5
+
+pattern GL_UNSIGNED_INT64_VEC3_ARB = 0x8FF6
+
+pattern GL_UNSIGNED_INT64_VEC4_ARB = 0x8FF7
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/ParallelShaderCompile.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/ParallelShaderCompile.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/ParallelShaderCompile.hs
@@ -0,0 +1,40 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.ParallelShaderCompile (
+  -- * Extension Support
+    gl_ARB_parallel_shader_compile
+
+  -- * GL_ARB_parallel_shader_compile
+  , glMaxShaderCompilerThreadsARB
+  , pattern GL_COMPLETION_STATUS_ARB
+  , pattern GL_MAX_SHADER_COMPILER_THREADS_ARB
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/parallel_shader_compile.txt GL_ARB_parallel_shader_compile> extension is available.
+
+gl_ARB_parallel_shader_compile :: Bool
+gl_ARB_parallel_shader_compile = member "GL_ARB_parallel_shader_compile" extensions
+{-# NOINLINE gl_ARB_parallel_shader_compile #-}
+
+-- | Usage: @'glMaxShaderCompilerThreadsARB' count@
+
+
+glMaxShaderCompilerThreadsARB :: MonadIO m => GLuint -> m ()
+glMaxShaderCompilerThreadsARB = ffiuintIOV glMaxShaderCompilerThreadsARBFunPtr
+
+glMaxShaderCompilerThreadsARBFunPtr :: FunPtr (GLuint -> IO ())
+glMaxShaderCompilerThreadsARBFunPtr = unsafePerformIO (getProcAddress "glMaxShaderCompilerThreadsARB")
+
+{-# NOINLINE glMaxShaderCompilerThreadsARBFunPtr #-}
+
+pattern GL_COMPLETION_STATUS_ARB = 0x91B1
+
+pattern GL_MAX_SHADER_COMPILER_THREADS_ARB = 0x91B0
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/PostDepthCoverage.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/PostDepthCoverage.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/PostDepthCoverage.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.PostDepthCoverage (
+  -- * Extension Support
+    gl_ARB_post_depth_coverage
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/post_depth_coverage.txt GL_ARB_post_depth_coverage> extension is available.
+
+gl_ARB_post_depth_coverage :: Bool
+gl_ARB_post_depth_coverage = member "GL_ARB_post_depth_coverage" extensions
+{-# NOINLINE gl_ARB_post_depth_coverage #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/SampleLocations.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/SampleLocations.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/SampleLocations.hs
@@ -0,0 +1,82 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.SampleLocations (
+  -- * Extension Support
+    gl_ARB_sample_locations
+
+  -- * GL_ARB_sample_locations
+  , glEvaluateDepthValuesARB
+  , glFramebufferSampleLocationsfvARB
+  , glNamedFramebufferSampleLocationsfvARB
+  , pattern GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB
+  , pattern GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB
+  , pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB
+  , pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB
+  , pattern GL_SAMPLE_LOCATION_ARB
+  , pattern GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB
+  , pattern GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB
+  , pattern GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sample_locations.txt GL_ARB_sample_locations> extension is available.
+
+gl_ARB_sample_locations :: Bool
+gl_ARB_sample_locations = member "GL_ARB_sample_locations" extensions
+{-# NOINLINE gl_ARB_sample_locations #-}
+
+-- | Usage: @'glEvaluateDepthValuesARB'@
+
+
+glEvaluateDepthValuesARB :: MonadIO m => m ()
+glEvaluateDepthValuesARB = ffiIOV glEvaluateDepthValuesARBFunPtr
+
+glEvaluateDepthValuesARBFunPtr :: FunPtr (IO ())
+glEvaluateDepthValuesARBFunPtr = unsafePerformIO (getProcAddress "glEvaluateDepthValuesARB")
+
+{-# NOINLINE glEvaluateDepthValuesARBFunPtr #-}
+
+-- | Usage: @'glFramebufferSampleLocationsfvARB' target start count v@
+
+
+glFramebufferSampleLocationsfvARB :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glFramebufferSampleLocationsfvARB = ffienumuintsizeiPtrfloatIOV glFramebufferSampleLocationsfvARBFunPtr
+
+glFramebufferSampleLocationsfvARBFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glFramebufferSampleLocationsfvARBFunPtr = unsafePerformIO (getProcAddress "glFramebufferSampleLocationsfvARB")
+
+{-# NOINLINE glFramebufferSampleLocationsfvARBFunPtr #-}
+
+-- | Usage: @'glNamedFramebufferSampleLocationsfvARB' framebuffer start count v@
+
+
+glNamedFramebufferSampleLocationsfvARB :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glNamedFramebufferSampleLocationsfvARB = ffiuintuintsizeiPtrfloatIOV glNamedFramebufferSampleLocationsfvARBFunPtr
+
+glNamedFramebufferSampleLocationsfvARBFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glNamedFramebufferSampleLocationsfvARBFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferSampleLocationsfvARB")
+
+{-# NOINLINE glNamedFramebufferSampleLocationsfvARBFunPtr #-}
+
+pattern GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB = 0x9342
+
+pattern GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB = 0x9343
+
+pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB = 0x9341
+
+pattern GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB = 0x9340
+
+pattern GL_SAMPLE_LOCATION_ARB = 0x8E50
+
+pattern GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB = 0x933F
+
+pattern GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB = 0x933E
+
+pattern GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB = 0x933D
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/SampleShading.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/SampleShading.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ARB/SampleShading.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/SampleShading.hs
@@ -28,7 +28,7 @@
 --
 -- The parameter @value@ is a @ColorF@.
 --
--- This command is an alias for 'Graphics.GL.Core40.glMinSampleShading'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glMinSampleShading'.
 
 
 glMinSampleShadingARB :: MonadIO m => GLfloat -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderAtomicCounterOps.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderAtomicCounterOps.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderAtomicCounterOps.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.ShaderAtomicCounterOps (
+  -- * Extension Support
+    gl_ARB_shader_atomic_counter_ops
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_atomic_counter_ops.txt GL_ARB_shader_atomic_counter_ops> extension is available.
+
+gl_ARB_shader_atomic_counter_ops :: Bool
+gl_ARB_shader_atomic_counter_ops = member "GL_ARB_shader_atomic_counter_ops" extensions
+{-# NOINLINE gl_ARB_shader_atomic_counter_ops #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderBallot.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderBallot.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderBallot.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.ShaderBallot (
+  -- * Extension Support
+    gl_ARB_shader_ballot
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_ballot.txt GL_ARB_shader_ballot> extension is available.
+
+gl_ARB_shader_ballot :: Bool
+gl_ARB_shader_ballot = member "GL_ARB_shader_ballot" extensions
+{-# NOINLINE gl_ARB_shader_ballot #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderClock.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderClock.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderClock.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.ShaderClock (
+  -- * Extension Support
+    gl_ARB_shader_clock
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_clock.txt GL_ARB_shader_clock> extension is available.
+
+gl_ARB_shader_clock :: Bool
+gl_ARB_shader_clock = member "GL_ARB_shader_clock" extensions
+{-# NOINLINE gl_ARB_shader_clock #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderViewportLayerArray.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderViewportLayerArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/ShaderViewportLayerArray.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.ShaderViewportLayerArray (
+  -- * Extension Support
+    gl_ARB_shader_viewport_layer_array
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_viewport_layer_array.txt GL_ARB_shader_viewport_layer_array> extension is available.
+
+gl_ARB_shader_viewport_layer_array :: Bool
+gl_ARB_shader_viewport_layer_array = member "GL_ARB_shader_viewport_layer_array" extensions
+{-# NOINLINE gl_ARB_shader_viewport_layer_array #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTexture.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTexture.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTexture.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTexture.hs
@@ -19,15 +19,30 @@
   , pattern GL_VIRTUAL_PAGE_SIZE_Z_ARB
 ) where
 
+import Control.Monad.IO.Class
 import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
 import Graphics.GL.Internal.Proc
-import Graphics.GL.Internal.Shared
+import Graphics.GL.Types
+import System.IO.Unsafe
 
 -- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sparse_texture.txt GL_ARB_sparse_texture> extension is available.
 
 gl_ARB_sparse_texture :: Bool
 gl_ARB_sparse_texture = member "GL_ARB_sparse_texture" extensions
 {-# NOINLINE gl_ARB_sparse_texture #-}
+
+-- | Usage: @'glTexPageCommitmentARB' target level xoffset yoffset zoffset width height depth commit@
+
+
+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
 
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTexture2.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTexture2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTexture2.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.SparseTexture2 (
+  -- * Extension Support
+    gl_ARB_sparse_texture2
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sparse_texture2.txt GL_ARB_sparse_texture2> extension is available.
+
+gl_ARB_sparse_texture2 :: Bool
+gl_ARB_sparse_texture2 = member "GL_ARB_sparse_texture2" extensions
+{-# NOINLINE gl_ARB_sparse_texture2 #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTextureClamp.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTextureClamp.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/SparseTextureClamp.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.SparseTextureClamp (
+  -- * Extension Support
+    gl_ARB_sparse_texture_clamp
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sparse_texture_clamp.txt GL_ARB_sparse_texture_clamp> extension is available.
+
+gl_ARB_sparse_texture_clamp :: Bool
+gl_ARB_sparse_texture_clamp = member "GL_ARB_sparse_texture_clamp" extensions
+{-# NOINLINE gl_ARB_sparse_texture_clamp #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/ARB/TextureFilterMinmax.hs b/dist/build/autogen/Graphics/GL/Ext/ARB/TextureFilterMinmax.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/ARB/TextureFilterMinmax.hs
@@ -0,0 +1,23 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.ARB.TextureFilterMinmax (
+  -- * Extension Support
+    gl_ARB_texture_filter_minmax
+
+  -- * GL_ARB_texture_filter_minmax
+  , pattern GL_TEXTURE_REDUCTION_MODE_ARB
+  , pattern GL_WEIGHTED_AVERAGE_ARB
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_filter_minmax.txt GL_ARB_texture_filter_minmax> extension is available.
+
+gl_ARB_texture_filter_minmax :: Bool
+gl_ARB_texture_filter_minmax = member "GL_ARB_texture_filter_minmax" extensions
+{-# NOINLINE gl_ARB_texture_filter_minmax #-}
+
+pattern GL_TEXTURE_REDUCTION_MODE_ARB = 0x9366
+
+pattern GL_WEIGHTED_AVERAGE_ARB = 0x9367
diff --git a/dist/build/autogen/Graphics/GL/Ext/ATI/ElementArray.hs b/dist/build/autogen/Graphics/GL/Ext/ATI/ElementArray.hs
--- a/dist/build/autogen/Graphics/GL/Ext/ATI/ElementArray.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/ATI/ElementArray.hs
@@ -29,7 +29,7 @@
 
 -- | Usage: @'glDrawElementArrayATI' mode count@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 
 
 glDrawElementArrayATI :: MonadIO m => GLenum -> GLsizei -> m ()
@@ -42,7 +42,7 @@
 
 -- | Usage: @'glDrawRangeElementArrayATI' mode start end count@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 
 
 glDrawRangeElementArrayATI :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT.hs b/dist/build/autogen/Graphics/GL/Ext/EXT.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT.hs
@@ -8,16 +8,21 @@
   , module Graphics.GL.Ext.EXT.BindableUniform
   , module Graphics.GL.Ext.EXT.BlendColor
   , module Graphics.GL.Ext.EXT.BlendEquationSeparate
+  , module Graphics.GL.Ext.EXT.BlendFuncExtended
   , module Graphics.GL.Ext.EXT.BlendFuncSeparate
   , module Graphics.GL.Ext.EXT.BlendLogicOp
   , module Graphics.GL.Ext.EXT.BlendMinmax
   , module Graphics.GL.Ext.EXT.BlendSubtract
   , module Graphics.GL.Ext.EXT.BufferStorage
+  , module Graphics.GL.Ext.EXT.ClearTexture
+  , module Graphics.GL.Ext.EXT.ClipCullDistance
   , module Graphics.GL.Ext.EXT.ClipVolumeHint
   , module Graphics.GL.Ext.EXT.Cmyka
+  , module Graphics.GL.Ext.EXT.ColorBufferFloat
   , module Graphics.GL.Ext.EXT.ColorBufferHalfFloat
   , module Graphics.GL.Ext.EXT.ColorSubtable
   , module Graphics.GL.Ext.EXT.CompiledVertexArray
+  , module Graphics.GL.Ext.EXT.ConservativeDepth
   , module Graphics.GL.Ext.EXT.Convolution
   , module Graphics.GL.Ext.EXT.CoordinateFrame
   , module Graphics.GL.Ext.EXT.CopyImage
@@ -35,6 +40,7 @@
   , module Graphics.GL.Ext.EXT.DrawElementsBaseVertex
   , module Graphics.GL.Ext.EXT.DrawInstanced
   , module Graphics.GL.Ext.EXT.DrawRangeElements
+  , module Graphics.GL.Ext.EXT.DrawTransformFeedback
   , module Graphics.GL.Ext.EXT.FloatBlend
   , module Graphics.GL.Ext.EXT.FogCoord
   , module Graphics.GL.Ext.EXT.FourTwoTwoPixels
@@ -61,6 +67,7 @@
   , module Graphics.GL.Ext.EXT.MultiDrawArrays
   , module Graphics.GL.Ext.EXT.MultiDrawIndirect
   , module Graphics.GL.Ext.EXT.Multisample
+  , module Graphics.GL.Ext.EXT.MultisampleCompatibility
   , module Graphics.GL.Ext.EXT.MultisampledRenderToTexture
   , module Graphics.GL.Ext.EXT.MultiviewDrawBuffers
   , module Graphics.GL.Ext.EXT.OcclusionQueryBoolean
@@ -76,6 +83,7 @@
   , module Graphics.GL.Ext.EXT.PolygonOffsetClamp
   , module Graphics.GL.Ext.EXT.PostDepthCoverage
   , module Graphics.GL.Ext.EXT.PrimitiveBoundingBox
+  , module Graphics.GL.Ext.EXT.ProtectedTextures
   , module Graphics.GL.Ext.EXT.ProvokingVertex
   , module Graphics.GL.Ext.EXT.PvrtcSRGB
   , module Graphics.GL.Ext.EXT.RasterMultisample
@@ -89,12 +97,15 @@
   , module Graphics.GL.Ext.EXT.SeparateShaderObjects
   , module Graphics.GL.Ext.EXT.SeparateSpecularColor
   , module Graphics.GL.Ext.EXT.ShaderFramebufferFetch
+  , module Graphics.GL.Ext.EXT.ShaderGroupVote
   , module Graphics.GL.Ext.EXT.ShaderImageLoadFormatted
   , module Graphics.GL.Ext.EXT.ShaderImageLoadStore
   , module Graphics.GL.Ext.EXT.ShaderImplicitConversions
   , module Graphics.GL.Ext.EXT.ShaderIntegerMix
   , module Graphics.GL.Ext.EXT.ShaderIoBlocks
+  , module Graphics.GL.Ext.EXT.ShaderNonConstantGlobalInitializers
   , module Graphics.GL.Ext.EXT.ShaderPixelLocalStorage
+  , module Graphics.GL.Ext.EXT.ShaderPixelLocalStorage2
   , module Graphics.GL.Ext.EXT.ShaderTextureLod
   , module Graphics.GL.Ext.EXT.ShadowFuncs
   , module Graphics.GL.Ext.EXT.ShadowSamplers
@@ -150,6 +161,7 @@
   , module Graphics.GL.Ext.EXT.VertexAttrib64bit
   , module Graphics.GL.Ext.EXT.VertexShader
   , module Graphics.GL.Ext.EXT.VertexWeighting
+  , module Graphics.GL.Ext.EXT.WindowRectangles
   , module Graphics.GL.Ext.EXT.X11SyncObject
   , module Graphics.GL.Ext.EXT.YUVTarget
 ) where
@@ -160,16 +172,21 @@
 import Graphics.GL.Ext.EXT.BindableUniform
 import Graphics.GL.Ext.EXT.BlendColor
 import Graphics.GL.Ext.EXT.BlendEquationSeparate
+import Graphics.GL.Ext.EXT.BlendFuncExtended
 import Graphics.GL.Ext.EXT.BlendFuncSeparate
 import Graphics.GL.Ext.EXT.BlendLogicOp
 import Graphics.GL.Ext.EXT.BlendMinmax
 import Graphics.GL.Ext.EXT.BlendSubtract
 import Graphics.GL.Ext.EXT.BufferStorage
+import Graphics.GL.Ext.EXT.ClearTexture
+import Graphics.GL.Ext.EXT.ClipCullDistance
 import Graphics.GL.Ext.EXT.ClipVolumeHint
 import Graphics.GL.Ext.EXT.Cmyka
+import Graphics.GL.Ext.EXT.ColorBufferFloat
 import Graphics.GL.Ext.EXT.ColorBufferHalfFloat
 import Graphics.GL.Ext.EXT.ColorSubtable
 import Graphics.GL.Ext.EXT.CompiledVertexArray
+import Graphics.GL.Ext.EXT.ConservativeDepth
 import Graphics.GL.Ext.EXT.Convolution
 import Graphics.GL.Ext.EXT.CoordinateFrame
 import Graphics.GL.Ext.EXT.CopyImage
@@ -187,6 +204,7 @@
 import Graphics.GL.Ext.EXT.DrawElementsBaseVertex
 import Graphics.GL.Ext.EXT.DrawInstanced
 import Graphics.GL.Ext.EXT.DrawRangeElements
+import Graphics.GL.Ext.EXT.DrawTransformFeedback
 import Graphics.GL.Ext.EXT.FloatBlend
 import Graphics.GL.Ext.EXT.FogCoord
 import Graphics.GL.Ext.EXT.FourTwoTwoPixels
@@ -213,6 +231,7 @@
 import Graphics.GL.Ext.EXT.MultiDrawArrays
 import Graphics.GL.Ext.EXT.MultiDrawIndirect
 import Graphics.GL.Ext.EXT.Multisample
+import Graphics.GL.Ext.EXT.MultisampleCompatibility
 import Graphics.GL.Ext.EXT.MultisampledRenderToTexture
 import Graphics.GL.Ext.EXT.MultiviewDrawBuffers
 import Graphics.GL.Ext.EXT.OcclusionQueryBoolean
@@ -228,6 +247,7 @@
 import Graphics.GL.Ext.EXT.PolygonOffsetClamp
 import Graphics.GL.Ext.EXT.PostDepthCoverage
 import Graphics.GL.Ext.EXT.PrimitiveBoundingBox
+import Graphics.GL.Ext.EXT.ProtectedTextures
 import Graphics.GL.Ext.EXT.ProvokingVertex
 import Graphics.GL.Ext.EXT.PvrtcSRGB
 import Graphics.GL.Ext.EXT.RasterMultisample
@@ -241,12 +261,15 @@
 import Graphics.GL.Ext.EXT.SeparateShaderObjects
 import Graphics.GL.Ext.EXT.SeparateSpecularColor
 import Graphics.GL.Ext.EXT.ShaderFramebufferFetch
+import Graphics.GL.Ext.EXT.ShaderGroupVote
 import Graphics.GL.Ext.EXT.ShaderImageLoadFormatted
 import Graphics.GL.Ext.EXT.ShaderImageLoadStore
 import Graphics.GL.Ext.EXT.ShaderImplicitConversions
 import Graphics.GL.Ext.EXT.ShaderIntegerMix
 import Graphics.GL.Ext.EXT.ShaderIoBlocks
+import Graphics.GL.Ext.EXT.ShaderNonConstantGlobalInitializers
 import Graphics.GL.Ext.EXT.ShaderPixelLocalStorage
+import Graphics.GL.Ext.EXT.ShaderPixelLocalStorage2
 import Graphics.GL.Ext.EXT.ShaderTextureLod
 import Graphics.GL.Ext.EXT.ShadowFuncs
 import Graphics.GL.Ext.EXT.ShadowSamplers
@@ -302,5 +325,6 @@
 import Graphics.GL.Ext.EXT.VertexAttrib64bit
 import Graphics.GL.Ext.EXT.VertexShader
 import Graphics.GL.Ext.EXT.VertexWeighting
+import Graphics.GL.Ext.EXT.WindowRectangles
 import Graphics.GL.Ext.EXT.X11SyncObject
 import Graphics.GL.Ext.EXT.YUVTarget
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/BaseInstance.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/BaseInstance.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/BaseInstance.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/BaseInstance.hs
@@ -26,7 +26,7 @@
 
 -- | Usage: @'glDrawArraysInstancedBaseInstanceEXT' mode first count instancecount baseinstance@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawArraysInstancedBaseInstance'.
 
@@ -41,7 +41,7 @@
 
 -- | Usage: @'glDrawElementsInstancedBaseInstanceEXT' mode count type indices instancecount baseinstance@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @indices@ should be @count@.
 --
@@ -58,7 +58,7 @@
 
 -- | Usage: @'glDrawElementsInstancedBaseVertexBaseInstanceEXT' mode count type indices instancecount basevertex baseinstance@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @indices@ should be @count@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/BlendFuncExtended.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/BlendFuncExtended.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/BlendFuncExtended.hs
@@ -0,0 +1,87 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.BlendFuncExtended (
+  -- * Extension Support
+    gl_EXT_blend_func_extended
+
+  -- * GL_EXT_blend_func_extended
+  , glBindFragDataLocationEXT
+  , glBindFragDataLocationIndexedEXT
+  , glGetFragDataIndexEXT
+  , glGetProgramResourceLocationIndexEXT
+  , pattern GL_LOCATION_INDEX_EXT
+  , pattern GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT
+  , pattern GL_ONE_MINUS_SRC1_ALPHA_EXT
+  , pattern GL_ONE_MINUS_SRC1_COLOR_EXT
+  , pattern GL_SRC1_ALPHA_EXT
+  , pattern GL_SRC1_COLOR_EXT
+  , pattern GL_SRC_ALPHA_SATURATE_EXT
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the GL_EXT_blend_func_extended extension is available.
+
+gl_EXT_blend_func_extended :: Bool
+gl_EXT_blend_func_extended = member "GL_EXT_blend_func_extended" extensions
+{-# NOINLINE gl_EXT_blend_func_extended #-}
+
+-- | Usage: @'glBindFragDataLocationIndexedEXT' program colorNumber index name@
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBindFragDataLocationIndexed'.
+
+
+glBindFragDataLocationIndexedEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> Ptr GLchar -> m ()
+glBindFragDataLocationIndexedEXT = ffiuintuintuintPtrcharIOV glBindFragDataLocationIndexedEXTFunPtr
+
+glBindFragDataLocationIndexedEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLchar -> IO ())
+glBindFragDataLocationIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocationIndexedEXT")
+
+{-# NOINLINE glBindFragDataLocationIndexedEXTFunPtr #-}
+
+-- | Usage: @'glGetFragDataIndexEXT' program name@
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetFragDataIndex'.
+
+
+glGetFragDataIndexEXT :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
+glGetFragDataIndexEXT = ffiuintPtrcharIOint glGetFragDataIndexEXTFunPtr
+
+glGetFragDataIndexEXTFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
+glGetFragDataIndexEXTFunPtr = unsafePerformIO (getProcAddress "glGetFragDataIndexEXT")
+
+{-# NOINLINE glGetFragDataIndexEXTFunPtr #-}
+
+-- | Usage: @'glGetProgramResourceLocationIndexEXT' program programInterface name@
+--
+-- The length of @name@ should be @COMPSIZE(name)@.
+
+
+glGetProgramResourceLocationIndexEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLint
+glGetProgramResourceLocationIndexEXT = ffiuintenumPtrcharIOint glGetProgramResourceLocationIndexEXTFunPtr
+
+glGetProgramResourceLocationIndexEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLint)
+glGetProgramResourceLocationIndexEXTFunPtr = unsafePerformIO (getProcAddress "glGetProgramResourceLocationIndexEXT")
+
+{-# NOINLINE glGetProgramResourceLocationIndexEXTFunPtr #-}
+
+pattern GL_LOCATION_INDEX_EXT = 0x930F
+
+pattern GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT = 0x88FC
+
+pattern GL_ONE_MINUS_SRC1_ALPHA_EXT = 0x88FB
+
+pattern GL_ONE_MINUS_SRC1_COLOR_EXT = 0x88FA
+
+pattern GL_SRC1_ALPHA_EXT = 0x8589
+
+pattern GL_SRC1_COLOR_EXT = 0x88F9
+
+pattern GL_SRC_ALPHA_SATURATE_EXT = 0x0308
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/BufferStorage.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/BufferStorage.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/BufferStorage.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/BufferStorage.hs
@@ -6,13 +6,13 @@
 
   -- * GL_EXT_buffer_storage
   , glBufferStorageEXT
-  , 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_BUFFER_IMMUTABLE_STORAGE_EXT
+  , pattern GL_BUFFER_STORAGE_FLAGS_EXT
+  , pattern GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT
+  , pattern GL_CLIENT_STORAGE_BIT_EXT
+  , pattern GL_DYNAMIC_STORAGE_BIT_EXT
+  , pattern GL_MAP_COHERENT_BIT_EXT
+  , pattern GL_MAP_PERSISTENT_BIT_EXT
   , pattern GL_MAP_READ_BIT
   , pattern GL_MAP_WRITE_BIT
 ) where
@@ -46,3 +46,17 @@
 glBufferStorageEXTFunPtr = unsafePerformIO (getProcAddress "glBufferStorageEXT")
 
 {-# NOINLINE glBufferStorageEXTFunPtr #-}
+
+pattern GL_BUFFER_IMMUTABLE_STORAGE_EXT = 0x821F
+
+pattern GL_BUFFER_STORAGE_FLAGS_EXT = 0x8220
+
+pattern GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT = 0x00004000
+
+pattern GL_CLIENT_STORAGE_BIT_EXT = 0x0200
+
+pattern GL_DYNAMIC_STORAGE_BIT_EXT = 0x0100
+
+pattern GL_MAP_COHERENT_BIT_EXT = 0x0080
+
+pattern GL_MAP_PERSISTENT_BIT_EXT = 0x0040
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ClearTexture.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ClearTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ClearTexture.hs
@@ -0,0 +1,54 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ClearTexture (
+  -- * Extension Support
+    gl_EXT_clear_texture
+
+  -- * GL_EXT_clear_texture
+  , glClearTexImageEXT
+  , glClearTexSubImageEXT
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clear_texture.txt GL_EXT_clear_texture> extension is available.
+
+gl_EXT_clear_texture :: Bool
+gl_EXT_clear_texture = member "GL_EXT_clear_texture" extensions
+{-# NOINLINE gl_EXT_clear_texture #-}
+
+-- | Usage: @'glClearTexImageEXT' texture level format type data@
+--
+-- The length of @data@ should be @COMPSIZE(format,type)@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glClearTexImage'.
+
+
+glClearTexImageEXT :: MonadIO m => GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
+glClearTexImageEXT = ffiuintintenumenumPtrVIOV glClearTexImageEXTFunPtr
+
+glClearTexImageEXTFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
+glClearTexImageEXTFunPtr = unsafePerformIO (getProcAddress "glClearTexImageEXT")
+
+{-# NOINLINE glClearTexImageEXTFunPtr #-}
+
+-- | Usage: @'glClearTexSubImageEXT' texture level xoffset yoffset zoffset width height depth format type data@
+--
+-- The length of @data@ should be @COMPSIZE(format,type)@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glClearTexSubImage'.
+
+
+glClearTexSubImageEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
+glClearTexSubImageEXT = ffiuintintintintintsizeisizeisizeienumenumPtrVIOV glClearTexSubImageEXTFunPtr
+
+glClearTexSubImageEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glClearTexSubImageEXTFunPtr = unsafePerformIO (getProcAddress "glClearTexSubImageEXT")
+
+{-# NOINLINE glClearTexSubImageEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ClipCullDistance.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ClipCullDistance.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ClipCullDistance.hs
@@ -0,0 +1,50 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ClipCullDistance (
+  -- * Extension Support
+    gl_EXT_clip_cull_distance
+
+  -- * GL_EXT_clip_cull_distance
+  , pattern GL_CLIP_DISTANCE0_EXT
+  , pattern GL_CLIP_DISTANCE1_EXT
+  , pattern GL_CLIP_DISTANCE2_EXT
+  , pattern GL_CLIP_DISTANCE3_EXT
+  , pattern GL_CLIP_DISTANCE4_EXT
+  , pattern GL_CLIP_DISTANCE5_EXT
+  , pattern GL_CLIP_DISTANCE6_EXT
+  , pattern GL_CLIP_DISTANCE7_EXT
+  , pattern GL_MAX_CLIP_DISTANCES_EXT
+  , pattern GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT
+  , pattern GL_MAX_CULL_DISTANCES_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_cull_distance.txt GL_EXT_clip_cull_distance> extension is available.
+
+gl_EXT_clip_cull_distance :: Bool
+gl_EXT_clip_cull_distance = member "GL_EXT_clip_cull_distance" extensions
+{-# NOINLINE gl_EXT_clip_cull_distance #-}
+
+pattern GL_CLIP_DISTANCE0_EXT = 0x3000
+
+pattern GL_CLIP_DISTANCE1_EXT = 0x3001
+
+pattern GL_CLIP_DISTANCE2_EXT = 0x3002
+
+pattern GL_CLIP_DISTANCE3_EXT = 0x3003
+
+pattern GL_CLIP_DISTANCE4_EXT = 0x3004
+
+pattern GL_CLIP_DISTANCE5_EXT = 0x3005
+
+pattern GL_CLIP_DISTANCE6_EXT = 0x3006
+
+pattern GL_CLIP_DISTANCE7_EXT = 0x3007
+
+pattern GL_MAX_CLIP_DISTANCES_EXT = 0x0D32
+
+pattern GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT = 0x82FA
+
+pattern GL_MAX_CULL_DISTANCES_EXT = 0x82F9
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ColorBufferFloat.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ColorBufferFloat.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ColorBufferFloat.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ColorBufferFloat (
+  -- * Extension Support
+    gl_EXT_color_buffer_float
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/gles/extensions/EXT/EXT_color_buffer_float.txt GL_EXT_color_buffer_float> extension is available.
+
+gl_EXT_color_buffer_float :: Bool
+gl_EXT_color_buffer_float = member "GL_EXT_color_buffer_float" extensions
+{-# NOINLINE gl_EXT_color_buffer_float #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ConservativeDepth.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ConservativeDepth.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ConservativeDepth.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ConservativeDepth (
+  -- * Extension Support
+    gl_EXT_conservative_depth
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_conservative_depth.txt GL_EXT_conservative_depth> extension is available.
+
+gl_EXT_conservative_depth :: Bool
+gl_EXT_conservative_depth = member "GL_EXT_conservative_depth" extensions
+{-# NOINLINE gl_EXT_conservative_depth #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/DirectStateAccess.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/DirectStateAccess.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/DirectStateAccess.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/DirectStateAccess.hs
@@ -3169,7 +3169,7 @@
 
 -- | Usage: @'glProgramUniform2dvEXT' program location count value@
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*2@.
 
 
 glProgramUniform2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
@@ -3193,7 +3193,7 @@
 
 -- | Usage: @'glProgramUniform3dvEXT' program location count value@
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*3@.
 
 
 glProgramUniform3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
@@ -3217,7 +3217,7 @@
 
 -- | Usage: @'glProgramUniform4dvEXT' program location count value@
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniform4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
@@ -3232,7 +3232,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniformMatrix2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3247,7 +3247,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*6@.
 
 
 glProgramUniformMatrix2x3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3262,7 +3262,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*8@.
 
 
 glProgramUniformMatrix2x4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3277,7 +3277,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*9@.
 
 
 glProgramUniformMatrix3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3292,7 +3292,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*6@.
 
 
 glProgramUniformMatrix3x2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3307,7 +3307,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*12@.
 
 
 glProgramUniformMatrix3x4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3322,7 +3322,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*16@.
 
 
 glProgramUniformMatrix4dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3337,7 +3337,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*8@.
 
 
 glProgramUniformMatrix4x2dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -3352,7 +3352,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*12@.
 
 
 glProgramUniformMatrix4x3dvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/DrawBuffersIndexed.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawBuffersIndexed.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/DrawBuffersIndexed.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawBuffersIndexed.hs
@@ -60,7 +60,7 @@
 
 -- | Usage: @'glBlendEquationSeparateiEXT' buf modeRGB modeAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationSeparatei'.
 
 
 glBlendEquationSeparateiEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
@@ -73,7 +73,7 @@
 
 -- | Usage: @'glBlendEquationiEXT' buf mode@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationi'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationi'.
 
 
 glBlendEquationiEXT :: MonadIO m => GLuint -> GLenum -> m ()
@@ -86,7 +86,7 @@
 
 -- | Usage: @'glBlendFuncSeparateiEXT' buf srcRGB dstRGB srcAlpha dstAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFuncSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFuncSeparatei'.
 
 
 glBlendFuncSeparateiEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
@@ -99,7 +99,7 @@
 
 -- | Usage: @'glBlendFunciEXT' buf src dst@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFunci'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFunci'.
 
 
 glBlendFunciEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/DrawElementsBaseVertex.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawElementsBaseVertex.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/DrawElementsBaseVertex.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawElementsBaseVertex.hs
@@ -27,7 +27,7 @@
 
 -- | Usage: @'glDrawElementsBaseVertexEXT' mode count type indices basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -46,7 +46,7 @@
 
 -- | Usage: @'glDrawElementsInstancedBaseVertexEXT' mode count type indices instancecount basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -65,7 +65,7 @@
 
 -- | Usage: @'glDrawRangeElementsBaseVertexEXT' mode start end count type indices basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/DrawRangeElements.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawRangeElements.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/DrawRangeElements.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawRangeElements.hs
@@ -26,7 +26,7 @@
 
 -- | Usage: @'glDrawRangeElementsEXT' mode start end count type indices@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/DrawTransformFeedback.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawTransformFeedback.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/DrawTransformFeedback.hs
@@ -0,0 +1,54 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.DrawTransformFeedback (
+  -- * Extension Support
+    gl_EXT_draw_transform_feedback
+
+  -- * GL_EXT_draw_transform_feedback
+  , glDrawTransformFeedbackEXT
+  , glDrawTransformFeedbackInstancedEXT
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_transform_feedback.txt GL_EXT_draw_transform_feedback> extension is available.
+
+gl_EXT_draw_transform_feedback :: Bool
+gl_EXT_draw_transform_feedback = member "GL_EXT_draw_transform_feedback" extensions
+{-# NOINLINE gl_EXT_draw_transform_feedback #-}
+
+-- | Usage: @'glDrawTransformFeedbackEXT' mode id@
+--
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawTransformFeedback'.
+
+
+glDrawTransformFeedbackEXT :: MonadIO m => GLenum -> GLuint -> m ()
+glDrawTransformFeedbackEXT = ffienumuintIOV glDrawTransformFeedbackEXTFunPtr
+
+glDrawTransformFeedbackEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glDrawTransformFeedbackEXTFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedbackEXT")
+
+{-# NOINLINE glDrawTransformFeedbackEXTFunPtr #-}
+
+-- | Usage: @'glDrawTransformFeedbackInstancedEXT' mode id instancecount@
+--
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawTransformFeedbackInstanced'.
+
+
+glDrawTransformFeedbackInstancedEXT :: MonadIO m => GLenum -> GLuint -> GLsizei -> m ()
+glDrawTransformFeedbackInstancedEXT = ffienumuintsizeiIOV glDrawTransformFeedbackInstancedEXTFunPtr
+
+glDrawTransformFeedbackInstancedEXTFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> IO ())
+glDrawTransformFeedbackInstancedEXTFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedbackInstancedEXT")
+
+{-# NOINLINE glDrawTransformFeedbackInstancedEXTFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/GpuShader4.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/GpuShader4.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/GpuShader4.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/GpuShader4.hs
@@ -61,21 +61,6 @@
 gl_EXT_gpu_shader4 = member "GL_EXT_gpu_shader4" extensions
 {-# NOINLINE gl_EXT_gpu_shader4 #-}
 
--- | Usage: @'glBindFragDataLocationEXT' program color name@
---
--- The length of @name@ should be @COMPSIZE(name)@.
---
--- This command is an alias for 'Graphics.GL.Internal.Shared.glBindFragDataLocation'.
-
-
-glBindFragDataLocationEXT :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
-glBindFragDataLocationEXT = ffiuintuintPtrcharIOV glBindFragDataLocationEXTFunPtr
-
-glBindFragDataLocationEXTFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
-glBindFragDataLocationEXTFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocationEXT")
-
-{-# NOINLINE glBindFragDataLocationEXTFunPtr #-}
-
 -- | Usage: @'glGetFragDataLocationEXT' program name@
 --
 -- The length of @name@ should be @COMPSIZE(name)@.
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/MultiDrawArrays.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/MultiDrawArrays.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/MultiDrawArrays.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/MultiDrawArrays.hs
@@ -25,7 +25,7 @@
 
 -- | Usage: @'glMultiDrawArraysEXT' mode first count primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @first@ should be @COMPSIZE(primcount)@.
 --
@@ -44,7 +44,7 @@
 
 -- | Usage: @'glMultiDrawElementsEXT' mode count type indices primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/Multisample.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/Multisample.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/Multisample.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/Multisample.hs
@@ -31,6 +31,7 @@
 import Foreign.Ptr
 import Graphics.GL.Internal.FFI
 import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
 import Graphics.GL.Types
 import System.IO.Unsafe
 
@@ -84,13 +85,9 @@
 
 pattern GL_MULTISAMPLE_BIT_EXT = 0x20000000
 
-pattern GL_MULTISAMPLE_EXT = 0x809D
-
 pattern GL_SAMPLES_EXT = 0x80A9
 
 pattern GL_SAMPLE_ALPHA_TO_MASK_EXT = 0x809E
-
-pattern GL_SAMPLE_ALPHA_TO_ONE_EXT = 0x809F
 
 pattern GL_SAMPLE_BUFFERS_EXT = 0x80A8
 
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/MultisampleCompatibility.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/MultisampleCompatibility.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/MultisampleCompatibility.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.MultisampleCompatibility (
+  -- * Extension Support
+    gl_EXT_multisample_compatibility
+
+  -- * GL_EXT_multisample_compatibility
+  , pattern GL_MULTISAMPLE_EXT
+  , pattern GL_SAMPLE_ALPHA_TO_ONE_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisample_compatibility.txt GL_EXT_multisample_compatibility> extension is available.
+
+gl_EXT_multisample_compatibility :: Bool
+gl_EXT_multisample_compatibility = member "GL_EXT_multisample_compatibility" extensions
+{-# NOINLINE gl_EXT_multisample_compatibility #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/PrimitiveBoundingBox.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/PrimitiveBoundingBox.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/PrimitiveBoundingBox.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/PrimitiveBoundingBox.hs
@@ -24,6 +24,8 @@
 {-# NOINLINE gl_EXT_primitive_bounding_box #-}
 
 -- | Usage: @'glPrimitiveBoundingBoxEXT' minX minY minZ minW maxX maxY maxZ maxW@
+--
+-- This command is an alias for 'Graphics.GL.Embedded32.glPrimitiveBoundingBox'.
 
 
 glPrimitiveBoundingBoxEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ProtectedTextures.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ProtectedTextures.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ProtectedTextures.hs
@@ -0,0 +1,23 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ProtectedTextures (
+  -- * Extension Support
+    gl_EXT_protected_textures
+
+  -- * GL_EXT_protected_textures
+  , pattern GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT
+  , pattern GL_TEXTURE_PROTECTED_EXT
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt GL_EXT_protected_textures> extension is available.
+
+gl_EXT_protected_textures :: Bool
+gl_EXT_protected_textures = member "GL_EXT_protected_textures" extensions
+{-# NOINLINE gl_EXT_protected_textures #-}
+
+pattern GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT = 0x00000010
+
+pattern GL_TEXTURE_PROTECTED_EXT = 0x8BFA
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderGroupVote.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderGroupVote.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderGroupVote.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ShaderGroupVote (
+  -- * Extension Support
+    gl_EXT_shader_group_vote
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_group_vote.txt GL_EXT_shader_group_vote> extension is available.
+
+gl_EXT_shader_group_vote :: Bool
+gl_EXT_shader_group_vote = member "GL_EXT_shader_group_vote" extensions
+{-# NOINLINE gl_EXT_shader_group_vote #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderNonConstantGlobalInitializers.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderNonConstantGlobalInitializers.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderNonConstantGlobalInitializers.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ShaderNonConstantGlobalInitializers (
+  -- * Extension Support
+    gl_EXT_shader_non_constant_global_initializers
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_non_constant_global_initializers.txt GL_EXT_shader_non_constant_global_initializers> extension is available.
+
+gl_EXT_shader_non_constant_global_initializers :: Bool
+gl_EXT_shader_non_constant_global_initializers = member "GL_EXT_shader_non_constant_global_initializers" extensions
+{-# NOINLINE gl_EXT_shader_non_constant_global_initializers #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderPixelLocalStorage2.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderPixelLocalStorage2.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/ShaderPixelLocalStorage2.hs
@@ -0,0 +1,67 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.ShaderPixelLocalStorage2 (
+  -- * Extension Support
+    gl_EXT_shader_pixel_local_storage2
+
+  -- * GL_EXT_shader_pixel_local_storage2
+  , glClearPixelLocalStorageuiEXT
+  , glFramebufferPixelLocalStorageSizeEXT
+  , glGetFramebufferPixelLocalStorageSizeEXT
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT
+  , pattern GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT
+  , pattern GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage2.txt GL_EXT_shader_pixel_local_storage2> extension is available.
+
+gl_EXT_shader_pixel_local_storage2 :: Bool
+gl_EXT_shader_pixel_local_storage2 = member "GL_EXT_shader_pixel_local_storage2" extensions
+{-# NOINLINE gl_EXT_shader_pixel_local_storage2 #-}
+
+-- | Usage: @'glClearPixelLocalStorageuiEXT' offset n values@
+
+
+glClearPixelLocalStorageuiEXT :: MonadIO m => GLsizei -> GLsizei -> Ptr GLuint -> m ()
+glClearPixelLocalStorageuiEXT = ffisizeisizeiPtruintIOV glClearPixelLocalStorageuiEXTFunPtr
+
+glClearPixelLocalStorageuiEXTFunPtr :: FunPtr (GLsizei -> GLsizei -> Ptr GLuint -> IO ())
+glClearPixelLocalStorageuiEXTFunPtr = unsafePerformIO (getProcAddress "glClearPixelLocalStorageuiEXT")
+
+{-# NOINLINE glClearPixelLocalStorageuiEXTFunPtr #-}
+
+-- | Usage: @'glFramebufferPixelLocalStorageSizeEXT' target size@
+
+
+glFramebufferPixelLocalStorageSizeEXT :: MonadIO m => GLuint -> GLsizei -> m ()
+glFramebufferPixelLocalStorageSizeEXT = ffiuintsizeiIOV glFramebufferPixelLocalStorageSizeEXTFunPtr
+
+glFramebufferPixelLocalStorageSizeEXTFunPtr :: FunPtr (GLuint -> GLsizei -> IO ())
+glFramebufferPixelLocalStorageSizeEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferPixelLocalStorageSizeEXT")
+
+{-# NOINLINE glFramebufferPixelLocalStorageSizeEXTFunPtr #-}
+
+-- | Usage: @'glGetFramebufferPixelLocalStorageSizeEXT' target@
+
+
+glGetFramebufferPixelLocalStorageSizeEXT :: MonadIO m => GLuint -> m GLsizei
+glGetFramebufferPixelLocalStorageSizeEXT = ffiuintIOsizei glGetFramebufferPixelLocalStorageSizeEXTFunPtr
+
+glGetFramebufferPixelLocalStorageSizeEXTFunPtr :: FunPtr (GLuint -> IO GLsizei)
+glGetFramebufferPixelLocalStorageSizeEXTFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferPixelLocalStorageSizeEXT")
+
+{-# NOINLINE glGetFramebufferPixelLocalStorageSizeEXTFunPtr #-}
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT = 0x9652
+
+pattern GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT = 0x9650
+
+pattern GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT = 0x9651
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/SparseTexture.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/SparseTexture.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/SparseTexture.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/SparseTexture.hs
@@ -5,7 +5,7 @@
     gl_EXT_sparse_texture
 
   -- * GL_EXT_sparse_texture
-  , glTexPageCommitmentARB
+  , glTexPageCommitmentEXT
   , pattern GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT
   , pattern GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT
   , pattern GL_MAX_SPARSE_TEXTURE_SIZE_EXT
@@ -24,15 +24,33 @@
   , pattern GL_VIRTUAL_PAGE_SIZE_Z_EXT
 ) where
 
+import Control.Monad.IO.Class
 import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
 import Graphics.GL.Internal.Proc
 import Graphics.GL.Internal.Shared
+import Graphics.GL.Types
+import System.IO.Unsafe
 
 -- | Checks that the <https://www.khronos.org/registry/gles/extensions/EXT/EXT_sparse_texture.txt GL_EXT_sparse_texture> extension is available.
 
 gl_EXT_sparse_texture :: Bool
 gl_EXT_sparse_texture = member "GL_EXT_sparse_texture" extensions
 {-# NOINLINE gl_EXT_sparse_texture #-}
+
+-- | Usage: @'glTexPageCommitmentEXT' target level xoffset yoffset zoffset width height depth commit@
+--
+-- This command is an alias for 'Graphics.GL.Ext.ARB.SparseTexture.glTexPageCommitmentARB'.
+
+
+glTexPageCommitmentEXT :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
+glTexPageCommitmentEXT = ffienumintintintintsizeisizeisizeibooleanIOV glTexPageCommitmentEXTFunPtr
+
+glTexPageCommitmentEXTFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+glTexPageCommitmentEXTFunPtr = unsafePerformIO (getProcAddress "glTexPageCommitmentEXT")
+
+{-# NOINLINE glTexPageCommitmentEXTFunPtr #-}
 
 pattern GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT = 0x9199
 
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/VertexArray.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/VertexArray.hs
--- a/dist/build/autogen/Graphics/GL/Ext/EXT/VertexArray.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/VertexArray.hs
@@ -92,7 +92,7 @@
 
 -- | Usage: @'glDrawArraysEXT' mode first count@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawArrays'.
 
diff --git a/dist/build/autogen/Graphics/GL/Ext/EXT/WindowRectangles.hs b/dist/build/autogen/Graphics/GL/Ext/EXT/WindowRectangles.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/EXT/WindowRectangles.hs
@@ -0,0 +1,54 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.EXT.WindowRectangles (
+  -- * Extension Support
+    gl_EXT_window_rectangles
+
+  -- * GL_EXT_window_rectangles
+  , glWindowRectanglesEXT
+  , pattern GL_EXCLUSIVE_EXT
+  , pattern GL_INCLUSIVE_EXT
+  , pattern GL_MAX_WINDOW_RECTANGLES_EXT
+  , pattern GL_NUM_WINDOW_RECTANGLES_EXT
+  , pattern GL_WINDOW_RECTANGLE_EXT
+  , pattern GL_WINDOW_RECTANGLE_MODE_EXT
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/window_rectangles.txt GL_EXT_window_rectangles> extension is available.
+
+gl_EXT_window_rectangles :: Bool
+gl_EXT_window_rectangles = member "GL_EXT_window_rectangles" extensions
+{-# NOINLINE gl_EXT_window_rectangles #-}
+
+-- | Usage: @'glWindowRectanglesEXT' mode count box@
+--
+-- The length of @box@ should be @COMPSIZE(count)@.
+
+
+glWindowRectanglesEXT :: MonadIO m => GLenum -> GLsizei -> Ptr GLint -> m ()
+glWindowRectanglesEXT = ffienumsizeiPtrintIOV glWindowRectanglesEXTFunPtr
+
+glWindowRectanglesEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLint -> IO ())
+glWindowRectanglesEXTFunPtr = unsafePerformIO (getProcAddress "glWindowRectanglesEXT")
+
+{-# NOINLINE glWindowRectanglesEXTFunPtr #-}
+
+pattern GL_EXCLUSIVE_EXT = 0x8F11
+
+pattern GL_INCLUSIVE_EXT = 0x8F10
+
+pattern GL_MAX_WINDOW_RECTANGLES_EXT = 0x8F14
+
+pattern GL_NUM_WINDOW_RECTANGLES_EXT = 0x8F15
+
+pattern GL_WINDOW_RECTANGLE_EXT = 0x8F12
+
+pattern GL_WINDOW_RECTANGLE_MODE_EXT = 0x8F13
diff --git a/dist/build/autogen/Graphics/GL/Ext/IBM/MultimodeDrawArrays.hs b/dist/build/autogen/Graphics/GL/Ext/IBM/MultimodeDrawArrays.hs
--- a/dist/build/autogen/Graphics/GL/Ext/IBM/MultimodeDrawArrays.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/IBM/MultimodeDrawArrays.hs
@@ -25,7 +25,7 @@
 
 -- | Usage: @'glMultiModeDrawArraysIBM' mode first count primcount modestride@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @mode@ should be @COMPSIZE(primcount)@.
 --
@@ -44,7 +44,7 @@
 
 -- | Usage: @'glMultiModeDrawElementsIBM' mode count type indices primcount modestride@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/IMG.hs b/dist/build/autogen/Graphics/GL/Ext/IMG.hs
--- a/dist/build/autogen/Graphics/GL/Ext/IMG.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/IMG.hs
@@ -2,16 +2,21 @@
 {-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
 module Graphics.GL.Ext.IMG (
   -- * IMG Extensions
-    module Graphics.GL.Ext.IMG.MultisampledRenderToTexture
+    module Graphics.GL.Ext.IMG.BindlessTexture
+  , module Graphics.GL.Ext.IMG.FramebufferDownsample
+  , module Graphics.GL.Ext.IMG.MultisampledRenderToTexture
   , module Graphics.GL.Ext.IMG.ProgramBinary
   , module Graphics.GL.Ext.IMG.ReadFormat
   , module Graphics.GL.Ext.IMG.ShaderBinary
   , module Graphics.GL.Ext.IMG.TextureCompressionPvrtc
   , module Graphics.GL.Ext.IMG.TextureCompressionPvrtc2
   , module Graphics.GL.Ext.IMG.TextureEnvEnhancedFixedFunction
+  , module Graphics.GL.Ext.IMG.TextureFilterCubic
   , module Graphics.GL.Ext.IMG.UserClipPlane
 ) where
 
+import Graphics.GL.Ext.IMG.BindlessTexture
+import Graphics.GL.Ext.IMG.FramebufferDownsample
 import Graphics.GL.Ext.IMG.MultisampledRenderToTexture
 import Graphics.GL.Ext.IMG.ProgramBinary
 import Graphics.GL.Ext.IMG.ReadFormat
@@ -19,4 +24,5 @@
 import Graphics.GL.Ext.IMG.TextureCompressionPvrtc
 import Graphics.GL.Ext.IMG.TextureCompressionPvrtc2
 import Graphics.GL.Ext.IMG.TextureEnvEnhancedFixedFunction
+import Graphics.GL.Ext.IMG.TextureFilterCubic
 import Graphics.GL.Ext.IMG.UserClipPlane
diff --git a/dist/build/autogen/Graphics/GL/Ext/IMG/BindlessTexture.hs b/dist/build/autogen/Graphics/GL/Ext/IMG/BindlessTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/IMG/BindlessTexture.hs
@@ -0,0 +1,110 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.IMG.BindlessTexture (
+  -- * Extension Support
+    gl_IMG_bindless_texture
+
+  -- * GL_IMG_bindless_texture
+  , glGetTextureHandleIMG
+  , glGetTextureSamplerHandleIMG
+  , glProgramUniformHandleui64IMG
+  , glProgramUniformHandleui64vIMG
+  , glUniformHandleui64IMG
+  , glUniformHandleui64vIMG
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_bindless_texture.txt GL_IMG_bindless_texture> extension is available.
+
+gl_IMG_bindless_texture :: Bool
+gl_IMG_bindless_texture = member "GL_IMG_bindless_texture" extensions
+{-# NOINLINE gl_IMG_bindless_texture #-}
+
+-- | Usage: @'glGetTextureHandleIMG' texture@
+--
+-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glGetTextureHandleARB'.
+
+
+glGetTextureHandleIMG :: MonadIO m => GLuint -> m GLuint64
+glGetTextureHandleIMG = ffiuintIOuint64 glGetTextureHandleIMGFunPtr
+
+glGetTextureHandleIMGFunPtr :: FunPtr (GLuint -> IO GLuint64)
+glGetTextureHandleIMGFunPtr = unsafePerformIO (getProcAddress "glGetTextureHandleIMG")
+
+{-# NOINLINE glGetTextureHandleIMGFunPtr #-}
+
+-- | Usage: @'glGetTextureSamplerHandleIMG' texture sampler@
+--
+-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glGetTextureSamplerHandleARB'.
+
+
+glGetTextureSamplerHandleIMG :: MonadIO m => GLuint -> GLuint -> m GLuint64
+glGetTextureSamplerHandleIMG = ffiuintuintIOuint64 glGetTextureSamplerHandleIMGFunPtr
+
+glGetTextureSamplerHandleIMGFunPtr :: FunPtr (GLuint -> GLuint -> IO GLuint64)
+glGetTextureSamplerHandleIMGFunPtr = unsafePerformIO (getProcAddress "glGetTextureSamplerHandleIMG")
+
+{-# NOINLINE glGetTextureSamplerHandleIMGFunPtr #-}
+
+-- | Usage: @'glProgramUniformHandleui64IMG' program location value@
+--
+-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glProgramUniformHandleui64ARB'.
+
+
+glProgramUniformHandleui64IMG :: MonadIO m => GLuint -> GLint -> GLuint64 -> m ()
+glProgramUniformHandleui64IMG = ffiuintintuint64IOV glProgramUniformHandleui64IMGFunPtr
+
+glProgramUniformHandleui64IMGFunPtr :: FunPtr (GLuint -> GLint -> GLuint64 -> IO ())
+glProgramUniformHandleui64IMGFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64IMG")
+
+{-# NOINLINE glProgramUniformHandleui64IMGFunPtr #-}
+
+-- | Usage: @'glProgramUniformHandleui64vIMG' program location count values@
+--
+-- The length of @values@ should be @count@.
+--
+-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glProgramUniformHandleui64vARB'.
+
+
+glProgramUniformHandleui64vIMG :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glProgramUniformHandleui64vIMG = ffiuintintsizeiPtruint64IOV glProgramUniformHandleui64vIMGFunPtr
+
+glProgramUniformHandleui64vIMGFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glProgramUniformHandleui64vIMGFunPtr = unsafePerformIO (getProcAddress "glProgramUniformHandleui64vIMG")
+
+{-# NOINLINE glProgramUniformHandleui64vIMGFunPtr #-}
+
+-- | Usage: @'glUniformHandleui64IMG' location value@
+--
+-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glUniformHandleui64ARB'.
+
+
+glUniformHandleui64IMG :: MonadIO m => GLint -> GLuint64 -> m ()
+glUniformHandleui64IMG = ffiintuint64IOV glUniformHandleui64IMGFunPtr
+
+glUniformHandleui64IMGFunPtr :: FunPtr (GLint -> GLuint64 -> IO ())
+glUniformHandleui64IMGFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64IMG")
+
+{-# NOINLINE glUniformHandleui64IMGFunPtr #-}
+
+-- | Usage: @'glUniformHandleui64vIMG' location count value@
+--
+-- The length of @value@ should be @count@.
+--
+-- This command is an alias for 'Graphics.GL.Ext.ARB.BindlessTexture.glUniformHandleui64vARB'.
+
+
+glUniformHandleui64vIMG :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64 -> m ()
+glUniformHandleui64vIMG = ffiintsizeiPtruint64IOV glUniformHandleui64vIMGFunPtr
+
+glUniformHandleui64vIMGFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64 -> IO ())
+glUniformHandleui64vIMGFunPtr = unsafePerformIO (getProcAddress "glUniformHandleui64vIMG")
+
+{-# NOINLINE glUniformHandleui64vIMGFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/IMG/FramebufferDownsample.hs b/dist/build/autogen/Graphics/GL/Ext/IMG/FramebufferDownsample.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/IMG/FramebufferDownsample.hs
@@ -0,0 +1,68 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.IMG.FramebufferDownsample (
+  -- * Extension Support
+    gl_IMG_framebuffer_downsample
+
+  -- * GL_IMG_framebuffer_downsample
+  , glFramebufferTexture2DDownsampleIMG
+  , glFramebufferTextureLayerDownsampleIMG
+  , pattern GL_DOWNSAMPLE_SCALES_IMG
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG
+  , pattern GL_NUM_DOWNSAMPLE_SCALES_IMG
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_framebuffer_downsample.txt GL_IMG_framebuffer_downsample> extension is available.
+
+gl_IMG_framebuffer_downsample :: Bool
+gl_IMG_framebuffer_downsample = member "GL_IMG_framebuffer_downsample" extensions
+{-# NOINLINE gl_IMG_framebuffer_downsample #-}
+
+-- | Usage: @'glFramebufferTexture2DDownsampleIMG' target attachment textarget texture level xscale yscale@
+
+
+glFramebufferTexture2DDownsampleIMG :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> m ()
+glFramebufferTexture2DDownsampleIMG = ffienumenumenumuintintintintIOV glFramebufferTexture2DDownsampleIMGFunPtr
+
+glFramebufferTexture2DDownsampleIMGFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> IO ())
+glFramebufferTexture2DDownsampleIMGFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture2DDownsampleIMG")
+
+{-# NOINLINE glFramebufferTexture2DDownsampleIMGFunPtr #-}
+
+-- | Usage: @'glFramebufferTextureLayerDownsampleIMG' target attachment texture level layer xscale yscale@
+--
+-- The parameter @target@ is a @FramebufferTarget@.
+--
+-- The parameter @attachment@ is a @FramebufferAttachment@.
+--
+-- The parameter @texture@ is a @Texture@.
+--
+-- The parameter @level@ is a @CheckedInt32@.
+--
+-- The parameter @layer@ is a @CheckedInt32@.
+
+
+glFramebufferTextureLayerDownsampleIMG :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+glFramebufferTextureLayerDownsampleIMG = ffienumenumuintintintintintIOV glFramebufferTextureLayerDownsampleIMGFunPtr
+
+glFramebufferTextureLayerDownsampleIMGFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
+glFramebufferTextureLayerDownsampleIMGFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureLayerDownsampleIMG")
+
+{-# NOINLINE glFramebufferTextureLayerDownsampleIMGFunPtr #-}
+
+pattern GL_DOWNSAMPLE_SCALES_IMG = 0x913E
+
+pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG = 0x913F
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG = 0x913C
+
+pattern GL_NUM_DOWNSAMPLE_SCALES_IMG = 0x913D
diff --git a/dist/build/autogen/Graphics/GL/Ext/IMG/TextureFilterCubic.hs b/dist/build/autogen/Graphics/GL/Ext/IMG/TextureFilterCubic.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/IMG/TextureFilterCubic.hs
@@ -0,0 +1,26 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.IMG.TextureFilterCubic (
+  -- * Extension Support
+    gl_IMG_texture_filter_cubic
+
+  -- * GL_IMG_texture_filter_cubic
+  , pattern GL_CUBIC_IMG
+  , pattern GL_CUBIC_MIPMAP_LINEAR_IMG
+  , pattern GL_CUBIC_MIPMAP_NEAREST_IMG
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_filter_cubic.txt GL_IMG_texture_filter_cubic> extension is available.
+
+gl_IMG_texture_filter_cubic :: Bool
+gl_IMG_texture_filter_cubic = member "GL_IMG_texture_filter_cubic" extensions
+{-# NOINLINE gl_IMG_texture_filter_cubic #-}
+
+pattern GL_CUBIC_IMG = 0x9139
+
+pattern GL_CUBIC_MIPMAP_LINEAR_IMG = 0x913B
+
+pattern GL_CUBIC_MIPMAP_NEAREST_IMG = 0x913A
diff --git a/dist/build/autogen/Graphics/GL/Ext/INTEL.hs b/dist/build/autogen/Graphics/GL/Ext/INTEL.hs
--- a/dist/build/autogen/Graphics/GL/Ext/INTEL.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/INTEL.hs
@@ -2,13 +2,17 @@
 {-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
 module Graphics.GL.Ext.INTEL (
   -- * INTEL Extensions
-    module Graphics.GL.Ext.INTEL.FragmentShaderOrdering
+    module Graphics.GL.Ext.INTEL.ConservativeRasterization
+  , module Graphics.GL.Ext.INTEL.FragmentShaderOrdering
+  , module Graphics.GL.Ext.INTEL.FramebufferCMAA
   , module Graphics.GL.Ext.INTEL.MapTexture
   , module Graphics.GL.Ext.INTEL.ParallelArrays
   , module Graphics.GL.Ext.INTEL.PerformanceQuery
 ) where
 
+import Graphics.GL.Ext.INTEL.ConservativeRasterization
 import Graphics.GL.Ext.INTEL.FragmentShaderOrdering
+import Graphics.GL.Ext.INTEL.FramebufferCMAA
 import Graphics.GL.Ext.INTEL.MapTexture
 import Graphics.GL.Ext.INTEL.ParallelArrays
 import Graphics.GL.Ext.INTEL.PerformanceQuery
diff --git a/dist/build/autogen/Graphics/GL/Ext/INTEL/ConservativeRasterization.hs b/dist/build/autogen/Graphics/GL/Ext/INTEL/ConservativeRasterization.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/INTEL/ConservativeRasterization.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.INTEL.ConservativeRasterization (
+  -- * Extension Support
+    gl_INTEL_conservative_rasterization
+
+  -- * GL_INTEL_conservative_rasterization
+  , pattern GL_CONSERVATIVE_RASTERIZATION_INTEL
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/conservative_rasterization.txt GL_INTEL_conservative_rasterization> extension is available.
+
+gl_INTEL_conservative_rasterization :: Bool
+gl_INTEL_conservative_rasterization = member "GL_INTEL_conservative_rasterization" extensions
+{-# NOINLINE gl_INTEL_conservative_rasterization #-}
+
+pattern GL_CONSERVATIVE_RASTERIZATION_INTEL = 0x83FE
diff --git a/dist/build/autogen/Graphics/GL/Ext/INTEL/FramebufferCMAA.hs b/dist/build/autogen/Graphics/GL/Ext/INTEL/FramebufferCMAA.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/INTEL/FramebufferCMAA.hs
@@ -0,0 +1,33 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.INTEL.FramebufferCMAA (
+  -- * Extension Support
+    gl_INTEL_framebuffer_CMAA
+
+  -- * GL_INTEL_framebuffer_CMAA
+  , glApplyFramebufferAttachmentCMAAINTEL
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/framebuffer_CMAA.txt GL_INTEL_framebuffer_CMAA> extension is available.
+
+gl_INTEL_framebuffer_CMAA :: Bool
+gl_INTEL_framebuffer_CMAA = member "GL_INTEL_framebuffer_CMAA" extensions
+{-# NOINLINE gl_INTEL_framebuffer_CMAA #-}
+
+-- | Usage: @'glApplyFramebufferAttachmentCMAAINTEL'@
+
+
+glApplyFramebufferAttachmentCMAAINTEL :: MonadIO m => m ()
+glApplyFramebufferAttachmentCMAAINTEL = ffiIOV glApplyFramebufferAttachmentCMAAINTELFunPtr
+
+glApplyFramebufferAttachmentCMAAINTELFunPtr :: FunPtr (IO ())
+glApplyFramebufferAttachmentCMAAINTELFunPtr = unsafePerformIO (getProcAddress "glApplyFramebufferAttachmentCMAAINTEL")
+
+{-# NOINLINE glApplyFramebufferAttachmentCMAAINTELFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/KHR.hs b/dist/build/autogen/Graphics/GL/Ext/KHR.hs
--- a/dist/build/autogen/Graphics/GL/Ext/KHR.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/KHR.hs
@@ -11,6 +11,7 @@
   , module Graphics.GL.Ext.KHR.Robustness
   , module Graphics.GL.Ext.KHR.TextureCompressionAstcHdr
   , module Graphics.GL.Ext.KHR.TextureCompressionAstcLdr
+  , module Graphics.GL.Ext.KHR.TextureCompressionAstcSliced3d
 ) where
 
 import Graphics.GL.Ext.KHR.BlendEquationAdvanced
@@ -22,3 +23,4 @@
 import Graphics.GL.Ext.KHR.Robustness
 import Graphics.GL.Ext.KHR.TextureCompressionAstcHdr
 import Graphics.GL.Ext.KHR.TextureCompressionAstcLdr
+import Graphics.GL.Ext.KHR.TextureCompressionAstcSliced3d
diff --git a/dist/build/autogen/Graphics/GL/Ext/KHR/BlendEquationAdvanced.hs b/dist/build/autogen/Graphics/GL/Ext/KHR/BlendEquationAdvanced.hs
--- a/dist/build/autogen/Graphics/GL/Ext/KHR/BlendEquationAdvanced.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/KHR/BlendEquationAdvanced.hs
@@ -37,6 +37,8 @@
 {-# NOINLINE gl_KHR_blend_equation_advanced #-}
 
 -- | Usage: @'glBlendBarrierKHR'@
+--
+-- This command is an alias for 'Graphics.GL.Embedded32.glBlendBarrier'.
 
 
 glBlendBarrierKHR :: MonadIO m => m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/KHR/Robustness.hs b/dist/build/autogen/Graphics/GL/Ext/KHR/Robustness.hs
--- a/dist/build/autogen/Graphics/GL/Ext/KHR/Robustness.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/KHR/Robustness.hs
@@ -126,8 +126,6 @@
 
 pattern GL_CONTEXT_LOST_KHR = 0x0507
 
-pattern GL_CONTEXT_ROBUST_ACCESS = 0x90F3
-
 pattern GL_CONTEXT_ROBUST_ACCESS_KHR = 0x90F3
 
 pattern GL_GUILTY_CONTEXT_RESET_KHR = 0x8253
diff --git a/dist/build/autogen/Graphics/GL/Ext/KHR/TextureCompressionAstcSliced3d.hs b/dist/build/autogen/Graphics/GL/Ext/KHR/TextureCompressionAstcSliced3d.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/KHR/TextureCompressionAstcSliced3d.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.KHR.TextureCompressionAstcSliced3d (
+  -- * Extension Support
+    gl_KHR_texture_compression_astc_sliced_3d
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/KHR/texture_compression_astc_sliced_3d.txt GL_KHR_texture_compression_astc_sliced_3d> extension is available.
+
+gl_KHR_texture_compression_astc_sliced_3d :: Bool
+gl_KHR_texture_compression_astc_sliced_3d = member "GL_KHR_texture_compression_astc_sliced_3d" extensions
+{-# NOINLINE gl_KHR_texture_compression_astc_sliced_3d #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV.hs b/dist/build/autogen/Graphics/GL/Ext/NV.hs
--- a/dist/build/autogen/Graphics/GL/Ext/NV.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/NV.hs
@@ -8,10 +8,13 @@
   , module Graphics.GL.Ext.NV.BlendEquationAdvanced
   , module Graphics.GL.Ext.NV.BlendEquationAdvancedCoherent
   , module Graphics.GL.Ext.NV.BlendSquare
+  , module Graphics.GL.Ext.NV.ClipSpaceWScaling
   , module Graphics.GL.Ext.NV.CommandList
   , module Graphics.GL.Ext.NV.ComputeProgram5
   , module Graphics.GL.Ext.NV.ConditionalRender
   , module Graphics.GL.Ext.NV.ConservativeRaster
+  , module Graphics.GL.Ext.NV.ConservativeRasterDilate
+  , module Graphics.GL.Ext.NV.ConservativeRasterPreSnapTriangles
   , module Graphics.GL.Ext.NV.CopyBuffer
   , module Graphics.GL.Ext.NV.CopyDepthToColor
   , module Graphics.GL.Ext.NV.CopyImage
@@ -75,11 +78,13 @@
   , module Graphics.GL.Ext.NV.ReadStencil
   , module Graphics.GL.Ext.NV.RegisterCombiners
   , module Graphics.GL.Ext.NV.RegisterCombiners2
+  , module Graphics.GL.Ext.NV.RobustnessVideoMemoryPurge
   , module Graphics.GL.Ext.NV.SRGBFormats
   , module Graphics.GL.Ext.NV.SampleLocations
   , module Graphics.GL.Ext.NV.SampleMaskOverrideCoverage
   , module Graphics.GL.Ext.NV.ShaderAtomicCounters
   , module Graphics.GL.Ext.NV.ShaderAtomicFloat
+  , module Graphics.GL.Ext.NV.ShaderAtomicFloat64
   , module Graphics.GL.Ext.NV.ShaderAtomicFp16Vector
   , module Graphics.GL.Ext.NV.ShaderAtomicInt64
   , module Graphics.GL.Ext.NV.ShaderBufferLoad
@@ -90,6 +95,7 @@
   , module Graphics.GL.Ext.NV.ShaderThreadShuffle
   , module Graphics.GL.Ext.NV.ShadowSamplersArray
   , module Graphics.GL.Ext.NV.ShadowSamplersCube
+  , module Graphics.GL.Ext.NV.StereoViewRendering
   , module Graphics.GL.Ext.NV.TessellationProgram5
   , module Graphics.GL.Ext.NV.TexgenEmboss
   , module Graphics.GL.Ext.NV.TexgenReflection
@@ -122,6 +128,7 @@
   , module Graphics.GL.Ext.NV.VideoCapture
   , module Graphics.GL.Ext.NV.ViewportArray
   , module Graphics.GL.Ext.NV.ViewportArray2
+  , module Graphics.GL.Ext.NV.ViewportSwizzle
 ) where
 
 import Graphics.GL.Ext.NV.BindlessMultiDrawIndirect
@@ -130,10 +137,13 @@
 import Graphics.GL.Ext.NV.BlendEquationAdvanced
 import Graphics.GL.Ext.NV.BlendEquationAdvancedCoherent
 import Graphics.GL.Ext.NV.BlendSquare
+import Graphics.GL.Ext.NV.ClipSpaceWScaling
 import Graphics.GL.Ext.NV.CommandList
 import Graphics.GL.Ext.NV.ComputeProgram5
 import Graphics.GL.Ext.NV.ConditionalRender
 import Graphics.GL.Ext.NV.ConservativeRaster
+import Graphics.GL.Ext.NV.ConservativeRasterDilate
+import Graphics.GL.Ext.NV.ConservativeRasterPreSnapTriangles
 import Graphics.GL.Ext.NV.CopyBuffer
 import Graphics.GL.Ext.NV.CopyDepthToColor
 import Graphics.GL.Ext.NV.CopyImage
@@ -197,11 +207,13 @@
 import Graphics.GL.Ext.NV.ReadStencil
 import Graphics.GL.Ext.NV.RegisterCombiners
 import Graphics.GL.Ext.NV.RegisterCombiners2
+import Graphics.GL.Ext.NV.RobustnessVideoMemoryPurge
 import Graphics.GL.Ext.NV.SRGBFormats
 import Graphics.GL.Ext.NV.SampleLocations
 import Graphics.GL.Ext.NV.SampleMaskOverrideCoverage
 import Graphics.GL.Ext.NV.ShaderAtomicCounters
 import Graphics.GL.Ext.NV.ShaderAtomicFloat
+import Graphics.GL.Ext.NV.ShaderAtomicFloat64
 import Graphics.GL.Ext.NV.ShaderAtomicFp16Vector
 import Graphics.GL.Ext.NV.ShaderAtomicInt64
 import Graphics.GL.Ext.NV.ShaderBufferLoad
@@ -212,6 +224,7 @@
 import Graphics.GL.Ext.NV.ShaderThreadShuffle
 import Graphics.GL.Ext.NV.ShadowSamplersArray
 import Graphics.GL.Ext.NV.ShadowSamplersCube
+import Graphics.GL.Ext.NV.StereoViewRendering
 import Graphics.GL.Ext.NV.TessellationProgram5
 import Graphics.GL.Ext.NV.TexgenEmboss
 import Graphics.GL.Ext.NV.TexgenReflection
@@ -244,3 +257,4 @@
 import Graphics.GL.Ext.NV.VideoCapture
 import Graphics.GL.Ext.NV.ViewportArray
 import Graphics.GL.Ext.NV.ViewportArray2
+import Graphics.GL.Ext.NV.ViewportSwizzle
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/BlendEquationAdvanced.hs b/dist/build/autogen/Graphics/GL/Ext/NV/BlendEquationAdvanced.hs
--- a/dist/build/autogen/Graphics/GL/Ext/NV/BlendEquationAdvanced.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/BlendEquationAdvanced.hs
@@ -76,6 +76,8 @@
 {-# NOINLINE gl_NV_blend_equation_advanced #-}
 
 -- | Usage: @'glBlendBarrierNV'@
+--
+-- This command is an alias for 'Graphics.GL.Embedded32.glBlendBarrier'.
 
 
 glBlendBarrierNV :: MonadIO m => m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/ClipSpaceWScaling.hs b/dist/build/autogen/Graphics/GL/Ext/NV/ClipSpaceWScaling.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/ClipSpaceWScaling.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.NV.ClipSpaceWScaling (
+  -- * Extension Support
+    gl_NV_clip_space_w_scaling
+
+  -- * GL_NV_clip_space_w_scaling
+  , glViewportPositionWScaleNV
+  , pattern GL_VIEWPORT_POSITION_W_SCALE_NV
+  , pattern GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV
+  , pattern GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/clip_space_w_scaling.txt GL_NV_clip_space_w_scaling> extension is available.
+
+gl_NV_clip_space_w_scaling :: Bool
+gl_NV_clip_space_w_scaling = member "GL_NV_clip_space_w_scaling" extensions
+{-# NOINLINE gl_NV_clip_space_w_scaling #-}
+
+-- | Usage: @'glViewportPositionWScaleNV' index xcoeff ycoeff@
+
+
+glViewportPositionWScaleNV :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m ()
+glViewportPositionWScaleNV = ffiuintfloatfloatIOV glViewportPositionWScaleNVFunPtr
+
+glViewportPositionWScaleNVFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ())
+glViewportPositionWScaleNVFunPtr = unsafePerformIO (getProcAddress "glViewportPositionWScaleNV")
+
+{-# NOINLINE glViewportPositionWScaleNVFunPtr #-}
+
+pattern GL_VIEWPORT_POSITION_W_SCALE_NV = 0x937C
+
+pattern GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV = 0x937D
+
+pattern GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV = 0x937E
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/ConservativeRasterDilate.hs b/dist/build/autogen/Graphics/GL/Ext/NV/ConservativeRasterDilate.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/ConservativeRasterDilate.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.NV.ConservativeRasterDilate (
+  -- * Extension Support
+    gl_NV_conservative_raster_dilate
+
+  -- * GL_NV_conservative_raster_dilate
+  , glConservativeRasterParameterfNV
+  , pattern GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV
+  , pattern GL_CONSERVATIVE_RASTER_DILATE_NV
+  , pattern GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/conservative_raster_dilate.txt GL_NV_conservative_raster_dilate> extension is available.
+
+gl_NV_conservative_raster_dilate :: Bool
+gl_NV_conservative_raster_dilate = member "GL_NV_conservative_raster_dilate" extensions
+{-# NOINLINE gl_NV_conservative_raster_dilate #-}
+
+-- | Usage: @'glConservativeRasterParameterfNV' pname value@
+
+
+glConservativeRasterParameterfNV :: MonadIO m => GLenum -> GLfloat -> m ()
+glConservativeRasterParameterfNV = ffienumfloatIOV glConservativeRasterParameterfNVFunPtr
+
+glConservativeRasterParameterfNVFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
+glConservativeRasterParameterfNVFunPtr = unsafePerformIO (getProcAddress "glConservativeRasterParameterfNV")
+
+{-# NOINLINE glConservativeRasterParameterfNVFunPtr #-}
+
+pattern GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV = 0x937B
+
+pattern GL_CONSERVATIVE_RASTER_DILATE_NV = 0x9379
+
+pattern GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV = 0x937A
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/ConservativeRasterPreSnapTriangles.hs b/dist/build/autogen/Graphics/GL/Ext/NV/ConservativeRasterPreSnapTriangles.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/ConservativeRasterPreSnapTriangles.hs
@@ -0,0 +1,43 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.NV.ConservativeRasterPreSnapTriangles (
+  -- * Extension Support
+    gl_NV_conservative_raster_pre_snap_triangles
+
+  -- * GL_NV_conservative_raster_pre_snap_triangles
+  , glConservativeRasterParameteriNV
+  , pattern GL_CONSERVATIVE_RASTER_MODE_NV
+  , pattern GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV
+  , pattern GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/conservative_raster_pre_snap_triangles.txt GL_NV_conservative_raster_pre_snap_triangles> extension is available.
+
+gl_NV_conservative_raster_pre_snap_triangles :: Bool
+gl_NV_conservative_raster_pre_snap_triangles = member "GL_NV_conservative_raster_pre_snap_triangles" extensions
+{-# NOINLINE gl_NV_conservative_raster_pre_snap_triangles #-}
+
+-- | Usage: @'glConservativeRasterParameteriNV' pname param@
+
+
+glConservativeRasterParameteriNV :: MonadIO m => GLenum -> GLint -> m ()
+glConservativeRasterParameteriNV = ffienumintIOV glConservativeRasterParameteriNVFunPtr
+
+glConservativeRasterParameteriNVFunPtr :: FunPtr (GLenum -> GLint -> IO ())
+glConservativeRasterParameteriNVFunPtr = unsafePerformIO (getProcAddress "glConservativeRasterParameteriNV")
+
+{-# NOINLINE glConservativeRasterParameteriNVFunPtr #-}
+
+pattern GL_CONSERVATIVE_RASTER_MODE_NV = 0x954D
+
+pattern GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV = 0x954E
+
+pattern GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV = 0x954F
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/DrawInstanced.hs b/dist/build/autogen/Graphics/GL/Ext/NV/DrawInstanced.hs
--- a/dist/build/autogen/Graphics/GL/Ext/NV/DrawInstanced.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/DrawInstanced.hs
@@ -25,7 +25,7 @@
 
 -- | Usage: @'glDrawArraysInstancedNV' mode first count primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawArraysInstanced'.
 
@@ -40,7 +40,7 @@
 
 -- | Usage: @'glDrawElementsInstancedNV' mode count type indices primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @indices@ should be @COMPSIZE(count,type)@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/RobustnessVideoMemoryPurge.hs b/dist/build/autogen/Graphics/GL/Ext/NV/RobustnessVideoMemoryPurge.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/RobustnessVideoMemoryPurge.hs
@@ -0,0 +1,20 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.NV.RobustnessVideoMemoryPurge (
+  -- * Extension Support
+    gl_NV_robustness_video_memory_purge
+
+  -- * GL_NV_robustness_video_memory_purge
+  , pattern GL_PURGED_CONTEXT_RESET_NV
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/robustness_video_memory_purge.txt GL_NV_robustness_video_memory_purge> extension is available.
+
+gl_NV_robustness_video_memory_purge :: Bool
+gl_NV_robustness_video_memory_purge = member "GL_NV_robustness_video_memory_purge" extensions
+{-# NOINLINE gl_NV_robustness_video_memory_purge #-}
+
+pattern GL_PURGED_CONTEXT_RESET_NV = 0x92BB
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/ShaderAtomicFloat64.hs b/dist/build/autogen/Graphics/GL/Ext/NV/ShaderAtomicFloat64.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/ShaderAtomicFloat64.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.NV.ShaderAtomicFloat64 (
+  -- * Extension Support
+    gl_NV_shader_atomic_float64
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_atomic_float64.txt GL_NV_shader_atomic_float64> extension is available.
+
+gl_NV_shader_atomic_float64 :: Bool
+gl_NV_shader_atomic_float64 = member "GL_NV_shader_atomic_float64" extensions
+{-# NOINLINE gl_NV_shader_atomic_float64 #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/StereoViewRendering.hs b/dist/build/autogen/Graphics/GL/Ext/NV/StereoViewRendering.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/StereoViewRendering.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.NV.StereoViewRendering (
+  -- * Extension Support
+    gl_NV_stereo_view_rendering
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/stereo_view_rendering.txt GL_NV_stereo_view_rendering> extension is available.
+
+gl_NV_stereo_view_rendering :: Bool
+gl_NV_stereo_view_rendering = member "GL_NV_stereo_view_rendering" extensions
+{-# NOINLINE gl_NV_stereo_view_rendering #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/TransformFeedback2.hs b/dist/build/autogen/Graphics/GL/Ext/NV/TransformFeedback2.hs
--- a/dist/build/autogen/Graphics/GL/Ext/NV/TransformFeedback2.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/TransformFeedback2.hs
@@ -62,7 +62,7 @@
 
 -- | Usage: @'glDrawTransformFeedbackNV' mode id@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawTransformFeedback'.
 
diff --git a/dist/build/autogen/Graphics/GL/Ext/NV/ViewportSwizzle.hs b/dist/build/autogen/Graphics/GL/Ext/NV/ViewportSwizzle.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/NV/ViewportSwizzle.hs
@@ -0,0 +1,70 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.NV.ViewportSwizzle (
+  -- * Extension Support
+    gl_NV_viewport_swizzle
+
+  -- * GL_NV_viewport_swizzle
+  , glViewportSwizzleNV
+  , pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV
+  , pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV
+  , pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV
+  , pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV
+  , pattern GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV
+  , pattern GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV
+  , pattern GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV
+  , pattern GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV
+  , pattern GL_VIEWPORT_SWIZZLE_W_NV
+  , pattern GL_VIEWPORT_SWIZZLE_X_NV
+  , pattern GL_VIEWPORT_SWIZZLE_Y_NV
+  , pattern GL_VIEWPORT_SWIZZLE_Z_NV
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/viewport_swizzle.txt GL_NV_viewport_swizzle> extension is available.
+
+gl_NV_viewport_swizzle :: Bool
+gl_NV_viewport_swizzle = member "GL_NV_viewport_swizzle" extensions
+{-# NOINLINE gl_NV_viewport_swizzle #-}
+
+-- | Usage: @'glViewportSwizzleNV' index swizzlex swizzley swizzlez swizzlew@
+
+
+glViewportSwizzleNV :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+glViewportSwizzleNV = ffiuintenumenumenumenumIOV glViewportSwizzleNVFunPtr
+
+glViewportSwizzleNVFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+glViewportSwizzleNVFunPtr = unsafePerformIO (getProcAddress "glViewportSwizzleNV")
+
+{-# NOINLINE glViewportSwizzleNVFunPtr #-}
+
+pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV = 0x9357
+
+pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV = 0x9351
+
+pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV = 0x9353
+
+pattern GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV = 0x9355
+
+pattern GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV = 0x9356
+
+pattern GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV = 0x9350
+
+pattern GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV = 0x9352
+
+pattern GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV = 0x9354
+
+pattern GL_VIEWPORT_SWIZZLE_W_NV = 0x935B
+
+pattern GL_VIEWPORT_SWIZZLE_X_NV = 0x9358
+
+pattern GL_VIEWPORT_SWIZZLE_Y_NV = 0x9359
+
+pattern GL_VIEWPORT_SWIZZLE_Z_NV = 0x935A
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES.hs b/dist/build/autogen/Graphics/GL/Ext/OES.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OES.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OES.hs
@@ -73,6 +73,7 @@
   , module Graphics.GL.Ext.OES.VertexArrayObject
   , module Graphics.GL.Ext.OES.VertexHalfFloat
   , module Graphics.GL.Ext.OES.VertexType1010102
+  , module Graphics.GL.Ext.OES.ViewportArray
 ) where
 
 import Graphics.GL.Ext.OES.BlendEquationSeparate
@@ -146,3 +147,4 @@
 import Graphics.GL.Ext.OES.VertexArrayObject
 import Graphics.GL.Ext.OES.VertexHalfFloat
 import Graphics.GL.Ext.OES.VertexType1010102
+import Graphics.GL.Ext.OES.ViewportArray
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES/DrawBuffersIndexed.hs b/dist/build/autogen/Graphics/GL/Ext/OES/DrawBuffersIndexed.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OES/DrawBuffersIndexed.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OES/DrawBuffersIndexed.hs
@@ -60,7 +60,7 @@
 
 -- | Usage: @'glBlendEquationSeparateiOES' buf modeRGB modeAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationSeparatei'.
 
 
 glBlendEquationSeparateiOES :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
@@ -73,7 +73,7 @@
 
 -- | Usage: @'glBlendEquationiOES' buf mode@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendEquationi'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationi'.
 
 
 glBlendEquationiOES :: MonadIO m => GLuint -> GLenum -> m ()
@@ -86,7 +86,7 @@
 
 -- | Usage: @'glBlendFuncSeparateiOES' buf srcRGB dstRGB srcAlpha dstAlpha@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFuncSeparatei'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFuncSeparatei'.
 
 
 glBlendFuncSeparateiOES :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
@@ -99,7 +99,7 @@
 
 -- | Usage: @'glBlendFunciOES' buf src dst@
 --
--- This command is an alias for 'Graphics.GL.Core40.glBlendFunci'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFunci'.
 
 
 glBlendFunciOES :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
@@ -130,42 +130,3 @@
 glColorMaskiOESFunPtr = unsafePerformIO (getProcAddress "glColorMaskiOES")
 
 {-# NOINLINE glColorMaskiOESFunPtr #-}
-
--- | Usage: @'glDisableiOES' target index@
---
--- This command is an alias for 'Graphics.GL.Internal.Shared.glDisablei'.
-
-
-glDisableiOES :: MonadIO m => GLenum -> GLuint -> m ()
-glDisableiOES = ffienumuintIOV glDisableiOESFunPtr
-
-glDisableiOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
-glDisableiOESFunPtr = unsafePerformIO (getProcAddress "glDisableiOES")
-
-{-# NOINLINE glDisableiOESFunPtr #-}
-
--- | Usage: @'glEnableiOES' target index@
---
--- This command is an alias for 'Graphics.GL.Internal.Shared.glEnablei'.
-
-
-glEnableiOES :: MonadIO m => GLenum -> GLuint -> m ()
-glEnableiOES = ffienumuintIOV glEnableiOESFunPtr
-
-glEnableiOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
-glEnableiOESFunPtr = unsafePerformIO (getProcAddress "glEnableiOES")
-
-{-# NOINLINE glEnableiOESFunPtr #-}
-
--- | Usage: @'glIsEnablediOES' target index@
---
--- This command is an alias for 'Graphics.GL.Internal.Shared.glIsEnabledi'.
-
-
-glIsEnablediOES :: MonadIO m => GLenum -> GLuint -> m GLboolean
-glIsEnablediOES = ffienumuintIOboolean glIsEnablediOESFunPtr
-
-glIsEnablediOESFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
-glIsEnablediOESFunPtr = unsafePerformIO (getProcAddress "glIsEnablediOES")
-
-{-# NOINLINE glIsEnablediOESFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES/DrawElementsBaseVertex.hs b/dist/build/autogen/Graphics/GL/Ext/OES/DrawElementsBaseVertex.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OES/DrawElementsBaseVertex.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OES/DrawElementsBaseVertex.hs
@@ -27,7 +27,7 @@
 
 -- | Usage: @'glDrawElementsBaseVertexOES' mode count type indices basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -46,7 +46,7 @@
 
 -- | Usage: @'glDrawElementsInstancedBaseVertexOES' mode count type indices instancecount basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -65,7 +65,7 @@
 
 -- | Usage: @'glDrawRangeElementsBaseVertexOES' mode start end count type indices basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES/GeometryShader.hs b/dist/build/autogen/Graphics/GL/Ext/OES/GeometryShader.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OES/GeometryShader.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OES/GeometryShader.hs
@@ -65,7 +65,7 @@
 --
 -- The parameter @level@ is a @CheckedInt32@.
 --
--- This command is an alias for 'Graphics.GL.Core32.glFramebufferTexture'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glFramebufferTexture'.
 
 
 glFramebufferTextureOES :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES/PrimitiveBoundingBox.hs b/dist/build/autogen/Graphics/GL/Ext/OES/PrimitiveBoundingBox.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OES/PrimitiveBoundingBox.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OES/PrimitiveBoundingBox.hs
@@ -24,6 +24,8 @@
 {-# NOINLINE gl_OES_primitive_bounding_box #-}
 
 -- | Usage: @'glPrimitiveBoundingBoxOES' minX minY minZ minW maxX maxY maxZ maxW@
+--
+-- This command is an alias for 'Graphics.GL.Embedded32.glPrimitiveBoundingBox'.
 
 
 glPrimitiveBoundingBoxOES :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES/SampleShading.hs b/dist/build/autogen/Graphics/GL/Ext/OES/SampleShading.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OES/SampleShading.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OES/SampleShading.hs
@@ -28,7 +28,7 @@
 --
 -- The parameter @value@ is a @ColorF@.
 --
--- This command is an alias for 'Graphics.GL.Core40.glMinSampleShading'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glMinSampleShading'.
 
 
 glMinSampleShadingOES :: MonadIO m => GLfloat -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES/ViewportArray.hs b/dist/build/autogen/Graphics/GL/Ext/OES/ViewportArray.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/OES/ViewportArray.hs
@@ -0,0 +1,176 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.OES.ViewportArray (
+  -- * Extension Support
+    gl_OES_viewport_array
+
+  -- * GL_OES_viewport_array
+  , glDepthRangeArrayfvOES
+  , glDepthRangeIndexedfOES
+  , glDisableiOES
+  , glEnableiOES
+  , glGetFloati_vOES
+  , glIsEnablediOES
+  , glScissorArrayvOES
+  , glScissorIndexedOES
+  , glScissorIndexedvOES
+  , glViewportArrayvOES
+  , glViewportIndexedfOES
+  , glViewportIndexedfvOES
+  , pattern GL_DEPTH_RANGE
+  , pattern GL_MAX_VIEWPORTS_OES
+  , pattern GL_SCISSOR_BOX
+  , pattern GL_SCISSOR_TEST
+  , pattern GL_VIEWPORT
+  , pattern GL_VIEWPORT_BOUNDS_RANGE_OES
+  , pattern GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES
+  , pattern GL_VIEWPORT_SUBPIXEL_BITS_OES
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Internal.Shared
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/OES/OES_viewport_array.txt GL_OES_viewport_array> extension is available.
+
+gl_OES_viewport_array :: Bool
+gl_OES_viewport_array = member "GL_OES_viewport_array" extensions
+{-# NOINLINE gl_OES_viewport_array #-}
+
+-- | Usage: @'glDepthRangeArrayfvOES' first count v@
+
+
+glDepthRangeArrayfvOES :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glDepthRangeArrayfvOES = ffiuintsizeiPtrfloatIOV glDepthRangeArrayfvOESFunPtr
+
+glDepthRangeArrayfvOESFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glDepthRangeArrayfvOESFunPtr = unsafePerformIO (getProcAddress "glDepthRangeArrayfvOES")
+
+{-# NOINLINE glDepthRangeArrayfvOESFunPtr #-}
+
+-- | Usage: @'glDepthRangeIndexedfOES' index n f@
+
+
+glDepthRangeIndexedfOES :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m ()
+glDepthRangeIndexedfOES = ffiuintfloatfloatIOV glDepthRangeIndexedfOESFunPtr
+
+glDepthRangeIndexedfOESFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ())
+glDepthRangeIndexedfOESFunPtr = unsafePerformIO (getProcAddress "glDepthRangeIndexedfOES")
+
+{-# NOINLINE glDepthRangeIndexedfOESFunPtr #-}
+
+-- | Usage: @'glGetFloati_vOES' target index data@
+--
+-- The parameter @target@ is a @TypeEnum@.
+--
+-- The length of @data@ should be @COMPSIZE(target)@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetFloati_v'.
+
+
+glGetFloati_vOES :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
+glGetFloati_vOES = ffienumuintPtrfloatIOV glGetFloati_vOESFunPtr
+
+glGetFloati_vOESFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
+glGetFloati_vOESFunPtr = unsafePerformIO (getProcAddress "glGetFloati_vOES")
+
+{-# NOINLINE glGetFloati_vOESFunPtr #-}
+
+-- | Usage: @'glScissorArrayvOES' first count v@
+--
+-- The length of @v@ should be @COMPSIZE(count)@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glScissorArrayv'.
+
+
+glScissorArrayvOES :: MonadIO m => GLuint -> GLsizei -> Ptr GLint -> m ()
+glScissorArrayvOES = ffiuintsizeiPtrintIOV glScissorArrayvOESFunPtr
+
+glScissorArrayvOESFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLint -> IO ())
+glScissorArrayvOESFunPtr = unsafePerformIO (getProcAddress "glScissorArrayvOES")
+
+{-# NOINLINE glScissorArrayvOESFunPtr #-}
+
+-- | Usage: @'glScissorIndexedOES' index left bottom width height@
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glScissorIndexed'.
+
+
+glScissorIndexedOES :: MonadIO m => GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+glScissorIndexedOES = ffiuintintintsizeisizeiIOV glScissorIndexedOESFunPtr
+
+glScissorIndexedOESFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
+glScissorIndexedOESFunPtr = unsafePerformIO (getProcAddress "glScissorIndexedOES")
+
+{-# NOINLINE glScissorIndexedOESFunPtr #-}
+
+-- | Usage: @'glScissorIndexedvOES' index v@
+--
+-- The length of @v@ should be @4@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glScissorIndexedv'.
+
+
+glScissorIndexedvOES :: MonadIO m => GLuint -> Ptr GLint -> m ()
+glScissorIndexedvOES = ffiuintPtrintIOV glScissorIndexedvOESFunPtr
+
+glScissorIndexedvOESFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
+glScissorIndexedvOESFunPtr = unsafePerformIO (getProcAddress "glScissorIndexedvOES")
+
+{-# NOINLINE glScissorIndexedvOESFunPtr #-}
+
+-- | Usage: @'glViewportArrayvOES' first count v@
+--
+-- The length of @v@ should be @COMPSIZE(count)@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glViewportArrayv'.
+
+
+glViewportArrayvOES :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
+glViewportArrayvOES = ffiuintsizeiPtrfloatIOV glViewportArrayvOESFunPtr
+
+glViewportArrayvOESFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+glViewportArrayvOESFunPtr = unsafePerformIO (getProcAddress "glViewportArrayvOES")
+
+{-# NOINLINE glViewportArrayvOESFunPtr #-}
+
+-- | Usage: @'glViewportIndexedfOES' index x y w h@
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glViewportIndexedf'.
+
+
+glViewportIndexedfOES :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+glViewportIndexedfOES = ffiuintfloatfloatfloatfloatIOV glViewportIndexedfOESFunPtr
+
+glViewportIndexedfOESFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+glViewportIndexedfOESFunPtr = unsafePerformIO (getProcAddress "glViewportIndexedfOES")
+
+{-# NOINLINE glViewportIndexedfOESFunPtr #-}
+
+-- | Usage: @'glViewportIndexedfvOES' index v@
+--
+-- The length of @v@ should be @4@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glViewportIndexedfv'.
+
+
+glViewportIndexedfvOES :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
+glViewportIndexedfvOES = ffiuintPtrfloatIOV glViewportIndexedfvOESFunPtr
+
+glViewportIndexedfvOESFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
+glViewportIndexedfvOESFunPtr = unsafePerformIO (getProcAddress "glViewportIndexedfvOES")
+
+{-# NOINLINE glViewportIndexedfvOESFunPtr #-}
+
+pattern GL_MAX_VIEWPORTS_OES = 0x825B
+
+pattern GL_VIEWPORT_BOUNDS_RANGE_OES = 0x825D
+
+pattern GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES = 0x825F
+
+pattern GL_VIEWPORT_SUBPIXEL_BITS_OES = 0x825C
diff --git a/dist/build/autogen/Graphics/GL/Ext/OVR.hs b/dist/build/autogen/Graphics/GL/Ext/OVR.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OVR.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OVR.hs
@@ -4,7 +4,9 @@
   -- * OVR Extensions
     module Graphics.GL.Ext.OVR.Multiview
   , module Graphics.GL.Ext.OVR.Multiview2
+  , module Graphics.GL.Ext.OVR.MultiviewMultisampledRenderToTexture
 ) where
 
 import Graphics.GL.Ext.OVR.Multiview
 import Graphics.GL.Ext.OVR.Multiview2
+import Graphics.GL.Ext.OVR.MultiviewMultisampledRenderToTexture
diff --git a/dist/build/autogen/Graphics/GL/Ext/OVR/Multiview.hs b/dist/build/autogen/Graphics/GL/Ext/OVR/Multiview.hs
--- a/dist/build/autogen/Graphics/GL/Ext/OVR/Multiview.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/OVR/Multiview.hs
@@ -8,6 +8,7 @@
   , glFramebufferTextureMultiviewOVR
   , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR
   , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR
+  , pattern GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR
   , pattern GL_MAX_VIEWS_OVR
 ) where
 
@@ -47,5 +48,7 @@
 pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x9632
 
 pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x9630
+
+pattern GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR = 0x9633
 
 pattern GL_MAX_VIEWS_OVR = 0x9631
diff --git a/dist/build/autogen/Graphics/GL/Ext/OVR/MultiviewMultisampledRenderToTexture.hs b/dist/build/autogen/Graphics/GL/Ext/OVR/MultiviewMultisampledRenderToTexture.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/OVR/MultiviewMultisampledRenderToTexture.hs
@@ -0,0 +1,42 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.OVR.MultiviewMultisampledRenderToTexture (
+  -- * Extension Support
+    gl_OVR_multiview_multisampled_render_to_texture
+
+  -- * GL_OVR_multiview_multisampled_render_to_texture
+  , glFramebufferTextureMultisampleMultiviewOVR
+) where
+
+import Control.Monad.IO.Class
+import Data.Set
+import Foreign.Ptr
+import Graphics.GL.Internal.FFI
+import Graphics.GL.Internal.Proc
+import Graphics.GL.Types
+import System.IO.Unsafe
+
+-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt GL_OVR_multiview_multisampled_render_to_texture> extension is available.
+
+gl_OVR_multiview_multisampled_render_to_texture :: Bool
+gl_OVR_multiview_multisampled_render_to_texture = member "GL_OVR_multiview_multisampled_render_to_texture" extensions
+{-# NOINLINE gl_OVR_multiview_multisampled_render_to_texture #-}
+
+-- | Usage: @'glFramebufferTextureMultisampleMultiviewOVR' target attachment texture level samples baseViewIndex numViews@
+--
+-- The parameter @target@ is a @FramebufferTarget@.
+--
+-- The parameter @attachment@ is a @FramebufferAttachment@.
+--
+-- The parameter @texture@ is a @Texture@.
+--
+-- The parameter @level@ is a @CheckedInt32@.
+
+
+glFramebufferTextureMultisampleMultiviewOVR :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> GLint -> GLsizei -> m ()
+glFramebufferTextureMultisampleMultiviewOVR = ffienumenumuintintsizeiintsizeiIOV glFramebufferTextureMultisampleMultiviewOVRFunPtr
+
+glFramebufferTextureMultisampleMultiviewOVRFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> GLint -> GLsizei -> IO ())
+glFramebufferTextureMultisampleMultiviewOVRFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureMultisampleMultiviewOVR")
+
+{-# NOINLINE glFramebufferTextureMultisampleMultiviewOVRFunPtr #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/SUN/MeshArray.hs b/dist/build/autogen/Graphics/GL/Ext/SUN/MeshArray.hs
--- a/dist/build/autogen/Graphics/GL/Ext/SUN/MeshArray.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/SUN/MeshArray.hs
@@ -26,7 +26,7 @@
 
 -- | Usage: @'glDrawMeshArraysSUN' mode first count width@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 
 
 glDrawMeshArraysSUN :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
diff --git a/dist/build/autogen/Graphics/GL/Internal/FFI.hs b/dist/build/autogen/Graphics/GL/Internal/FFI.hs
--- a/dist/build/autogen/Graphics/GL/Internal/FFI.hs
+++ b/dist/build/autogen/Graphics/GL/Internal/FFI.hs
@@ -12,12 +12,12 @@
   , ffienumuintuintuintuintuintuintuintuintIOV
   , ffienumuintuintuintuintuintuintuintuintuintuintuintIOV
   , ffienumclampfIOV
+  , ffiIOV
   , ffisizeiPtruintPtrbooleanIOboolean
   , ffiintIOV
   , ffienumintenumsizeiuintuintIOV
   , ffihandleARBhandleARBIOV
   , ffiuintenumIOV
-  , ffiIOV
   , ffienumuintIOV
   , ffienumuintuintIOV
   , ffiuintuintPtrcharIOV
@@ -87,10 +87,11 @@
   , ffiuintenumenumenumPtrVIOV
   , ffiuintenumintptrsizeiptrenumenumPtrVIOV
   , ffiuintenumsizeiptrsizeiptrenumenumPtrVIOV
-  , ffiuintenumfloatintIOV
+  , ffiuintenumintfloatintIOV
   , ffiuintenumintPtrfloatIOV
   , ffiuintenumintPtrintIOV
   , ffiuintenumintPtruintIOV
+  , ffisizeisizeiPtruintIOV
   , ffiuintintenumenumPtrVIOV
   , ffiuintintintintintsizeisizeisizeienumenumPtrVIOV
   , ffisyncbitfielduint64IOenum
@@ -286,12 +287,16 @@
   , ffiuintsizeiPtrenumIOV
   , ffienumenumenumuintIOV
   , ffienumuintsizeiPtrfloatIOV
+  , ffienumuintuintPtrfloatIOV
   , ffienumenumuintintIOV
   , ffienumenumenumuintintIOV
+  , ffienumenumenumuintintintintIOV
   , ffienumenumenumuintintsizeiIOV
   , ffienumenumenumuintintintIOV
   , ffienumenumuintintenumIOV
   , ffienumenumuintintintIOV
+  , ffienumenumuintintintintintIOV
+  , ffienumenumuintintsizeiintsizeiIOV
   , ffienumenumuintintintsizeiIOV
   , ffidoubledoubledoubledoubledoubledoubleIOV
   , ffifixedfixedfixedfixedfixedfixedIOV
@@ -333,6 +338,8 @@
   , ffiPtrintsizeiPtruintIOV
   , ffiIOenum
   , ffiuintenumPtrintIOV
+  , ffienumenumuintuintsizeiPtrfloatIOV
+  , ffiuintIOsizei
   , ffienumbooleanenumenumPtrVIOV
   , ffiuintintbooleanintenumIOuint64
   , ffihandleARBsizeiPtrsizeiPtrcharARBIOV
@@ -430,9 +437,11 @@
   , ffiuintintPtrdoubleIOV
   , ffiuintintPtrfloatIOV
   , ffihandleARBintPtrfloatIOV
+  , ffiuintintPtrint64IOV
   , ffiuintintPtrint64EXTIOV
   , ffiuintintPtrintIOV
   , ffihandleARBintPtrintIOV
+  , ffiuintintPtruint64IOV
   , ffiuintintPtruint64EXTIOV
   , ffiuintintPtruintIOV
   , ffiuintuintenumPtrint64IOV
@@ -453,7 +462,9 @@
   , ffienumintenumenumsizeiPtrVIOV
   , ffiuintintsizeiPtrdoubleIOV
   , ffiuintintsizeiPtrfloatIOV
+  , ffiuintintsizeiPtrint64IOV
   , ffiuintintsizeiPtrintIOV
+  , ffiuintintsizeiPtruint64IOV
   , ffiuintintsizeiPtruintIOV
   , ffibyteIOV
   , ffishortIOV
@@ -569,6 +580,7 @@
   , ffiuintsizeiptrPtrVbitfieldIOV
   , ffiuintenumenumuintIOV
   , ffiuintuintsizeiPtrfloatIOV
+  , ffiuintuintuintPtrfloatIOV
   , ffiuintenumuintintIOV
   , ffiuintenumenumuintintIOV
   , ffiuintenumenumuintintintIOV
@@ -627,31 +639,37 @@
   , ffiuintintdoubleIOV
   , ffiuintintfloatIOV
   , ffiuintintintIOV
+  , ffiuintintint64IOV
   , ffiuintintint64EXTIOV
   , ffiuintintsizeiPtrint64EXTIOV
   , ffiuintintuintIOV
+  , ffiuintintuint64IOV
   , ffiuintintuint64EXTIOV
   , ffiuintintsizeiPtruint64EXTIOV
   , ffiuintintdoubledoubleIOV
   , ffiuintintfloatfloatIOV
   , ffiuintintintintIOV
+  , ffiuintintint64int64IOV
   , ffiuintintint64EXTint64EXTIOV
   , ffiuintintuintuintIOV
+  , ffiuintintuint64uint64IOV
   , ffiuintintuint64EXTuint64EXTIOV
   , ffiuintintdoubledoubledoubleIOV
   , ffiuintintfloatfloatfloatIOV
   , ffiuintintintintintIOV
+  , ffiuintintint64int64int64IOV
   , ffiuintintint64EXTint64EXTint64EXTIOV
   , ffiuintintuintuintuintIOV
+  , ffiuintintuint64uint64uint64IOV
   , ffiuintintuint64EXTuint64EXTuint64EXTIOV
   , ffiuintintdoubledoubledoubledoubleIOV
   , ffiuintintfloatfloatfloatfloatIOV
   , ffiuintintintintintintIOV
+  , ffiuintintint64int64int64int64IOV
   , ffiuintintint64EXTint64EXTint64EXTint64EXTIOV
   , ffiuintintuintuintuintuintIOV
+  , ffiuintintuint64uint64uint64uint64IOV
   , ffiuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV
-  , ffiuintintuint64IOV
-  , ffiuintintsizeiPtruint64IOV
   , ffiuintintsizeibooleanPtrdoubleIOV
   , ffiuintintsizeibooleanPtrfloatIOV
   , ffiPtrfixedPtrintIObitfield
@@ -771,28 +789,36 @@
   , ffiintsizeiPtrdoubleIOV
   , ffiintfloatIOV
   , ffiintsizeiPtrfloatIOV
+  , ffiintint64IOV
   , ffiintint64EXTIOV
+  , ffiintsizeiPtrint64IOV
   , ffiintsizeiPtrint64EXTIOV
   , ffiintsizeiPtrintIOV
   , ffiintuintIOV
+  , ffiintuint64IOV
   , ffiintuint64EXTIOV
+  , ffiintsizeiPtruint64IOV
   , ffiintsizeiPtruint64EXTIOV
   , ffiintsizeiPtruintIOV
+  , ffiintint64int64IOV
   , ffiintint64EXTint64EXTIOV
   , ffiintuintuintIOV
+  , ffiintuint64uint64IOV
   , ffiintuint64EXTuint64EXTIOV
   , ffiintdoubledoubledoubleIOV
   , ffiintfloatfloatfloatIOV
+  , ffiintint64int64int64IOV
   , ffiintint64EXTint64EXTint64EXTIOV
   , ffiintuintuintuintIOV
+  , ffiintuint64uint64uint64IOV
   , ffiintuint64EXTuint64EXTuint64EXTIOV
   , ffiintdoubledoubledoubledoubleIOV
   , ffiintfloatfloatfloatfloatIOV
+  , ffiintint64int64int64int64IOV
   , ffiintint64EXTint64EXTint64EXTint64EXTIOV
   , ffiintuintuintuintuintIOV
+  , ffiintuint64uint64uint64uint64IOV
   , ffiintuint64EXTuint64EXTuint64EXTuint64EXTIOV
-  , ffiintuint64IOV
-  , ffiintsizeiPtruint64IOV
   , ffiintsizeibooleanPtrdoubleIOV
   , ffiintsizeibooleanPtrfloatIOV
   , ffiuintuintsizeiPtrVenumIOV
@@ -866,6 +892,7 @@
   , ffiintPtrfloatIOV
   , ffiintPtrintIOV
   , ffiintPtrshortIOV
+  , ffienumsizeiPtrintIOV
 ) where
 
 import Control.Monad.IO.Class
@@ -925,6 +952,11 @@
 ffienumclampfIOV :: MonadIO m => FunPtr (GLenum -> GLclampf -> IO ()) -> GLenum -> GLclampf -> m ()
 ffienumclampfIOV fp v0 v1 = liftIO (dynenumclampfIOV fp v0 v1)
 
+foreign import CALLCONV "dynamic" dynIOV :: FunPtr (IO ()) -> IO ()
+
+ffiIOV :: MonadIO m => FunPtr (IO ()) -> m ()
+ffiIOV fp  = liftIO (dynIOV fp )
+
 foreign import CALLCONV "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
@@ -950,11 +982,6 @@
 ffiuintenumIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> IO ()) -> GLuint -> GLenum -> m ()
 ffiuintenumIOV fp v0 v1 = liftIO (dynuintenumIOV fp v0 v1)
 
-foreign import CALLCONV "dynamic" dynIOV :: FunPtr (IO ()) -> IO ()
-
-ffiIOV :: MonadIO m => FunPtr (IO ()) -> m ()
-ffiIOV fp  = liftIO (dynIOV fp )
-
 foreign import CALLCONV "dynamic" dynenumuintIOV :: FunPtr (GLenum -> GLuint -> IO ()) -> GLenum -> GLuint -> IO ()
 
 ffienumuintIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> IO ()) -> GLenum -> GLuint -> m ()
@@ -1300,10 +1327,10 @@
 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 CALLCONV "dynamic" dynuintenumfloatintIOV :: FunPtr (GLuint -> GLenum -> GLfloat -> GLint -> IO ()) -> GLuint -> GLenum -> GLfloat -> GLint -> IO ()
+foreign import CALLCONV "dynamic" dynuintenumintfloatintIOV :: FunPtr (GLuint -> GLenum -> GLint -> GLfloat -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> 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)
+ffiuintenumintfloatintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLint -> GLfloat -> GLint -> IO ()) -> GLuint -> GLenum -> GLint -> GLfloat -> GLint -> m ()
+ffiuintenumintfloatintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumintfloatintIOV fp v0 v1 v2 v3 v4)
 
 foreign import CALLCONV "dynamic" dynuintenumintPtrfloatIOV :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLfloat -> IO ()) -> GLuint -> GLenum -> GLint -> Ptr GLfloat -> IO ()
 
@@ -1320,6 +1347,11 @@
 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 CALLCONV "dynamic" dynsizeisizeiPtruintIOV :: FunPtr (GLsizei -> GLsizei -> Ptr GLuint -> IO ()) -> GLsizei -> GLsizei -> Ptr GLuint -> IO ()
+
+ffisizeisizeiPtruintIOV :: MonadIO m => FunPtr (GLsizei -> GLsizei -> Ptr GLuint -> IO ()) -> GLsizei -> GLsizei -> Ptr GLuint -> m ()
+ffisizeisizeiPtruintIOV fp v0 v1 v2 = liftIO (dynsizeisizeiPtruintIOV fp v0 v1 v2)
+
 foreign import CALLCONV "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 ()
@@ -2295,6 +2327,11 @@
 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 CALLCONV "dynamic" dynenumuintuintPtrfloatIOV :: FunPtr (GLenum -> GLuint -> GLuint -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLuint -> Ptr GLfloat -> IO ()
+
+ffienumuintuintPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLuint -> GLuint -> Ptr GLfloat -> IO ()) -> GLenum -> GLuint -> GLuint -> Ptr GLfloat -> m ()
+ffienumuintuintPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynenumuintuintPtrfloatIOV fp v0 v1 v2 v3)
+
 foreign import CALLCONV "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 ()
@@ -2305,6 +2342,11 @@
 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 CALLCONV "dynamic" dynenumenumenumuintintintintIOV :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> IO ()
+
+ffienumenumenumuintintintintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> m ()
+ffienumenumenumuintintintintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumenumuintintintintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
 foreign import CALLCONV "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 ()
@@ -2325,6 +2367,16 @@
 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 CALLCONV "dynamic" dynenumenumuintintintintintIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+ffienumenumuintintintintintIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+ffienumenumuintintintintintIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumuintintintintintIOV fp v0 v1 v2 v3 v4 v5 v6)
+
+foreign import CALLCONV "dynamic" dynenumenumuintintsizeiintsizeiIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> GLint -> GLsizei -> IO ()
+
+ffienumenumuintintsizeiintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLsizei -> GLint -> GLsizei -> m ()
+ffienumenumuintintsizeiintsizeiIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynenumenumuintintsizeiintsizeiIOV fp v0 v1 v2 v3 v4 v5 v6)
+
 foreign import CALLCONV "dynamic" dynenumenumuintintintsizeiIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLsizei -> IO ()
 
 ffienumenumuintintintsizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> GLsizei -> m ()
@@ -2530,6 +2582,16 @@
 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 CALLCONV "dynamic" dynenumenumuintuintsizeiPtrfloatIOV :: FunPtr (GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()
+
+ffienumenumuintuintsizeiPtrfloatIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ()) -> GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
+ffienumenumuintuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynenumenumuintuintsizeiPtrfloatIOV fp v0 v1 v2 v3 v4 v5)
+
+foreign import CALLCONV "dynamic" dynuintIOsizei :: FunPtr (GLuint -> IO GLsizei) -> GLuint -> IO GLsizei
+
+ffiuintIOsizei :: MonadIO m => FunPtr (GLuint -> IO GLsizei) -> GLuint -> m GLsizei
+ffiuintIOsizei fp v0 = liftIO (dynuintIOsizei fp v0)
+
 foreign import CALLCONV "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 ()
@@ -3015,6 +3077,11 @@
 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 CALLCONV "dynamic" dynuintintPtrint64IOV :: FunPtr (GLuint -> GLint -> Ptr GLint64 -> IO ()) -> GLuint -> GLint -> Ptr GLint64 -> IO ()
+
+ffiuintintPtrint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLint64 -> IO ()) -> GLuint -> GLint -> Ptr GLint64 -> m ()
+ffiuintintPtrint64IOV fp v0 v1 v2 = liftIO (dynuintintPtrint64IOV fp v0 v1 v2)
+
 foreign import CALLCONV "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 ()
@@ -3030,6 +3097,11 @@
 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 CALLCONV "dynamic" dynuintintPtruint64IOV :: FunPtr (GLuint -> GLint -> Ptr GLuint64 -> IO ()) -> GLuint -> GLint -> Ptr GLuint64 -> IO ()
+
+ffiuintintPtruint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> Ptr GLuint64 -> IO ()) -> GLuint -> GLint -> Ptr GLuint64 -> m ()
+ffiuintintPtruint64IOV fp v0 v1 v2 = liftIO (dynuintintPtruint64IOV fp v0 v1 v2)
+
 foreign import CALLCONV "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 ()
@@ -3130,11 +3202,21 @@
 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 CALLCONV "dynamic" dynuintintsizeiPtrint64IOV :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ()
+
+ffiuintintsizeiPtrint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64 -> IO ()) -> GLuint -> GLint -> GLsizei -> Ptr GLint64 -> m ()
+ffiuintintsizeiPtrint64IOV fp v0 v1 v2 v3 = liftIO (dynuintintsizeiPtrint64IOV fp v0 v1 v2 v3)
+
 foreign import CALLCONV "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 CALLCONV "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 CALLCONV "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 ()
@@ -3710,6 +3792,11 @@
 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 CALLCONV "dynamic" dynuintuintuintPtrfloatIOV :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLuint -> Ptr GLfloat -> IO ()
+
+ffiuintuintuintPtrfloatIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLfloat -> IO ()) -> GLuint -> GLuint -> GLuint -> Ptr GLfloat -> m ()
+ffiuintuintuintPtrfloatIOV fp v0 v1 v2 v3 = liftIO (dynuintuintuintPtrfloatIOV fp v0 v1 v2 v3)
+
 foreign import CALLCONV "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 ()
@@ -4000,6 +4087,11 @@
 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 CALLCONV "dynamic" dynuintintint64IOV :: FunPtr (GLuint -> GLint -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> IO ()
+
+ffiuintintint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> m ()
+ffiuintintint64IOV fp v0 v1 v2 = liftIO (dynuintintint64IOV fp v0 v1 v2)
+
 foreign import CALLCONV "dynamic" dynuintintint64EXTIOV :: FunPtr (GLuint -> GLint -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> IO ()
 
 ffiuintintint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64EXT -> IO ()) -> GLuint -> GLint -> GLint64EXT -> m ()
@@ -4015,6 +4107,11 @@
 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 CALLCONV "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 CALLCONV "dynamic" dynuintintuint64EXTIOV :: FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> IO ()
 
 ffiuintintuint64EXTIOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ()) -> GLuint -> GLint -> GLuint64EXT -> m ()
@@ -4040,6 +4137,11 @@
 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 CALLCONV "dynamic" dynuintintint64int64IOV :: FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> GLint64 -> IO ()
+
+ffiuintintint64int64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> GLint64 -> m ()
+ffiuintintint64int64IOV fp v0 v1 v2 v3 = liftIO (dynuintintint64int64IOV fp v0 v1 v2 v3)
+
 foreign import CALLCONV "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 ()
@@ -4050,6 +4152,11 @@
 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 CALLCONV "dynamic" dynuintintuint64uint64IOV :: FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> GLuint64 -> IO ()
+
+ffiuintintuint64uint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> GLuint64 -> m ()
+ffiuintintuint64uint64IOV fp v0 v1 v2 v3 = liftIO (dynuintintuint64uint64IOV fp v0 v1 v2 v3)
+
 foreign import CALLCONV "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 ()
@@ -4070,6 +4177,11 @@
 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 CALLCONV "dynamic" dynuintintint64int64int64IOV :: FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> IO ()
+
+ffiuintintint64int64int64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> m ()
+ffiuintintint64int64int64IOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintint64int64int64IOV fp v0 v1 v2 v3 v4)
+
 foreign import CALLCONV "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 ()
@@ -4080,6 +4192,11 @@
 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 CALLCONV "dynamic" dynuintintuint64uint64uint64IOV :: FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()
+
+ffiuintintuint64uint64uint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+ffiuintintuint64uint64uint64IOV fp v0 v1 v2 v3 v4 = liftIO (dynuintintuint64uint64uint64IOV fp v0 v1 v2 v3 v4)
+
 foreign import CALLCONV "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 ()
@@ -4100,6 +4217,11 @@
 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 CALLCONV "dynamic" dynuintintint64int64int64int64IOV :: FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ()
+
+ffiuintintint64int64int64int64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLuint -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> m ()
+ffiuintintint64int64int64int64IOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintint64int64int64int64IOV fp v0 v1 v2 v3 v4 v5)
+
 foreign import CALLCONV "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 ()
@@ -4110,21 +4232,16 @@
 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 CALLCONV "dynamic" dynuintintuint64uint64uint64uint64IOV :: FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()
+
+ffiuintintuint64uint64uint64uint64IOV :: MonadIO m => FunPtr (GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLuint -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+ffiuintintuint64uint64uint64uint64IOV fp v0 v1 v2 v3 v4 v5 = liftIO (dynuintintuint64uint64uint64uint64IOV fp v0 v1 v2 v3 v4 v5)
+
 foreign import CALLCONV "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 CALLCONV "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 CALLCONV "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 CALLCONV "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 ()
@@ -4720,11 +4837,21 @@
 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 CALLCONV "dynamic" dynintint64IOV :: FunPtr (GLint -> GLint64 -> IO ()) -> GLint -> GLint64 -> IO ()
+
+ffiintint64IOV :: MonadIO m => FunPtr (GLint -> GLint64 -> IO ()) -> GLint -> GLint64 -> m ()
+ffiintint64IOV fp v0 v1 = liftIO (dynintint64IOV fp v0 v1)
+
 foreign import CALLCONV "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 CALLCONV "dynamic" dynintsizeiPtrint64IOV :: FunPtr (GLint -> GLsizei -> Ptr GLint64 -> IO ()) -> GLint -> GLsizei -> Ptr GLint64 -> IO ()
+
+ffiintsizeiPtrint64IOV :: MonadIO m => FunPtr (GLint -> GLsizei -> Ptr GLint64 -> IO ()) -> GLint -> GLsizei -> Ptr GLint64 -> m ()
+ffiintsizeiPtrint64IOV fp v0 v1 v2 = liftIO (dynintsizeiPtrint64IOV fp v0 v1 v2)
+
 foreign import CALLCONV "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 ()
@@ -4740,11 +4867,21 @@
 ffiintuintIOV :: MonadIO m => FunPtr (GLint -> GLuint -> IO ()) -> GLint -> GLuint -> m ()
 ffiintuintIOV fp v0 v1 = liftIO (dynintuintIOV fp v0 v1)
 
+foreign import CALLCONV "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 CALLCONV "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 CALLCONV "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 CALLCONV "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 ()
@@ -4755,6 +4892,11 @@
 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 CALLCONV "dynamic" dynintint64int64IOV :: FunPtr (GLint -> GLint64 -> GLint64 -> IO ()) -> GLint -> GLint64 -> GLint64 -> IO ()
+
+ffiintint64int64IOV :: MonadIO m => FunPtr (GLint -> GLint64 -> GLint64 -> IO ()) -> GLint -> GLint64 -> GLint64 -> m ()
+ffiintint64int64IOV fp v0 v1 v2 = liftIO (dynintint64int64IOV fp v0 v1 v2)
+
 foreign import CALLCONV "dynamic" dynintint64EXTint64EXTIOV :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> IO ()
 
 ffiintint64EXTint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLint64EXT -> GLint64EXT -> IO ()) -> GLint -> GLint64EXT -> GLint64EXT -> m ()
@@ -4765,6 +4907,11 @@
 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 CALLCONV "dynamic" dynintuint64uint64IOV :: FunPtr (GLint -> GLuint64 -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> GLuint64 -> IO ()
+
+ffiintuint64uint64IOV :: MonadIO m => FunPtr (GLint -> GLuint64 -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> GLuint64 -> m ()
+ffiintuint64uint64IOV fp v0 v1 v2 = liftIO (dynintuint64uint64IOV fp v0 v1 v2)
+
 foreign import CALLCONV "dynamic" dynintuint64EXTuint64EXTIOV :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> IO ()
 
 ffiintuint64EXTuint64EXTIOV :: MonadIO m => FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> IO ()) -> GLint -> GLuint64EXT -> GLuint64EXT -> m ()
@@ -4780,6 +4927,11 @@
 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 CALLCONV "dynamic" dynintint64int64int64IOV :: FunPtr (GLint -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLint -> GLint64 -> GLint64 -> GLint64 -> IO ()
+
+ffiintint64int64int64IOV :: MonadIO m => FunPtr (GLint -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLint -> GLint64 -> GLint64 -> GLint64 -> m ()
+ffiintint64int64int64IOV fp v0 v1 v2 v3 = liftIO (dynintint64int64int64IOV fp v0 v1 v2 v3)
+
 foreign import CALLCONV "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 ()
@@ -4790,6 +4942,11 @@
 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 CALLCONV "dynamic" dynintuint64uint64uint64IOV :: FunPtr (GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()
+
+ffiintuint64uint64uint64IOV :: MonadIO m => FunPtr (GLint -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+ffiintuint64uint64uint64IOV fp v0 v1 v2 v3 = liftIO (dynintuint64uint64uint64IOV fp v0 v1 v2 v3)
+
 foreign import CALLCONV "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 ()
@@ -4805,6 +4962,11 @@
 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 CALLCONV "dynamic" dynintint64int64int64int64IOV :: FunPtr (GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ()
+
+ffiintint64int64int64int64IOV :: MonadIO m => FunPtr (GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> IO ()) -> GLint -> GLint64 -> GLint64 -> GLint64 -> GLint64 -> m ()
+ffiintint64int64int64int64IOV fp v0 v1 v2 v3 v4 = liftIO (dynintint64int64int64int64IOV fp v0 v1 v2 v3 v4)
+
 foreign import CALLCONV "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 ()
@@ -4815,21 +4977,16 @@
 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 CALLCONV "dynamic" dynintuint64uint64uint64uint64IOV :: FunPtr (GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()
+
+ffiintuint64uint64uint64uint64IOV :: MonadIO m => FunPtr (GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> IO ()) -> GLint -> GLuint64 -> GLuint64 -> GLuint64 -> GLuint64 -> m ()
+ffiintuint64uint64uint64uint64IOV fp v0 v1 v2 v3 v4 = liftIO (dynintuint64uint64uint64uint64IOV fp v0 v1 v2 v3 v4)
+
 foreign import CALLCONV "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 CALLCONV "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 CALLCONV "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 CALLCONV "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 ()
@@ -5194,3 +5351,8 @@
 
 ffiintPtrshortIOV :: MonadIO m => FunPtr (GLint -> Ptr GLshort -> IO ()) -> GLint -> Ptr GLshort -> m ()
 ffiintPtrshortIOV fp v0 v1 = liftIO (dynintPtrshortIOV fp v0 v1)
+
+foreign import CALLCONV "dynamic" dynenumsizeiPtrintIOV :: FunPtr (GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLsizei -> Ptr GLint -> IO ()
+
+ffienumsizeiPtrintIOV :: MonadIO m => FunPtr (GLenum -> GLsizei -> Ptr GLint -> IO ()) -> GLenum -> GLsizei -> Ptr GLint -> m ()
+ffienumsizeiPtrintIOV fp v0 v1 v2 = liftIO (dynenumsizeiPtrintIOV fp v0 v1 v2)
diff --git a/dist/build/autogen/Graphics/GL/Internal/Shared.hs b/dist/build/autogen/Graphics/GL/Internal/Shared.hs
--- a/dist/build/autogen/Graphics/GL/Internal/Shared.hs
+++ b/dist/build/autogen/Graphics/GL/Internal/Shared.hs
@@ -69,7 +69,7 @@
 
 -- | Usage: @'glBegin' mode@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 
 
 glBegin :: MonadIO m => GLenum -> m ()
@@ -8066,7 +8066,7 @@
 
 -- | Usage: @'glDrawArrays' mode first count@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawArrays.xhtml>
 
@@ -8081,7 +8081,7 @@
 
 -- | Usage: @'glDrawArraysInstanced' mode first count instancecount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawArraysInstanced.xhtml>
 
@@ -8128,7 +8128,7 @@
 
 -- | Usage: @'glDrawElements' mode count type indices@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -8147,7 +8147,7 @@
 
 -- | Usage: @'glDrawElementsBaseVertex' mode count type indices basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -8166,7 +8166,7 @@
 
 -- | Usage: @'glDrawElementsInstanced' mode count type indices instancecount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -8185,7 +8185,7 @@
 
 -- | Usage: @'glDrawElementsInstancedBaseVertex' mode count type indices instancecount basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -8204,7 +8204,7 @@
 
 -- | Usage: @'glDrawRangeElements' mode start end count type indices@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -8223,7 +8223,7 @@
 
 -- | Usage: @'glDrawRangeElementsBaseVertex' mode start end count type indices basevertex@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -8389,6 +8389,19 @@
 
 {-# NOINLINE glFramebufferRenderbufferFunPtr #-}
 
+-- | Usage: @'glFramebufferTexture' target attachment texture level@
+--
+-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFramebufferTexture.xhtml>
+
+
+glFramebufferTexture :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
+glFramebufferTexture = ffienumenumuintintIOV glFramebufferTextureFunPtr
+
+glFramebufferTextureFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
+glFramebufferTextureFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture")
+
+{-# NOINLINE glFramebufferTextureFunPtr #-}
+
 -- | Usage: @'glFramebufferTexture1D' target attachment textarget texture level@
 --
 -- The parameter @target@ is a @FramebufferTarget@.
@@ -9731,7 +9744,7 @@
 
 -- | Usage: @'glMultiDrawArrays' mode first count drawcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @first@ should be @COMPSIZE(count)@.
 --
@@ -9750,7 +9763,7 @@
 
 -- | Usage: @'glMultiDrawElements' mode count type indices drawcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -12206,6 +12219,8 @@
 
 pattern GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213
 
+pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7
+
 pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1
 
 pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0
@@ -12230,6 +12245,8 @@
 
 pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB
 
+pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8
+
 pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7
 
 pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56
@@ -12258,6 +12275,14 @@
 
 pattern GL_FUNC_SUBTRACT = 0x800A
 
+pattern GL_GEOMETRY_INPUT_TYPE = 0x8917
+
+pattern GL_GEOMETRY_OUTPUT_TYPE = 0x8918
+
+pattern GL_GEOMETRY_SHADER = 0x8DD9
+
+pattern GL_GEOMETRY_VERTICES_OUT = 0x8916
+
 pattern GL_GEQUAL = 0x0206
 
 pattern GL_GREATER = 0x0204
@@ -12338,6 +12363,8 @@
 
 pattern GL_LINES = 0x0001
 
+pattern GL_LINES_ADJACENCY = 0x000A
+
 pattern GL_LINE_LOOP = 0x0002
 
 pattern GL_LINE_SMOOTH = 0x0B20
@@ -12346,6 +12373,8 @@
 
 pattern GL_LINE_STRIP = 0x0003
 
+pattern GL_LINE_STRIP_ADJACENCY = 0x000B
+
 pattern GL_LINE_WIDTH = 0x0B21
 
 pattern GL_LINE_WIDTH_GRANULARITY = 0x0B23
@@ -12410,8 +12439,20 @@
 
 pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49
 
+pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123
+
+pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124
+
+pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0
+
+pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29
+
+pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1
+
 pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C
 
+pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF
+
 pattern GL_MAX_INTEGER_SAMPLES = 0x9110
 
 pattern GL_MAX_PROGRAM_TEXEL_OFFSET = 0x8905
@@ -13182,10 +13223,14 @@
 
 pattern GL_TRIANGLES = 0x0004
 
+pattern GL_TRIANGLES_ADJACENCY = 0x000C
+
 pattern GL_TRIANGLE_FAN = 0x0006
 
 pattern GL_TRIANGLE_STRIP = 0x0005
 
+pattern GL_TRIANGLE_STRIP_ADJACENCY = 0x000D
+
 pattern GL_TRUE = 1
 
 pattern GL_UNIFORM_ARRAY_STRIDE = 0x8A3C
@@ -13782,6 +13827,50 @@
 
 {-# NOINLINE glBindTransformFeedbackFunPtr #-}
 
+-- | Usage: @'glBlendEquationSeparatei' buf modeRGB modeAlpha@
+
+
+glBlendEquationSeparatei :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendEquationSeparatei = ffiuintenumenumIOV glBlendEquationSeparateiFunPtr
+
+glBlendEquationSeparateiFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendEquationSeparateiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparatei")
+
+{-# NOINLINE glBlendEquationSeparateiFunPtr #-}
+
+-- | Usage: @'glBlendEquationi' buf mode@
+
+
+glBlendEquationi :: MonadIO m => GLuint -> GLenum -> m ()
+glBlendEquationi = ffiuintenumIOV glBlendEquationiFunPtr
+
+glBlendEquationiFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
+glBlendEquationiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationi")
+
+{-# NOINLINE glBlendEquationiFunPtr #-}
+
+-- | Usage: @'glBlendFuncSeparatei' buf srcRGB dstRGB srcAlpha dstAlpha@
+
+
+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 #-}
+
+-- | Usage: @'glBlendFunci' buf src dst@
+
+
+glBlendFunci :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
+glBlendFunci = ffiuintenumenumIOV glBlendFunciFunPtr
+
+glBlendFunciFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
+glBlendFunciFunPtr = unsafePerformIO (getProcAddress "glBlendFunci")
+
+{-# NOINLINE glBlendFunciFunPtr #-}
+
 -- | Usage: @'glDeleteTransformFeedbacks' n ids@
 --
 -- The length of @ids@ should be @n@.
@@ -13799,7 +13888,7 @@
 
 -- | Usage: @'glDrawArraysIndirect' mode indirect@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawArraysIndirect.xhtml>
 
@@ -13814,7 +13903,7 @@
 
 -- | Usage: @'glDrawElementsIndirect' mode type indirect@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawElementsIndirect.xhtml>
 
@@ -13829,7 +13918,7 @@
 
 -- | Usage: @'glDrawTransformFeedback' mode id@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawTransformFeedback.xhtml>
 
@@ -13844,7 +13933,7 @@
 
 -- | Usage: @'glDrawTransformFeedbackStream' mode id stream@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawTransformFeedbackStream.xhtml>
 
@@ -14021,6 +14110,21 @@
 
 {-# NOINLINE glIsTransformFeedbackFunPtr #-}
 
+-- | Usage: @'glMinSampleShading' value@
+--
+-- The parameter @value@ is a @ColorF@.
+--
+-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glMinSampleShading.xhtml>
+
+
+glMinSampleShading :: MonadIO m => GLfloat -> m ()
+glMinSampleShading = ffifloatIOV glMinSampleShadingFunPtr
+
+glMinSampleShadingFunPtr :: FunPtr (GLfloat -> IO ())
+glMinSampleShadingFunPtr = unsafePerformIO (getProcAddress "glMinSampleShading")
+
+{-# NOINLINE glMinSampleShadingFunPtr #-}
+
 -- | Usage: @'glPatchParameterfv' pname values@
 --
 -- The length of @values@ should be @COMPSIZE(pname)@.
@@ -14363,6 +14467,8 @@
 
 pattern GL_GEOMETRY_SHADER_INVOCATIONS = 0x887F
 
+pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E
+
 pattern GL_ISOLINES = 0x8E7A
 
 pattern GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E
@@ -14415,6 +14521,8 @@
 
 pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E
 
+pattern GL_MIN_SAMPLE_SHADING_VALUE = 0x8C37
+
 pattern GL_NUM_COMPATIBLE_SUBROUTINES = 0x8E4A
 
 pattern GL_PATCHES = 0x000E
@@ -14425,6 +14533,12 @@
 
 pattern GL_PATCH_VERTICES = 0x8E72
 
+pattern GL_SAMPLER_CUBE_MAP_ARRAY = 0x900C
+
+pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D
+
+pattern GL_SAMPLE_SHADING = 0x8C36
+
 pattern GL_TESS_CONTROL_OUTPUT_VERTICES = 0x8E75
 
 pattern GL_TESS_CONTROL_SHADER = 0x8E88
@@ -14455,6 +14569,8 @@
 
 pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1
 
+pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F
+
 -- | Usage: @'glActiveShaderProgram' pipeline program@
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glActiveShaderProgram.xhtml>
@@ -14733,7 +14849,7 @@
 
 -- | Usage: @'glProgramUniform1dv' program location count value@
 --
--- The length of @value@ should be @1@.
+-- The length of @value@ should be @count@.
 
 
 glProgramUniform1dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
@@ -14757,7 +14873,7 @@
 
 -- | Usage: @'glProgramUniform1fv' program location count value@
 --
--- The length of @value@ should be @1@.
+-- The length of @value@ should be @count@.
 
 
 glProgramUniform1fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
@@ -14781,7 +14897,7 @@
 
 -- | Usage: @'glProgramUniform1iv' program location count value@
 --
--- The length of @value@ should be @1@.
+-- The length of @value@ should be @count@.
 
 
 glProgramUniform1iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
@@ -14805,7 +14921,7 @@
 
 -- | Usage: @'glProgramUniform1uiv' program location count value@
 --
--- The length of @value@ should be @1@.
+-- The length of @value@ should be @count@.
 
 
 glProgramUniform1uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
@@ -14829,7 +14945,7 @@
 
 -- | Usage: @'glProgramUniform2dv' program location count value@
 --
--- The length of @value@ should be @2@.
+-- The length of @value@ should be @count*2@.
 
 
 glProgramUniform2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
@@ -14853,7 +14969,7 @@
 
 -- | Usage: @'glProgramUniform2fv' program location count value@
 --
--- The length of @value@ should be @2@.
+-- The length of @value@ should be @count*2@.
 
 
 glProgramUniform2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
@@ -14877,7 +14993,7 @@
 
 -- | Usage: @'glProgramUniform2iv' program location count value@
 --
--- The length of @value@ should be @2@.
+-- The length of @value@ should be @count*2@.
 
 
 glProgramUniform2iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
@@ -14901,7 +15017,7 @@
 
 -- | Usage: @'glProgramUniform2uiv' program location count value@
 --
--- The length of @value@ should be @2@.
+-- The length of @value@ should be @count*2@.
 
 
 glProgramUniform2uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
@@ -14925,7 +15041,7 @@
 
 -- | Usage: @'glProgramUniform3dv' program location count value@
 --
--- The length of @value@ should be @3@.
+-- The length of @value@ should be @count*3@.
 
 
 glProgramUniform3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
@@ -14949,7 +15065,7 @@
 
 -- | Usage: @'glProgramUniform3fv' program location count value@
 --
--- The length of @value@ should be @3@.
+-- The length of @value@ should be @count*3@.
 
 
 glProgramUniform3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
@@ -14973,7 +15089,7 @@
 
 -- | Usage: @'glProgramUniform3iv' program location count value@
 --
--- The length of @value@ should be @3@.
+-- The length of @value@ should be @count*3@.
 
 
 glProgramUniform3iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
@@ -14997,7 +15113,7 @@
 
 -- | Usage: @'glProgramUniform3uiv' program location count value@
 --
--- The length of @value@ should be @3@.
+-- The length of @value@ should be @count*3@.
 
 
 glProgramUniform3uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
@@ -15021,7 +15137,7 @@
 
 -- | Usage: @'glProgramUniform4dv' program location count value@
 --
--- The length of @value@ should be @4@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniform4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
@@ -15045,7 +15161,7 @@
 
 -- | Usage: @'glProgramUniform4fv' program location count value@
 --
--- The length of @value@ should be @4@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniform4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
@@ -15069,7 +15185,7 @@
 
 -- | Usage: @'glProgramUniform4iv' program location count value@
 --
--- The length of @value@ should be @4@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniform4iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
@@ -15093,7 +15209,7 @@
 
 -- | Usage: @'glProgramUniform4uiv' program location count value@
 --
--- The length of @value@ should be @4@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniform4uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
@@ -15108,7 +15224,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @2@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniformMatrix2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15123,7 +15239,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @2@.
+-- The length of @value@ should be @count*4@.
 
 
 glProgramUniformMatrix2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15138,7 +15254,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*6@.
 
 
 glProgramUniformMatrix2x3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15153,7 +15269,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*6@.
 
 
 glProgramUniformMatrix2x3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15168,7 +15284,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*8@.
 
 
 glProgramUniformMatrix2x4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15183,7 +15299,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*8@.
 
 
 glProgramUniformMatrix2x4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15198,7 +15314,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @3@.
+-- The length of @value@ should be @count*9@.
 
 
 glProgramUniformMatrix3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15213,7 +15329,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @3@.
+-- The length of @value@ should be @count*9@.
 
 
 glProgramUniformMatrix3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15228,7 +15344,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*6@.
 
 
 glProgramUniformMatrix3x2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15243,7 +15359,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*6@.
 
 
 glProgramUniformMatrix3x2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15258,7 +15374,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*12@.
 
 
 glProgramUniformMatrix3x4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15273,7 +15389,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*12@.
 
 
 glProgramUniformMatrix3x4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15288,7 +15404,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @4@.
+-- The length of @value@ should be @count*16@.
 
 
 glProgramUniformMatrix4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15303,7 +15419,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @4@.
+-- The length of @value@ should be @count*16@.
 
 
 glProgramUniformMatrix4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15318,7 +15434,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*8@.
 
 
 glProgramUniformMatrix4x2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15333,7 +15449,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*8@.
 
 
 glProgramUniformMatrix4x2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15348,7 +15464,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*12@.
 
 
 glProgramUniformMatrix4x3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
@@ -15363,7 +15479,7 @@
 --
 -- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
 --
--- The length of @value@ should be @count@.
+-- The length of @value@ should be @count*12@.
 
 
 glProgramUniformMatrix4x3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
@@ -15702,7 +15818,7 @@
 
 -- | Usage: @'glDrawArraysInstancedBaseInstance' mode first count instancecount baseinstance@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawArraysInstancedBaseInstance.xhtml>
 
@@ -15717,7 +15833,7 @@
 
 -- | Usage: @'glDrawElementsInstancedBaseInstance' mode count type indices instancecount baseinstance@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @indices@ should be @count@.
 --
@@ -15734,7 +15850,7 @@
 
 -- | Usage: @'glDrawElementsInstancedBaseVertexBaseInstance' mode count type indices instancecount basevertex baseinstance@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The length of @indices@ should be @count@.
 --
@@ -15751,7 +15867,7 @@
 
 -- | Usage: @'glDrawTransformFeedbackInstanced' mode id instancecount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawTransformFeedbackInstanced.xhtml>
 
@@ -15766,7 +15882,7 @@
 
 -- | Usage: @'glDrawTransformFeedbackStreamInstanced' mode id stream instancecount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawTransformFeedbackStreamInstanced.xhtml>
 
@@ -17397,6 +17513,8 @@
 
 pattern GL_QUERY_RESULT_NO_WAIT = 0x9194
 
+pattern GL_TEXTURE_BUFFER_BINDING = 0x8C2A
+
 pattern GL_TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B
 
 pattern GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C
@@ -17460,13 +17578,13 @@
 
 {-# NOINLINE glClearNamedBufferSubDataFunPtr #-}
 
--- | Usage: @'glClearNamedFramebufferfi' framebuffer buffer depth stencil@
+-- | Usage: @'glClearNamedFramebufferfi' framebuffer buffer drawbuffer depth stencil@
 
 
-glClearNamedFramebufferfi :: MonadIO m => GLuint -> GLenum -> GLfloat -> GLint -> m ()
-glClearNamedFramebufferfi = ffiuintenumfloatintIOV glClearNamedFramebufferfiFunPtr
+glClearNamedFramebufferfi :: MonadIO m => GLuint -> GLenum -> GLint -> GLfloat -> GLint -> m ()
+glClearNamedFramebufferfi = ffiuintenumintfloatintIOV glClearNamedFramebufferfiFunPtr
 
-glClearNamedFramebufferfiFunPtr :: FunPtr (GLuint -> GLenum -> GLfloat -> GLint -> IO ())
+glClearNamedFramebufferfiFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLfloat -> GLint -> IO ())
 glClearNamedFramebufferfiFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferfi")
 
 {-# NOINLINE glClearNamedFramebufferfiFunPtr #-}
@@ -18644,6 +18762,8 @@
 
 pattern GL_CLIP_ORIGIN = 0x935C
 
+pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004
+
 pattern GL_CONTEXT_LOST = 0x0507
 
 pattern GL_CONTEXT_RELEASE_BEHAVIOR = 0x82FB
@@ -18684,6 +18804,18 @@
 
 pattern GL_BLEND_EQUATION = 0x8009
 
+pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9
+
+pattern GL_SUBSAMPLE_DISTANCE_AMD = 0x883F
+
+pattern GL_FLOAT16_NV = 0x8FF8
+
+pattern GL_FLOAT16_VEC2_NV = 0x8FF9
+
+pattern GL_FLOAT16_VEC3_NV = 0x8FFA
+
+pattern GL_FLOAT16_VEC4_NV = 0x8FFB
+
 -- | Usage: @'glGetUniformi64vNV' program location params@
 --
 -- The length of @params@ should be @COMPSIZE(program,location)@.
@@ -19094,14 +19226,6 @@
 
 {-# NOINLINE glUniform4ui64vNVFunPtr #-}
 
-pattern GL_FLOAT16_NV = 0x8FF8
-
-pattern GL_FLOAT16_VEC2_NV = 0x8FF9
-
-pattern GL_FLOAT16_VEC3_NV = 0x8FFA
-
-pattern GL_FLOAT16_VEC4_NV = 0x8FFB
-
 pattern GL_INT16_NV = 0x8FE4
 
 pattern GL_INT16_VEC2_NV = 0x8FE5
@@ -19170,6 +19294,8 @@
 
 pattern GL_STORAGE_SHARED_APPLE = 0x85BF
 
+pattern GL_UNSIGNED_INT64_ARB = 0x140F
+
 -- | Usage: @'glBindProgramARB' target program@
 --
 -- The parameter @target@ is a @ProgramTargetARB@.
@@ -19599,17 +19725,6 @@
 
 pattern GL_FLOAT_VEC4_ARB = 0x8B52
 
--- | Usage: @'glTexPageCommitmentARB' target level xoffset yoffset zoffset width height depth commit@
-
-
-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 #-}
-
 -- | Usage: @'glDisableVertexAttribArrayARB' index@
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDisableVertexAttribArray'.
@@ -20283,6 +20398,21 @@
 
 pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C
 
+-- | Usage: @'glBindFragDataLocationEXT' program color name@
+--
+-- The length of @name@ should be @COMPSIZE(name)@.
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glBindFragDataLocation'.
+
+
+glBindFragDataLocationEXT :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
+glBindFragDataLocationEXT = ffiuintuintPtrcharIOV glBindFragDataLocationEXTFunPtr
+
+glBindFragDataLocationEXTFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
+glBindFragDataLocationEXTFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocationEXT")
+
+{-# NOINLINE glBindFragDataLocationEXTFunPtr #-}
+
 pattern GL_R16F_EXT = 0x822D
 
 pattern GL_RG16F_EXT = 0x822F
@@ -21039,7 +21169,7 @@
 
 -- | Usage: @'glDrawArraysInstancedEXT' mode start count primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawArraysInstanced'.
 
@@ -21054,7 +21184,7 @@
 
 -- | Usage: @'glDrawElementsInstancedEXT' mode count type indices primcount@
 --
--- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
+-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
 --
 -- The parameter @type@ is a @DrawElementsType@.
 --
@@ -21104,7 +21234,7 @@
 --
 -- The parameter @level@ is a @CheckedInt32@.
 --
--- This command is an alias for 'Graphics.GL.Core32.glFramebufferTexture'.
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glFramebufferTexture'.
 
 
 glFramebufferTextureEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
@@ -21176,6 +21306,10 @@
 
 pattern GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8
 
+pattern GL_MULTISAMPLE_EXT = 0x809D
+
+pattern GL_SAMPLE_ALPHA_TO_ONE_EXT = 0x809F
+
 -- | Usage: @'glRasterSamplesEXT' samples fixedsamplelocations@
 
 
@@ -21375,6 +21509,8 @@
 
 pattern GL_TEXTURE_EXTERNAL_OES = 0x8D65
 
+pattern GL_CONTEXT_ROBUST_ACCESS = 0x90F3
+
 pattern GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB
 
 pattern GL_COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8
@@ -21474,6 +21610,45 @@
 pattern GL_SECONDARY_COLOR_NV = 0x852D
 
 pattern GL_DEPTH_COMPONENT24_OES = 0x81A6
+
+-- | Usage: @'glDisableiOES' target index@
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glDisablei'.
+
+
+glDisableiOES :: MonadIO m => GLenum -> GLuint -> m ()
+glDisableiOES = ffienumuintIOV glDisableiOESFunPtr
+
+glDisableiOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glDisableiOESFunPtr = unsafePerformIO (getProcAddress "glDisableiOES")
+
+{-# NOINLINE glDisableiOESFunPtr #-}
+
+-- | Usage: @'glEnableiOES' target index@
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glEnablei'.
+
+
+glEnableiOES :: MonadIO m => GLenum -> GLuint -> m ()
+glEnableiOES = ffienumuintIOV glEnableiOESFunPtr
+
+glEnableiOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
+glEnableiOESFunPtr = unsafePerformIO (getProcAddress "glEnableiOES")
+
+{-# NOINLINE glEnableiOESFunPtr #-}
+
+-- | Usage: @'glIsEnablediOES' target index@
+--
+-- This command is an alias for 'Graphics.GL.Internal.Shared.glIsEnabledi'.
+
+
+glIsEnablediOES :: MonadIO m => GLenum -> GLuint -> m GLboolean
+glIsEnablediOES = ffienumuintIOboolean glIsEnablediOESFunPtr
+
+glIsEnablediOESFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
+glIsEnablediOESFunPtr = unsafePerformIO (getProcAddress "glIsEnablediOES")
+
+{-# NOINLINE glIsEnablediOESFunPtr #-}
 
 -- | Usage: @'glGetTexGenxvOES' coord pname params@
 --
diff --git a/dist/build/autogen/Graphics/GL/SafetyCritical20.hs b/dist/build/autogen/Graphics/GL/SafetyCritical20.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/SafetyCritical20.hs
@@ -0,0 +1,391 @@
+-- This file was automatically generated.
+{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.SafetyCritical20 (
+  -- * Graphics.GL.SafetyCritical20
+    glActiveTexture
+  , glBindBuffer
+  , glBindFramebuffer
+  , glBindRenderbuffer
+  , glBindTexture
+  , glBlendColor
+  , glBlendEquation
+  , glBlendEquationSeparate
+  , glBlendFunc
+  , glBlendFuncSeparate
+  , glBufferData
+  , glBufferSubData
+  , glCheckFramebufferStatus
+  , glClear
+  , glClearColor
+  , glClearDepthf
+  , glClearStencil
+  , glColorMask
+  , glCompressedTexSubImage2D
+  , glCreateProgram
+  , glCullFace
+  , glDepthFunc
+  , glDepthMask
+  , glDepthRangef
+  , glDisable
+  , glDisableVertexAttribArray
+  , glDrawArrays
+  , glDrawRangeElements
+  , glEnable
+  , glEnableVertexAttribArray
+  , glFinish
+  , glFlush
+  , glFramebufferRenderbuffer
+  , glFramebufferTexture2D
+  , glFrontFace
+  , glGenBuffers
+  , glGenFramebuffers
+  , glGenRenderbuffers
+  , glGenTextures
+  , glGenerateMipmap
+  , glGetAttribLocation
+  , glGetBooleanv
+  , glGetBufferParameteriv
+  , glGetError
+  , glGetFloatv
+  , glGetFramebufferAttachmentParameteriv
+  , glGetGraphicsResetStatus
+  , glGetIntegerv
+  , glGetProgramiv
+  , glGetRenderbufferParameteriv
+  , glGetString
+  , glGetTexParameterfv
+  , glGetTexParameteriv
+  , glGetUniformLocation
+  , glGetVertexAttribPointerv
+  , glGetVertexAttribfv
+  , glGetVertexAttribiv
+  , glGetnUniformfv
+  , glGetnUniformiv
+  , glHint
+  , glIsEnabled
+  , glLineWidth
+  , glPixelStorei
+  , glPolygonOffset
+  , glProgramBinary
+  , glReadnPixels
+  , glRenderbufferStorage
+  , glSampleCoverage
+  , glScissor
+  , glStencilFunc
+  , glStencilFuncSeparate
+  , glStencilMask
+  , glStencilMaskSeparate
+  , glStencilOp
+  , glStencilOpSeparate
+  , glTexParameterf
+  , glTexParameterfv
+  , glTexParameteri
+  , glTexParameteriv
+  , glTexStorage2D
+  , glTexSubImage2D
+  , glUniform1f
+  , glUniform1fv
+  , glUniform1i
+  , glUniform1iv
+  , glUniform2f
+  , glUniform2fv
+  , glUniform2i
+  , glUniform2iv
+  , glUniform3f
+  , glUniform3fv
+  , glUniform3i
+  , glUniform3iv
+  , glUniform4f
+  , glUniform4fv
+  , glUniform4i
+  , glUniform4iv
+  , glUniformMatrix2fv
+  , glUniformMatrix3fv
+  , glUniformMatrix4fv
+  , glUseProgram
+  , glVertexAttrib1f
+  , glVertexAttrib1fv
+  , glVertexAttrib2f
+  , glVertexAttrib2fv
+  , glVertexAttrib3f
+  , glVertexAttrib3fv
+  , glVertexAttrib4f
+  , glVertexAttrib4fv
+  , glVertexAttribPointer
+  , glViewport
+  , pattern GL_ACTIVE_TEXTURE
+  , pattern GL_ALIASED_LINE_WIDTH_RANGE
+  , pattern GL_ALIASED_POINT_SIZE_RANGE
+  , pattern GL_ALPHA_BITS
+  , pattern GL_ALWAYS
+  , pattern GL_ARRAY_BUFFER
+  , pattern GL_ARRAY_BUFFER_BINDING
+  , 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_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_COMPRESSED_TEXTURE_FORMATS
+  , pattern GL_CONSTANT_ALPHA
+  , pattern GL_CONSTANT_COLOR
+  , pattern GL_CONTEXT_LOST
+  , pattern GL_CONTEXT_ROBUST_ACCESS
+  , 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_DEPTH_ATTACHMENT
+  , pattern GL_DEPTH_BITS
+  , pattern GL_DEPTH_BUFFER_BIT
+  , pattern GL_DEPTH_CLEAR_VALUE
+  , 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_FLOAT
+  , pattern GL_FRAMEBUFFER
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+  , 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_UNDEFINED
+  , 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_GUILTY_CONTEXT_RESET
+  , 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_INNOCENT_CONTEXT_RESET
+  , pattern GL_INT
+  , 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_LOSE_CONTEXT_ON_RESET
+  , pattern GL_LOW_FLOAT
+  , pattern GL_LOW_INT
+  , pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
+  , 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_PROGRAM_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_PROGRAM_BINARY_FORMATS
+  , pattern GL_R8
+  , pattern GL_RED
+  , 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_RESET_NOTIFICATION_STRATEGY
+  , pattern GL_RG
+  , pattern GL_RG8
+  , pattern GL_RGB
+  , pattern GL_RGB565
+  , pattern GL_RGB5_A1
+  , pattern GL_RGB8
+  , pattern GL_RGBA
+  , pattern GL_RGBA4
+  , pattern GL_RGBA8
+  , pattern GL_SAMPLER_2D
+  , 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_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_IMMUTABLE_FORMAT
+  , 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_UNKNOWN_CONTEXT_RESET
+  , 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_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_VIEWPORT
+  , pattern GL_ZERO
+) where
+
+import Graphics.GL.Internal.Shared
diff --git a/extensions.txt b/extensions.txt
--- a/extensions.txt
+++ b/extensions.txt
@@ -9,8 +9,10 @@
 GL_AMD_debug_output https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/debug_output.txt
 GL_AMD_depth_clamp_separate https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/depth_clamp_separate.txt
 GL_AMD_draw_buffers_blend https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/draw_buffers_blend.txt
+GL_AMD_framebuffer_sample_positions https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_sample_positions.txt
 GL_AMD_gcn_shader https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/gcn_shader.txt
 GL_AMD_glx_gpu_association https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/glx_gpu_association.txt
+GL_AMD_gpu_shader_half_float https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/gpu_shader_half_float.txt
 GL_AMD_gpu_shader_int64 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/gpu_shader_int64.txt
 GL_AMD_interleaved_elements https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/interleaved_elements.txt
 GL_AMD_multi_draw_indirect https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/multi_draw_indirect.txt
@@ -24,6 +26,8 @@
 GL_AMD_sample_positions https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/sample_positions.txt
 GL_AMD_seamless_cubemap_per_texture https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/seamless_cubemap_per_texture.txt
 GL_AMD_shader_atomic_counter_ops https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_atomic_counter_ops.txt
+GL_AMD_shader_ballot https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_ballot.txt
+GL_AMD_shader_explicit_vertex_parameter https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_explicit_vertex_parameter.txt
 GL_AMD_shader_stencil_export https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_stencil_export.txt
 GL_AMD_shader_stencil_value_export https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_stencil_value_export.txt
 GL_AMD_shader_trinary_minmax https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/shader_trinary_minmax.txt
@@ -75,6 +79,7 @@
 GL_APPLE_ycbcr_422 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/APPLE/ycbcr_422.txt
 GL_ARB_ES2_compatibility https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/ES2_compatibility.txt
 GL_ARB_ES3_1_compatibility https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/ES3_1_compatibility.txt
+GL_ARB_ES3_2_compatibility https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/ES3_2_compatibility.txt
 GL_ARB_ES3_compatibility https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/ES3_compatibility.txt
 GL_ARB_arrays_of_arrays https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/arrays_of_arrays.txt
 GL_ARB_base_instance https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/base_instance.txt
@@ -114,6 +119,7 @@
 GL_ARB_fragment_program https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/fragment_program.txt
 GL_ARB_fragment_program_shadow https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/fragment_program_shadow.txt
 GL_ARB_fragment_shader https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/fragment_shader.txt
+GL_ARB_fragment_shader_interlock https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/fragment_shader_interlock.txt
 GL_ARB_framebuffer_no_attachments https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/framebuffer_no_attachments.txt
 GL_ARB_framebuffer_object https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/framebuffer_object.txt
 GL_ARB_framebuffer_sRGB https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/framebuffer_sRGB.txt
@@ -126,6 +132,7 @@
 GL_ARB_glx_robustness_isolation https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/glx_robustness_isolation.txt
 GL_ARB_gpu_shader5 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/gpu_shader5.txt
 GL_ARB_gpu_shader_fp64 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/gpu_shader_fp64.txt
+GL_ARB_gpu_shader_int64 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/gpu_shader_int64.txt
 GL_ARB_half_float_pixel https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/half_float_pixel.txt
 GL_ARB_half_float_vertex https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/half_float_vertex.txt
 GL_ARB_indirect_parameters https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/indirect_parameters.txt
@@ -142,23 +149,29 @@
 GL_ARB_multitexture https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/multitexture.txt
 GL_ARB_occlusion_query https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/occlusion_query.txt
 GL_ARB_occlusion_query2 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/occlusion_query2.txt
+GL_ARB_parallel_shader_compile https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/parallel_shader_compile.txt
 GL_ARB_pipeline_statistics_query https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/pipeline_statistics_query.txt
 GL_ARB_pixel_buffer_object https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/pixel_buffer_object.txt
 GL_ARB_point_parameters https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/point_parameters.txt
 GL_ARB_point_sprite https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/point_sprite.txt
+GL_ARB_post_depth_coverage https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/post_depth_coverage.txt
 GL_ARB_program_interface_query https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/program_interface_query.txt
 GL_ARB_provoking_vertex https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/provoking_vertex.txt
 GL_ARB_query_buffer_object https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/query_buffer_object.txt
 GL_ARB_robust_buffer_access_behavior https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/robust_buffer_access_behavior.txt
 GL_ARB_robustness https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/robustness.txt
 GL_ARB_robustness_isolation https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/robustness_isolation.txt
+GL_ARB_sample_locations https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sample_locations.txt
 GL_ARB_sample_shading https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sample_shading.txt
 GL_ARB_sampler_objects https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sampler_objects.txt
 GL_ARB_seamless_cube_map https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/seamless_cube_map.txt
 GL_ARB_seamless_cubemap_per_texture https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/seamless_cubemap_per_texture.txt
 GL_ARB_separate_shader_objects https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/separate_shader_objects.txt
+GL_ARB_shader_atomic_counter_ops https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_atomic_counter_ops.txt
 GL_ARB_shader_atomic_counters https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_atomic_counters.txt
+GL_ARB_shader_ballot https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_ballot.txt
 GL_ARB_shader_bit_encoding https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_bit_encoding.txt
+GL_ARB_shader_clock https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_clock.txt
 GL_ARB_shader_draw_parameters https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_draw_parameters.txt
 GL_ARB_shader_group_vote https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_group_vote.txt
 GL_ARB_shader_image_load_store https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_image_load_store.txt
@@ -170,6 +183,7 @@
 GL_ARB_shader_subroutine https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_subroutine.txt
 GL_ARB_shader_texture_image_samples https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_texture_image_samples.txt
 GL_ARB_shader_texture_lod https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_texture_lod.txt
+GL_ARB_shader_viewport_layer_array https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shader_viewport_layer_array.txt
 GL_ARB_shading_language_100 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shading_language_100.txt
 GL_ARB_shading_language_420pack https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shading_language_420pack.txt
 GL_ARB_shading_language_include https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shading_language_include.txt
@@ -178,6 +192,8 @@
 GL_ARB_shadow_ambient https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/shadow_ambient.txt
 GL_ARB_sparse_buffer https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sparse_buffer.txt
 GL_ARB_sparse_texture https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sparse_texture.txt
+GL_ARB_sparse_texture2 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sparse_texture2.txt
+GL_ARB_sparse_texture_clamp https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sparse_texture_clamp.txt
 GL_ARB_stencil_texturing https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/stencil_texturing.txt
 GL_ARB_sync https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/sync.txt
 GL_ARB_tessellation_shader https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/tessellation_shader.txt
@@ -195,6 +211,7 @@
 GL_ARB_texture_env_combine https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_env_combine.txt
 GL_ARB_texture_env_crossbar https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_env_crossbar.txt
 GL_ARB_texture_env_dot3 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_env_dot3.txt
+GL_ARB_texture_filter_minmax https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_filter_minmax.txt
 GL_ARB_texture_float https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_float.txt
 GL_ARB_texture_gather https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_gather.txt
 GL_ARB_texture_mirror_clamp_to_edge https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/ARB/texture_mirror_clamp_to_edge.txt
@@ -276,6 +293,8 @@
 GL_EXT_blend_minmax https://www.khronos.org/registry/gles/extensions/EXT/EXT_blend_minmax.txt
 GL_EXT_blend_subtract https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/blend_subtract.txt
 GL_EXT_buffer_storage https://www.khronos.org/registry/gles/extensions/EXT/EXT_buffer_storage.txt
+GL_EXT_clear_texture https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clear_texture.txt
+GL_EXT_clip_cull_distance https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_clip_cull_distance.txt
 GL_EXT_clip_volume_hint https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/clip_volume_hint.txt
 GL_EXT_cmyka https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/cmyka.txt
 GL_EXT_color_buffer_float https://www.khronos.org/registry/gles/extensions/EXT/EXT_color_buffer_float.txt
@@ -283,6 +302,7 @@
 GL_EXT_color_subtable https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/color_subtable.txt
 GL_EXT_compiled_vertex_array https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/compiled_vertex_array.txt
 GL_EXT_compressed_ETC1_RGB8_sub_texture https://www.khronos.org/registry/gles/extensions/EXT/EXT_compressed_ETC1_RGB8_sub_texture.txt
+GL_EXT_conservative_depth https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_conservative_depth.txt
 GL_EXT_convolution https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/convolution.txt
 GL_EXT_coordinate_frame https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/coordinate_frame.txt
 GL_EXT_copy_image https://www.khronos.org/registry/gles/extensions/EXT/EXT_copy_image.txt
@@ -300,6 +320,7 @@
 GL_EXT_draw_instanced https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/draw_instanced.txt
 GL_EXT_draw_instanced https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_instanced.txt
 GL_EXT_draw_range_elements https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/draw_range_elements.txt
+GL_EXT_draw_transform_feedback https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_draw_transform_feedback.txt
 GL_EXT_float_blend https://www.khronos.org/registry/gles/extensions/EXT/EXT_float_blend.txt
 GL_EXT_fog_coord https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/fog_coord.txt
 GL_EXT_frag_depth https://www.khronos.org/registry/gles/extensions/EXT/EXT_frag_depth.txt
@@ -331,6 +352,7 @@
 GL_EXT_misc_attribute https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/misc_attribute.txt
 GL_EXT_multi_draw_arrays https://www.khronos.org/registry/gles/extensions/EXT/EXT_multi_draw_arrays.txt
 GL_EXT_multi_draw_arrays https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/multi_draw_arrays.txt
+GL_EXT_multisample_compatibility https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisample_compatibility.txt
 GL_EXT_multisampled_render_to_texture https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt
 GL_EXT_multiview_draw_buffers https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt
 GL_EXT_nurbs_tessellator https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/nurbs_tessellator.txt
@@ -348,6 +370,7 @@
 GL_EXT_polygon_offset_clamp https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/polygon_offset_clamp.txt
 GL_EXT_post_depth_coverage https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/post_depth_coverage.txt
 GL_EXT_primitive_bounding_box https://www.khronos.org/registry/gles/extensions/EXT/EXT_primitive_bounding_box.txt
+GL_EXT_protected_textures https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt
 GL_EXT_provoking_vertex https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/provoking_vertex.txt
 GL_EXT_pvrtc_sRGB https://www.khronos.org/registry/gles/extensions/EXT/EXT_pvrtc_sRGB.txt
 GL_EXT_raster_multisample https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/raster_multisample.txt
@@ -362,13 +385,16 @@
 GL_EXT_separate_shader_objects https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt
 GL_EXT_separate_specular_color https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/separate_specular_color.txt
 GL_EXT_shader_framebuffer_fetch https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_framebuffer_fetch.txt
+GL_EXT_shader_group_vote https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_group_vote.txt
 GL_EXT_shader_image_load_formatted https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/shader_image_load_formatted.txt
 GL_EXT_shader_image_load_store https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/shader_image_load_store.txt
 GL_EXT_shader_implicit_conversions https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_implicit_conversions.txt
 GL_EXT_shader_integer_mix https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/shader_integer_mix.txt
 GL_EXT_shader_integer_mix https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_integer_mix.txt
 GL_EXT_shader_io_blocks https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_io_blocks.txt
+GL_EXT_shader_non_constant_global_initializers https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_non_constant_global_initializers.txt
 GL_EXT_shader_pixel_local_storage https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_pixel_local_storage.txt
+GL_EXT_shader_pixel_local_storage2 https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_shader_pixel_local_storage2.txt
 GL_EXT_shader_texture_lod https://www.khronos.org/registry/gles/extensions/EXT/EXT_shader_texture_lod.txt
 GL_EXT_shadow_funcs https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/shadow_funcs.txt
 GL_EXT_shadow_samplers https://www.khronos.org/registry/gles/extensions/EXT/EXT_shadow_samplers.txt
@@ -434,6 +460,7 @@
 GL_EXT_vertex_weighting https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/vertex_weighting.txt
 GL_EXT_visual_info https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/visual_info.txt
 GL_EXT_visual_rating https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/visual_rating.txt
+GL_EXT_window_rectangles https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/window_rectangles.txt
 GL_EXT_wgl_create_context_es2_profile https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/wgl_create_context_es2_profile.txt
 GL_EXT_wgl_depth_float https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/wgl_depth_float.txt
 GL_EXT_wgl_display_color_table https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/wgl_display_color_table.txt
@@ -465,6 +492,8 @@
 GL_IBM_static_data https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/IBM/static_data.txt
 GL_IBM_texture_mirrored_repeat https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/IBM/texture_mirrored_repeat.txt
 GL_IBM_vertex_array_lists https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/IBM/vertex_array_lists.txt
+GL_IMG_bindless_texture https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_bindless_texture.txt
+GL_IMG_framebuffer_downsample https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_framebuffer_downsample.txt
 GL_IMG_multisampled_render_to_texture https://www.khronos.org/registry/gles/extensions/IMG/IMG_multisampled_render_to_texture.txt
 GL_IMG_program_binary https://www.khronos.org/registry/gles/extensions/IMG/IMG_program_binary.txt
 GL_IMG_read_format https://www.khronos.org/registry/gles/extensions/IMG/IMG_read_format.txt
@@ -472,10 +501,13 @@
 GL_IMG_texture_compression_pvrtc https://www.khronos.org/registry/gles/extensions/IMG/IMG_texture_compression_pvrtc.txt
 GL_IMG_texture_compression_pvrtc2 https://www.khronos.org/registry/gles/extensions/IMG/IMG_texture_compression_pvrtc2.txt
 GL_IMG_texture_env_enhanced_fixed_function https://www.khronos.org/registry/gles/extensions/IMG/IMG_texture_env_enhanced_fixed_function.txt
+GL_IMG_texture_filter_cubic https://www.khronos.org/registry/OpenGL/extensions/IMG/IMG_texture_filter_cubic.txt
 GL_IMG_user_clip_plane https://www.khronos.org/registry/gles/extensions/IMG/IMG_user_clip_plane.txt
 GL_INGR_color_clamp https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INGR/color_clamp.txt
 GL_INGR_interlace_read https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INGR/interlace_read.txt
+GL_INTEL_conservative_rasterization https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/conservative_rasterization.txt
 GL_INTEL_fragment_shader_ordering https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/fragment_shader_ordering.txt
+GL_INTEL_framebuffer_CMAA https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/framebuffer_CMAA.txt
 GL_INTEL_map_texture https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/map_texture.txt
 GL_INTEL_parallel_arrays https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/parallel_arrays.txt
 GL_INTEL_performance_query https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/INTEL/performance_query.txt
@@ -497,6 +529,7 @@
 GL_KHR_texture_compression_astc_hdr https://www.khronos.org/registry/gles/extensions/KHR/KHR_texture_compression_astc_hdr.txt
 GL_KHR_texture_compression_astc_hdr https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/KHR/texture_compression_astc_hdr.txt
 GL_KHR_texture_compression_astc_ldr https://www.khronos.org/registry/gles/extensions/KHR/KHR_texture_compression_astc_ldr.txt
+GL_KHR_texture_compression_astc_sliced_3d https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/KHR/texture_compression_astc_sliced_3d.txt
 GL_MESAX_texture_stack https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/MESAX/texture_stack.txt
 GL_MESA_agp_offset https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/MESA/agp_offset.txt
 GL_MESA_copy_sub_buffer https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/MESA/copy_sub_buffer.txt
@@ -522,10 +555,13 @@
 GL_NV_blend_equation_advanced https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/blend_equation_advanced.txt
 GL_NV_blend_equation_advanced_coherent https://www.khronos.org/registry/gles/extensions/NV/NV_blend_equation_advanced_coherent.txt
 GL_NV_blend_square https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/blend_square.txt
+GL_NV_clip_space_w_scaling https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/clip_space_w_scaling.txt
 GL_NV_command_list https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/command_list.txt
 GL_NV_compute_program5 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/compute_program5.txt
 GL_NV_conditional_render https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/conditional_render.txt
 GL_NV_conservative_raster https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/conservative_raster.txt
+GL_NV_conservative_raster_dilate https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/conservative_raster_dilate.txt
+GL_NV_conservative_raster_pre_snap_triangles https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/conservative_raster_pre_snap_triangles.txt
 GL_NV_copy_buffer https://www.khronos.org/registry/gles/extensions/NV/NV_copy_buffer.txt
 GL_NV_copy_depth_to_color https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/copy_depth_to_color.txt
 GL_NV_copy_image https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/copy_image.txt
@@ -599,11 +635,13 @@
 GL_NV_register_combiners2 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/register_combiners2.txt
 GL_NV_render_depth_texture https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/render_depth_texture.txt
 GL_NV_render_texture_rectangle https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/render_texture_rectangle.txt
+GL_NV_robustness_video_memory_purge https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/robustness_video_memory_purge.txt
 GL_NV_sRGB_formats https://www.khronos.org/registry/gles/extensions/NV/NV_sRGB_formats.txt
 GL_NV_sample_locations https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/sample_locations.txt
 GL_NV_sample_mask_override_coverage https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/sample_mask_override_coverage.txt
 GL_NV_shader_atomic_counters https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_atomic_counters.txt
 GL_NV_shader_atomic_float https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_atomic_float.txt
+GL_NV_shader_atomic_float64 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_atomic_float64.txt
 GL_NV_shader_atomic_fp16_vector https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_atomic_fp16_vector.txt
 GL_NV_shader_atomic_int64 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_atomic_int64.txt
 GL_NV_shader_buffer_load https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_buffer_load.txt
@@ -613,6 +651,7 @@
 GL_NV_shader_thread_shuffle https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/shader_thread_shuffle.txt
 GL_NV_shadow_samplers_array https://www.khronos.org/registry/gles/extensions/NV/NV_shadow_samplers_array.txt
 GL_NV_shadow_samplers_cube https://www.khronos.org/registry/gles/extensions/NV/NV_shadow_samplers_cube.txt
+GL_NV_stereo_view_rendering https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/stereo_view_rendering.txt
 GL_NV_tessellation_program5 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/tessellation_program5.txt
 GL_NV_texgen_emboss https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/texgen_emboss.txt
 GL_NV_texgen_reflection https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/texgen_reflection.txt
@@ -647,6 +686,7 @@
 GL_NV_vertex_program4 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/vertex_program4.txt
 GL_NV_video_capture https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/video_capture.txt
 GL_NV_viewport_array2 https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/viewport_array2.txt
+GL_NV_viewport_swizzle https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/viewport_swizzle.txt
 GL_NV_wgl_delay_before_swap https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/wgl_delay_before_swap.txt
 GL_NV_wgl_swap_group https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/wgl_swap_group.txt
 GL_NV_wgl_video_output https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/wgl_video_output.txt
@@ -722,6 +762,7 @@
 GL_OES_vertex_array_object https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt
 GL_OES_vertex_half_float https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_half_float.txt
 GL_OES_vertex_type_10_10_10_2 https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_type_10_10_10_2.txt
+GL_OES_viewport_array https://www.khronos.org/registry/OpenGL/extensions/OES/OES_viewport_array.txt
 GL_OML_glx_swap_method https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/OML/glx_swap_method.txt
 GL_OML_glx_sync_control https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/OML/glx_sync_control.txt
 GL_OML_interlace https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/OML/interlace.txt
@@ -730,6 +771,7 @@
 GL_OML_wgl_sync_control https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/OML/wgl_sync_control.txt
 GL_OVR_multiview https://www.khronos.org/registry/gles/extensions/OVR/multiview.txt
 GL_OVR_multiview2 https://www.khronos.org/registry/gles/extensions/OVR/multiview2.txt
+GL_OVR_multiview_multisampled_render_to_texture https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt
 GL_PGI_misc_hints https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/PGI/misc_hints.txt
 GL_PGI_vertex_hints https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/PGI/vertex_hints.txt
 GL_QCOM_alpha_test https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_alpha_test.txt
diff --git a/gl.cabal b/gl.cabal
--- a/gl.cabal
+++ b/gl.cabal
@@ -1,17 +1,17 @@
 name:          gl
-version:       0.7.8.1
+version:       0.8.0
 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-2016 Edward A. Kmett,
-               Copyright © 2014-2016 Gabríel Arthúr Pétursson,
+copyright:     Copyright © 2014-2017 Edward A. Kmett,
+               Copyright © 2014-2017 Gabríel Arthúr Pétursson,
                Copyright © 2013 Sven Panne
 category:      Graphics
 build-type:    Custom
-cabal-version: >=1.18
+cabal-version: >=1.24
 extra-source-files:
   gl.xml man.txt extensions.txt
   CHANGELOG.markdown README.markdown TODO.markdown
@@ -21,6 +21,16 @@
   type:     git
   location: https://github.com/ekmett/gl
 
+custom-setup
+  setup-depends:
+      base == 4.*
+    , Cabal >= 1.24
+    , directory >= 1.2 && <= 1.4
+    , filepath >= 1.3 && < 1.5
+    , hxt == 9.3.*
+    , transformers >= 0.2 && < 0.6
+    , containers == 0.5.*
+
 flag UseNativeWindowsLibraries
    description:
       When compiling under Windows, use the native libraries instead of e.g. the
@@ -44,15 +54,11 @@
 
   -- for Setup.hs
   build-depends:
-      directory == 1.2.*
-    , filepath >= 1.3 && < 1.5
-    , hxt == 9.3.*
-    , split == 0.2.*
 
   default-language: Haskell2010
 
   if impl(ghc >= 8)
-    ghc-options: -fno-warn-missing-pat-syn-sigs
+    ghc-options: -Wno-missing-pattern-synonym-signatures
 
   if os(windows) && flag(UseNativeWindowsLibraries)
     if arch(i386)
@@ -96,6 +102,7 @@
     Graphics.GL.Embedded20
     Graphics.GL.Embedded30
     Graphics.GL.Embedded31
+    Graphics.GL.Embedded32
     Graphics.GL.EmbeddedCommon11
     Graphics.GL.EmbeddedLite11
     Graphics.GL.Ext
@@ -107,7 +114,9 @@
     Graphics.GL.Ext.AMD.DebugOutput
     Graphics.GL.Ext.AMD.DepthClampSeparate
     Graphics.GL.Ext.AMD.DrawBuffersBlend
+    Graphics.GL.Ext.AMD.FramebufferSamplePositions
     Graphics.GL.Ext.AMD.GcnShader
+    Graphics.GL.Ext.AMD.GpuShaderHalfFloat
     Graphics.GL.Ext.AMD.GpuShaderInt64
     Graphics.GL.Ext.AMD.InterleavedElements
     Graphics.GL.Ext.AMD.MultiDrawIndirect
@@ -120,6 +129,8 @@
     Graphics.GL.Ext.AMD.SamplePositions
     Graphics.GL.Ext.AMD.SeamlessCubemapPerTexture
     Graphics.GL.Ext.AMD.ShaderAtomicCounterOps
+    Graphics.GL.Ext.AMD.ShaderBallot
+    Graphics.GL.Ext.AMD.ShaderExplicitVertexParameter
     Graphics.GL.Ext.AMD.ShaderStencilExport
     Graphics.GL.Ext.AMD.ShaderTrinaryMinmax
     Graphics.GL.Ext.AMD.SparseTexture
@@ -202,6 +213,7 @@
     Graphics.GL.Ext.ARB.DrawInstanced
     Graphics.GL.Ext.ARB.ES2Compatibility
     Graphics.GL.Ext.ARB.ES31Compatibility
+    Graphics.GL.Ext.ARB.ES32Compatibility
     Graphics.GL.Ext.ARB.ES3Compatibility
     Graphics.GL.Ext.ARB.EnhancedLayouts
     Graphics.GL.Ext.ARB.ExplicitAttribLocation
@@ -211,6 +223,7 @@
     Graphics.GL.Ext.ARB.FragmentProgram
     Graphics.GL.Ext.ARB.FragmentProgramShadow
     Graphics.GL.Ext.ARB.FragmentShader
+    Graphics.GL.Ext.ARB.FragmentShaderInterlock
     Graphics.GL.Ext.ARB.FramebufferNoAttachments
     Graphics.GL.Ext.ARB.FramebufferObject
     Graphics.GL.Ext.ARB.FramebufferSRGB
@@ -219,6 +232,7 @@
     Graphics.GL.Ext.ARB.GetTextureSubImage
     Graphics.GL.Ext.ARB.GpuShader5
     Graphics.GL.Ext.ARB.GpuShaderFp64
+    Graphics.GL.Ext.ARB.GpuShaderInt64
     Graphics.GL.Ext.ARB.HalfFloatPixel
     Graphics.GL.Ext.ARB.HalfFloatVertex
     Graphics.GL.Ext.ARB.Imaging
@@ -236,23 +250,29 @@
     Graphics.GL.Ext.ARB.Multitexture
     Graphics.GL.Ext.ARB.OcclusionQuery
     Graphics.GL.Ext.ARB.OcclusionQuery2
+    Graphics.GL.Ext.ARB.ParallelShaderCompile
     Graphics.GL.Ext.ARB.PipelineStatisticsQuery
     Graphics.GL.Ext.ARB.PixelBufferObject
     Graphics.GL.Ext.ARB.PointParameters
     Graphics.GL.Ext.ARB.PointSprite
+    Graphics.GL.Ext.ARB.PostDepthCoverage
     Graphics.GL.Ext.ARB.ProgramInterfaceQuery
     Graphics.GL.Ext.ARB.ProvokingVertex
     Graphics.GL.Ext.ARB.QueryBufferObject
     Graphics.GL.Ext.ARB.RobustBufferAccessBehavior
     Graphics.GL.Ext.ARB.Robustness
     Graphics.GL.Ext.ARB.RobustnessIsolation
+    Graphics.GL.Ext.ARB.SampleLocations
     Graphics.GL.Ext.ARB.SampleShading
     Graphics.GL.Ext.ARB.SamplerObjects
     Graphics.GL.Ext.ARB.SeamlessCubeMap
     Graphics.GL.Ext.ARB.SeamlessCubemapPerTexture
     Graphics.GL.Ext.ARB.SeparateShaderObjects
     Graphics.GL.Ext.ARB.ShaderAtomicCounters
+    Graphics.GL.Ext.ARB.ShaderAtomicCounterOps
+    Graphics.GL.Ext.ARB.ShaderBallot
     Graphics.GL.Ext.ARB.ShaderBitEncoding
+    Graphics.GL.Ext.ARB.ShaderClock
     Graphics.GL.Ext.ARB.ShaderDrawParameters
     Graphics.GL.Ext.ARB.ShaderGroupVote
     Graphics.GL.Ext.ARB.ShaderImageLoadStore
@@ -264,6 +284,7 @@
     Graphics.GL.Ext.ARB.ShaderSubroutine
     Graphics.GL.Ext.ARB.ShaderTextureImageSamples
     Graphics.GL.Ext.ARB.ShaderTextureLod
+    Graphics.GL.Ext.ARB.ShaderViewportLayerArray
     Graphics.GL.Ext.ARB.ShadingLanguage100
     Graphics.GL.Ext.ARB.ShadingLanguage420pack
     Graphics.GL.Ext.ARB.ShadingLanguageInclude
@@ -272,6 +293,8 @@
     Graphics.GL.Ext.ARB.ShadowAmbient
     Graphics.GL.Ext.ARB.SparseBuffer
     Graphics.GL.Ext.ARB.SparseTexture
+    Graphics.GL.Ext.ARB.SparseTexture2
+    Graphics.GL.Ext.ARB.SparseTextureClamp
     Graphics.GL.Ext.ARB.StencilTexturing
     Graphics.GL.Ext.ARB.Sync
     Graphics.GL.Ext.ARB.TessellationShader
@@ -289,6 +312,7 @@
     Graphics.GL.Ext.ARB.TextureEnvCombine
     Graphics.GL.Ext.ARB.TextureEnvCrossbar
     Graphics.GL.Ext.ARB.TextureEnvDot3
+    Graphics.GL.Ext.ARB.TextureFilterMinmax
     Graphics.GL.Ext.ARB.TextureFloat
     Graphics.GL.Ext.ARB.TextureGather
     Graphics.GL.Ext.ARB.TextureMirrorClampToEdge
@@ -357,16 +381,21 @@
     Graphics.GL.Ext.EXT.BindableUniform
     Graphics.GL.Ext.EXT.BlendColor
     Graphics.GL.Ext.EXT.BlendEquationSeparate
+    Graphics.GL.Ext.EXT.BlendFuncExtended
     Graphics.GL.Ext.EXT.BlendFuncSeparate
     Graphics.GL.Ext.EXT.BlendLogicOp
     Graphics.GL.Ext.EXT.BlendMinmax
     Graphics.GL.Ext.EXT.BlendSubtract
     Graphics.GL.Ext.EXT.BufferStorage
+    Graphics.GL.Ext.EXT.ClearTexture
+    Graphics.GL.Ext.EXT.ClipCullDistance
     Graphics.GL.Ext.EXT.ClipVolumeHint
     Graphics.GL.Ext.EXT.Cmyka
+    Graphics.GL.Ext.EXT.ColorBufferFloat
     Graphics.GL.Ext.EXT.ColorBufferHalfFloat
     Graphics.GL.Ext.EXT.ColorSubtable
     Graphics.GL.Ext.EXT.CompiledVertexArray
+    Graphics.GL.Ext.EXT.ConservativeDepth
     Graphics.GL.Ext.EXT.Convolution
     Graphics.GL.Ext.EXT.CoordinateFrame
     Graphics.GL.Ext.EXT.CopyImage
@@ -384,6 +413,7 @@
     Graphics.GL.Ext.EXT.DrawElementsBaseVertex
     Graphics.GL.Ext.EXT.DrawInstanced
     Graphics.GL.Ext.EXT.DrawRangeElements
+    Graphics.GL.Ext.EXT.DrawTransformFeedback
     Graphics.GL.Ext.EXT.FogCoord
     Graphics.GL.Ext.EXT.FourTwoTwoPixels
     Graphics.GL.Ext.EXT.FloatBlend
@@ -410,6 +440,7 @@
     Graphics.GL.Ext.EXT.MultiDrawArrays
     Graphics.GL.Ext.EXT.MultiDrawIndirect
     Graphics.GL.Ext.EXT.Multisample
+    Graphics.GL.Ext.EXT.MultisampleCompatibility
     Graphics.GL.Ext.EXT.MultisampledRenderToTexture
     Graphics.GL.Ext.EXT.MultiviewDrawBuffers
     Graphics.GL.Ext.EXT.OcclusionQueryBoolean
@@ -425,6 +456,7 @@
     Graphics.GL.Ext.EXT.PolygonOffsetClamp
     Graphics.GL.Ext.EXT.PostDepthCoverage
     Graphics.GL.Ext.EXT.PrimitiveBoundingBox
+    Graphics.GL.Ext.EXT.ProtectedTextures
     Graphics.GL.Ext.EXT.ProvokingVertex
     Graphics.GL.Ext.EXT.PvrtcSRGB
     Graphics.GL.Ext.EXT.RasterMultisample
@@ -438,12 +470,15 @@
     Graphics.GL.Ext.EXT.SeparateShaderObjects
     Graphics.GL.Ext.EXT.SeparateSpecularColor
     Graphics.GL.Ext.EXT.ShaderFramebufferFetch
+    Graphics.GL.Ext.EXT.ShaderGroupVote
     Graphics.GL.Ext.EXT.ShaderImageLoadFormatted
     Graphics.GL.Ext.EXT.ShaderImageLoadStore
     Graphics.GL.Ext.EXT.ShaderImplicitConversions
     Graphics.GL.Ext.EXT.ShaderIntegerMix
     Graphics.GL.Ext.EXT.ShaderIoBlocks
+    Graphics.GL.Ext.EXT.ShaderNonConstantGlobalInitializers
     Graphics.GL.Ext.EXT.ShaderPixelLocalStorage
+    Graphics.GL.Ext.EXT.ShaderPixelLocalStorage2
     Graphics.GL.Ext.EXT.ShaderTextureLod
     Graphics.GL.Ext.EXT.ShadowFuncs
     Graphics.GL.Ext.EXT.ShadowSamplers
@@ -499,6 +534,7 @@
     Graphics.GL.Ext.EXT.VertexAttrib64bit
     Graphics.GL.Ext.EXT.VertexShader
     Graphics.GL.Ext.EXT.VertexWeighting
+    Graphics.GL.Ext.EXT.WindowRectangles
     Graphics.GL.Ext.EXT.X11SyncObject
     Graphics.GL.Ext.EXT.YUVTarget
     Graphics.GL.Ext.FJ
@@ -519,6 +555,8 @@
     Graphics.GL.Ext.IBM.TextureMirroredRepeat
     Graphics.GL.Ext.IBM.VertexArrayLists
     Graphics.GL.Ext.IMG
+    Graphics.GL.Ext.IMG.BindlessTexture
+    Graphics.GL.Ext.IMG.FramebufferDownsample
     Graphics.GL.Ext.IMG.MultisampledRenderToTexture
     Graphics.GL.Ext.IMG.ProgramBinary
     Graphics.GL.Ext.IMG.ReadFormat
@@ -526,13 +564,16 @@
     Graphics.GL.Ext.IMG.TextureCompressionPvrtc
     Graphics.GL.Ext.IMG.TextureCompressionPvrtc2
     Graphics.GL.Ext.IMG.TextureEnvEnhancedFixedFunction
+    Graphics.GL.Ext.IMG.TextureFilterCubic
     Graphics.GL.Ext.IMG.UserClipPlane
     Graphics.GL.Ext.INGR
     Graphics.GL.Ext.INGR.BlendFuncSeparate
     Graphics.GL.Ext.INGR.ColorClamp
     Graphics.GL.Ext.INGR.InterlaceRead
     Graphics.GL.Ext.INTEL
+    Graphics.GL.Ext.INTEL.ConservativeRasterization
     Graphics.GL.Ext.INTEL.FragmentShaderOrdering
+    Graphics.GL.Ext.INTEL.FramebufferCMAA
     Graphics.GL.Ext.INTEL.MapTexture
     Graphics.GL.Ext.INTEL.ParallelArrays
     Graphics.GL.Ext.INTEL.PerformanceQuery
@@ -546,6 +587,7 @@
     Graphics.GL.Ext.KHR.Robustness
     Graphics.GL.Ext.KHR.TextureCompressionAstcHdr
     Graphics.GL.Ext.KHR.TextureCompressionAstcLdr
+    Graphics.GL.Ext.KHR.TextureCompressionAstcSliced3d
     Graphics.GL.Ext.MESA
     Graphics.GL.Ext.MESA.PackInvert
     Graphics.GL.Ext.MESA.ResizeBuffers
@@ -560,10 +602,13 @@
     Graphics.GL.Ext.NV.BlendEquationAdvanced
     Graphics.GL.Ext.NV.BlendEquationAdvancedCoherent
     Graphics.GL.Ext.NV.BlendSquare
+    Graphics.GL.Ext.NV.ClipSpaceWScaling
     Graphics.GL.Ext.NV.CommandList
     Graphics.GL.Ext.NV.ComputeProgram5
     Graphics.GL.Ext.NV.ConditionalRender
     Graphics.GL.Ext.NV.ConservativeRaster
+    Graphics.GL.Ext.NV.ConservativeRasterDilate
+    Graphics.GL.Ext.NV.ConservativeRasterPreSnapTriangles
     Graphics.GL.Ext.NV.CopyBuffer
     Graphics.GL.Ext.NV.CopyDepthToColor
     Graphics.GL.Ext.NV.CopyImage
@@ -627,11 +672,13 @@
     Graphics.GL.Ext.NV.ReadStencil
     Graphics.GL.Ext.NV.RegisterCombiners
     Graphics.GL.Ext.NV.RegisterCombiners2
+    Graphics.GL.Ext.NV.RobustnessVideoMemoryPurge
     Graphics.GL.Ext.NV.SRGBFormats
     Graphics.GL.Ext.NV.SampleLocations
     Graphics.GL.Ext.NV.SampleMaskOverrideCoverage
     Graphics.GL.Ext.NV.ShaderAtomicCounters
     Graphics.GL.Ext.NV.ShaderAtomicFloat
+    Graphics.GL.Ext.NV.ShaderAtomicFloat64
     Graphics.GL.Ext.NV.ShaderAtomicFp16Vector
     Graphics.GL.Ext.NV.ShaderAtomicInt64
     Graphics.GL.Ext.NV.ShaderBufferLoad
@@ -642,6 +689,7 @@
     Graphics.GL.Ext.NV.ShaderThreadShuffle
     Graphics.GL.Ext.NV.ShadowSamplersArray
     Graphics.GL.Ext.NV.ShadowSamplersCube
+    Graphics.GL.Ext.NV.StereoViewRendering
     Graphics.GL.Ext.NV.TessellationProgram5
     Graphics.GL.Ext.NV.TexgenEmboss
     Graphics.GL.Ext.NV.TexgenReflection
@@ -674,6 +722,7 @@
     Graphics.GL.Ext.NV.VideoCapture
     Graphics.GL.Ext.NV.ViewportArray
     Graphics.GL.Ext.NV.ViewportArray2
+    Graphics.GL.Ext.NV.ViewportSwizzle
     Graphics.GL.Ext.NVX
     Graphics.GL.Ext.NVX.ConditionalRender
     Graphics.GL.Ext.NVX.GpuMemoryInfo
@@ -749,6 +798,7 @@
     Graphics.GL.Ext.OES.VertexArrayObject
     Graphics.GL.Ext.OES.VertexHalfFloat
     Graphics.GL.Ext.OES.VertexType1010102
+    Graphics.GL.Ext.OES.ViewportArray
     Graphics.GL.Ext.OML
     Graphics.GL.Ext.OML.Interlace
     Graphics.GL.Ext.OML.Resample
@@ -756,6 +806,7 @@
     Graphics.GL.Ext.OVR
     Graphics.GL.Ext.OVR.Multiview
     Graphics.GL.Ext.OVR.Multiview2
+    Graphics.GL.Ext.OVR.MultiviewMultisampledRenderToTexture
     Graphics.GL.Ext.PGI
     Graphics.GL.Ext.PGI.MiscHints
     Graphics.GL.Ext.PGI.VertexHints
@@ -852,6 +903,7 @@
     Graphics.GL.Internal.FFI
     Graphics.GL.Internal.Proc
     Graphics.GL.Internal.Shared
+    Graphics.GL.SafetyCritical20
     Graphics.GL.Standard10
     Graphics.GL.Standard11
     Graphics.GL.Standard12
diff --git a/gl.xml b/gl.xml
# file too large to diff: gl.xml
diff --git a/src/Graphics/GL.hs b/src/Graphics/GL.hs
--- a/src/Graphics/GL.hs
+++ b/src/Graphics/GL.hs
@@ -9,10 +9,10 @@
 ----------------------------------------------------------------------------
 module Graphics.GL (
     module Graphics.GL.Core45
-  , module Graphics.GL.Embedded31
+  , module Graphics.GL.Embedded32
   , module Graphics.GL.Types
 ) where
 
 import Graphics.GL.Core45
-import Graphics.GL.Embedded31
+import Graphics.GL.Embedded32
 import Graphics.GL.Types
