diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,9 +1,12 @@
+0.7.1
+-----
+* Fix enumeration constants for the SGIX_resample extension to their correct values.
+* Added support for a new extension:
+  * OES_EGL_image_external_essl3
+
 0.7
 ---
 * Fixed the type of `glPathGlyphIndexRangeNV`. (issue #6)
-
-0.6.4
------
 * Added support for fourteen new extensions:
   * OES_copy_image
   * OES_draw_buffers_indexed
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
@@ -18,6 +18,7 @@
   , module Graphics.GL.Ext.OES.DrawTexture
   , module Graphics.GL.Ext.OES.EGLImage
   , module Graphics.GL.Ext.OES.EGLImageExternal
+  , module Graphics.GL.Ext.OES.EGLImageExternalEssl3
   , module Graphics.GL.Ext.OES.ElementIndexUint
   , module Graphics.GL.Ext.OES.ExtendedMatrixPalette
   , module Graphics.GL.Ext.OES.FboRenderMipmap
@@ -90,6 +91,7 @@
 import Graphics.GL.Ext.OES.DrawTexture
 import Graphics.GL.Ext.OES.EGLImage
 import Graphics.GL.Ext.OES.EGLImageExternal
+import Graphics.GL.Ext.OES.EGLImageExternalEssl3
 import Graphics.GL.Ext.OES.ElementIndexUint
 import Graphics.GL.Ext.OES.ExtendedMatrixPalette
 import Graphics.GL.Ext.OES.FboRenderMipmap
diff --git a/dist/build/autogen/Graphics/GL/Ext/OES/EGLImageExternalEssl3.hs b/dist/build/autogen/Graphics/GL/Ext/OES/EGLImageExternalEssl3.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Graphics/GL/Ext/OES/EGLImageExternalEssl3.hs
@@ -0,0 +1,15 @@
+-- This file was automatically generated.
+{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
+module Graphics.GL.Ext.OES.EGLImageExternalEssl3 (
+  -- * Extension Support
+    gl_OES_EGL_image_external_essl3
+) where
+
+import Data.Set
+import Graphics.GL.Internal.Proc
+
+-- | Checks that the <https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image_external_essl3.txt GL_OES_EGL_image_external_essl3> extension is available.
+
+gl_OES_EGL_image_external_essl3 :: Bool
+gl_OES_EGL_image_external_essl3 = member "GL_OES_EGL_image_external_essl3" extensions
+{-# NOINLINE gl_OES_EGL_image_external_essl3 #-}
diff --git a/dist/build/autogen/Graphics/GL/Ext/SGIX/Resample.hs b/dist/build/autogen/Graphics/GL/Ext/SGIX/Resample.hs
--- a/dist/build/autogen/Graphics/GL/Ext/SGIX/Resample.hs
+++ b/dist/build/autogen/Graphics/GL/Ext/SGIX/Resample.hs
@@ -21,12 +21,12 @@
 gl_SGIX_resample = member "GL_SGIX_resample" extensions
 {-# NOINLINE gl_SGIX_resample #-}
 
-pattern GL_PACK_RESAMPLE_SGIX = 0x842C
+pattern GL_PACK_RESAMPLE_SGIX = 0x842E
 
 pattern GL_RESAMPLE_DECIMATE_SGIX = 0x8430
 
-pattern GL_RESAMPLE_REPLICATE_SGIX = 0x842E
+pattern GL_RESAMPLE_REPLICATE_SGIX = 0x8433
 
-pattern GL_RESAMPLE_ZERO_FILL_SGIX = 0x842F
+pattern GL_RESAMPLE_ZERO_FILL_SGIX = 0x8434
 
-pattern GL_UNPACK_RESAMPLE_SGIX = 0x842D
+pattern GL_UNPACK_RESAMPLE_SGIX = 0x842F
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
@@ -85,7 +85,7 @@
   , fficlampfIOV
   , ffifixedIOV
   , ffiuintenumenumenumPtrVIOV
-  , ffiuintenumintptrsizeienumenumPtrVIOV
+  , ffiuintenumintptrsizeiptrenumenumPtrVIOV
   , ffiuintenumsizeiptrsizeiptrenumenumPtrVIOV
   , ffiuintenumfloatintIOV
   , ffiuintenumintPtrfloatIOV
@@ -175,7 +175,7 @@
   , ffienumenumintintintintsizeiIOV
   , ffienumenumintintintintintsizeisizeiIOV
   , ffienumenumintintintintintintsizeisizeiIOV
-  , ffiuintuintintptrintptrsizeiIOV
+  , ffiuintuintintptrintptrsizeiptrIOV
   , ffiintintsizeisizeienumIOV
   , ffienumintenumintintsizeiintIOV
   , ffienumintenumintintsizeisizeiintIOV
@@ -276,7 +276,6 @@
   , ffienumbitfieldIOsync
   , ffiPtruintIOint
   , ffienumintptrsizeiptrIOV
-  , ffiuintintptrsizeiIOV
   , ffiuintintptrsizeiptrIOV
   , ffienumintPtrPtrVintIOV
   , ffihalfNVIOV
@@ -354,7 +353,6 @@
   , ffiuintenumPtrint64IOV
   , ffiuintenumPtruint64EXTIOV
   , ffiuintenumPtrPtrVIOV
-  , ffiuintintptrsizeiPtrVIOV
   , ffiuintintptrsizeiptrPtrVIOV
   , ffiuintenumenumPtrintIOV
   , ffiuintenumuintPtrintIOV
@@ -496,7 +494,6 @@
   , ffiintfloatfloatintfloatfloatIOV
   , ffiintfixedfixedfixedfixedIOV
   , ffiuintenumIOPtrV
-  , ffiuintintptrsizeibitfieldIOPtrV
   , ffiuintintptrsizeiptrbitfieldIOPtrV
   , ffiuintIOPtrV
   , ffiuintintbitfieldPtrintPtrenumIOPtrV
@@ -559,12 +556,9 @@
   , ffienumenumintintsizeienumenumPtrVIOV
   , ffienumenumintintintsizeisizeienumenumPtrVIOV
   , ffienumenumintintintintsizeisizeisizeienumenumPtrVIOV
-  , ffiuintsizeiPtrVenumIOV
   , ffiuintsizeiptrPtrVenumIOV
   , ffiuintintptrsizeiptrbooleanIOV
-  , ffiuintsizeiPtrVbitfieldIOV
   , ffiuintsizeiptrPtrVbitfieldIOV
-  , ffiuintuintintptrintptrsizeiptrIOV
   , ffiuintenumenumuintIOV
   , ffiuintuintsizeiPtrfloatIOV
   , ffiuintenumuintintIOV
@@ -732,7 +726,7 @@
   , ffienumintintsizeienumenumPtrVIOV
   , ffienumintintintsizeisizeienumenumPtrVIOV
   , ffienumintintintintintsizeisizeisizeisizeienumenumPtrVIOV
-  , ffiuintenumuintintptrsizeiIOV
+  , ffiuintenumuintintptrsizeiptrIOV
   , ffiuintenumenumuintintptrsizeiptrIOV
   , ffiuintenumintintsizeiintenumenumPtrVIOV
   , ffiuintenumintintsizeisizeiintenumenumPtrVIOV
@@ -762,7 +756,7 @@
   , ffiuintenumuintenumuintuintuintuintIOV
   , ffienumuintenumenumIOV
   , ffisizeiPtrintenumIOV
-  , ffiuintuintuintintptrsizeiIOV
+  , ffiuintuintuintintptrsizeiptrIOV
   , ffisizeiPtrintsizeiPtrintenumIOV
   , ffiuintsizeiPtrPtrcharenumIOV
   , ffiuintsizeiPtrintenumIOV
@@ -811,6 +805,7 @@
   , ffiuintPtrushortIOV
   , ffiuintuintintenumbooleanuintIOV
   , ffiuintuintintenumuintIOV
+  , ffiuintuintuintintptrsizeiIOV
   , ffiuintuintintenumsizeiintptrIOV
   , ffiuintuintsizeiintptrIOV
   , ffiuintuintenumsizeiintptrIOV
@@ -1288,10 +1283,10 @@
 ffiuintenumenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
 ffiuintenumenumenumPtrVIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumenumenumPtrVIOV fp v0 v1 v2 v3 v4)
 
-foreign import ccall "dynamic" dynuintenumintptrsizeienumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()
+foreign import ccall "dynamic" dynuintenumintptrsizeiptrenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()
 
-ffiuintenumintptrsizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
-ffiuintenumintptrsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumintptrsizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
+ffiuintenumintptrsizeiptrenumenumPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> m ()
+ffiuintenumintptrsizeiptrenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 = liftIO (dynuintenumintptrsizeiptrenumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6)
 
 foreign import ccall "dynamic" dynuintenumsizeiptrsizeiptrenumenumPtrVIOV :: FunPtr (GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLuint -> GLenum -> GLsizeiptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ()
 
@@ -1738,10 +1733,10 @@
 ffienumenumintintintintintintsizeisizeiIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
 ffienumenumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 = liftIO (dynenumenumintintintintintintsizeisizeiIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9)
 
-foreign import ccall "dynamic" dynuintuintintptrintptrsizeiIOV :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ()
+foreign import ccall "dynamic" dynuintuintintptrintptrsizeiptrIOV :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()
 
-ffiuintuintintptrintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> m ()
-ffiuintuintintptrintptrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintintptrintptrsizeiIOV fp v0 v1 v2 v3 v4)
+ffiuintuintintptrintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+ffiuintuintintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
 
 foreign import ccall "dynamic" dynintintsizeisizeienumIOV :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> IO ()) -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> IO ()
 
@@ -2243,11 +2238,6 @@
 ffienumintptrsizeiptrIOV :: MonadIO m => FunPtr (GLenum -> GLintptr -> GLsizeiptr -> IO ()) -> GLenum -> GLintptr -> GLsizeiptr -> m ()
 ffienumintptrsizeiptrIOV fp v0 v1 v2 = liftIO (dynenumintptrsizeiptrIOV fp v0 v1 v2)
 
-foreign import ccall "dynamic" dynuintintptrsizeiIOV :: FunPtr (GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLintptr -> GLsizei -> IO ()
-
-ffiuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLintptr -> GLsizei -> m ()
-ffiuintintptrsizeiIOV fp v0 v1 v2 = liftIO (dynuintintptrsizeiIOV fp v0 v1 v2)
-
 foreign import ccall "dynamic" dynuintintptrsizeiptrIOV :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
 
 ffiuintintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> m ()
@@ -2633,11 +2623,6 @@
 ffiuintenumPtrPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> Ptr (Ptr ()) -> IO ()) -> GLuint -> GLenum -> Ptr (Ptr ()) -> m ()
 ffiuintenumPtrPtrVIOV fp v0 v1 v2 = liftIO (dynuintenumPtrPtrVIOV fp v0 v1 v2)
 
-foreign import ccall "dynamic" dynuintintptrsizeiPtrVIOV :: FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ()
-
-ffiuintintptrsizeiPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizei -> Ptr () -> m ()
-ffiuintintptrsizeiPtrVIOV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeiPtrVIOV fp v0 v1 v2 v3)
-
 foreign import ccall "dynamic" dynuintintptrsizeiptrPtrVIOV :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()
 
 ffiuintintptrsizeiptrPtrVIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
@@ -3343,11 +3328,6 @@
 ffiuintenumIOPtrV :: MonadIO m => FunPtr (GLuint -> GLenum -> IO (Ptr ())) -> GLuint -> GLenum -> m (Ptr ())
 ffiuintenumIOPtrV fp v0 v1 = liftIO (dynuintenumIOPtrV fp v0 v1)
 
-foreign import ccall "dynamic" dynuintintptrsizeibitfieldIOPtrV :: FunPtr (GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ())
-
-ffiuintintptrsizeibitfieldIOPtrV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizei -> GLbitfield -> m (Ptr ())
-ffiuintintptrsizeibitfieldIOPtrV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeibitfieldIOPtrV fp v0 v1 v2 v3)
-
 foreign import ccall "dynamic" dynuintintptrsizeiptrbitfieldIOPtrV :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())
 
 ffiuintintptrsizeiptrbitfieldIOPtrV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ())) -> GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
@@ -3658,11 +3638,6 @@
 ffienumenumintintintintsizeisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
 ffienumenumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 = liftIO (dynenumenumintintintintsizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11)
 
-foreign import ccall "dynamic" dynuintsizeiPtrVenumIOV :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()
-
-ffiuintsizeiPtrVenumIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLenum -> m ()
-ffiuintsizeiPtrVenumIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrVenumIOV fp v0 v1 v2 v3)
-
 foreign import ccall "dynamic" dynuintsizeiptrPtrVenumIOV :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ()
 
 ffiuintsizeiptrPtrVenumIOV :: MonadIO m => FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLenum -> m ()
@@ -3673,21 +3648,11 @@
 ffiuintintptrsizeiptrbooleanIOV :: MonadIO m => FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> IO ()) -> GLuint -> GLintptr -> GLsizeiptr -> GLboolean -> m ()
 ffiuintintptrsizeiptrbooleanIOV fp v0 v1 v2 v3 = liftIO (dynuintintptrsizeiptrbooleanIOV fp v0 v1 v2 v3)
 
-foreign import ccall "dynamic" dynuintsizeiPtrVbitfieldIOV :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ()
-
-ffiuintsizeiPtrVbitfieldIOV :: MonadIO m => FunPtr (GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizei -> Ptr () -> GLbitfield -> m ()
-ffiuintsizeiPtrVbitfieldIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiPtrVbitfieldIOV fp v0 v1 v2 v3)
-
 foreign import ccall "dynamic" dynuintsizeiptrPtrVbitfieldIOV :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()
 
 ffiuintsizeiptrPtrVbitfieldIOV :: MonadIO m => FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ()) -> GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
 ffiuintsizeiptrPtrVbitfieldIOV fp v0 v1 v2 v3 = liftIO (dynuintsizeiptrPtrVbitfieldIOV fp v0 v1 v2 v3)
 
-foreign import ccall "dynamic" dynuintuintintptrintptrsizeiptrIOV :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()
-
-ffiuintuintintptrintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
-ffiuintuintintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintintptrintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
-
 foreign import ccall "dynamic" dynuintenumenumuintIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> IO ()
 
 ffiuintenumenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> m ()
@@ -4523,10 +4488,10 @@
 ffienumintintintintintsizeisizeisizeisizeienumenumPtrVIOV :: MonadIO m => FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ()) -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
 ffienumintintintintintsizeisizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 = liftIO (dynenumintintintintintsizeisizeisizeisizeienumenumPtrVIOV fp v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12)
 
-foreign import ccall "dynamic" dynuintenumuintintptrsizeiIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ()
+foreign import ccall "dynamic" dynuintenumuintintptrsizeiptrIOV :: FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
 
-ffiuintenumuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> m ()
-ffiuintenumuintintptrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintintptrsizeiIOV fp v0 v1 v2 v3 v4)
+ffiuintenumuintintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+ffiuintenumuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintenumuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
 
 foreign import ccall "dynamic" dynuintenumenumuintintptrsizeiptrIOV :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
 
@@ -4673,10 +4638,10 @@
 ffisizeiPtrintenumIOV :: MonadIO m => FunPtr (GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLsizei -> Ptr GLint -> GLenum -> m ()
 ffisizeiPtrintenumIOV fp v0 v1 v2 = liftIO (dynsizeiPtrintenumIOV fp v0 v1 v2)
 
-foreign import ccall "dynamic" dynuintuintuintintptrsizeiIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()
+foreign import ccall "dynamic" dynuintuintuintintptrsizeiptrIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ()
 
-ffiuintuintuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
-ffiuintuintuintintptrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintuintintptrsizeiIOV fp v0 v1 v2 v3 v4)
+ffiuintuintuintintptrsizeiptrIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+ffiuintuintuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintuintintptrsizeiptrIOV fp v0 v1 v2 v3 v4)
 
 foreign import ccall "dynamic" dynsizeiPtrintsizeiPtrintenumIOV :: FunPtr (GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> IO ()) -> GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> IO ()
 
@@ -4917,6 +4882,11 @@
 
 ffiuintuintintenumuintIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
 ffiuintuintintenumuintIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintintenumuintIOV fp v0 v1 v2 v3 v4)
+
+foreign import ccall "dynamic" dynuintuintuintintptrsizeiIOV :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()
+
+ffiuintuintuintintptrsizeiIOV :: MonadIO m => FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ()) -> GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
+ffiuintuintuintintptrsizeiIOV fp v0 v1 v2 v3 v4 = liftIO (dynuintuintuintintptrsizeiIOV fp v0 v1 v2 v3 v4)
 
 foreign import ccall "dynamic" dynuintuintintenumsizeiintptrIOV :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()) -> GLuint -> GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> IO ()
 
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
@@ -17416,12 +17416,14 @@
 {-# NOINLINE glClearNamedBufferDataFunPtr #-}
 
 -- | Usage: @'glClearNamedBufferSubData' buffer internalformat offset size format type data@
+--
+-- The parameter @size@ is a @BufferSize@.
 
 
-glClearNamedBufferSubData :: MonadIO m => GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
-glClearNamedBufferSubData = ffiuintenumintptrsizeienumenumPtrVIOV glClearNamedBufferSubDataFunPtr
+glClearNamedBufferSubData :: MonadIO m => GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> m ()
+glClearNamedBufferSubData = ffiuintenumintptrsizeiptrenumenumPtrVIOV glClearNamedBufferSubDataFunPtr
 
-glClearNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
+glClearNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ())
 glClearNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glClearNamedBufferSubData")
 
 {-# NOINLINE glClearNamedBufferSubDataFunPtr #-}
@@ -17517,12 +17519,14 @@
 {-# NOINLINE glCompressedTextureSubImage3DFunPtr #-}
 
 -- | Usage: @'glCopyNamedBufferSubData' readBuffer writeBuffer readOffset writeOffset size@
+--
+-- The parameter @size@ is a @BufferSize@.
 
 
-glCopyNamedBufferSubData :: MonadIO m => GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> m ()
-glCopyNamedBufferSubData = ffiuintuintintptrintptrsizeiIOV glCopyNamedBufferSubDataFunPtr
+glCopyNamedBufferSubData :: MonadIO m => GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+glCopyNamedBufferSubData = ffiuintuintintptrintptrsizeiptrIOV glCopyNamedBufferSubDataFunPtr
 
-glCopyNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ())
+glCopyNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ())
 glCopyNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glCopyNamedBufferSubData")
 
 {-# NOINLINE glCopyNamedBufferSubDataFunPtr #-}
@@ -17700,12 +17704,14 @@
 {-# NOINLINE glEnableVertexArrayAttribFunPtr #-}
 
 -- | Usage: @'glFlushMappedNamedBufferRange' buffer offset length@
+--
+-- The parameter @length@ is a @BufferSize@.
 
 
-glFlushMappedNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizei -> m ()
-glFlushMappedNamedBufferRange = ffiuintintptrsizeiIOV glFlushMappedNamedBufferRangeFunPtr
+glFlushMappedNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> m ()
+glFlushMappedNamedBufferRange = ffiuintintptrsizeiptrIOV glFlushMappedNamedBufferRangeFunPtr
 
-glFlushMappedNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> IO ())
+glFlushMappedNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ())
 glFlushMappedNamedBufferRangeFunPtr = unsafePerformIO (getProcAddress "glFlushMappedNamedBufferRange")
 
 {-# NOINLINE glFlushMappedNamedBufferRangeFunPtr #-}
@@ -17792,12 +17798,14 @@
 {-# NOINLINE glGetNamedBufferPointervFunPtr #-}
 
 -- | Usage: @'glGetNamedBufferSubData' buffer offset size data@
+--
+-- The parameter @size@ is a @BufferSize@.
 
 
-glGetNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizei -> Ptr () -> m ()
-glGetNamedBufferSubData = ffiuintintptrsizeiPtrVIOV glGetNamedBufferSubDataFunPtr
+glGetNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
+glGetNamedBufferSubData = ffiuintintptrsizeiptrPtrVIOV glGetNamedBufferSubDataFunPtr
 
-glGetNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ())
+glGetNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
 glGetNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferSubData")
 
 {-# NOINLINE glGetNamedBufferSubDataFunPtr #-}
@@ -18104,12 +18112,14 @@
 {-# NOINLINE glMapNamedBufferFunPtr #-}
 
 -- | Usage: @'glMapNamedBufferRange' buffer offset length access@
+--
+-- The parameter @length@ is a @BufferSize@.
 
 
-glMapNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizei -> GLbitfield -> m (Ptr ())
-glMapNamedBufferRange = ffiuintintptrsizeibitfieldIOPtrV glMapNamedBufferRangeFunPtr
+glMapNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
+glMapNamedBufferRange = ffiuintintptrsizeiptrbitfieldIOPtrV glMapNamedBufferRangeFunPtr
 
-glMapNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ()))
+glMapNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ()))
 glMapNamedBufferRangeFunPtr = unsafePerformIO (getProcAddress "glMapNamedBufferRange")
 
 {-# NOINLINE glMapNamedBufferRangeFunPtr #-}
@@ -18126,34 +18136,40 @@
 {-# NOINLINE glMemoryBarrierByRegionFunPtr #-}
 
 -- | Usage: @'glNamedBufferData' buffer size data usage@
+--
+-- The parameter @size@ is a @BufferSize@.
 
 
-glNamedBufferData :: MonadIO m => GLuint -> GLsizei -> Ptr () -> GLenum -> m ()
-glNamedBufferData = ffiuintsizeiPtrVenumIOV glNamedBufferDataFunPtr
+glNamedBufferData :: MonadIO m => GLuint -> GLsizeiptr -> Ptr () -> GLenum -> m ()
+glNamedBufferData = ffiuintsizeiptrPtrVenumIOV glNamedBufferDataFunPtr
 
-glNamedBufferDataFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLenum -> IO ())
+glNamedBufferDataFunPtr :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ())
 glNamedBufferDataFunPtr = unsafePerformIO (getProcAddress "glNamedBufferData")
 
 {-# NOINLINE glNamedBufferDataFunPtr #-}
 
 -- | Usage: @'glNamedBufferStorage' buffer size data flags@
+--
+-- The parameter @size@ is a @BufferSize@.
 
 
-glNamedBufferStorage :: MonadIO m => GLuint -> GLsizei -> Ptr () -> GLbitfield -> m ()
-glNamedBufferStorage = ffiuintsizeiPtrVbitfieldIOV glNamedBufferStorageFunPtr
+glNamedBufferStorage :: MonadIO m => GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
+glNamedBufferStorage = ffiuintsizeiptrPtrVbitfieldIOV glNamedBufferStorageFunPtr
 
-glNamedBufferStorageFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ())
+glNamedBufferStorageFunPtr :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ())
 glNamedBufferStorageFunPtr = unsafePerformIO (getProcAddress "glNamedBufferStorage")
 
 {-# NOINLINE glNamedBufferStorageFunPtr #-}
 
 -- | Usage: @'glNamedBufferSubData' buffer offset size data@
+--
+-- The parameter @size@ is a @BufferSize@.
 
 
-glNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizei -> Ptr () -> m ()
-glNamedBufferSubData = ffiuintintptrsizeiPtrVIOV glNamedBufferSubDataFunPtr
+glNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
+glNamedBufferSubData = ffiuintintptrsizeiptrPtrVIOV glNamedBufferSubDataFunPtr
 
-glNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ())
+glNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
 glNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glNamedBufferSubData")
 
 {-# NOINLINE glNamedBufferSubDataFunPtr #-}
@@ -18293,12 +18309,14 @@
 {-# NOINLINE glTextureBufferFunPtr #-}
 
 -- | Usage: @'glTextureBufferRange' texture internalformat buffer offset size@
+--
+-- The parameter @size@ is a @BufferSize@.
 
 
-glTextureBufferRange :: MonadIO m => GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> m ()
-glTextureBufferRange = ffiuintenumuintintptrsizeiIOV glTextureBufferRangeFunPtr
+glTextureBufferRange :: MonadIO m => GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+glTextureBufferRange = ffiuintenumuintintptrsizeiptrIOV glTextureBufferRangeFunPtr
 
-glTextureBufferRangeFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ())
+glTextureBufferRangeFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
 glTextureBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTextureBufferRange")
 
 {-# NOINLINE glTextureBufferRangeFunPtr #-}
@@ -18472,13 +18490,15 @@
 
 -- | Usage: @'glTransformFeedbackBufferRange' xfb index buffer offset size@
 --
+-- The parameter @size@ is a @BufferSize@.
+--
 -- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTransformFeedbackBufferRange.xhtml>
 
 
-glTransformFeedbackBufferRange :: MonadIO m => GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
-glTransformFeedbackBufferRange = ffiuintuintuintintptrsizeiIOV glTransformFeedbackBufferRangeFunPtr
+glTransformFeedbackBufferRange :: MonadIO m => GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
+glTransformFeedbackBufferRange = ffiuintuintuintintptrsizeiptrIOV glTransformFeedbackBufferRangeFunPtr
 
-glTransformFeedbackBufferRangeFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ())
+glTransformFeedbackBufferRangeFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
 glTransformFeedbackBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackBufferRange")
 
 {-# NOINLINE glTransformFeedbackBufferRangeFunPtr #-}
diff --git a/extensions.txt b/extensions.txt
--- a/extensions.txt
+++ b/extensions.txt
@@ -644,6 +644,7 @@
 GL_NV_wgl_video_output https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/wgl_video_output.txt
 GL_OES_EGL_image https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt
 GL_OES_EGL_image_external https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image_external.txt
+GL_OES_EGL_image_external_essl3 https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image_external_essl3.txt
 GL_OES_EGL_sync https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_sync.txt
 GL_OES_blend_equation_separate https://www.khronos.org/registry/gles/extensions/OES/OES_blend_equation_separate.txt
 GL_OES_blend_func_separate https://www.khronos.org/registry/gles/extensions/OES/OES_blend_func_separate.txt
diff --git a/gl.cabal b/gl.cabal
--- a/gl.cabal
+++ b/gl.cabal
@@ -1,5 +1,5 @@
 name:          gl
-version:       0.7
+version:       0.7.1
 synopsis:      Complete OpenGL raw bindings
 description:   Complete OpenGL raw bindings
 license:       BSD3
@@ -682,6 +682,7 @@
     Graphics.GL.Ext.OES.DrawTexture
     Graphics.GL.Ext.OES.EGLImage
     Graphics.GL.Ext.OES.EGLImageExternal
+    Graphics.GL.Ext.OES.EGLImageExternalEssl3
     Graphics.GL.Ext.OES.ElementIndexUint
     Graphics.GL.Ext.OES.ExtendedMatrixPalette
     Graphics.GL.Ext.OES.FboRenderMipmap
diff --git a/gl.xml b/gl.xml
# file too large to diff: gl.xml
