diff --git a/OpenGLRaw.cabal b/OpenGLRaw.cabal
--- a/OpenGLRaw.cabal
+++ b/OpenGLRaw.cabal
@@ -1,5 +1,5 @@
 name: OpenGLRaw
-version: 1.0.1.0
+version: 1.1.0.0
 license: BSD3
 license-file: LICENSE
 maintainer: Sven Panne <sven.panne@aedion.de>
@@ -8,7 +8,7 @@
 category: Graphics
 synopsis: A raw binding for the OpenGL graphics system
 description:
-   OpenGLRaw is a raw Haskell binding for the OpenGL 3.1 graphics system and
+   OpenGLRaw is a raw Haskell binding for the OpenGL 3.2 graphics system and
    lots of OpenGL extensions. It is basically a 1:1 mapping of OpenGL's C API,
    intended as a basis for a nicer interface. OpenGLRaw offers access to all
    necessary functions, tokens and types plus a general facility for loading
@@ -27,6 +27,7 @@
 build-type: Simple
 cabal-version:  >= 1.2
 extra-source-files:
+   include/CTypes.h
    include/HsOpenGLRaw.h
 
 flag UseNativeWindowsLibraries
@@ -42,26 +43,87 @@
    exposed-modules:
       Graphics.Rendering.OpenGL.Raw,
       Graphics.Rendering.OpenGL.Raw.ARB,
+      Graphics.Rendering.OpenGL.Raw.ARB.ColorBufferFloat,
       Graphics.Rendering.OpenGL.Raw.ARB.Compatibility,
+      Graphics.Rendering.OpenGL.Raw.ARB.CopyBuffer,
+      Graphics.Rendering.OpenGL.Raw.ARB.CreateContextProfile,
+      Graphics.Rendering.OpenGL.Raw.ARB.DepthBufferFloat,
+      Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp,
+      Graphics.Rendering.OpenGL.Raw.ARB.DepthTexture,
+      Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffers,
+      Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffersBlend,
+      Graphics.Rendering.OpenGL.Raw.ARB.DrawElementsBaseVertex,
+      Graphics.Rendering.OpenGL.Raw.ARB.DrawInstanced,
       Graphics.Rendering.OpenGL.Raw.ARB.FragmentProgram,
+      Graphics.Rendering.OpenGL.Raw.ARB.FragmentShader,
+      Graphics.Rendering.OpenGL.Raw.ARB.FramebufferObject,
+      Graphics.Rendering.OpenGL.Raw.ARB.FramebufferSRGB,
       Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4,
+      Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatPixel,
+      Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatVertex,
       Graphics.Rendering.OpenGL.Raw.ARB.InstancedArrays,
+      Graphics.Rendering.OpenGL.Raw.ARB.MapBufferRange,
       Graphics.Rendering.OpenGL.Raw.ARB.MatrixPalette,
+      Graphics.Rendering.OpenGL.Raw.ARB.Multisample,
+      Graphics.Rendering.OpenGL.Raw.ARB.Multitexture,
+      Graphics.Rendering.OpenGL.Raw.ARB.OcclusionQuery,
+      Graphics.Rendering.OpenGL.Raw.ARB.PixelBufferObject,
+      Graphics.Rendering.OpenGL.Raw.ARB.PointParameters,
+      Graphics.Rendering.OpenGL.Raw.ARB.PointSprite,
+      Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex,
+      Graphics.Rendering.OpenGL.Raw.ARB.SampleShading,
+      Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap,
+      Graphics.Rendering.OpenGL.Raw.ARB.ShaderObjects,
+      Graphics.Rendering.OpenGL.Raw.ARB.ShadingLanguage100,
+      Graphics.Rendering.OpenGL.Raw.ARB.Shadow,
       Graphics.Rendering.OpenGL.Raw.ARB.ShadowAmbient,
+      Graphics.Rendering.OpenGL.Raw.ARB.Sync,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureBorderClamp,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureBufferObject,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureCompression,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureCompressionRGTC,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMap,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMapArray,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvAdd,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCombine,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCrossbar,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvDot3,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureFloat,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureGather,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureMirroredRepeat,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureMultisample,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureRG,
+      Graphics.Rendering.OpenGL.Raw.ARB.TextureRectangle,
+      Graphics.Rendering.OpenGL.Raw.ARB.TransposeMatrix,
+      Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject,
+      Graphics.Rendering.OpenGL.Raw.ARB.VertexArrayObject,
       Graphics.Rendering.OpenGL.Raw.ARB.VertexBlend,
+      Graphics.Rendering.OpenGL.Raw.ARB.VertexBufferObject,
       Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram,
+      Graphics.Rendering.OpenGL.Raw.ARB.VertexShader,
+      Graphics.Rendering.OpenGL.Raw.ARB.WindowPos,
       Graphics.Rendering.OpenGL.Raw.Core31,
+      Graphics.Rendering.OpenGL.Raw.Core32,
       Graphics.Rendering.OpenGL.Raw.EXT,
       Graphics.Rendering.OpenGL.Raw.EXT.Abgr,
+      Graphics.Rendering.OpenGL.Raw.EXT.Bgra,
       Graphics.Rendering.OpenGL.Raw.EXT.BindableUniform,
+      Graphics.Rendering.OpenGL.Raw.EXT.BlendColor,
+      Graphics.Rendering.OpenGL.Raw.EXT.BlendEquationSeparate,
+      Graphics.Rendering.OpenGL.Raw.EXT.BlendFuncSeparate,
+      Graphics.Rendering.OpenGL.Raw.EXT.BlendMinmax,
+      Graphics.Rendering.OpenGL.Raw.EXT.BlendSubtract,
       Graphics.Rendering.OpenGL.Raw.EXT.ClipVolumeHint,
       Graphics.Rendering.OpenGL.Raw.EXT.Cmyka,
       Graphics.Rendering.OpenGL.Raw.EXT.ColorSubtable,
       Graphics.Rendering.OpenGL.Raw.EXT.CompiledVertexArray,
+      Graphics.Rendering.OpenGL.Raw.EXT.Convolution,
       Graphics.Rendering.OpenGL.Raw.EXT.CoordinateFrame,
+      Graphics.Rendering.OpenGL.Raw.EXT.CopyTexture,
       Graphics.Rendering.OpenGL.Raw.EXT.CullVertex,
       Graphics.Rendering.OpenGL.Raw.EXT.DepthBoundsTest,
       Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess,
+      Graphics.Rendering.OpenGL.Raw.EXT.DrawRangeElements,
       Graphics.Rendering.OpenGL.Raw.EXT.FogCoord,
       Graphics.Rendering.OpenGL.Raw.EXT.FourTwoTwoPixels,
       Graphics.Rendering.OpenGL.Raw.EXT.FragmentLighting,
@@ -69,25 +131,31 @@
       Graphics.Rendering.OpenGL.Raw.EXT.FramebufferSRGB,
       Graphics.Rendering.OpenGL.Raw.EXT.GeometryShader4,
       Graphics.Rendering.OpenGL.Raw.EXT.GpuProgramParameters,
+      Graphics.Rendering.OpenGL.Raw.EXT.Histogram,
       Graphics.Rendering.OpenGL.Raw.EXT.IndexArrayFormats,
       Graphics.Rendering.OpenGL.Raw.EXT.IndexFunc,
       Graphics.Rendering.OpenGL.Raw.EXT.IndexMaterial,
       Graphics.Rendering.OpenGL.Raw.EXT.LightTexture,
+      Graphics.Rendering.OpenGL.Raw.EXT.MultiDrawArrays,
       Graphics.Rendering.OpenGL.Raw.EXT.Multisample,
       Graphics.Rendering.OpenGL.Raw.EXT.PackedFloat,
+      Graphics.Rendering.OpenGL.Raw.EXT.PackedPixels,
       Graphics.Rendering.OpenGL.Raw.EXT.PalettedTexture,
-      Graphics.Rendering.OpenGL.Raw.EXT.PerturbNormal,
       Graphics.Rendering.OpenGL.Raw.EXT.PixelTransform,
       Graphics.Rendering.OpenGL.Raw.EXT.PointParameters,
       Graphics.Rendering.OpenGL.Raw.EXT.PolygonOffset,
       Graphics.Rendering.OpenGL.Raw.EXT.ProvokingVertex,
       Graphics.Rendering.OpenGL.Raw.EXT.RescaleNormal,
+      Graphics.Rendering.OpenGL.Raw.EXT.SceneMarker,
       Graphics.Rendering.OpenGL.Raw.EXT.SecondaryColor,
       Graphics.Rendering.OpenGL.Raw.EXT.SeparateSpecularColor,
       Graphics.Rendering.OpenGL.Raw.EXT.SharedTexturePalette,
       Graphics.Rendering.OpenGL.Raw.EXT.StencilClearTag,
       Graphics.Rendering.OpenGL.Raw.EXT.StencilTwoSide,
+      Graphics.Rendering.OpenGL.Raw.EXT.StencilWrap,
+      Graphics.Rendering.OpenGL.Raw.EXT.Subtexture,
       Graphics.Rendering.OpenGL.Raw.EXT.Texture,
+      Graphics.Rendering.OpenGL.Raw.EXT.Texture3D,
       Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionDxt1,
       Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionLatc,
       Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionS3tc,
@@ -99,6 +167,7 @@
       Graphics.Rendering.OpenGL.Raw.EXT.TextureLodBias,
       Graphics.Rendering.OpenGL.Raw.EXT.TextureMirrorClamp,
       Graphics.Rendering.OpenGL.Raw.EXT.TextureObject,
+      Graphics.Rendering.OpenGL.Raw.EXT.TexturePerturbNormal,
       Graphics.Rendering.OpenGL.Raw.EXT.TextureSRGB,
       Graphics.Rendering.OpenGL.Raw.EXT.TextureSwizzle,
       Graphics.Rendering.OpenGL.Raw.EXT.TimerQuery,
@@ -107,29 +176,55 @@
       Graphics.Rendering.OpenGL.Raw.EXT.VertexWeighting,
       Graphics.Rendering.OpenGL.Raw.GetProcAddress,
       Graphics.Rendering.OpenGL.Raw.NV,
+      Graphics.Rendering.OpenGL.Raw.NV.ConditionalRender,
       Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor,
+      Graphics.Rendering.OpenGL.Raw.NV.DepthBufferFloat,
       Graphics.Rendering.OpenGL.Raw.NV.DepthClamp,
+      Graphics.Rendering.OpenGL.Raw.NV.ExplicitMultisample,
       Graphics.Rendering.OpenGL.Raw.NV.Fence,
+      Graphics.Rendering.OpenGL.Raw.NV.FloatBuffer,
       Graphics.Rendering.OpenGL.Raw.NV.FogDistance,
+      Graphics.Rendering.OpenGL.Raw.NV.FramebufferMultisampleCoverage,
+      Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram,
+      Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram2,
+      Graphics.Rendering.OpenGL.Raw.NV.GeometryProgram4,
+      Graphics.Rendering.OpenGL.Raw.NV.GpuProgram4,
+      Graphics.Rendering.OpenGL.Raw.NV.HalfFloat,
       Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent,
       Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint,
       Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery,
+      Graphics.Rendering.OpenGL.Raw.NV.PackedDepthStencil,
+      Graphics.Rendering.OpenGL.Raw.NV.ParameterBufferObject,
+      Graphics.Rendering.OpenGL.Raw.NV.PixelDataRange,
+      Graphics.Rendering.OpenGL.Raw.NV.PointSprite,
+      Graphics.Rendering.OpenGL.Raw.NV.PresentVideo,
       Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart,
       Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners,
       Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2,
       Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss,
+      Graphics.Rendering.OpenGL.Raw.NV.TexgenReflection,
       Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc,
       Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4,
+      Graphics.Rendering.OpenGL.Raw.NV.TextureExpandNormal,
+      Graphics.Rendering.OpenGL.Raw.NV.TextureRectangle,
       Graphics.Rendering.OpenGL.Raw.NV.TextureShader,
       Graphics.Rendering.OpenGL.Raw.NV.TextureShader2,
+      Graphics.Rendering.OpenGL.Raw.NV.TextureShader3,
+      Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback,
+      Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback2,
       Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange,
-      Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2
+      Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2,
+      Graphics.Rendering.OpenGL.Raw.NV.VertexProgram,
+      Graphics.Rendering.OpenGL.Raw.NV.VertexProgram2Option,
+      Graphics.Rendering.OpenGL.Raw.NV.VertexProgram3,
+      Graphics.Rendering.OpenGL.Raw.NV.VertexProgram4
    other-modules:
       Graphics.Rendering.OpenGL.Raw.ARB.Compatibility.Functions,
       Graphics.Rendering.OpenGL.Raw.ARB.Compatibility.Tokens,
       Graphics.Rendering.OpenGL.Raw.Core31.Functions,
       Graphics.Rendering.OpenGL.Raw.Core31.Tokens,
       Graphics.Rendering.OpenGL.Raw.Core31.Types,
+      Graphics.Rendering.OpenGL.Raw.Core31.TypesInternal,
       Graphics.Rendering.OpenGL.Raw.Extensions
    c-sources:
       cbits/HsOpenGLRaw.c
@@ -137,17 +232,19 @@
    include-dirs: include
    build-depends: base >= 3 && < 5
    ghc-options: -Wall -fno-warn-duplicate-exports
+   if impl(ghc)
+      build-depends: ghc-prim
    if os(windows) && flag(UseNativeWindowsLibraries)
       cpp-options: "-DCALLCONV=stdcall"
-      extra-libraries: opengl32
       cc-options: "-DUSE_WGLGETPROCADDRESS"
+      extra-libraries: opengl32
    else
       cpp-options: "-DCALLCONV=ccall"
-      extra-libraries: GL
+      if !os(darwin) && flag(UseGlXGetProcAddress)
+         cc-options: "-DUSE_GLXGETPROCADDRESS"
+      else
+         cc-options: "-DUSE_DLSYM"
       if os(darwin)
-         cc-options: "-DUSE_NSADDRESSOFSYMBOL"
+         frameworks: OpenGL
       else
-         if flag(UseGlXGetProcAddress)
-            cc-options: "-DUSE_GLXGETPROCADDRESS"
-         else
-            cc-options: "-DUSE_DLSYM"
+         extra-libraries: GL
diff --git a/include/CTypes.h b/include/CTypes.h
new file mode 100644
--- /dev/null
+++ b/include/CTypes.h
@@ -0,0 +1,212 @@
+/* -----------------------------------------------------------------------------
+ *
+ * Module      :  Dirty CPP hackery for OpenGL's basic types
+ * Copyright   :  (c) Sven Panne 2009 + the FFI task force
+ * License     :  BSD-style (see the file LICENSE)
+ * 
+ * Maintainer  :  sven.panne@aedion.de
+ * Stability   :  stable
+ * Portability :  portable
+ *
+ * This header should only define preprocessor macros! It is basically a
+ * slightly modified version of CTypes.h and Typeable.h from GHC's base package.
+ *
+ * -------------------------------------------------------------------------- */
+
+#ifndef CTYPES_H
+#define CTYPES_H
+
+#define INSTANCE_TYPEABLE0(tycon,tcname,str) \
+tcname :: TyCon; \
+tcname = mkTyCon str; \
+instance Typeable tycon where { typeOf _ = mkTyConApp tcname [] }
+
+--  // A hacked version for GHC follows the Haskell 98 version...
+#ifndef __GLASGOW_HASKELL__
+
+#define ARITHMETIC_TYPE(T,C,S,B) \
+newtype T = T B deriving (Eq, Ord) ; \
+INSTANCE_NUM(T) ; \
+INSTANCE_REAL(T) ; \
+INSTANCE_READ(T,B) ; \
+INSTANCE_SHOW(T,B) ; \
+INSTANCE_ENUM(T) ; \
+INSTANCE_STORABLE(T) ; \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define INTEGRAL_TYPE(T,C,S,B) \
+ARITHMETIC_TYPE(T,C,S,B) ; \
+INSTANCE_BOUNDED(T) ; \
+INSTANCE_INTEGRAL(T) ; \
+INSTANCE_BITS(T)
+
+#define FLOATING_TYPE(T,C,S,B) \
+ARITHMETIC_TYPE(T,C,S,B) ; \
+INSTANCE_FRACTIONAL(T) ; \
+INSTANCE_FLOATING(T) ; \
+INSTANCE_REALFRAC(T) ; \
+INSTANCE_REALFLOAT(T)
+
+#define INSTANCE_READ(T,B) \
+instance Read T where { \
+   readsPrec p s = map (\(x, t) -> (T x, t)) (readsPrec p s) }
+
+#define INSTANCE_SHOW(T,B) \
+instance Show T where { \
+   showsPrec p (T x) = showsPrec p x }
+
+#define INSTANCE_NUM(T) \
+instance Num T where { \
+   (T i) + (T j) = T (i + j) ; \
+   (T i) - (T j) = T (i - j) ; \
+   (T i) * (T j) = T (i * j) ; \
+   negate  (T i) = T (negate i) ; \
+   abs     (T i) = T (abs    i) ; \
+   signum  (T i) = T (signum i) ; \
+   fromInteger x = T (fromInteger x) }
+
+#define INSTANCE_BOUNDED(T) \
+instance Bounded T where { \
+   minBound = T minBound ; \
+   maxBound = T maxBound }
+
+#define INSTANCE_ENUM(T) \
+instance Enum T where { \
+   succ           (T i)             = T (succ i) ; \
+   pred           (T i)             = T (pred i) ; \
+   toEnum               x           = T (toEnum x) ; \
+   fromEnum       (T i)             = fromEnum i ; \
+   enumFrom       (T i)             = map T (enumFrom i) ; \
+   enumFromThen   (T i) (T j)       = map T (enumFromThen i j) ; \
+   enumFromTo     (T i) (T j)       = map T (enumFromTo i j) ; \
+   enumFromThenTo (T i) (T j) (T k) = map T (enumFromThenTo i j k) }
+
+#define INSTANCE_REAL(T) \
+instance Real T where { \
+   toRational (T i) = toRational i }
+
+#define INSTANCE_INTEGRAL(T) \
+instance Integral T where { \
+   (T i) `quot`    (T j) = T (i `quot` j) ; \
+   (T i) `rem`     (T j) = T (i `rem`  j) ; \
+   (T i) `div`     (T j) = T (i `div`  j) ; \
+   (T i) `mod`     (T j) = T (i `mod`  j) ; \
+   (T i) `quotRem` (T j) = let (q,r) = i `quotRem` j in (T q, T r) ; \
+   (T i) `divMod`  (T j) = let (d,m) = i `divMod`  j in (T d, T m) ; \
+   toInteger (T i)       = toInteger i }
+
+#define INSTANCE_BITS(T) \
+instance Bits T where { \
+  (T x) .&.     (T y)   = T (x .&.   y) ; \
+  (T x) .|.     (T y)   = T (x .|.   y) ; \
+  (T x) `xor`   (T y)   = T (x `xor` y) ; \
+  complement    (T x)   = T (complement x) ; \
+  shift         (T x) n = T (shift x n) ; \
+  rotate        (T x) n = T (rotate x n) ; \
+  bit                 n = T (bit n) ; \
+  setBit        (T x) n = T (setBit x n) ; \
+  clearBit      (T x) n = T (clearBit x n) ; \
+  complementBit (T x) n = T (complementBit x n) ; \
+  testBit       (T x) n = testBit x n ; \
+  bitSize       (T x)   = bitSize x ; \
+  isSigned      (T x)   = isSigned x }
+
+#define INSTANCE_FRACTIONAL(T) \
+instance Fractional T where { \
+   (T x) / (T y)  = T (x / y) ; \
+   recip   (T x)  = T (recip x) ; \
+   fromRational r = T (fromRational r) }
+
+#define INSTANCE_FLOATING(T) \
+instance Floating T where { \
+   pi                    = pi ; \
+   exp   (T x)           = T (exp   x) ; \
+   log   (T x)           = T (log   x) ; \
+   sqrt  (T x)           = T (sqrt  x) ; \
+   (T x) **        (T y) = T (x ** y) ; \
+   (T x) `logBase` (T y) = T (x `logBase` y) ; \
+   sin   (T x)           = T (sin   x) ; \
+   cos   (T x)           = T (cos   x) ; \
+   tan   (T x)           = T (tan   x) ; \
+   asin  (T x)           = T (asin  x) ; \
+   acos  (T x)           = T (acos  x) ; \
+   atan  (T x)           = T (atan  x) ; \
+   sinh  (T x)           = T (sinh  x) ; \
+   cosh  (T x)           = T (cosh  x) ; \
+   tanh  (T x)           = T (tanh  x) ; \
+   asinh (T x)           = T (asinh x) ; \
+   acosh (T x)           = T (acosh x) ; \
+   atanh (T x)           = T (atanh x) }
+
+#define INSTANCE_REALFRAC(T) \
+instance RealFrac T where { \
+   properFraction (T x) = let (m,y) = properFraction x in (m, T y) ; \
+   truncate (T x) = truncate x ; \
+   round    (T x) = round x ; \
+   ceiling  (T x) = ceiling x ; \
+   floor    (T x) = floor x }
+
+#define INSTANCE_REALFLOAT(T) \
+instance RealFloat T where { \
+   floatRadix     (T x) = floatRadix x ; \
+   floatDigits    (T x) = floatDigits x ; \
+   floatRange     (T x) = floatRange x ; \
+   decodeFloat    (T x) = decodeFloat x ; \
+   encodeFloat m n      = T (encodeFloat m n) ; \
+   exponent       (T x) = exponent x ; \
+   significand    (T x) = T (significand  x) ; \
+   scaleFloat n   (T x) = T (scaleFloat n x) ; \
+   isNaN          (T x) = isNaN x ; \
+   isInfinite     (T x) = isInfinite x ; \
+   isDenormalized (T x) = isDenormalized x ; \
+   isNegativeZero (T x) = isNegativeZero x ; \
+   isIEEE         (T x) = isIEEE x ; \
+   (T x) `atan2`  (T y) = T (x `atan2` y) }
+
+#define INSTANCE_STORABLE(T) \
+instance Storable T where { \
+   sizeOf    (T x)       = sizeOf x ; \
+   alignment (T x)       = alignment x ; \
+   peekElemOff a i       = liftM T (peekElemOff (castPtr a) i) ; \
+   pokeElemOff a i (T x) = pokeElemOff (castPtr a) i x }
+
+#else /* __GLASGOW_HASKELL__ */
+
+--  // GHC can derive any class for a newtype, so we make use of that here...
+
+#define ARITHMETIC_CLASSES  Eq,Ord,Num,Enum,Storable,Real
+#define INTEGRAL_CLASSES Bounded,Integral,Bits
+#define FLOATING_CLASSES Fractional,Floating,RealFrac,RealFloat
+
+#define ARITHMETIC_TYPE(T,C,S,B) \
+newtype T = T B deriving (ARITHMETIC_CLASSES); \
+INSTANCE_READ(T,B); \
+INSTANCE_SHOW(T,B); \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define INTEGRAL_TYPE(T,C,S,B) \
+newtype T = T B deriving (ARITHMETIC_CLASSES, INTEGRAL_CLASSES); \
+INSTANCE_READ(T,B); \
+INSTANCE_SHOW(T,B); \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define FLOATING_TYPE(T,C,S,B) \
+newtype T = T B deriving (ARITHMETIC_CLASSES, FLOATING_CLASSES); \
+INSTANCE_READ(T,B); \
+INSTANCE_SHOW(T,B); \
+INSTANCE_TYPEABLE0(T,C,S) ;
+
+#define INSTANCE_READ(T,B) \
+instance Read T where { \
+   readsPrec            = unsafeCoerce# (readsPrec :: Int -> ReadS B); \
+   readList             = unsafeCoerce# (readList  :: ReadS [B]); }
+
+#define INSTANCE_SHOW(T,B) \
+instance Show T where { \
+   showsPrec            = unsafeCoerce# (showsPrec :: Int -> B -> ShowS); \
+   show                 = unsafeCoerce# (show :: B -> String); \
+   showList             = unsafeCoerce# (showList :: [B] -> ShowS); }
+
+#endif /* __GLASGOW_HASKELL__ */
+
+#endif
diff --git a/src/Graphics/Rendering/OpenGL/Raw.hs b/src/Graphics/Rendering/OpenGL/Raw.hs
--- a/src/Graphics/Rendering/OpenGL/Raw.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw.hs
@@ -14,12 +14,14 @@
 
 module Graphics.Rendering.OpenGL.Raw (
    module Graphics.Rendering.OpenGL.Raw.ARB,
-   module Graphics.Rendering.OpenGL.Raw.Core31,
+   module Graphics.Rendering.OpenGL.Raw.Core32,
    module Graphics.Rendering.OpenGL.Raw.EXT,
+   module Graphics.Rendering.OpenGL.Raw.NV,
    module Graphics.Rendering.OpenGL.Raw.GetProcAddress
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.EXT
+import Graphics.Rendering.OpenGL.Raw.NV
 import Graphics.Rendering.OpenGL.Raw.GetProcAddress
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB.hs
@@ -13,21 +13,135 @@
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.ARB (
-   module Graphics.Rendering.OpenGL.Raw.ARB.Compatibility,
+   module Graphics.Rendering.OpenGL.Raw.ARB.Multitexture,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TransposeMatrix,
+   module Graphics.Rendering.OpenGL.Raw.ARB.Multisample,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvAdd,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMap,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureCompression,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureBorderClamp,
+   module Graphics.Rendering.OpenGL.Raw.ARB.PointParameters,
+   module Graphics.Rendering.OpenGL.Raw.ARB.VertexBlend,
+   module Graphics.Rendering.OpenGL.Raw.ARB.MatrixPalette,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCombine,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCrossbar,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvDot3,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureMirroredRepeat,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DepthTexture,
+   module Graphics.Rendering.OpenGL.Raw.ARB.Shadow,
+   module Graphics.Rendering.OpenGL.Raw.ARB.ShadowAmbient,
+   module Graphics.Rendering.OpenGL.Raw.ARB.WindowPos,
+   module Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram,
    module Graphics.Rendering.OpenGL.Raw.ARB.FragmentProgram,
+   module Graphics.Rendering.OpenGL.Raw.ARB.VertexBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.ARB.OcclusionQuery,
+   module Graphics.Rendering.OpenGL.Raw.ARB.ShaderObjects,
+   module Graphics.Rendering.OpenGL.Raw.ARB.VertexShader,
+   module Graphics.Rendering.OpenGL.Raw.ARB.FragmentShader,
+   module Graphics.Rendering.OpenGL.Raw.ARB.ShadingLanguage100,
+   -- module Graphics.Rendering.OpenGL.Raw.ARB.TextureNonPowerOfTwo,
+   module Graphics.Rendering.OpenGL.Raw.ARB.PointSprite,
+   -- module Graphics.Rendering.OpenGL.Raw.ARB.FragmentProgramShadow,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffers,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureRectangle,
+   module Graphics.Rendering.OpenGL.Raw.ARB.ColorBufferFloat,
+   module Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatPixel,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureFloat,
+   module Graphics.Rendering.OpenGL.Raw.ARB.PixelBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DepthBufferFloat,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DrawInstanced,
+   module Graphics.Rendering.OpenGL.Raw.ARB.FramebufferObject,
+   module Graphics.Rendering.OpenGL.Raw.ARB.FramebufferSRGB,
    module Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4,
+   module Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatVertex,
    module Graphics.Rendering.OpenGL.Raw.ARB.InstancedArrays,
-   module Graphics.Rendering.OpenGL.Raw.ARB.MatrixPalette,
-   module Graphics.Rendering.OpenGL.Raw.ARB.ShadowAmbient,
-   module Graphics.Rendering.OpenGL.Raw.ARB.VertexBlend,
-   module Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram
+   module Graphics.Rendering.OpenGL.Raw.ARB.MapBufferRange,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureCompressionRGTC,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureRG,
+   module Graphics.Rendering.OpenGL.Raw.ARB.VertexArrayObject,
+   module Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.ARB.Compatibility,
+   module Graphics.Rendering.OpenGL.Raw.ARB.CopyBuffer,
+   -- module Graphics.Rendering.OpenGL.Raw.ARB.ShaderTextureLod,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DrawElementsBaseVertex,
+   -- module Graphics.Rendering.OpenGL.Raw.ARB.FragmentCoordConventions,
+   module Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex,
+   module Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap,
+   module Graphics.Rendering.OpenGL.Raw.ARB.Sync,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureMultisample,
+   -- module Graphics.Rendering.OpenGL.Raw.ARB.VertexArrayBgra,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffersBlend,
+   module Graphics.Rendering.OpenGL.Raw.ARB.SampleShading,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMapArray,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureGather,
+   -- module Graphics.Rendering.OpenGL.Raw.ARB.TextureQueryLod,
+   module Graphics.Rendering.OpenGL.Raw.ARB.CreateContextProfile
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4
-import Graphics.Rendering.OpenGL.Raw.ARB.InstancedArrays
+import Graphics.Rendering.OpenGL.Raw.ARB.Multitexture
+import Graphics.Rendering.OpenGL.Raw.ARB.TransposeMatrix
+import Graphics.Rendering.OpenGL.Raw.ARB.Multisample
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvAdd
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMap
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureCompression
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureBorderClamp
+import Graphics.Rendering.OpenGL.Raw.ARB.PointParameters
+import Graphics.Rendering.OpenGL.Raw.ARB.VertexBlend
 import Graphics.Rendering.OpenGL.Raw.ARB.MatrixPalette
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCombine
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCrossbar
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvDot3
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureMirroredRepeat
+import Graphics.Rendering.OpenGL.Raw.ARB.DepthTexture
+import Graphics.Rendering.OpenGL.Raw.ARB.Shadow
 import Graphics.Rendering.OpenGL.Raw.ARB.ShadowAmbient
-import Graphics.Rendering.OpenGL.Raw.ARB.VertexBlend
+import Graphics.Rendering.OpenGL.Raw.ARB.WindowPos
 import Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram
 import Graphics.Rendering.OpenGL.Raw.ARB.FragmentProgram
+import Graphics.Rendering.OpenGL.Raw.ARB.VertexBufferObject
+import Graphics.Rendering.OpenGL.Raw.ARB.OcclusionQuery
+import Graphics.Rendering.OpenGL.Raw.ARB.ShaderObjects
+import Graphics.Rendering.OpenGL.Raw.ARB.VertexShader
+import Graphics.Rendering.OpenGL.Raw.ARB.FragmentShader
+import Graphics.Rendering.OpenGL.Raw.ARB.ShadingLanguage100
+-- import Graphics.Rendering.OpenGL.Raw.ARB.TextureNonPowerOfTwo
+import Graphics.Rendering.OpenGL.Raw.ARB.PointSprite
+-- import Graphics.Rendering.OpenGL.Raw.ARB.FragmentProgramShadow
+import Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffers
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureRectangle
+import Graphics.Rendering.OpenGL.Raw.ARB.ColorBufferFloat
+import Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatPixel
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureFloat
+import Graphics.Rendering.OpenGL.Raw.ARB.PixelBufferObject
+import Graphics.Rendering.OpenGL.Raw.ARB.DepthBufferFloat
+import Graphics.Rendering.OpenGL.Raw.ARB.DrawInstanced
+import Graphics.Rendering.OpenGL.Raw.ARB.FramebufferObject
+import Graphics.Rendering.OpenGL.Raw.ARB.FramebufferSRGB
+import Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4
+import Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatVertex
+import Graphics.Rendering.OpenGL.Raw.ARB.InstancedArrays
+import Graphics.Rendering.OpenGL.Raw.ARB.MapBufferRange
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureBufferObject
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureCompressionRGTC
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureRG
+import Graphics.Rendering.OpenGL.Raw.ARB.VertexArrayObject
+import Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.ARB.CopyBuffer
+-- import Graphics.Rendering.OpenGL.Raw.ARB.ShaderTextureLod
+import Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp
+import Graphics.Rendering.OpenGL.Raw.ARB.DrawElementsBaseVertex
+-- import Graphics.Rendering.OpenGL.Raw.ARB.FragmentCoordConventions
+import Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex
+import Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap
+import Graphics.Rendering.OpenGL.Raw.ARB.Sync
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureMultisample
+-- import Graphics.Rendering.OpenGL.Raw.ARB.VertexArrayBgra
+import Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffersBlend
+import Graphics.Rendering.OpenGL.Raw.ARB.SampleShading
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMapArray
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureGather
+-- import Graphics.Rendering.OpenGL.Raw.ARB.TextureQueryLod
+import Graphics.Rendering.OpenGL.Raw.ARB.CreateContextProfile
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/ColorBufferFloat.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/ColorBufferFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/ColorBufferFloat.hs
@@ -0,0 +1,29 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.ColorBufferFloat
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_color_buffer_float extension, see
+-- <http://www.opengl.org/registry/specs/ARB/color_buffer_float.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.ColorBufferFloat (
+   -- * Tokens
+   gl_RGBA_FLOAT_MODE,
+   gl_CLAMP_VERTEX_COLOR,
+   gl_CLAMP_FRAGMENT_COLOR,
+   gl_CLAMP_READ_COLOR,
+   gl_FIXED_ONLY
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_RGBA_FLOAT_MODE :: GLenum
+gl_RGBA_FLOAT_MODE = 0x8820
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_compatibility extension not already
--- in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the ARB_compatibility extension, see
 -- <http://www.opengl.org/registry/specs/ARB/compatibility.txt>.
 --
 --------------------------------------------------------------------------------
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility/Functions.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility/Functions.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility/Functions.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/Compatibility/Functions.hs
@@ -629,9 +629,9 @@
 EXTENSION_ENTRY(glNormalPointer,GLenum -> GLsizei -> Ptr a -> IO ())
 EXTENSION_ENTRY(glOrtho,GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
 EXTENSION_ENTRY(glPassThrough,GLfloat -> IO ())
-EXTENSION_ENTRY(glPixelMapfv,GLenum -> GLint -> Ptr GLfloat -> IO ())
-EXTENSION_ENTRY(glPixelMapuiv,GLenum -> GLint -> Ptr GLuint -> IO ())
-EXTENSION_ENTRY(glPixelMapusv,GLenum -> GLint -> Ptr GLushort -> IO ())
+EXTENSION_ENTRY(glPixelMapfv,GLenum -> GLsizei -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glPixelMapuiv,GLenum -> GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glPixelMapusv,GLenum -> GLsizei -> Ptr GLushort -> IO ())
 EXTENSION_ENTRY(glPixelTransferf,GLenum -> GLfloat -> IO ())
 EXTENSION_ENTRY(glPixelTransferi,GLenum -> GLint -> IO ())
 EXTENSION_ENTRY(glPixelZoom,GLfloat -> GLfloat -> IO ())
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/CopyBuffer.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/CopyBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/CopyBuffer.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.CopyBuffer
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_copy_buffer extension, see
+-- <http://www.opengl.org/registry/specs/ARB/copy_buffer.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.CopyBuffer (
+   -- * Functions
+    glCopyBufferSubData,
+   -- * Tokens
+   gl_COPY_READ_BUFFER,
+   gl_COPY_WRITE_BUFFER
+
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_copy_buffer"
+
+EXTENSION_ENTRY(glCopyBufferSubData,GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> IO ())
+
+gl_COPY_READ_BUFFER :: GLenum
+gl_COPY_READ_BUFFER = 0x8F36
+
+gl_COPY_WRITE_BUFFER :: GLenum
+gl_COPY_WRITE_BUFFER = 0x8F37
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/CreateContextProfile.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/CreateContextProfile.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/CreateContextProfile.hs
@@ -0,0 +1,32 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.CreateContextProfile
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_create_context_profile extension, see
+-- <http://www.opengl.org/registry/specs/ARB/create_context_profile.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.CreateContextProfile (
+   -- * Tokens
+   gl_CONTEXT_CORE_PROFILE_BIT,
+   gl_CONTEXT_COMPATIBILITY_PROFILE_BIT,
+   gl_CONTEXT_PROFILE_MASK
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+
+gl_CONTEXT_CORE_PROFILE_BIT :: GLenum
+gl_CONTEXT_CORE_PROFILE_BIT = 0x00000001
+
+gl_CONTEXT_COMPATIBILITY_PROFILE_BIT :: GLenum
+gl_CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002
+
+gl_CONTEXT_PROFILE_MASK :: GLenum
+gl_CONTEXT_PROFILE_MASK = 0x9126
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthBufferFloat.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthBufferFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthBufferFloat.hs
@@ -0,0 +1,23 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.DepthBufferFloat
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_depth_buffer_float extension, see
+-- <http://www.opengl.org/registry/specs/ARB/depth_buffer_float.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.DepthBufferFloat (
+   -- * Tokens
+   gl_DEPTH_COMPONENT32F,
+   gl_DEPTH32F_STENCIL8,
+   gl_FLOAT_32_UNSIGNED_INT_24_8_REV
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthClamp.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthClamp.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthClamp.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_depth_clamp extension, see
+-- <http://www.opengl.org/registry/specs/ARB/depth_clamp.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp (
+   -- * Tokens
+   gl_DEPTH_CLAMP
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+
+gl_DEPTH_CLAMP :: GLenum
+gl_DEPTH_CLAMP = 0x864F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthTexture.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/DepthTexture.hs
@@ -0,0 +1,27 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.DepthTexture
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_depth_texture extension extension, see
+-- <http://www.opengl.org/registry/specs/ARB/depth_texture.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.DepthTexture (
+   -- * Tokens
+   gl_DEPTH_COMPONENT,
+   gl_DEPTH_COMPONENT16,
+   gl_DEPTH_COMPONENT24,
+   gl_DEPTH_COMPONENT32,
+   gl_TEXTURE_DEPTH_SIZE,
+   gl_DEPTH_TEXTURE_MODE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawBuffers.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawBuffers.hs
@@ -0,0 +1,39 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffers
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_point_sprite extension, see
+-- <http://www.opengl.org/registry/specs/ARB/point_sprite.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffers (
+   -- * Functions
+   glDrawBuffers,
+   -- * Tokens
+   gl_MAX_DRAW_BUFFERS,
+   gl_DRAW_BUFFER0,
+   gl_DRAW_BUFFER1,
+   gl_DRAW_BUFFER2,
+   gl_DRAW_BUFFER3,
+   gl_DRAW_BUFFER4,
+   gl_DRAW_BUFFER5,
+   gl_DRAW_BUFFER6,
+   gl_DRAW_BUFFER7,
+   gl_DRAW_BUFFER8,
+   gl_DRAW_BUFFER9,
+   gl_DRAW_BUFFER10,
+   gl_DRAW_BUFFER11,
+   gl_DRAW_BUFFER12,
+   gl_DRAW_BUFFER13,
+   gl_DRAW_BUFFER14,
+   gl_DRAW_BUFFER15
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawBuffersBlend.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawBuffersBlend.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawBuffersBlend.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffersBlend
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions from the ARB_draw_buffers_blend extension, see
+-- <http://www.opengl.org/registry/specs/ARB/draw_buffers_blend.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.DrawBuffersBlend (
+   -- * Functions
+   glBlendEquationi,
+   glBlendEquationSeparatei,
+   glBlendFunci,
+   glBlendFuncSeparatei
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_draw_buffers_blend"
+
+EXTENSION_ENTRY(glBlendEquationi,GLuint -> GLenum -> IO ())
+EXTENSION_ENTRY(glBlendEquationSeparatei,GLuint -> GLenum -> GLenum -> IO ())
+EXTENSION_ENTRY(glBlendFunci,GLuint -> GLenum -> GLenum -> IO ())
+EXTENSION_ENTRY(glBlendFuncSeparatei,GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
+
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawElementsBaseVertex.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawElementsBaseVertex.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawElementsBaseVertex.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.DrawElementsBaseVertex
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions from the ARB_draw_elements_base_vertex extension, see
+-- <http://www.opengl.org/registry/specs/ARB/draw_elements_base_vertex.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.DrawElementsBaseVertex (
+   -- * Functions
+   glDrawElementsBaseVertex,
+   glDrawRangeElementsBaseVertex,
+   glDrawElementsInstancedBaseVertex,
+   glMultiDrawElementsBaseVertex
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_draw_elements_base_vertex"
+
+EXTENSION_ENTRY(glDrawElementsBaseVertex,GLenum -> GLsizei -> GLenum -> Ptr a -> GLint -> IO ())
+EXTENSION_ENTRY(glDrawRangeElementsBaseVertex,GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr a -> GLint -> IO ())
+EXTENSION_ENTRY(glDrawElementsInstancedBaseVertex,GLenum -> GLsizei -> GLenum -> Ptr a -> GLsizei -> GLint -> IO ())
+EXTENSION_ENTRY(glMultiDrawElementsBaseVertex,GLenum -> Ptr GLsizei -> GLenum -> Ptr (Ptr a) -> GLsizei -> Ptr GLint -> IO ())
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawInstanced.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawInstanced.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/DrawInstanced.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.DrawInstanced
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions from the ARB_draw_instanced extension, see
+-- <http://www.opengl.org/registry/specs/ARB/draw_instanced.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.DrawInstanced (
+   -- * Functions
+   glDrawArraysInstanced,
+   glDrawElementsInstanced
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_draw_instanced"
+
+EXTENSION_ENTRY(glDrawArraysInstanced,GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
+EXTENSION_ENTRY(glDrawElementsInstanced,GLenum -> GLsizei -> GLenum -> Ptr a -> GLsizei -> IO ())
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/FragmentProgram.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/FragmentProgram.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/FragmentProgram.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/FragmentProgram.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_fragment_program extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the ARB_fragment_program extension, see
 -- <http://www.opengl.org/registry/specs/ARB/fragment_program.txt>.
 --
 --------------------------------------------------------------------------------
@@ -32,7 +31,9 @@
    glGetProgramEnvParameterfv,
    glGetProgramLocalParameterdv,
    glGetProgramLocalParameterfv,
+   glGetProgramiv,
    glGetProgramString,
+   glIsProgram,
    -- * Tokens
    gl_FRAGMENT_PROGRAM,
    gl_PROGRAM_FORMAT_ASCII,
@@ -78,6 +79,7 @@
    gl_MAX_PROGRAM_MATRICES,
    gl_MAX_PROGRAM_MATRIX_STACK_DEPTH,
    gl_MAX_TEXTURE_COORDS,
+   gl_MAX_TEXTURE_IMAGE_UNITS,
    gl_PROGRAM_ERROR_STRING,
    gl_MATRIX0,
    gl_MATRIX1,
@@ -115,13 +117,7 @@
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
 import Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram
-import Graphics.Rendering.OpenGL.Raw.Core31
-
--- functions/tokens already in the OpenGL 3.1 core:
---
--- glGetProgramiv
--- glIsProgram
--- gl_MAX_TEXTURE_IMAGE_UNITS
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_FRAGMENT_PROGRAM :: GLenum
 gl_FRAGMENT_PROGRAM = 0x8804
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/FragmentShader.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/FragmentShader.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/FragmentShader.hs
@@ -0,0 +1,26 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.FragmentShader
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_fragment_shader extension, see
+-- <http://www.opengl.org/registry/specs/ARB/fragment_shader.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.FragmentShader (
+   -- * Tokens
+   gl_FRAGMENT_SHADER,
+   gl_MAX_FRAGMENT_UNIFORM_COMPONENTS,
+   gl_MAX_TEXTURE_COORDS,
+   gl_MAX_TEXTURE_IMAGE_UNITS,
+   gl_FRAGMENT_SHADER_DERIVATIVE_HINT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/FramebufferObject.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/FramebufferObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/FramebufferObject.hs
@@ -0,0 +1,117 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.FramebufferObject
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_framebuffer_object extension, see
+-- <http://www.opengl.org/registry/specs/ARB/framebuffer_object.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.FramebufferObject (
+   -- * Functions
+   glIsRenderbuffer,
+   glBindRenderbuffer,
+   glDeleteRenderbuffers,
+   glGenRenderbuffers,
+   glRenderbufferStorage,
+   glRenderbufferStorageMultisample,
+   glGetRenderbufferParameteriv,
+   glIsFramebuffer,
+   glBindFramebuffer,
+   glDeleteFramebuffers,
+   glGenFramebuffers,
+   glCheckFramebufferStatus,
+   glFramebufferTexture1D,
+   glFramebufferTexture2D,
+   glFramebufferTexture3D,
+   glFramebufferTextureLayer,
+   glFramebufferRenderbuffer,
+   glGetFramebufferAttachmentParameteriv,
+   glBlitFramebuffer,
+   glGenerateMipmap,
+   -- * Tokens
+   gl_FRAMEBUFFER,
+   gl_READ_FRAMEBUFFER,
+   gl_DRAW_FRAMEBUFFER,
+   gl_RENDERBUFFER,
+   gl_STENCIL_INDEX1,
+   gl_STENCIL_INDEX4,
+   gl_STENCIL_INDEX8,
+   gl_STENCIL_INDEX16,
+   gl_RENDERBUFFER_WIDTH,
+   gl_RENDERBUFFER_HEIGHT,
+   gl_RENDERBUFFER_INTERNAL_FORMAT,
+   gl_RENDERBUFFER_RED_SIZE,
+   gl_RENDERBUFFER_GREEN_SIZE,
+   gl_RENDERBUFFER_BLUE_SIZE,
+   gl_RENDERBUFFER_ALPHA_SIZE,
+   gl_RENDERBUFFER_DEPTH_SIZE,
+   gl_RENDERBUFFER_STENCIL_SIZE,
+   gl_RENDERBUFFER_SAMPLES,
+   gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
+   gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
+   gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,
+   gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,
+   gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,
+   gl_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,
+   gl_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,
+   gl_FRAMEBUFFER_ATTACHMENT_RED_SIZE,
+   gl_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
+   gl_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
+   gl_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
+   gl_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
+   gl_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
+   gl_SRGB,
+   gl_UNSIGNED_NORMALIZED,
+   gl_FRAMEBUFFER_DEFAULT,
+   gl_INDEX,
+   gl_COLOR_ATTACHMENT0,
+   gl_COLOR_ATTACHMENT1,
+   gl_COLOR_ATTACHMENT2,
+   gl_COLOR_ATTACHMENT3,
+   gl_COLOR_ATTACHMENT4,
+   gl_COLOR_ATTACHMENT5,
+   gl_COLOR_ATTACHMENT6,
+   gl_COLOR_ATTACHMENT7,
+   gl_COLOR_ATTACHMENT8,
+   gl_COLOR_ATTACHMENT9,
+   gl_COLOR_ATTACHMENT10,
+   gl_COLOR_ATTACHMENT11,
+   gl_COLOR_ATTACHMENT12,
+   gl_COLOR_ATTACHMENT13,
+   gl_COLOR_ATTACHMENT14,
+   gl_COLOR_ATTACHMENT15,
+   gl_DEPTH_ATTACHMENT,
+   gl_STENCIL_ATTACHMENT,
+   gl_DEPTH_STENCIL_ATTACHMENT,
+   gl_MAX_SAMPLES,
+   gl_FRAMEBUFFER_COMPLETE,
+   gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
+   gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,
+   gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER,
+   gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER,
+   gl_FRAMEBUFFER_UNSUPPORTED,
+   gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE,
+   gl_FRAMEBUFFER_UNDEFINED,
+   gl_FRAMEBUFFER_BINDING,
+   gl_DRAW_FRAMEBUFFER_BINDING,
+   gl_READ_FRAMEBUFFER_BINDING,
+   gl_RENDERBUFFER_BINDING,
+   gl_MAX_COLOR_ATTACHMENTS,
+   gl_MAX_RENDERBUFFER_SIZE,
+   gl_INVALID_FRAMEBUFFER_OPERATION,
+   gl_DEPTH_STENCIL,
+   gl_UNSIGNED_INT_24_8,
+   gl_DEPTH24_STENCIL8,
+   gl_TEXTURE_STENCIL_SIZE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core31.Functions
+import Graphics.Rendering.OpenGL.Raw.Core31.Tokens
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/FramebufferSRGB.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/FramebufferSRGB.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/FramebufferSRGB.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.FramebufferSRGB
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_framebuffer_sRGB extension, see
+-- <http://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.FramebufferSRGB (
+   -- * Tokens
+   gl_FRAMEBUFFER_SRGB
+
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/GeometryShader4.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/GeometryShader4.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/GeometryShader4.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/GeometryShader4.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_geometry_shader4 extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the ARB_geometry_shader4 extension, see
 -- <http://www.opengl.org/registry/specs/ARB/geometry_shader4.txt>.
 --
 --------------------------------------------------------------------------------
@@ -19,14 +18,34 @@
    -- * Functions
    glProgramParameteri,
    glFramebufferTexture,
+   glFramebufferTextureLayer,
    glFramebufferTextureFace,
    -- * Tokens
-   gl_MAX_GEOMETRY_UNIFORM_BLOCKS,
-   gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS,
-   gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
+   gl_GEOMETRY_SHADER,
+   gl_GEOMETRY_VERTICES_OUT,
+   gl_GEOMETRY_INPUT_TYPE,
+   gl_GEOMETRY_OUTPUT_TYPE,
+   gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS,
+   gl_MAX_GEOMETRY_VARYING_COMPONENTS,
+   gl_MAX_VERTEX_VARYING_COMPONENTS,
+   gl_MAX_VARYING_COMPONENTS,
+   gl_MAX_GEOMETRY_UNIFORM_COMPONENTS,
+   gl_MAX_GEOMETRY_OUTPUT_VERTICES,
+   gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS,
+   gl_LINES_ADJACENCY,
+   gl_LINE_STRIP_ADJACENCY,
+   gl_TRIANGLES_ADJACENCY,
+   gl_TRIANGLE_STRIP_ADJACENCY,
+   gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS,
+   gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT,
+   gl_FRAMEBUFFER_ATTACHMENT_LAYERED,
+   gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,
+   gl_PROGRAM_POINT_SIZE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core31.Functions ( glFramebufferTextureLayer )
+import Graphics.Rendering.OpenGL.Raw.Core31.Tokens ( gl_MAX_VARYING_COMPONENTS, gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER )
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
@@ -34,21 +53,60 @@
 extensionNameString :: String
 extensionNameString = "GL_ARB_geometry_shader4"
 
--- functions/tokens already in the OpenGL 3.1 core:
---
--- glFramebufferTextureLayer
--- gl_MAX_VARYING_COMPONENTS
--- gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
-
 EXTENSION_ENTRY(glProgramParameteri,GLuint -> GLenum -> GLint -> IO ())
 EXTENSION_ENTRY(glFramebufferTexture,GLenum -> GLenum -> GLuint -> GLint -> IO ())
 EXTENSION_ENTRY(glFramebufferTextureFace,GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ())
 
-gl_MAX_GEOMETRY_UNIFORM_BLOCKS :: GLenum
-gl_MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C
+gl_GEOMETRY_SHADER :: GLenum
+gl_GEOMETRY_SHADER = 0x8DD9
 
-gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS :: GLenum
-gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32
+gl_GEOMETRY_VERTICES_OUT :: GLenum
+gl_GEOMETRY_VERTICES_OUT = 0x8DDA
 
-gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER :: GLenum
-gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45
+gl_GEOMETRY_INPUT_TYPE :: GLenum
+gl_GEOMETRY_INPUT_TYPE = 0x8DDB
+
+gl_GEOMETRY_OUTPUT_TYPE :: GLenum
+gl_GEOMETRY_OUTPUT_TYPE = 0x8DDC
+
+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS :: GLenum
+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29
+
+gl_MAX_GEOMETRY_VARYING_COMPONENTS :: GLenum
+gl_MAX_GEOMETRY_VARYING_COMPONENTS = 0x8DDD
+
+gl_MAX_VERTEX_VARYING_COMPONENTS :: GLenum
+gl_MAX_VERTEX_VARYING_COMPONENTS = 0x8DDE
+
+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS :: GLenum
+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF
+
+gl_MAX_GEOMETRY_OUTPUT_VERTICES :: GLenum
+gl_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0
+
+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS :: GLenum
+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1
+
+gl_LINES_ADJACENCY :: GLenum
+gl_LINES_ADJACENCY = 0xA
+
+gl_LINE_STRIP_ADJACENCY :: GLenum
+gl_LINE_STRIP_ADJACENCY = 0xB
+
+gl_TRIANGLES_ADJACENCY :: GLenum
+gl_TRIANGLES_ADJACENCY = 0xC
+
+gl_TRIANGLE_STRIP_ADJACENCY :: GLenum
+gl_TRIANGLE_STRIP_ADJACENCY = 0xD
+
+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS :: GLenum
+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8
+
+gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT :: GLenum
+gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT = 0x8DA9
+
+gl_FRAMEBUFFER_ATTACHMENT_LAYERED :: GLenum
+gl_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7
+
+gl_PROGRAM_POINT_SIZE :: GLenum
+gl_PROGRAM_POINT_SIZE = 0x8642
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/HalfFloatPixel.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/HalfFloatPixel.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/HalfFloatPixel.hs
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatPixel
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_half_float_pixel extension, see
+-- <http://www.opengl.org/registry/specs/ARB/half_float_pixel.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatPixel (
+   -- * Tokens
+   gl_HALF_FLOAT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/HalfFloatVertex.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/HalfFloatVertex.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/HalfFloatVertex.hs
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatVertex
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_half_float_vertex extension, see
+-- <http://www.opengl.org/registry/specs/ARB/half_float_vertex.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.HalfFloatVertex (
+   -- * Tokens
+   gl_HALF_FLOAT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/InstancedArrays.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/InstancedArrays.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/InstancedArrays.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/InstancedArrays.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_instanced_arrays extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the ARB_instanced_arrays extension, see
 -- <http://www.opengl.org/registry/specs/ARB/instanced_arrays.txt>.
 --
 --------------------------------------------------------------------------------
@@ -22,7 +21,7 @@
    gl_VERTEX_ATTRIB_ARRAY_DIVISOR
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/MapBufferRange.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/MapBufferRange.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/MapBufferRange.hs
@@ -0,0 +1,29 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.MapBufferRange
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_map_buffer_range extension, see
+-- <http://www.opengl.org/registry/specs/ARB/map_buffer_range.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.MapBufferRange (
+   -- * Functions
+   glMapBufferRange,
+   glFlushMappedBufferRange,
+   -- * Tokens
+   gl_MAP_READ_BIT,
+   gl_MAP_WRITE_BIT,
+   gl_MAP_INVALIDATE_RANGE_BIT,
+   gl_MAP_INVALIDATE_BUFFER_BIT,
+   gl_MAP_FLUSH_EXPLICIT_BIT,
+   gl_MAP_UNSYNCHRONIZED_BIT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/MatrixPalette.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/MatrixPalette.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/MatrixPalette.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/MatrixPalette.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_matrix_palette extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the ARB_matrix_palette extension, see
 -- <http://www.opengl.org/registry/specs/ARB/matrix_palette.txt>.
 --
 --------------------------------------------------------------------------------
@@ -36,7 +35,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/Multisample.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/Multisample.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/Multisample.hs
@@ -0,0 +1,32 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.Multisample
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_multisample extension, see
+-- <http://www.opengl.org/registry/specs/ARB/multisample.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.Multisample (
+   -- * Functions
+   glSampleCoverage,
+   -- * Tokens
+   gl_MULTISAMPLE,
+   gl_SAMPLE_ALPHA_TO_COVERAGE,
+   gl_SAMPLE_ALPHA_TO_ONE,
+   gl_SAMPLE_COVERAGE,
+   gl_MULTISAMPLE_BIT,
+   gl_SAMPLE_BUFFERS,
+   gl_SAMPLES,
+   gl_SAMPLE_COVERAGE_VALUE,
+   gl_SAMPLE_COVERAGE_INVERT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/Multitexture.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/Multitexture.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/Multitexture.hs
@@ -0,0 +1,91 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.Multitexture
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_multitexture extension, see
+-- <http://www.opengl.org/registry/specs/ARB/multitexture.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.Multitexture (
+   -- * Functions
+   glActiveTexture,
+   glClientActiveTexture,
+   glMultiTexCoord1d,
+   glMultiTexCoord1dv,
+   glMultiTexCoord1f,
+   glMultiTexCoord1fv,
+   glMultiTexCoord1i,
+   glMultiTexCoord1iv,
+   glMultiTexCoord1s,
+   glMultiTexCoord1sv,
+   glMultiTexCoord2d,
+   glMultiTexCoord2dv,
+   glMultiTexCoord2f,
+   glMultiTexCoord2fv,
+   glMultiTexCoord2i,
+   glMultiTexCoord2iv,
+   glMultiTexCoord2s,
+   glMultiTexCoord2sv,
+   glMultiTexCoord3d,
+   glMultiTexCoord3dv,
+   glMultiTexCoord3f,
+   glMultiTexCoord3fv,
+   glMultiTexCoord3i,
+   glMultiTexCoord3iv,
+   glMultiTexCoord3s,
+   glMultiTexCoord3sv,
+   glMultiTexCoord4d,
+   glMultiTexCoord4dv,
+   glMultiTexCoord4f,
+   glMultiTexCoord4fv,
+   glMultiTexCoord4i,
+   glMultiTexCoord4iv,
+   glMultiTexCoord4s,
+   glMultiTexCoord4sv,
+   -- * Tokens
+   gl_ACTIVE_TEXTURE,
+   gl_CLIENT_ACTIVE_TEXTURE,
+   gl_MAX_TEXTURE_UNITS,
+   gl_TEXTURE0,
+   gl_TEXTURE1,
+   gl_TEXTURE10,
+   gl_TEXTURE11,
+   gl_TEXTURE12,
+   gl_TEXTURE13,
+   gl_TEXTURE14,
+   gl_TEXTURE15,
+   gl_TEXTURE16,
+   gl_TEXTURE17,
+   gl_TEXTURE18,
+   gl_TEXTURE19,
+   gl_TEXTURE2,
+   gl_TEXTURE20,
+   gl_TEXTURE21,
+   gl_TEXTURE22,
+   gl_TEXTURE23,
+   gl_TEXTURE24,
+   gl_TEXTURE25,
+   gl_TEXTURE26,
+   gl_TEXTURE27,
+   gl_TEXTURE28,
+   gl_TEXTURE29,
+   gl_TEXTURE3,
+   gl_TEXTURE30,
+   gl_TEXTURE31,
+   gl_TEXTURE4,
+   gl_TEXTURE5,
+   gl_TEXTURE6,
+   gl_TEXTURE7,
+   gl_TEXTURE8,
+   gl_TEXTURE9
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/OcclusionQuery.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/OcclusionQuery.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/OcclusionQuery.hs
@@ -0,0 +1,34 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.OcclusionQuery
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_occlusion_query extension, see
+-- <http://www.opengl.org/registry/specs/ARB/occlusion_query.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.OcclusionQuery (
+   -- * Functions
+   glGenQueries,
+   glDeleteQueries,
+   glIsQuery,
+   glBeginQuery,
+   glEndQuery,
+   glGetQueryiv,
+   glGetQueryObjectiv,
+   glGetQueryObjectuiv,
+   -- * Tokens
+   gl_SAMPLES_PASSED,
+   gl_QUERY_COUNTER_BITS,
+   gl_CURRENT_QUERY,
+   gl_QUERY_RESULT,
+   gl_QUERY_RESULT_AVAILABLE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/PixelBufferObject.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/PixelBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/PixelBufferObject.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.PixelBufferObject
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_pixel_buffer_object extension, see
+-- <http://www.opengl.org/registry/specs/ARB/pixel_buffer_object.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.PixelBufferObject (
+   -- * Tokens
+   gl_PIXEL_PACK_BUFFER,
+   gl_PIXEL_UNPACK_BUFFER,
+   gl_PIXEL_PACK_BUFFER_BINDING,
+   gl_PIXEL_UNPACK_BUFFER_BINDING
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/PointParameters.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/PointParameters.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/PointParameters.hs
@@ -0,0 +1,28 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.PointParameters
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_point_parameters extension, see
+-- <http://www.opengl.org/registry/specs/ARB/point_parameters.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.PointParameters (
+   -- * Functions
+   glPointParameterf,
+   glPointParameterfv,
+   -- * Tokens
+   gl_POINT_SIZE_MIN,
+   gl_POINT_SIZE_MAX,
+   gl_POINT_FADE_THRESHOLD_SIZE,
+   gl_POINT_DISTANCE_ATTENUATION,
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/PointSprite.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/PointSprite.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/PointSprite.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.PointSprite
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_point_sprite extension, see
+-- <http://www.opengl.org/registry/specs/ARB/point_sprite.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.PointSprite (
+   -- * Tokens
+   gl_POINT_SPRITE,
+   gl_COORD_REPLACE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/ProvokingVertex.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/ProvokingVertex.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/ProvokingVertex.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_provoking_vertex extension, see
+-- <http://www.opengl.org/registry/specs/ARB/provoking_vertex.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex (
+   -- * Functions
+   glProvokingVertex,
+   -- * Tokens
+   gl_FIRST_VERTEX_CONVENTION,
+   gl_LAST_VERTEX_CONVENTION,
+   gl_PROVOKING_VERTEX,
+   gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_provoking_vertex"
+
+EXTENSION_ENTRY(glProvokingVertex,GLenum -> IO ())
+
+gl_FIRST_VERTEX_CONVENTION :: GLenum
+gl_FIRST_VERTEX_CONVENTION = 0x8E4D
+
+gl_LAST_VERTEX_CONVENTION :: GLenum
+gl_LAST_VERTEX_CONVENTION = 0x8E4E
+
+gl_PROVOKING_VERTEX :: GLenum
+gl_PROVOKING_VERTEX = 0x8E4F
+
+gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION :: GLenum
+gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/SampleShading.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/SampleShading.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/SampleShading.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.SampleShading
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_sample_shading extension, see
+-- <http://www.opengl.org/registry/specs/ARB/sample_shading.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.SampleShading (
+   -- * Functions
+   glMinSampleShading,
+   -- * Tokens
+   gl_SAMPLE_SHADING,
+   gl_MIN_SAMPLE_SHADING_VALUE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_sample_shading"
+
+EXTENSION_ENTRY(glMinSampleShading,GLclampf -> IO ())
+
+gl_SAMPLE_SHADING :: GLenum
+gl_SAMPLE_SHADING = 0x8C36
+
+gl_MIN_SAMPLE_SHADING_VALUE :: GLenum
+gl_MIN_SAMPLE_SHADING_VALUE = 0x8C37
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/SeamlessCubeMap.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/SeamlessCubeMap.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/SeamlessCubeMap.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_seamless_cube_map extension, see
+-- <http://www.opengl.org/registry/specs/ARB/seamless_cube_map.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap (
+   -- * Tokens
+   gl_TEXTURE_CUBE_MAP_SEAMLESS
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+
+gl_TEXTURE_CUBE_MAP_SEAMLESS :: GLenum
+gl_TEXTURE_CUBE_MAP_SEAMLESS = 0x884F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/ShaderObjects.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/ShaderObjects.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/ShaderObjects.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.ShaderObjects
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_shader_objects extension, see
+-- <http://www.opengl.org/registry/specs/ARB/shader_objects.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.ShaderObjects (
+   -- * Functions
+   glDeleteObject,
+   glGetHandle,
+   glDetachObject,
+   glCreateShaderObject,
+   glShaderSource,
+   glCompileShader,
+   glCreateProgramObject,
+   glAttachObject,
+   glLinkProgram,
+   glUseProgramObject,
+   glValidateProgram,
+   glUniform1f,
+   glUniform2f,
+   glUniform3f,
+   glUniform4f,
+   glUniform1i,
+   glUniform2i,
+   glUniform3i,
+   glUniform4i,
+   glUniform1fv,
+   glUniform2fv,
+   glUniform3fv,
+   glUniform4fv,
+   glUniform1iv,
+   glUniform2iv,
+   glUniform3iv,
+   glUniform4iv,
+   glUniformMatrix2fv,
+   glUniformMatrix3fv,
+   glUniformMatrix4fv,
+   glGetObjectParameterfv,
+   glGetObjectParameteriv,
+   glGetInfoLog,
+   glGetAttachedObjects,
+   glGetUniformLocation,
+   glGetActiveUniform,
+   glGetUniformfv,
+   glGetUniformiv,
+   glGetShaderSource,
+   -- * Tokens
+   gl_PROGRAM_OBJECT,
+   gl_OBJECT_TYPE_ARB,
+   gl_OBJECT_SUBTYPE,
+   gl_OBJECT_DELETE_STATUS,
+   gl_OBJECT_COMPILE_STATUS,
+   gl_OBJECT_LINK_STATUS,
+   gl_OBJECT_VALIDATE_STATUS,
+   gl_OBJECT_INFO_LOG_LENGTH,
+   gl_OBJECT_ATTACHED_OBJECTS,
+   gl_OBJECT_ACTIVE_UNIFORMS,
+   gl_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH,
+   gl_OBJECT_SHADER_SOURCE_LENGTH,
+   gl_SHADER_OBJECT,
+   gl_FLOAT,
+   gl_FLOAT_VEC2,
+   gl_FLOAT_VEC3,
+   gl_FLOAT_VEC4,
+   gl_INT,
+   gl_INT_VEC2,
+   gl_INT_VEC3,
+   gl_INT_VEC4,
+   gl_BOOL,
+   gl_BOOL_VEC2,
+   gl_BOOL_VEC3,
+   gl_BOOL_VEC4,
+   gl_FLOAT_MAT2,
+   gl_FLOAT_MAT3,
+   gl_FLOAT_MAT4,
+   gl_SAMPLER_1D,
+   gl_SAMPLER_2D,
+   gl_SAMPLER_3D,
+   gl_SAMPLER_CUBE,
+   gl_SAMPLER_1D_SHADOW,
+   gl_SAMPLER_2D_SHADOW,
+   gl_SAMPLER_2D_RECT,
+   gl_SAMPLER_2D_RECT_SHADOW,
+   -- * Types
+   GLhandle
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31.TypesInternal
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_shader_objects"
+
+EXTENSION_ENTRY(glDeleteObject,GLhandle -> IO ())
+EXTENSION_ENTRY(glGetHandle,GLenum -> IO GLhandle)
+EXTENSION_ENTRY(glDetachObject,GLhandle -> GLhandle -> IO ())
+EXTENSION_ENTRY(glCreateShaderObject,GLenum -> IO GLhandle)
+EXTENSION_ENTRY(glCreateProgramObject,IO GLhandle)
+EXTENSION_ENTRY(glAttachObject,GLhandle -> GLhandle -> IO ())
+EXTENSION_ENTRY(glUseProgramObject,GLhandle -> IO ())
+EXTENSION_ENTRY(glGetObjectParameterfv,GLhandle -> GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetObjectParameteriv,GLhandle -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetInfoLog,GLhandle -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+EXTENSION_ENTRY(glGetAttachedObjects,GLhandle -> GLsizei -> Ptr GLsizei -> Ptr GLhandle -> IO ())
+
+gl_PROGRAM_OBJECT :: GLenum
+gl_PROGRAM_OBJECT = 0x8B40
+
+-- | Note: We use the ARB suffix here, because the name clashes with the ARB_sync extension.
+gl_OBJECT_TYPE_ARB :: GLenum
+gl_OBJECT_TYPE_ARB = 0x8B4E
+
+gl_OBJECT_SUBTYPE :: GLenum
+gl_OBJECT_SUBTYPE = 0x8B4F
+
+gl_OBJECT_DELETE_STATUS :: GLenum
+gl_OBJECT_DELETE_STATUS = 0x8B80
+
+gl_OBJECT_COMPILE_STATUS :: GLenum
+gl_OBJECT_COMPILE_STATUS = 0x8B81
+
+gl_OBJECT_LINK_STATUS :: GLenum
+gl_OBJECT_LINK_STATUS = 0x8B82
+
+gl_OBJECT_VALIDATE_STATUS :: GLenum
+gl_OBJECT_VALIDATE_STATUS = 0x8B83
+
+gl_OBJECT_INFO_LOG_LENGTH :: GLenum
+gl_OBJECT_INFO_LOG_LENGTH = 0x8B84
+
+gl_OBJECT_ATTACHED_OBJECTS :: GLenum
+gl_OBJECT_ATTACHED_OBJECTS = 0x8B85
+
+gl_OBJECT_ACTIVE_UNIFORMS :: GLenum
+gl_OBJECT_ACTIVE_UNIFORMS = 0x8B86
+
+gl_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH :: GLenum
+gl_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87
+
+gl_OBJECT_SHADER_SOURCE_LENGTH :: GLenum
+gl_OBJECT_SHADER_SOURCE_LENGTH = 0x8B88
+
+gl_SHADER_OBJECT :: GLenum
+gl_SHADER_OBJECT = 0x8B48
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/ShadingLanguage100.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/ShadingLanguage100.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/ShadingLanguage100.hs
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.ShadingLanguage100
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_shading_language_100 extension, see
+-- <http://www.opengl.org/registry/specs/ARB/shading_language_100.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.ShadingLanguage100 (
+   -- * Tokens
+   gl_SHADING_LANGUAGE_VERSION
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/Shadow.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/Shadow.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/Shadow.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.Shadow
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_shadow extension, see
+-- <http://www.opengl.org/registry/specs/ARB/shadow.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.Shadow (
+   -- * Tokens
+   gl_TEXTURE_COMPARE_MODE,
+   gl_TEXTURE_COMPARE_FUNC,
+   gl_COMPARE_R_TO_TEXTURE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/ShadowAmbient.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/ShadowAmbient.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/ShadowAmbient.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/ShadowAmbient.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_shadow_ambient extension not
--- already in the OpenGL 3.1 core, see
+-- All tokens from the ARB_shadow_ambient extension, see
 -- <http://www.opengl.org/registry/specs/ARB/shadow_ambient.txt>.
 --
 --------------------------------------------------------------------------------
@@ -19,7 +18,7 @@
    gl_TEXTURE_COMPARE_FAIL_VALUE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_TEXTURE_COMPARE_FAIL_VALUE :: GLenum
 gl_TEXTURE_COMPARE_FAIL_VALUE = 0x80BF
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/Sync.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/Sync.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/Sync.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.Sync
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions, tokens and types from the ARB_sync extension, see
+-- <http://www.opengl.org/registry/specs/ARB/sync.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.Sync (
+   -- * Functions
+   glFenceSync,
+   glIsSync,
+   glDeleteSync,
+   glClientWaitSync,
+   glWaitSync,
+   glGetInteger64v,
+   glGetSynciv,
+   -- * Tokens
+   gl_MAX_SERVER_WAIT_TIMEOUT,
+   gl_OBJECT_TYPE,
+   gl_SYNC_CONDITION,
+   gl_SYNC_STATUS,
+   gl_SYNC_FLAGS,
+   gl_SYNC_FENCE,
+   gl_SYNC_GPU_COMMANDS_COMPLETE,
+   gl_UNSIGNALED,
+   gl_SIGNALED,
+   gl_SYNC_FLUSH_COMMANDS_BIT,
+   gl_TIMEOUT_IGNORED,
+   gl_ALREADY_SIGNALED,
+   gl_TIMEOUT_EXPIRED,
+   gl_CONDITION_SATISFIED,
+   gl_WAIT_FAILED,
+   -- * Types
+   GLint64,
+   GLuint64,
+   GLsync
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31.TypesInternal
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_sync"
+
+EXTENSION_ENTRY(glFenceSync,GLenum -> GLbitfield -> IO GLsync)
+EXTENSION_ENTRY(glIsSync,GLsync -> IO GLboolean)
+EXTENSION_ENTRY(glDeleteSync,GLsync -> IO ())
+EXTENSION_ENTRY(glClientWaitSync,GLsync -> GLbitfield -> GLuint64 -> IO GLenum)
+EXTENSION_ENTRY(glWaitSync,GLsync -> GLbitfield -> GLuint64 -> IO ())
+EXTENSION_ENTRY(glGetInteger64v,GLenum -> Ptr GLint64 -> IO ())
+EXTENSION_ENTRY(glGetSynciv,GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ())
+
+gl_MAX_SERVER_WAIT_TIMEOUT :: GLenum
+gl_MAX_SERVER_WAIT_TIMEOUT = 0x9111
+
+gl_OBJECT_TYPE :: GLenum
+gl_OBJECT_TYPE = 0x9112
+
+gl_SYNC_CONDITION :: GLenum
+gl_SYNC_CONDITION = 0x9113
+
+gl_SYNC_STATUS :: GLenum
+gl_SYNC_STATUS = 0x9114
+
+gl_SYNC_FLAGS :: GLenum
+gl_SYNC_FLAGS = 0x9115
+
+gl_SYNC_FENCE :: GLenum
+gl_SYNC_FENCE = 0x9116
+
+gl_SYNC_GPU_COMMANDS_COMPLETE :: GLenum
+gl_SYNC_GPU_COMMANDS_COMPLETE = 0x9117
+
+gl_UNSIGNALED :: GLenum
+gl_UNSIGNALED = 0x9118
+
+gl_SIGNALED :: GLenum
+gl_SIGNALED = 0x9119
+
+gl_SYNC_FLUSH_COMMANDS_BIT :: GLenum
+gl_SYNC_FLUSH_COMMANDS_BIT = 0x00000001
+
+gl_TIMEOUT_IGNORED :: GLuint64
+gl_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF
+
+gl_ALREADY_SIGNALED :: GLenum
+gl_ALREADY_SIGNALED = 0x911A
+
+gl_TIMEOUT_EXPIRED :: GLenum
+gl_TIMEOUT_EXPIRED = 0x911B
+
+gl_CONDITION_SATISFIED :: GLenum
+gl_CONDITION_SATISFIED = 0x911C
+
+gl_WAIT_FAILED :: GLenum
+gl_WAIT_FAILED = 0x911D
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureBorderClamp.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureBorderClamp.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureBorderClamp.hs
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureBorderClamp
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_texture_border_clamp extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_border_clamp.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureBorderClamp (
+   -- * Tokens
+ gl_CLAMP_TO_BORDER
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureBufferObject.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureBufferObject.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureBufferObject
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_texture_buffer_object, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_buffer_object.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureBufferObject (
+   -- * Functions
+   glTexBuffer,
+   -- * Tokens
+   gl_TEXTURE_BUFFER,
+   gl_MAX_TEXTURE_BUFFER_SIZE,
+   gl_TEXTURE_BINDING_BUFFER,
+   gl_TEXTURE_BUFFER_DATA_STORE_BINDING,
+   gl_TEXTURE_BUFFER_FORMAT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_texture_buffer_object"
+
+EXTENSION_ENTRY(glTexBuffer,GLenum -> GLenum -> GLuint -> IO ())
+
+gl_TEXTURE_BUFFER :: GLenum
+gl_TEXTURE_BUFFER = 0x8C2A
+
+gl_MAX_TEXTURE_BUFFER_SIZE :: GLenum
+gl_MAX_TEXTURE_BUFFER_SIZE = 0x8C2B
+
+gl_TEXTURE_BINDING_BUFFER :: GLenum
+gl_TEXTURE_BINDING_BUFFER = 0x8C2C
+
+gl_TEXTURE_BUFFER_DATA_STORE_BINDING :: GLenum
+gl_TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D
+
+gl_TEXTURE_BUFFER_FORMAT :: GLenum
+gl_TEXTURE_BUFFER_FORMAT = 0x8C2E
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCompression.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCompression.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCompression.hs
@@ -0,0 +1,40 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureCompression
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_texture_compression extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_compression.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureCompression (
+   -- * Functions
+   glCompressedTexImage3D,
+   glCompressedTexImage2D,
+   glCompressedTexImage1D,
+   glCompressedTexSubImage3D,
+   glCompressedTexSubImage2D,
+   glCompressedTexSubImage1D,
+   glGetCompressedTexImage,
+   -- * Tokens
+   gl_COMPRESSED_ALPHA,
+   gl_COMPRESSED_LUMINANCE,
+   gl_COMPRESSED_LUMINANCE_ALPHA,
+   gl_COMPRESSED_INTENSITY,
+   gl_COMPRESSED_RGB,
+   gl_COMPRESSED_RGBA,
+   gl_TEXTURE_COMPRESSION_HINT,
+   gl_TEXTURE_COMPRESSED_IMAGE_SIZE,
+   gl_TEXTURE_COMPRESSED,
+   gl_NUM_COMPRESSED_TEXTURE_FORMATS,
+   gl_COMPRESSED_TEXTURE_FORMATS
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCompressionRGTC.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCompressionRGTC.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCompressionRGTC.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureCompressionRGTC
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_compression_rgtc extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_compression_rgtc.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureCompressionRGTC (
+   -- * Tokens
+   gl_COMPRESSED_RED_RGTC1,
+   gl_COMPRESSED_SIGNED_RED_RGTC1,
+   gl_COMPRESSED_RG_RGTC2,
+   gl_COMPRESSED_SIGNED_RG_RGTC2
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCubeMap.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCubeMap.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCubeMap.hs
@@ -0,0 +1,33 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMap
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_texture_cube_map extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_cube_map.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMap (
+   -- * Tokens
+   gl_NORMAL_MAP,
+   gl_REFLECTION_MAP,
+   gl_TEXTURE_CUBE_MAP,
+   gl_TEXTURE_BINDING_CUBE_MAP,
+   gl_TEXTURE_CUBE_MAP_POSITIVE_X,
+   gl_TEXTURE_CUBE_MAP_NEGATIVE_X,
+   gl_TEXTURE_CUBE_MAP_POSITIVE_Y,
+   gl_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+   gl_TEXTURE_CUBE_MAP_POSITIVE_Z,
+   gl_TEXTURE_CUBE_MAP_NEGATIVE_Z,
+   gl_PROXY_TEXTURE_CUBE_MAP,
+   gl_MAX_CUBE_MAP_TEXTURE_SIZE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCubeMapArray.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCubeMapArray.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureCubeMapArray.hs
@@ -0,0 +1,49 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMapArray
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_cube_map_array extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_cube_map_array.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureCubeMapArray (
+   -- * Tokens
+   gl_TEXTURE_CUBE_MAP_ARRAY,
+   gl_TEXTURE_BINDING_CUBE_MAP_ARRAY,
+   gl_PROXY_TEXTURE_CUBE_MAP_ARRAY,
+   gl_SAMPLER_CUBE_MAP_ARRAY,
+   gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW,
+   gl_INT_SAMPLER_CUBE_MAP_ARRAY,
+   gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_TEXTURE_CUBE_MAP_ARRAY :: GLenum
+gl_TEXTURE_CUBE_MAP_ARRAY = 0x9009
+
+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY :: GLenum
+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A
+
+gl_PROXY_TEXTURE_CUBE_MAP_ARRAY :: GLenum
+gl_PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B
+
+gl_SAMPLER_CUBE_MAP_ARRAY :: GLenum
+gl_SAMPLER_CUBE_MAP_ARRAY = 0x900C
+
+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW :: GLenum
+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D
+
+gl_INT_SAMPLER_CUBE_MAP_ARRAY :: GLenum
+gl_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E
+
+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY :: GLenum
+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F
+
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvAdd.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvAdd.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvAdd.hs
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvAdd
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_env_add extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_env_add.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvAdd (
+   -- * Tokens
+   gl_ADD
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvCombine.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvCombine.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvCombine.hs
@@ -0,0 +1,54 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCombine
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_env_combine extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_env_combine.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCombine (
+   -- * Tokens
+   gl_COMBINE,
+   gl_COMBINE_RGB,
+   gl_COMBINE_ALPHA,
+   gl_SOURCE0_RGB,
+   gl_SOURCE1_RGB,
+   gl_SOURCE2_RGB,
+   gl_SOURCE0_ALPHA,
+   gl_SOURCE1_ALPHA,
+   gl_SOURCE2_ALPHA,
+   gl_OPERAND0_RGB,
+   gl_OPERAND1_RGB,
+   gl_OPERAND2_RGB,
+   gl_OPERAND0_ALPHA,
+   gl_OPERAND1_ALPHA,
+   gl_OPERAND2_ALPHA,
+   gl_RGB_SCALE,
+   gl_ALPHA_SCALE,
+   gl_REPLACE,
+   gl_MODULATE,
+   gl_ADD,
+   gl_ADD_SIGNED,
+   gl_INTERPOLATE,
+   gl_SUBTRACT,
+   gl_TEXTURE,
+   gl_CONSTANT,
+   gl_PRIMARY_COLOR,
+   gl_PREVIOUS,
+   gl_SRC_COLOR,
+   gl_ONE_MINUS_SRC_COLOR,
+   gl_SRC_ALPHA,
+   gl_ONE_MINUS_SRC_ALPHA,
+   gl_SRC_ALPHA,
+   gl_ONE_MINUS_SRC_ALPHA
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvCrossbar.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvCrossbar.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvCrossbar.hs
@@ -0,0 +1,52 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCrossbar
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_env_crossbar extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_env_crossbar.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvCrossbar (
+   -- * Tokens
+   gl_TEXTURE0,
+   gl_TEXTURE1,
+   gl_TEXTURE10,
+   gl_TEXTURE11,
+   gl_TEXTURE12,
+   gl_TEXTURE13,
+   gl_TEXTURE14,
+   gl_TEXTURE15,
+   gl_TEXTURE16,
+   gl_TEXTURE17,
+   gl_TEXTURE18,
+   gl_TEXTURE19,
+   gl_TEXTURE2,
+   gl_TEXTURE20,
+   gl_TEXTURE21,
+   gl_TEXTURE22,
+   gl_TEXTURE23,
+   gl_TEXTURE24,
+   gl_TEXTURE25,
+   gl_TEXTURE26,
+   gl_TEXTURE27,
+   gl_TEXTURE28,
+   gl_TEXTURE29,
+   gl_TEXTURE3,
+   gl_TEXTURE30,
+   gl_TEXTURE31,
+   gl_TEXTURE4,
+   gl_TEXTURE5,
+   gl_TEXTURE6,
+   gl_TEXTURE7,
+   gl_TEXTURE8,
+   gl_TEXTURE9
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvDot3.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvDot3.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureEnvDot3.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvDot3
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_env_dot3 extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_env_dot3.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureEnvDot3 (
+   -- * Tokens
+   gl_DOT3_RGB,
+   gl_DOT3_RGBA
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureFloat.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureFloat.hs
@@ -0,0 +1,65 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureFloat
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_float extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_float.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureFloat (
+   -- * Tokens
+   gl_TEXTURE_RED_TYPE,
+   gl_TEXTURE_GREEN_TYPE,
+   gl_TEXTURE_BLUE_TYPE,
+   gl_TEXTURE_ALPHA_TYPE,
+   gl_TEXTURE_LUMINANCE_TYPE,
+   gl_TEXTURE_INTENSITY_TYPE,
+   gl_TEXTURE_DEPTH_TYPE,
+   gl_UNSIGNED_NORMALIZED,
+   gl_RGBA32F,
+   gl_RGB32F,
+   gl_ALPHA32F,
+   gl_INTENSITY32F,
+   gl_LUMINANCE32F,
+   gl_LUMINANCE_ALPHA32F,
+   gl_RGBA16F,
+   gl_RGB16F,
+   gl_ALPHA16F,
+   gl_INTENSITY16F,
+   gl_LUMINANCE16F,
+   gl_LUMINANCE_ALPHA16F
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_ALPHA32F :: GLenum
+gl_ALPHA32F = 0x8816
+
+gl_INTENSITY32F :: GLenum
+gl_INTENSITY32F = 0x8817
+
+gl_LUMINANCE32F :: GLenum
+gl_LUMINANCE32F = 0x8818
+
+gl_LUMINANCE_ALPHA32F :: GLenum
+gl_LUMINANCE_ALPHA32F = 0x8819
+
+gl_ALPHA16F :: GLenum
+gl_ALPHA16F = 0x881C
+
+gl_INTENSITY16F :: GLenum
+gl_INTENSITY16F = 0x881D
+
+gl_LUMINANCE16F :: GLenum
+gl_LUMINANCE16F = 0x881E
+
+gl_LUMINANCE_ALPHA16F :: GLenum
+gl_LUMINANCE_ALPHA16F = 0x881F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureGather.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureGather.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureGather.hs
@@ -0,0 +1,32 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureGather
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_gather extension, see
+-- <http://www.opengl.org/registry/specs/ARB/.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureGather (
+   -- * Tokens
+   gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET,
+   gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET,
+   gl_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET :: GLenum
+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E
+
+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET :: GLenum
+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F
+
+gl_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS :: GLenum
+gl_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS = 0x8F9F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureMirroredRepeat.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureMirroredRepeat.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureMirroredRepeat.hs
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureMirroredRepeat
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_mirrored_repeat extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_mirrored_repeat.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureMirroredRepeat (
+   -- * Tokens
+   gl_MIRRORED_REPEAT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureMultisample.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureMultisample.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureMultisample.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureMultisample
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_texture_multisample extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_multisample.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureMultisample (
+   -- * Functions
+   glTexImage2DMultisample,
+   glTexImage3DMultisample,
+   glGetMultisamplefv,
+   glSampleMaski,
+   -- * Tokens
+   gl_SAMPLE_POSITION,
+   gl_SAMPLE_MASK,
+   gl_SAMPLE_MASK_VALUE,
+   gl_TEXTURE_2D_MULTISAMPLE,
+   gl_PROXY_TEXTURE_2D_MULTISAMPLE,
+   gl_TEXTURE_2D_MULTISAMPLE_ARRAY,
+   gl_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY,
+   gl_MAX_SAMPLE_MASK_WORDS,
+   gl_MAX_COLOR_TEXTURE_SAMPLES,
+   gl_MAX_DEPTH_TEXTURE_SAMPLES,
+   gl_MAX_INTEGER_SAMPLES,
+   gl_TEXTURE_BINDING_2D_MULTISAMPLE,
+   gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY,
+   gl_TEXTURE_SAMPLES,
+   gl_TEXTURE_FIXED_SAMPLE_LOCATIONS,
+   gl_SAMPLER_2D_MULTISAMPLE,
+   gl_INT_SAMPLER_2D_MULTISAMPLE,
+   gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE,
+   gl_SAMPLER_2D_MULTISAMPLE_ARRAY,
+   gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY,
+   gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_texture_multisample"
+
+EXTENSION_ENTRY(glTexImage2DMultisample,GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLboolean -> IO ())
+EXTENSION_ENTRY(glTexImage3DMultisample,GLenum -> GLsizei -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
+EXTENSION_ENTRY(glGetMultisamplefv,GLenum -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glSampleMaski,GLuint -> GLbitfield -> IO ())
+
+
+gl_SAMPLE_POSITION :: GLenum
+gl_SAMPLE_POSITION = 0x8E50
+
+gl_SAMPLE_MASK :: GLenum
+gl_SAMPLE_MASK = 0x8E51
+
+gl_SAMPLE_MASK_VALUE :: GLenum
+gl_SAMPLE_MASK_VALUE = 0x8E52
+
+gl_TEXTURE_2D_MULTISAMPLE :: GLenum
+gl_TEXTURE_2D_MULTISAMPLE = 0x9100
+
+gl_PROXY_TEXTURE_2D_MULTISAMPLE :: GLenum
+gl_PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101
+
+gl_TEXTURE_2D_MULTISAMPLE_ARRAY :: GLenum
+gl_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102
+
+gl_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY :: GLenum
+gl_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103
+
+gl_MAX_SAMPLE_MASK_WORDS :: GLenum
+gl_MAX_SAMPLE_MASK_WORDS = 0x8E59
+
+gl_MAX_COLOR_TEXTURE_SAMPLES :: GLenum
+gl_MAX_COLOR_TEXTURE_SAMPLES = 0x910E
+
+gl_MAX_DEPTH_TEXTURE_SAMPLES :: GLenum
+gl_MAX_DEPTH_TEXTURE_SAMPLES = 0x910F
+
+gl_MAX_INTEGER_SAMPLES :: GLenum
+gl_MAX_INTEGER_SAMPLES = 0x9110
+
+gl_TEXTURE_BINDING_2D_MULTISAMPLE :: GLenum
+gl_TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104
+
+gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY :: GLenum
+gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105
+
+gl_TEXTURE_SAMPLES :: GLenum
+gl_TEXTURE_SAMPLES = 0x9106
+
+gl_TEXTURE_FIXED_SAMPLE_LOCATIONS :: GLenum
+gl_TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107
+
+gl_SAMPLER_2D_MULTISAMPLE :: GLenum
+gl_SAMPLER_2D_MULTISAMPLE = 0x9108
+
+gl_INT_SAMPLER_2D_MULTISAMPLE :: GLenum
+gl_INT_SAMPLER_2D_MULTISAMPLE = 0x9109
+
+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE :: GLenum
+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A
+
+gl_SAMPLER_2D_MULTISAMPLE_ARRAY :: GLenum
+gl_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B
+
+gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY :: GLenum
+gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C
+
+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY :: GLenum
+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureRG.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureRG.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureRG.hs
@@ -0,0 +1,50 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureRG
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_rg extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_rg.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureRG (
+   -- * Tokens
+   gl_R8,
+   gl_R16,
+   gl_RG8,
+   gl_RG16,
+   gl_R16F,
+   gl_R32F,
+   gl_RG16F,
+   gl_RG32F,
+   gl_R8I,
+   gl_R8UI,
+   gl_R16I,
+   gl_R16UI,
+   gl_R32I,
+   gl_R32UI,
+   gl_RG8I,
+   gl_RG8UI,
+   gl_RG16I,
+   gl_RG16UI,
+   gl_RG32I,
+   gl_RG32UI,
+   gl_RED,
+   gl_RG,
+   gl_COMPRESSED_RED,
+   gl_COMPRESSED_RG,
+   gl_RG,
+   gl_RG_INTEGER,
+   gl_RG,
+   gl_RED,
+   gl_RG,
+   gl_RG_INTEGER
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureRectangle.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureRectangle.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TextureRectangle.hs
@@ -0,0 +1,44 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TextureRectangle
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the ARB_texture_rectangle extension, see
+-- <http://www.opengl.org/registry/specs/ARB/texture_rectangle.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TextureRectangle (
+   -- * Tokens
+   gl_TEXTURE_RECTANGLE,
+   gl_TEXTURE_BINDING_RECTANGLE,
+   gl_PROXY_TEXTURE_RECTANGLE,
+   gl_MAX_RECTANGLE_TEXTURE_SIZE,
+   gl_SAMPLER_2D_RECT,
+   gl_SAMPLER_2D_RECT_SHADOW
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+
+gl_TEXTURE_RECTANGLE :: GLenum
+gl_TEXTURE_RECTANGLE = 0x84F5
+
+gl_TEXTURE_BINDING_RECTANGLE :: GLenum
+gl_TEXTURE_BINDING_RECTANGLE = 0x84F6
+
+gl_PROXY_TEXTURE_RECTANGLE :: GLenum
+gl_PROXY_TEXTURE_RECTANGLE = 0x84F7
+
+gl_MAX_RECTANGLE_TEXTURE_SIZE :: GLenum
+gl_MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8
+
+gl_SAMPLER_2D_RECT :: GLenum
+gl_SAMPLER_2D_RECT = 0x8B63
+
+gl_SAMPLER_2D_RECT_SHADOW :: GLenum
+gl_SAMPLER_2D_RECT_SHADOW = 0x8B64
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/TransposeMatrix.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/TransposeMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/TransposeMatrix.hs
@@ -0,0 +1,29 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.TransposeMatrix
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_transpose_matrix extension, see
+-- <http://www.opengl.org/registry/specs/ARB/transpose_matrix.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.TransposeMatrix (
+   -- * Functions
+   glLoadTransposeMatrixf,
+   glLoadTransposeMatrixd,
+   glMultTransposeMatrixf,
+   glMultTransposeMatrixd,
+   -- * Tokens
+   gl_TRANSPOSE_MODELVIEW_MATRIX,
+   gl_TRANSPOSE_PROJECTION_MATRIX,
+   gl_TRANSPOSE_TEXTURE_MATRIX,
+   gl_TRANSPOSE_COLOR_MATRIX
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/UniformBufferObject.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/UniformBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/UniformBufferObject.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_uniform_buffer_object extension, see
+-- <http://www.opengl.org/registry/specs/ARB/uniform_buffer_object.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject (
+   -- * Functions
+   glGetUniformIndices,
+   glGetActiveUniformsiv,
+   glGetActiveUniformName,
+   glGetUniformBlockIndex,
+   glGetActiveUniformBlockiv,
+   glGetActiveUniformBlockName,
+   glBindBufferRange,
+   glBindBufferBase,
+   glGetIntegeri_v,
+   glUniformBlockBinding,
+   -- * Tokens
+   gl_UNIFORM_BUFFER,
+   gl_UNIFORM_BUFFER_BINDING,
+   gl_UNIFORM_BUFFER_START,
+   gl_UNIFORM_BUFFER_SIZE,
+   gl_MAX_VERTEX_UNIFORM_BLOCKS,
+   gl_MAX_GEOMETRY_UNIFORM_BLOCKS,
+   gl_MAX_FRAGMENT_UNIFORM_BLOCKS,
+   gl_MAX_COMBINED_UNIFORM_BLOCKS,
+   gl_MAX_UNIFORM_BUFFER_BINDINGS,
+   gl_MAX_UNIFORM_BLOCK_SIZE,
+   gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,
+   gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS,
+   gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
+   gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT,
+   gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH,
+   gl_ACTIVE_UNIFORM_BLOCKS,
+   gl_UNIFORM_TYPE,
+   gl_UNIFORM_SIZE,
+   gl_UNIFORM_NAME_LENGTH,
+   gl_UNIFORM_BLOCK_INDEX,
+   gl_UNIFORM_OFFSET,
+   gl_UNIFORM_ARRAY_STRIDE,
+   gl_UNIFORM_MATRIX_STRIDE,
+   gl_UNIFORM_IS_ROW_MAJOR,
+   gl_UNIFORM_BLOCK_BINDING,
+   gl_UNIFORM_BLOCK_DATA_SIZE,
+   gl_UNIFORM_BLOCK_NAME_LENGTH,
+   gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS,
+   gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
+   gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,
+   gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER,
+   gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER,
+   gl_INVALID_INDEX
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_ARB_uniform_buffer_object"
+
+EXTENSION_ENTRY(glGetUniformIndices,GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glGetActiveUniformsiv,GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetActiveUniformName,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+EXTENSION_ENTRY(glGetUniformBlockIndex,GLuint -> Ptr GLchar -> IO GLuint)
+EXTENSION_ENTRY(glGetActiveUniformBlockiv,GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetActiveUniformBlockName,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
+EXTENSION_ENTRY(glBindBufferRange,GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
+EXTENSION_ENTRY(glBindBufferBase,GLenum -> GLuint -> GLuint -> IO ())
+EXTENSION_ENTRY(glGetIntegeri_v,GLenum -> GLuint -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glUniformBlockBinding,GLuint -> GLuint -> GLuint -> IO ())
+
+gl_UNIFORM_BUFFER :: GLenum
+gl_UNIFORM_BUFFER = 0x8A11
+
+gl_UNIFORM_BUFFER_BINDING :: GLenum
+gl_UNIFORM_BUFFER_BINDING = 0x8A28
+
+gl_UNIFORM_BUFFER_START :: GLenum
+gl_UNIFORM_BUFFER_START = 0x8A29
+
+gl_UNIFORM_BUFFER_SIZE :: GLenum
+gl_UNIFORM_BUFFER_SIZE = 0x8A2A
+
+gl_MAX_VERTEX_UNIFORM_BLOCKS :: GLenum
+gl_MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B
+
+gl_MAX_GEOMETRY_UNIFORM_BLOCKS :: GLenum
+gl_MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C
+
+gl_MAX_FRAGMENT_UNIFORM_BLOCKS :: GLenum
+gl_MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D
+
+gl_MAX_COMBINED_UNIFORM_BLOCKS :: GLenum
+gl_MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E
+
+gl_MAX_UNIFORM_BUFFER_BINDINGS :: GLenum
+gl_MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F
+
+gl_MAX_UNIFORM_BLOCK_SIZE :: GLenum
+gl_MAX_UNIFORM_BLOCK_SIZE = 0x8A30
+
+gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS :: GLenum
+gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31
+
+gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS :: GLenum
+gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32
+
+gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS :: GLenum
+gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33
+
+gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT :: GLenum
+gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34
+
+gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH :: GLenum
+gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35
+
+gl_ACTIVE_UNIFORM_BLOCKS :: GLenum
+gl_ACTIVE_UNIFORM_BLOCKS = 0x8A36
+
+gl_UNIFORM_TYPE :: GLenum
+gl_UNIFORM_TYPE = 0x8A37
+
+gl_UNIFORM_SIZE :: GLenum
+gl_UNIFORM_SIZE = 0x8A38
+
+gl_UNIFORM_NAME_LENGTH :: GLenum
+gl_UNIFORM_NAME_LENGTH = 0x8A39
+
+gl_UNIFORM_BLOCK_INDEX :: GLenum
+gl_UNIFORM_BLOCK_INDEX = 0x8A3A
+
+gl_UNIFORM_OFFSET :: GLenum
+gl_UNIFORM_OFFSET = 0x8A3B
+
+gl_UNIFORM_ARRAY_STRIDE :: GLenum
+gl_UNIFORM_ARRAY_STRIDE = 0x8A3C
+
+gl_UNIFORM_MATRIX_STRIDE :: GLenum
+gl_UNIFORM_MATRIX_STRIDE = 0x8A3D
+
+gl_UNIFORM_IS_ROW_MAJOR :: GLenum
+gl_UNIFORM_IS_ROW_MAJOR = 0x8A3E
+
+gl_UNIFORM_BLOCK_BINDING :: GLenum
+gl_UNIFORM_BLOCK_BINDING = 0x8A3F
+
+gl_UNIFORM_BLOCK_DATA_SIZE :: GLenum
+gl_UNIFORM_BLOCK_DATA_SIZE = 0x8A40
+
+gl_UNIFORM_BLOCK_NAME_LENGTH :: GLenum
+gl_UNIFORM_BLOCK_NAME_LENGTH = 0x8A41
+
+gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS :: GLenum
+gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42
+
+gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES :: GLenum
+gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43
+
+gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER :: GLenum
+gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44
+
+gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER :: GLenum
+gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45
+
+gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER :: GLenum
+gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46
+
+gl_INVALID_INDEX :: GLenum
+gl_INVALID_INDEX = 0xFFFFFFFF
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexArrayObject.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexArrayObject.hs
@@ -0,0 +1,26 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.VertexArrayObject
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_vertex_array_object extension, see
+-- <http://www.opengl.org/registry/specs/ARB/vertex_array_object.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.VertexArrayObject (
+   -- * Functions
+   glBindVertexArray,
+   glDeleteVertexArrays,
+   glGenVertexArrays,
+   glIsVertexArray,
+   -- * Tokens
+   gl_VERTEX_ARRAY_BINDING
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexBlend.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexBlend.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexBlend.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexBlend.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_vertex_blend extension not already
--- in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the ARB_vertex_blend extension, see
 -- <http://www.opengl.org/registry/specs/ARB/vertex_blend.txt>.
 --
 --------------------------------------------------------------------------------
@@ -73,7 +72,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexBufferObject.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexBufferObject.hs
@@ -0,0 +1,64 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.VertexBufferObject
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_vertex_buffer_object extension, see
+-- <http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.VertexBufferObject (
+   -- * Functions
+   glBindBuffer,
+   glDeleteBuffers,
+   glGenBuffers,
+   glIsBuffer,
+   glBufferData,
+   glBufferSubData,
+   glGetBufferSubData,
+   glMapBuffer,
+   glUnmapBuffer,
+   glGetBufferParameteriv,
+   glGetBufferPointerv,
+   -- * Tokens
+   gl_ARRAY_BUFFER,
+   gl_ELEMENT_ARRAY_BUFFER,
+   gl_ARRAY_BUFFER_BINDING,
+   gl_ELEMENT_ARRAY_BUFFER_BINDING,
+   gl_VERTEX_ARRAY_BUFFER_BINDING,
+   gl_NORMAL_ARRAY_BUFFER_BINDING,
+   gl_COLOR_ARRAY_BUFFER_BINDING,
+   gl_INDEX_ARRAY_BUFFER_BINDING,
+   gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING,
+   gl_EDGE_FLAG_ARRAY_BUFFER_BINDING,
+   gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING,
+   gl_FOG_COORDINATE_ARRAY_BUFFER_BINDING,
+   gl_WEIGHT_ARRAY_BUFFER_BINDING,
+   gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+   gl_STREAM_DRAW,
+   gl_STREAM_READ,
+   gl_STREAM_COPY,
+   gl_STATIC_DRAW,
+   gl_STATIC_READ,
+   gl_STATIC_COPY,
+   gl_DYNAMIC_DRAW,
+   gl_DYNAMIC_READ,
+   gl_DYNAMIC_COPY,
+   gl_READ_ONLY,
+   gl_WRITE_ONLY,
+   gl_READ_WRITE,
+   gl_BUFFER_SIZE,
+   gl_BUFFER_USAGE,
+   gl_BUFFER_ACCESS,
+   gl_BUFFER_MAPPED,
+   gl_BUFFER_MAP_POINTER
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexProgram.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexProgram.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexProgram.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexProgram.hs
@@ -9,14 +9,52 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the ARB_vertex_program extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the ARB_vertex_program extension, see
 -- <http://www.opengl.org/registry/specs/ARB/vertex_program.txt>.
 --
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram (
    -- * Functions
+   glVertexAttrib1s,
+   glVertexAttrib1f,
+   glVertexAttrib1d,
+   glVertexAttrib2s,
+   glVertexAttrib2f,
+   glVertexAttrib2d,
+   glVertexAttrib3s,
+   glVertexAttrib3f,
+   glVertexAttrib3d,
+   glVertexAttrib4s,
+   glVertexAttrib4f,
+   glVertexAttrib4d,
+   glVertexAttrib4Nub,
+   glVertexAttrib1sv,
+   glVertexAttrib1fv,
+   glVertexAttrib1dv,
+   glVertexAttrib2sv,
+   glVertexAttrib2fv,
+   glVertexAttrib2dv,
+   glVertexAttrib3sv,
+   glVertexAttrib3fv,
+   glVertexAttrib3dv,
+   glVertexAttrib4bv,
+   glVertexAttrib4sv,
+   glVertexAttrib4iv,
+   glVertexAttrib4ubv,
+   glVertexAttrib4usv,
+   glVertexAttrib4uiv,
+   glVertexAttrib4fv,
+   glVertexAttrib4dv,
+   glVertexAttrib4Nbv,
+   glVertexAttrib4Nsv,
+   glVertexAttrib4Niv,
+   glVertexAttrib4Nubv,
+   glVertexAttrib4Nusv,
+   glVertexAttrib4Nuiv,
+   glVertexAttribPointer,
+   glEnableVertexAttribArray,
+   glDisableVertexAttribArray,
    glProgramString,
    glBindProgram,
    glDeletePrograms,
@@ -33,10 +71,26 @@
    glGetProgramEnvParameterfv,
    glGetProgramLocalParameterdv,
    glGetProgramLocalParameterfv,
+   glGetProgramiv,
    glGetProgramString,
+   glGetVertexAttribdv,
+   glGetVertexAttribfv,
+   glGetVertexAttribiv,
+   glGetVertexAttribPointerv,
+   glIsProgram,
    -- * Tokens
    gl_VERTEX_PROGRAM,
+   gl_VERTEX_PROGRAM_POINT_SIZE,
+   gl_VERTEX_PROGRAM_TWO_SIDE,
+   gl_COLOR_SUM,
    gl_PROGRAM_FORMAT_ASCII,
+   gl_VERTEX_ATTRIB_ARRAY_ENABLED,
+   gl_VERTEX_ATTRIB_ARRAY_SIZE,
+   gl_VERTEX_ATTRIB_ARRAY_STRIDE,
+   gl_VERTEX_ATTRIB_ARRAY_TYPE,
+   gl_VERTEX_ATTRIB_ARRAY_NORMALIZED,
+   gl_CURRENT_VERTEX_ATTRIB,
+   gl_VERTEX_ATTRIB_ARRAY_POINTER,
    gl_PROGRAM_LENGTH,
    gl_PROGRAM_FORMAT,
    gl_PROGRAM_BINDING,
@@ -68,6 +122,7 @@
    gl_CURRENT_MATRIX,
    gl_TRANSPOSE_CURRENT_MATRIX,
    gl_CURRENT_MATRIX_STACK_DEPTH,
+   gl_MAX_VERTEX_ATTRIBS,
    gl_MAX_PROGRAM_MATRICES,
    gl_MAX_PROGRAM_MATRIX_STACK_DEPTH,
    gl_PROGRAM_ERROR_STRING,
@@ -106,115 +161,32 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
-
--- functions/tokens already in the OpenGL 3.1 core:
---
--- glVertexAttrib1s
--- glVertexAttrib1f
--- glVertexAttrib1d
--- glVertexAttrib2s
--- glVertexAttrib2f
--- glVertexAttrib2d
--- glVertexAttrib3s
--- glVertexAttrib3f
--- glVertexAttrib3d
--- glVertexAttrib4s
--- glVertexAttrib4f
--- glVertexAttrib4d
--- glVertexAttrib4Nub
--- glVertexAttrib1sv
--- glVertexAttrib1fv
--- glVertexAttrib1dv
--- glVertexAttrib2sv
--- glVertexAttrib2fv
--- glVertexAttrib2dv
--- glVertexAttrib3sv
--- glVertexAttrib3fv
--- glVertexAttrib3dv
--- glVertexAttrib4bv
--- glVertexAttrib4sv
--- glVertexAttrib4iv
--- glVertexAttrib4ubv
--- glVertexAttrib4usv
--- glVertexAttrib4uiv
--- glVertexAttrib4fv
--- glVertexAttrib4dv
--- glVertexAttrib4Nbv
--- glVertexAttrib4Nsv
--- glVertexAttrib4Niv
--- glVertexAttrib4Nubv
--- glVertexAttrib4Nusv
--- glVertexAttrib4Nuiv
--- glVertexAttribPointer
--- glEnableVertexAttribArray
--- glDisableVertexAttribArray
--- glGetProgramiv
--- glGetVertexAttribdv
--- glGetVertexAttribfv
--- glGetVertexAttribiv
--- glGetVertexAttribPointerv
--- glIsProgram
--- gl_VERTEX_PROGRAM_POINT_SIZE
--- gl_VERTEX_ATTRIB_ARRAY_ENABLED
--- gl_VERTEX_ATTRIB_ARRAY_SIZE
--- gl_VERTEX_ATTRIB_ARRAY_STRIDE
--- gl_VERTEX_ATTRIB_ARRAY_TYPE
--- gl_VERTEX_ATTRIB_ARRAY_NORMALIZED
--- gl_CURRENT_VERTEX_ATTRIB
--- gl_VERTEX_ATTRIB_ARRAY_POINTER
--- gl_MAX_VERTEX_ATTRIBS
-
-glProgramString :: GLenum -> GLenum -> GLsizei -> Ptr a -> IO ()
-glProgramString = undefined
-
-glBindProgram :: GLenum -> GLuint -> IO ()
-glBindProgram = undefined
-
-glDeletePrograms :: GLsizei -> Ptr GLuint -> IO ()
-glDeletePrograms = undefined
-
-glGenPrograms :: GLsizei -> Ptr GLuint -> IO ()
-glGenPrograms = undefined
-
-glProgramEnvParameter4d :: GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
-glProgramEnvParameter4d = undefined
-
-glProgramEnvParameter4dv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
-glProgramEnvParameter4dv = undefined
-
-glProgramEnvParameter4f :: GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
-glProgramEnvParameter4f = undefined
-
-glProgramEnvParameter4fv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
-glProgramEnvParameter4fv = undefined
-
-glProgramLocalParameter4d :: GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
-glProgramLocalParameter4d = undefined
-
-glProgramLocalParameter4dv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
-glProgramLocalParameter4dv = undefined
-
-glProgramLocalParameter4f :: GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
-glProgramLocalParameter4f = undefined
-
-glProgramLocalParameter4fv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
-glProgramLocalParameter4fv = undefined
-
-glGetProgramEnvParameterdv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
-glGetProgramEnvParameterdv = undefined
-
-glGetProgramEnvParameterfv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
-glGetProgramEnvParameterfv = undefined
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
 
-glGetProgramLocalParameterdv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
-glGetProgramLocalParameterdv = undefined
+#include "HsOpenGLRaw.h"
 
-glGetProgramLocalParameterfv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
-glGetProgramLocalParameterfv = undefined
+extensionNameString :: String
+extensionNameString = "GL_ARB_vertex_program"
 
-glGetProgramString :: GLenum -> GLenum -> Ptr a -> IO ()
-glGetProgramString = undefined
+EXTENSION_ENTRY(glProgramString,GLenum -> GLenum -> GLsizei -> Ptr a -> IO ())
+EXTENSION_ENTRY(glBindProgram,GLenum -> GLuint -> IO ())
+EXTENSION_ENTRY(glDeletePrograms,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glGenPrograms,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameter4d,GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble  -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameter4dv,GLenum -> GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameter4f,GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat  -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameter4fv,GLenum -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glProgramLocalParameter4d,GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble  -> IO ())
+EXTENSION_ENTRY(glProgramLocalParameter4dv,GLenum -> GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glProgramLocalParameter4f,GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat  -> IO ())
+EXTENSION_ENTRY(glProgramLocalParameter4fv,GLenum -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetProgramEnvParameterdv,GLenum -> GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glGetProgramEnvParameterfv,GLenum -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetProgramLocalParameterdv,GLenum -> GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glGetProgramLocalParameterfv,GLenum -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetProgramString,GLenum -> GLenum -> Ptr a -> IO ())
 
 gl_VERTEX_PROGRAM :: GLenum
 gl_VERTEX_PROGRAM = 0x8620
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexShader.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexShader.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/VertexShader.hs
@@ -0,0 +1,101 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.VertexShader
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the ARB_vertex_shader extension, see
+-- <http://www.opengl.org/registry/specs/ARB/vertex_shader.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.VertexShader (
+   -- * Functions
+   glVertexAttrib1f,
+   glVertexAttrib1s,
+   glVertexAttrib1d,
+   glVertexAttrib2f,
+   glVertexAttrib2s,
+   glVertexAttrib2d,
+   glVertexAttrib3f,
+   glVertexAttrib3s,
+   glVertexAttrib3d,
+   glVertexAttrib4f,
+   glVertexAttrib4s,
+   glVertexAttrib4d,
+   glVertexAttrib4Nub,
+   glVertexAttrib1fv,
+   glVertexAttrib1sv,
+   glVertexAttrib1dv,
+   glVertexAttrib2fv,
+   glVertexAttrib2sv,
+   glVertexAttrib2dv,
+   glVertexAttrib3fv,
+   glVertexAttrib3sv,
+   glVertexAttrib3dv,
+   glVertexAttrib4fv,
+   glVertexAttrib4sv,
+   glVertexAttrib4dv,
+   glVertexAttrib4iv,
+   glVertexAttrib4bv,
+   glVertexAttrib4ubv,
+   glVertexAttrib4usv,
+   glVertexAttrib4uiv,
+   glVertexAttrib4Nbv,
+   glVertexAttrib4Nsv,
+   glVertexAttrib4Niv,
+   glVertexAttrib4Nubv,
+   glVertexAttrib4Nusv,
+   glVertexAttrib4Nuiv,
+   glVertexAttribPointer,
+   glEnableVertexAttribArray,
+   glDisableVertexAttribArray,
+   glBindAttribLocation,
+   glGetActiveAttrib,
+   glGetAttribLocation,
+   glGetVertexAttribdv,
+   glGetVertexAttribfv,
+   glGetVertexAttribiv,
+   glGetVertexAttribPointerv,
+   -- * Tokens
+   gl_VERTEX_SHADER,
+   gl_MAX_VERTEX_UNIFORM_COMPONENTS,
+   gl_MAX_VARYING_FLOATS,
+   gl_MAX_VERTEX_ATTRIBS,
+   gl_MAX_TEXTURE_IMAGE_UNITS,
+   gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
+   gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
+   gl_MAX_TEXTURE_COORDS,
+   gl_VERTEX_PROGRAM_POINT_SIZE,
+   gl_VERTEX_PROGRAM_TWO_SIDE,
+   gl_OBJECT_ACTIVE_ATTRIBUTES,
+   gl_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH,
+   gl_VERTEX_ATTRIB_ARRAY_ENABLED,
+   gl_VERTEX_ATTRIB_ARRAY_SIZE,
+   gl_VERTEX_ATTRIB_ARRAY_STRIDE,
+   gl_VERTEX_ATTRIB_ARRAY_TYPE,
+   gl_VERTEX_ATTRIB_ARRAY_NORMALIZED,
+   gl_CURRENT_VERTEX_ATTRIB,
+   gl_VERTEX_ATTRIB_ARRAY_POINTER,
+   gl_FLOAT,
+   gl_FLOAT_VEC2,
+   gl_FLOAT_VEC3,
+   gl_FLOAT_VEC4,
+   gl_FLOAT_MAT2,
+   gl_FLOAT_MAT3,
+   gl_FLOAT_MAT4
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_OBJECT_ACTIVE_ATTRIBUTES :: GLenum
+gl_OBJECT_ACTIVE_ATTRIBUTES = 0x8B89
+
+gl_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH :: GLenum
+gl_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A
+
diff --git a/src/Graphics/Rendering/OpenGL/Raw/ARB/WindowPos.hs b/src/Graphics/Rendering/OpenGL/Raw/ARB/WindowPos.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/ARB/WindowPos.hs
@@ -0,0 +1,36 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.WindowPos
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions from the ARB_shadow extension, see
+-- <http://www.opengl.org/registry/specs/ARB/shadow.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.ARB.WindowPos (
+   -- * Functions
+   glWindowPos2d,
+   glWindowPos2f,
+   glWindowPos2i,
+   glWindowPos2s,
+   glWindowPos2dv,
+   glWindowPos2fv,
+   glWindowPos2iv,
+   glWindowPos2sv,
+   glWindowPos3d,
+   glWindowPos3f,
+   glWindowPos3i,
+   glWindowPos3s,
+   glWindowPos3dv,
+   glWindowPos3fv,
+   glWindowPos3iv,
+   glWindowPos3sv
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/Core31.hs b/src/Graphics/Rendering/OpenGL/Raw/Core31.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/Core31.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/Core31.hs
@@ -19,9 +19,24 @@
    -- * Tokens
    module Graphics.Rendering.OpenGL.Raw.Core31.Tokens,
    -- * Types
-   module Graphics.Rendering.OpenGL.Raw.Core31.Types
+   module Graphics.Rendering.OpenGL.Raw.Core31.Types,
+   -- * Extensions promoted to OpenGL 3.1 core
+   module Graphics.Rendering.OpenGL.Raw.ARB.DrawInstanced,
+   module Graphics.Rendering.OpenGL.Raw.ARB.CopyBuffer,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureRectangle,
+   module Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.Core31.Functions
 import Graphics.Rendering.OpenGL.Raw.Core31.Tokens
 import Graphics.Rendering.OpenGL.Raw.Core31.Types
+
+import Graphics.Rendering.OpenGL.Raw.ARB.DrawInstanced
+import Graphics.Rendering.OpenGL.Raw.ARB.CopyBuffer
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureBufferObject
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureRectangle
+import Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject hiding (
+   gl_MAX_GEOMETRY_UNIFORM_BLOCKS,
+   gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS,
+   gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER )
diff --git a/src/Graphics/Rendering/OpenGL/Raw/Core31/Functions.hs b/src/Graphics/Rendering/OpenGL/Raw/Core31/Functions.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/Core31/Functions.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/Core31/Functions.hs
@@ -23,8 +23,6 @@
    glBeginTransformFeedback,
    glBindAttribLocation,
    glBindBuffer,
-   glBindBufferBase,
-   glBindBufferRange,
    glBindFragDataLocation,
    glBindFramebuffer,
    glBindRenderbuffer,
@@ -57,7 +55,6 @@
    glCompressedTexSubImage1D,
    glCompressedTexSubImage2D,
    glCompressedTexSubImage3D,
-   glCopyBufferSubData,
    glCopyTexImage1D,
    glCopyTexImage2D,
    glCopyTexSubImage1D,
@@ -82,11 +79,9 @@
    glDisableVertexAttribArray,
    glDisablei,
    glDrawArrays,
-   glDrawArraysInstanced,
    glDrawBuffer,
    glDrawBuffers,
    glDrawElements,
-   glDrawElementsInstanced,
    glDrawRangeElements,
    glEnable,
    glEnableVertexAttribArray,
@@ -112,10 +107,6 @@
    glGenerateMipmap,
    glGetActiveAttrib,
    glGetActiveUniform,
-   glGetActiveUniformBlockName,
-   glGetActiveUniformBlockiv,
-   glGetActiveUniformName,
-   glGetActiveUniformsiv,
    glGetAttachedShaders,
    glGetAttribLocation,
    glGetBooleani_v,
@@ -129,7 +120,6 @@
    glGetFloatv,
    glGetFragDataLocation,
    glGetFramebufferAttachmentParameteriv,
-   glGetIntegeri_v,
    glGetIntegerv,
    glGetPointerv,
    glGetProgramInfoLog,
@@ -151,8 +141,6 @@
    glGetTexParameterfv,
    glGetTexParameteriv,
    glGetTransformFeedbackVarying,
-   glGetUniformBlockIndex,
-   glGetUniformIndices,
    glGetUniformLocation,
    glGetUniformfv,
    glGetUniformiv,
@@ -204,7 +192,6 @@
    glStencilMaskSeparate,
    glStencilOp,
    glStencilOpSeparate,
-   glTexBuffer,
    glTexImage1D,
    glTexImage2D,
    glTexImage3D,
@@ -242,7 +229,6 @@
    glUniform4iv,
    glUniform4ui,
    glUniform4uiv,
-   glUniformBlockBinding,
    glUniformMatrix2fv,
    glUniformMatrix2x3fv,
    glUniformMatrix2x4fv,
@@ -332,8 +318,6 @@
 EXTENSION_ENTRY(glBeginTransformFeedback,GLenum -> IO ())
 EXTENSION_ENTRY(glBindAttribLocation,GLuint -> GLuint -> Ptr GLchar -> IO ())
 EXTENSION_ENTRY(glBindBuffer,GLenum -> GLuint -> IO ())
-EXTENSION_ENTRY(glBindBufferBase,GLenum -> GLuint -> GLuint -> IO ())
-EXTENSION_ENTRY(glBindBufferRange,GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
 EXTENSION_ENTRY(glBindFragDataLocation,GLuint -> GLuint -> Ptr GLchar -> IO ())
 EXTENSION_ENTRY(glBindFramebuffer,GLenum -> GLuint -> IO ())
 EXTENSION_ENTRY(glBindRenderbuffer,GLenum -> GLuint -> IO ())
@@ -366,7 +350,6 @@
 EXTENSION_ENTRY(glCompressedTexSubImage1D,GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr a -> IO ())
 EXTENSION_ENTRY(glCompressedTexSubImage2D,GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr a -> IO ())
 EXTENSION_ENTRY(glCompressedTexSubImage3D,GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr a -> IO ())
-EXTENSION_ENTRY(glCopyBufferSubData,GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> IO ())
 EXTENSION_ENTRY(glCopyTexImage1D,GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ())
 EXTENSION_ENTRY(glCopyTexImage2D,GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ())
 EXTENSION_ENTRY(glCopyTexSubImage1D,GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ())
@@ -391,11 +374,9 @@
 EXTENSION_ENTRY(glDisableVertexAttribArray,GLuint -> IO ())
 EXTENSION_ENTRY(glDisablei,GLenum -> GLuint -> IO ())
 EXTENSION_ENTRY(glDrawArrays,GLenum -> GLint -> GLsizei -> IO ())
-EXTENSION_ENTRY(glDrawArraysInstanced,GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
 EXTENSION_ENTRY(glDrawBuffer,GLenum -> IO ())
 EXTENSION_ENTRY(glDrawBuffers,GLsizei -> Ptr GLenum -> IO ())
 EXTENSION_ENTRY(glDrawElements,GLenum -> GLsizei -> GLenum -> Ptr a -> IO ())
-EXTENSION_ENTRY(glDrawElementsInstanced,GLenum -> GLsizei -> GLenum -> Ptr a -> GLsizei -> IO ())
 EXTENSION_ENTRY(glDrawRangeElements,GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr a -> IO ())
 EXTENSION_ENTRY(glEnable,GLenum -> IO ())
 EXTENSION_ENTRY(glEnableVertexAttribArray,GLuint -> IO ())
@@ -421,10 +402,6 @@
 EXTENSION_ENTRY(glGenerateMipmap,GLenum -> IO ())
 EXTENSION_ENTRY(glGetActiveAttrib,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> IO ())
 EXTENSION_ENTRY(glGetActiveUniform,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> IO ())
-EXTENSION_ENTRY(glGetActiveUniformBlockName,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-EXTENSION_ENTRY(glGetActiveUniformBlockiv,GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
-EXTENSION_ENTRY(glGetActiveUniformName,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-EXTENSION_ENTRY(glGetActiveUniformsiv,GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> IO ())
 EXTENSION_ENTRY(glGetAttachedShaders,GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> IO ())
 EXTENSION_ENTRY(glGetAttribLocation,GLuint -> Ptr GLchar -> IO GLint)
 EXTENSION_ENTRY(glGetBooleani_v,GLenum -> GLuint -> Ptr GLboolean -> IO ())
@@ -438,7 +415,6 @@
 EXTENSION_ENTRY(glGetFloatv,GLenum -> Ptr GLfloat -> IO ())
 EXTENSION_ENTRY(glGetFragDataLocation,GLuint -> Ptr GLchar -> IO GLint)
 EXTENSION_ENTRY(glGetFramebufferAttachmentParameteriv,GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
-EXTENSION_ENTRY(glGetIntegeri_v,GLenum -> GLuint -> Ptr GLint -> IO ())
 EXTENSION_ENTRY(glGetIntegerv,GLenum -> Ptr GLint -> IO ())
 EXTENSION_ENTRY(glGetPointerv,GLenum -> Ptr (Ptr a) -> IO ())
 EXTENSION_ENTRY(glGetProgramInfoLog,GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
@@ -460,8 +436,6 @@
 EXTENSION_ENTRY(glGetTexParameterfv,GLenum -> GLenum -> Ptr GLfloat -> IO ())
 EXTENSION_ENTRY(glGetTexParameteriv,GLenum -> GLenum -> Ptr GLint -> IO ())
 EXTENSION_ENTRY(glGetTransformFeedbackVarying,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ())
-EXTENSION_ENTRY(glGetUniformBlockIndex,GLuint -> Ptr GLchar -> IO GLuint)
-EXTENSION_ENTRY(glGetUniformIndices,GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLuint -> IO ())
 EXTENSION_ENTRY(glGetUniformLocation,GLuint -> Ptr GLchar -> IO GLint)
 EXTENSION_ENTRY(glGetUniformfv,GLuint -> GLint -> Ptr GLfloat -> IO ())
 EXTENSION_ENTRY(glGetUniformiv,GLuint -> GLint -> Ptr GLint -> IO ())
@@ -513,7 +487,6 @@
 EXTENSION_ENTRY(glStencilMaskSeparate,GLenum -> GLuint -> IO ())
 EXTENSION_ENTRY(glStencilOp,GLenum -> GLenum -> GLenum -> IO ())
 EXTENSION_ENTRY(glStencilOpSeparate,GLenum -> GLenum -> GLenum -> GLenum -> IO ())
-EXTENSION_ENTRY(glTexBuffer,GLenum -> GLenum -> GLuint -> IO ())
 EXTENSION_ENTRY(glTexImage1D,GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr a -> IO ())
 EXTENSION_ENTRY(glTexImage2D,GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr a -> IO ())
 EXTENSION_ENTRY(glTexImage3D,GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr a -> IO ())
@@ -551,7 +524,6 @@
 EXTENSION_ENTRY(glUniform4iv,GLint -> GLsizei -> Ptr GLint -> IO ())
 EXTENSION_ENTRY(glUniform4ui,GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
 EXTENSION_ENTRY(glUniform4uiv,GLint -> GLsizei -> Ptr GLuint -> IO ())
-EXTENSION_ENTRY(glUniformBlockBinding,GLuint -> GLuint -> GLuint -> IO ())
 EXTENSION_ENTRY(glUniformMatrix2fv,GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
 EXTENSION_ENTRY(glUniformMatrix2x3fv,GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
 EXTENSION_ENTRY(glUniformMatrix2x4fv,GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
diff --git a/src/Graphics/Rendering/OpenGL/Raw/Core31/Tokens.hs b/src/Graphics/Rendering/OpenGL/Raw/Core31/Tokens.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/Core31/Tokens.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/Core31/Tokens.hs
@@ -29,12 +29,6 @@
 gl_ACTIVE_UNIFORMS :: GLenum
 gl_ACTIVE_UNIFORMS = 0x8B86
 
-gl_ACTIVE_UNIFORM_BLOCKS :: GLenum
-gl_ACTIVE_UNIFORM_BLOCKS = 0x8A36
-
-gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH :: GLenum
-gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35
-
 gl_ACTIVE_UNIFORM_MAX_LENGTH :: GLenum
 gl_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87
 
@@ -140,9 +134,18 @@
 gl_BUFFER_ACCESS :: GLenum
 gl_BUFFER_ACCESS = 0x88BB
 
+gl_BUFFER_ACCESS_FLAGS :: GLenum
+gl_BUFFER_ACCESS_FLAGS = 0x911F
+
 gl_BUFFER_MAPPED :: GLenum
 gl_BUFFER_MAPPED = 0x88BC
 
+gl_BUFFER_MAP_LENGTH :: GLenum
+gl_BUFFER_MAP_LENGTH = 0x9120
+
+gl_BUFFER_MAP_OFFSET :: GLenum
+gl_BUFFER_MAP_OFFSET = 0x9121
+
 gl_BUFFER_MAP_POINTER :: GLenum
 gl_BUFFER_MAP_POINTER = 0x88BD
 
@@ -188,6 +191,12 @@
 gl_CLIP_DISTANCE5 :: GLenum
 gl_CLIP_DISTANCE5 = 0x3005
 
+gl_CLIP_DISTANCE6 :: GLenum
+gl_CLIP_DISTANCE6 = 0x3006
+
+gl_CLIP_DISTANCE7 :: GLenum
+gl_CLIP_DISTANCE7 = 0x3007
+
 gl_COLOR :: GLenum
 gl_COLOR = 0x1800
 
@@ -308,12 +317,6 @@
 gl_COPY_INVERTED :: GLenum
 gl_COPY_INVERTED = 0x150C
 
-gl_COPY_READ_BUFFER :: GLenum
-gl_COPY_READ_BUFFER = 0x8F36
-
-gl_COPY_WRITE_BUFFER :: GLenum
-gl_COPY_WRITE_BUFFER = 0x8F37
-
 gl_CULL_FACE :: GLenum
 gl_CULL_FACE = 0x0B44
 
@@ -722,9 +725,6 @@
 gl_INVALID_FRAMEBUFFER_OPERATION :: GLenum
 gl_INVALID_FRAMEBUFFER_OPERATION = 0x0506
 
-gl_INVALID_INDEX :: GLenum
-gl_INVALID_INDEX = 0xFFFFFFFF
-
 gl_INVALID_OPERATION :: GLenum
 gl_INVALID_OPERATION = 0x0502
 
@@ -827,18 +827,9 @@
 gl_MAX_COLOR_ATTACHMENTS :: GLenum
 gl_MAX_COLOR_ATTACHMENTS = 0x8CDF
 
-gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS :: GLenum
-gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33
-
 gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS :: GLenum
 gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D
 
-gl_MAX_COMBINED_UNIFORM_BLOCKS :: GLenum
-gl_MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E
-
-gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS :: GLenum
-gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31
-
 gl_MAX_CUBE_MAP_TEXTURE_SIZE :: GLenum
 gl_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C
 
@@ -851,27 +842,18 @@
 gl_MAX_ELEMENTS_VERTICES :: GLenum
 gl_MAX_ELEMENTS_VERTICES = 0x80E8
 
-gl_MAX_FRAGMENT_UNIFORM_BLOCKS :: GLenum
-gl_MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D
-
 gl_MAX_FRAGMENT_UNIFORM_COMPONENTS :: GLenum
 gl_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49
 
 gl_MAX_PROGRAM_TEXEL_OFFSET :: GLenum
 gl_MAX_PROGRAM_TEXEL_OFFSET = 0x8905
 
-gl_MAX_RECTANGLE_TEXTURE_SIZE :: GLenum
-gl_MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8
-
 gl_MAX_RENDERBUFFER_SIZE :: GLenum
 gl_MAX_RENDERBUFFER_SIZE = 0x84E8
 
 gl_MAX_SAMPLES :: GLenum
 gl_MAX_SAMPLES = 0x8D57
 
-gl_MAX_TEXTURE_BUFFER_SIZE :: GLenum
-gl_MAX_TEXTURE_BUFFER_SIZE = 0x8C2B
-
 gl_MAX_TEXTURE_IMAGE_UNITS :: GLenum
 gl_MAX_TEXTURE_IMAGE_UNITS = 0x8872
 
@@ -890,12 +872,6 @@
 gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS :: GLenum
 gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80
 
-gl_MAX_UNIFORM_BLOCK_SIZE :: GLenum
-gl_MAX_UNIFORM_BLOCK_SIZE = 0x8A30
-
-gl_MAX_UNIFORM_BUFFER_BINDINGS :: GLenum
-gl_MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F
-
 gl_MAX_VARYING_COMPONENTS :: GLenum
 gl_MAX_VARYING_COMPONENTS = 0x8B4B
 
@@ -908,9 +884,6 @@
 gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS :: GLenum
 gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C
 
-gl_MAX_VERTEX_UNIFORM_BLOCKS :: GLenum
-gl_MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B
-
 gl_MAX_VERTEX_UNIFORM_COMPONENTS :: GLenum
 gl_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A
 
@@ -1109,9 +1082,6 @@
 gl_PROXY_TEXTURE_CUBE_MAP :: GLenum
 gl_PROXY_TEXTURE_CUBE_MAP = 0x851B
 
-gl_PROXY_TEXTURE_RECTANGLE :: GLenum
-gl_PROXY_TEXTURE_RECTANGLE = 0x84F7
-
 gl_QUERY_BY_REGION_NO_WAIT :: GLenum
 gl_QUERY_BY_REGION_NO_WAIT = 0x8E16
 
@@ -1436,12 +1406,6 @@
 gl_SAMPLER_2D_ARRAY_SHADOW :: GLenum
 gl_SAMPLER_2D_ARRAY_SHADOW = 0x8DC4
 
-gl_SAMPLER_2D_RECT :: GLenum
-gl_SAMPLER_2D_RECT = 0x8B63
-
-gl_SAMPLER_2D_RECT_SHADOW :: GLenum
-gl_SAMPLER_2D_RECT_SHADOW = 0x8B64
-
 gl_SAMPLER_2D_SHADOW :: GLenum
 gl_SAMPLER_2D_SHADOW = 0x8B62
 
@@ -1778,15 +1742,9 @@
 gl_TEXTURE_BINDING_3D :: GLenum
 gl_TEXTURE_BINDING_3D = 0x806A
 
-gl_TEXTURE_BINDING_BUFFER :: GLenum
-gl_TEXTURE_BINDING_BUFFER = 0x8C2C
-
 gl_TEXTURE_BINDING_CUBE_MAP :: GLenum
 gl_TEXTURE_BINDING_CUBE_MAP = 0x8514
 
-gl_TEXTURE_BINDING_RECTANGLE :: GLenum
-gl_TEXTURE_BINDING_RECTANGLE = 0x84F6
-
 gl_TEXTURE_BLUE_SIZE :: GLenum
 gl_TEXTURE_BLUE_SIZE = 0x805E
 
@@ -1799,15 +1757,6 @@
 gl_TEXTURE_BORDER_COLOR :: GLenum
 gl_TEXTURE_BORDER_COLOR = 0x1004
 
-gl_TEXTURE_BUFFER :: GLenum
-gl_TEXTURE_BUFFER = 0x8C2A
-
-gl_TEXTURE_BUFFER_DATA_STORE_BINDING :: GLenum
-gl_TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D
-
-gl_TEXTURE_BUFFER_FORMAT :: GLenum
-gl_TEXTURE_BUFFER_FORMAT = 0x8C2E
-
 gl_TEXTURE_COMPARE_FUNC :: GLenum
 gl_TEXTURE_COMPARE_FUNC = 0x884D
 
@@ -1883,9 +1832,6 @@
 gl_TEXTURE_MIN_LOD :: GLenum
 gl_TEXTURE_MIN_LOD = 0x813A
 
-gl_TEXTURE_RECTANGLE :: GLenum
-gl_TEXTURE_RECTANGLE = 0x84F5
-
 gl_TEXTURE_RED_SIZE :: GLenum
 gl_TEXTURE_RED_SIZE = 0x805C
 
@@ -1945,66 +1891,6 @@
 
 gl_TRUE :: GLenum
 gl_TRUE = 1
-
-gl_UNIFORM_ARRAY_STRIDE :: GLenum
-gl_UNIFORM_ARRAY_STRIDE = 0x8A3C
-
-gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS :: GLenum
-gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42
-
-gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES :: GLenum
-gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43
-
-gl_UNIFORM_BLOCK_BINDING :: GLenum
-gl_UNIFORM_BLOCK_BINDING = 0x8A3F
-
-gl_UNIFORM_BLOCK_DATA_SIZE :: GLenum
-gl_UNIFORM_BLOCK_DATA_SIZE = 0x8A40
-
-gl_UNIFORM_BLOCK_INDEX :: GLenum
-gl_UNIFORM_BLOCK_INDEX = 0x8A3A
-
-gl_UNIFORM_BLOCK_NAME_LENGTH :: GLenum
-gl_UNIFORM_BLOCK_NAME_LENGTH = 0x8A41
-
-gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER :: GLenum
-gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46
-
-gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER :: GLenum
-gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44
-
-gl_UNIFORM_BUFFER :: GLenum
-gl_UNIFORM_BUFFER = 0x8A11
-
-gl_UNIFORM_BUFFER_BINDING :: GLenum
-gl_UNIFORM_BUFFER_BINDING = 0x8A28
-
-gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT :: GLenum
-gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34
-
-gl_UNIFORM_BUFFER_SIZE :: GLenum
-gl_UNIFORM_BUFFER_SIZE = 0x8A2A
-
-gl_UNIFORM_BUFFER_START :: GLenum
-gl_UNIFORM_BUFFER_START = 0x8A29
-
-gl_UNIFORM_IS_ROW_MAJOR :: GLenum
-gl_UNIFORM_IS_ROW_MAJOR = 0x8A3E
-
-gl_UNIFORM_MATRIX_STRIDE :: GLenum
-gl_UNIFORM_MATRIX_STRIDE = 0x8A3D
-
-gl_UNIFORM_NAME_LENGTH :: GLenum
-gl_UNIFORM_NAME_LENGTH = 0x8A39
-
-gl_UNIFORM_OFFSET :: GLenum
-gl_UNIFORM_OFFSET = 0x8A3B
-
-gl_UNIFORM_SIZE :: GLenum
-gl_UNIFORM_SIZE = 0x8A38
-
-gl_UNIFORM_TYPE :: GLenum
-gl_UNIFORM_TYPE = 0x8A37
 
 gl_UNPACK_ALIGNMENT :: GLenum
 gl_UNPACK_ALIGNMENT = 0x0CF5
diff --git a/src/Graphics/Rendering/OpenGL/Raw/Core31/Types.hs b/src/Graphics/Rendering/OpenGL/Raw/Core31/Types.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/Core31/Types.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/Core31/Types.hs
@@ -13,25 +13,27 @@
 --
 --------------------------------------------------------------------------------
 
-module Graphics.Rendering.OpenGL.Raw.Core31.Types where
-
-import Foreign.C.Types
+module Graphics.Rendering.OpenGL.Raw.Core31.Types (
+   GLbitfield,
+   GLboolean,
+   GLbyte,
+   GLchar,
+   GLclampd,
+   GLclampf,
+   GLdouble,
+   GLenum,
+   GLfloat,
+   GLhalf,
+   GLint,
+   GLintptr,
+   GLshort,
+   GLsizei,
+   GLsizeiptr,
+   GLubyte,
+   GLuint,
+   GLushort
+) where
 
-type GLbitfield = CUInt
-type GLboolean = CUChar
-type GLbyte = CSChar
-type GLchar = CChar
-type GLclampd = CDouble
-type GLclampf = CFloat
-type GLdouble = CDouble
-type GLenum = CUInt
-type GLfloat = CFloat
-type GLhalf = CUShort
-type GLint = CInt
-type GLintptr = CPtrdiff
-type GLshort = CShort
-type GLsizei = CInt
-type GLsizeiptr = CPtrdiff
-type GLubyte = CUChar
-type GLuint = CUInt
-type GLushort = CUShort
+-- Just re-export the types in an opaque way, without introducing any warnings
+-- about unused constructors.
+import Graphics.Rendering.OpenGL.Raw.Core31.TypesInternal
diff --git a/src/Graphics/Rendering/OpenGL/Raw/Core31/TypesInternal.hs b/src/Graphics/Rendering/OpenGL/Raw/Core31/TypesInternal.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/Core31/TypesInternal.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE CPP #-}
+{-# OPTIONS_GHC -XMagicHash -XGeneralizedNewtypeDeriving #-}
+-- #hide
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.Core31.TypesInternal
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All types from the OpenGL 3.1 core, see <http://www.opengl.org/registry/>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.Core31.TypesInternal where
+
+import Data.Bits
+import Data.Int
+import Data.Word
+import Data.Typeable
+import Foreign.C.Types
+import Foreign.Ptr
+import Foreign.Storable
+
+#ifdef __GLASGOW_HASKELL__
+import GHC.Prim
+#else
+import Control.Monad
+import Foreign.Ptr
+#endif
+
+#include "CTypes.h"
+
+INTEGRAL_TYPE(GLbitfield,tyConGLbitfield,"GLbitfield",CUInt)
+INTEGRAL_TYPE(GLboolean,tyConGLboolean,"GLboolean",CUChar)
+INTEGRAL_TYPE(GLbyte,tyConGLbyte,"GLbyte",CSChar)
+INTEGRAL_TYPE(GLchar,tyConGLchar,"GLchar",CChar)
+FLOATING_TYPE(GLclampd,tyConGLclampd,"GLclampd",CDouble)
+FLOATING_TYPE(GLclampf,tyConGLclampf,"GLclampf",CFloat)
+FLOATING_TYPE(GLdouble,tyConGLdouble,"GLdouble",CDouble)
+INTEGRAL_TYPE(GLenum,tyConGLenum,"GLenum",CUInt)
+FLOATING_TYPE(GLfloat,tyConGLfloat,"GLfloat",CFloat)
+INTEGRAL_TYPE(GLhalf,tyConGLhalf,"GLhalf",CUShort)
+INTEGRAL_TYPE(GLint,tyConGLint,"GLint",CInt)
+INTEGRAL_TYPE(GLintptr,tyConGLintptr,"GLintptr",CPtrdiff)
+INTEGRAL_TYPE(GLshort,tyConGLshort,"GLshort",CShort)
+INTEGRAL_TYPE(GLsizei,tyConGLsizei,"GLsizei",CInt)
+INTEGRAL_TYPE(GLsizeiptr,tyConGLsizeiptr,"GLsizeiptr",CPtrdiff)
+INTEGRAL_TYPE(GLubyte,tyConGLubyte,"GLubyte",CUChar)
+INTEGRAL_TYPE(GLuint,tyConGLuint,"GLuint",CUInt)
+INTEGRAL_TYPE(GLushort,tyConGLushort,"GLushort",CUShort)
+INTEGRAL_TYPE(GLint64,tyConGLint64,"GLint64",Int64)
+INTEGRAL_TYPE(GLuint64,tyConGLuint64,"GLuint64",Word64)
+
+newtype GLsync = GLSync (Ptr GLsync)
+
+-- Not part of the core, but it is very handy to define this here
+INTEGRAL_TYPE(GLhandle,tyConGLhandle,"GLhandle",CUInt)
diff --git a/src/Graphics/Rendering/OpenGL/Raw/Core32.hs b/src/Graphics/Rendering/OpenGL/Raw/Core32.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/Core32.hs
@@ -0,0 +1,43 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.Core32
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions, tokens and types from the OpenGL 3.2 core, see
+-- <http://www.opengl.org/registry/>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.Core32 (
+   -- * OpenGL 3.1 core
+   module Graphics.Rendering.OpenGL.Raw.Core31,
+   -- * Extensions which had some hidden entitites in OpenGL 3.1 core
+   module Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject,
+   -- * Extensions promoted to OpenGL 3.2 core
+   module Graphics.Rendering.OpenGL.Raw.ARB.CreateContextProfile,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DrawElementsBaseVertex,
+   module Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex,
+   module Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap,
+   module Graphics.Rendering.OpenGL.Raw.ARB.TextureMultisample,
+   module Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp,
+   module Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4,
+   module Graphics.Rendering.OpenGL.Raw.ARB.Sync
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core31
+
+import Graphics.Rendering.OpenGL.Raw.ARB.UniformBufferObject
+
+import Graphics.Rendering.OpenGL.Raw.ARB.CreateContextProfile
+import Graphics.Rendering.OpenGL.Raw.ARB.DrawElementsBaseVertex
+import Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex
+import Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap
+import Graphics.Rendering.OpenGL.Raw.ARB.TextureMultisample
+import Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp
+import Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4
+import Graphics.Rendering.OpenGL.Raw.ARB.Sync
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT.hs
@@ -14,110 +14,182 @@
 
 module Graphics.Rendering.OpenGL.Raw.EXT (
    module Graphics.Rendering.OpenGL.Raw.EXT.Abgr,
-   module Graphics.Rendering.OpenGL.Raw.EXT.BindableUniform,
-   module Graphics.Rendering.OpenGL.Raw.EXT.ClipVolumeHint,
+   module Graphics.Rendering.OpenGL.Raw.EXT.BlendColor,
+   module Graphics.Rendering.OpenGL.Raw.EXT.PolygonOffset,
+   module Graphics.Rendering.OpenGL.Raw.EXT.Texture,
+   module Graphics.Rendering.OpenGL.Raw.EXT.Texture3D,
+   module Graphics.Rendering.OpenGL.Raw.EXT.Subtexture,
+   module Graphics.Rendering.OpenGL.Raw.EXT.CopyTexture,
+   module Graphics.Rendering.OpenGL.Raw.EXT.Histogram,
+   module Graphics.Rendering.OpenGL.Raw.EXT.Convolution,
    module Graphics.Rendering.OpenGL.Raw.EXT.Cmyka,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureObject,
+   module Graphics.Rendering.OpenGL.Raw.EXT.PackedPixels,
+   module Graphics.Rendering.OpenGL.Raw.EXT.RescaleNormal,
+   module Graphics.Rendering.OpenGL.Raw.EXT.VertexArray,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.MiscAttribute,
+   module Graphics.Rendering.OpenGL.Raw.EXT.BlendMinmax,
+   module Graphics.Rendering.OpenGL.Raw.EXT.BlendSubtract,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.BlendLogicOp,
+   module Graphics.Rendering.OpenGL.Raw.EXT.PointParameters,
    module Graphics.Rendering.OpenGL.Raw.EXT.ColorSubtable,
+   module Graphics.Rendering.OpenGL.Raw.EXT.PalettedTexture,
+   module Graphics.Rendering.OpenGL.Raw.EXT.ClipVolumeHint,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.IndexTexture,
+   module Graphics.Rendering.OpenGL.Raw.EXT.IndexMaterial,
+   module Graphics.Rendering.OpenGL.Raw.EXT.IndexFunc,
+   module Graphics.Rendering.OpenGL.Raw.EXT.IndexArrayFormats,
    module Graphics.Rendering.OpenGL.Raw.EXT.CompiledVertexArray,
-   module Graphics.Rendering.OpenGL.Raw.EXT.CoordinateFrame,
    module Graphics.Rendering.OpenGL.Raw.EXT.CullVertex,
-   module Graphics.Rendering.OpenGL.Raw.EXT.DepthBoundsTest,
-   module Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess,
-   module Graphics.Rendering.OpenGL.Raw.EXT.FogCoord,
-   module Graphics.Rendering.OpenGL.Raw.EXT.FourTwoTwoPixels,
    module Graphics.Rendering.OpenGL.Raw.EXT.FragmentLighting,
-   module Graphics.Rendering.OpenGL.Raw.EXT.FramebufferObject,
-   module Graphics.Rendering.OpenGL.Raw.EXT.FramebufferSRGB,
-   module Graphics.Rendering.OpenGL.Raw.EXT.GeometryShader4,
-   module Graphics.Rendering.OpenGL.Raw.EXT.GpuProgramParameters,
-   module Graphics.Rendering.OpenGL.Raw.EXT.IndexArrayFormats,
-   module Graphics.Rendering.OpenGL.Raw.EXT.IndexFunc,
-   module Graphics.Rendering.OpenGL.Raw.EXT.IndexMaterial,
+   module Graphics.Rendering.OpenGL.Raw.EXT.DrawRangeElements,
    module Graphics.Rendering.OpenGL.Raw.EXT.LightTexture,
-   module Graphics.Rendering.OpenGL.Raw.EXT.Multisample,
-   module Graphics.Rendering.OpenGL.Raw.EXT.PackedFloat,
-   module Graphics.Rendering.OpenGL.Raw.EXT.PalettedTexture,
-   module Graphics.Rendering.OpenGL.Raw.EXT.PerturbNormal,
+   module Graphics.Rendering.OpenGL.Raw.EXT.SceneMarker,
+   module Graphics.Rendering.OpenGL.Raw.EXT.Bgra,
    module Graphics.Rendering.OpenGL.Raw.EXT.PixelTransform,
-   module Graphics.Rendering.OpenGL.Raw.EXT.PointParameters,
-   module Graphics.Rendering.OpenGL.Raw.EXT.PolygonOffset,
-   module Graphics.Rendering.OpenGL.Raw.EXT.ProvokingVertex,
-   module Graphics.Rendering.OpenGL.Raw.EXT.RescaleNormal,
-   module Graphics.Rendering.OpenGL.Raw.EXT.SecondaryColor,
-   module Graphics.Rendering.OpenGL.Raw.EXT.SeparateSpecularColor,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.PixelTransformColorTable,
    module Graphics.Rendering.OpenGL.Raw.EXT.SharedTexturePalette,
-   module Graphics.Rendering.OpenGL.Raw.EXT.StencilClearTag,
-   module Graphics.Rendering.OpenGL.Raw.EXT.StencilTwoSide,
-   module Graphics.Rendering.OpenGL.Raw.EXT.Texture,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionDxt1,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionLatc,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionS3tc,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvAdd,
+   module Graphics.Rendering.OpenGL.Raw.EXT.SeparateSpecularColor,
+   module Graphics.Rendering.OpenGL.Raw.EXT.SecondaryColor,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.TextureEnv,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TexturePerturbNormal,
+   module Graphics.Rendering.OpenGL.Raw.EXT.MultiDrawArrays,
+   module Graphics.Rendering.OpenGL.Raw.EXT.FogCoord,
+   module Graphics.Rendering.OpenGL.Raw.EXT.CoordinateFrame,
    module Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvCombine,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvDot3,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureFilterAnisotropic,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureInteger,
+   module Graphics.Rendering.OpenGL.Raw.EXT.BlendFuncSeparate,
+   module Graphics.Rendering.OpenGL.Raw.EXT.StencilWrap,
+   module Graphics.Rendering.OpenGL.Raw.EXT.FourTwoTwoPixels,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvAdd,
    module Graphics.Rendering.OpenGL.Raw.EXT.TextureLodBias,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureFilterAnisotropic,
+   module Graphics.Rendering.OpenGL.Raw.EXT.VertexWeighting,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionS3tc,
+   module Graphics.Rendering.OpenGL.Raw.EXT.Multisample,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvDot3,
+   module Graphics.Rendering.OpenGL.Raw.EXT.VertexShader,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.ShadowFuncs,
+   module Graphics.Rendering.OpenGL.Raw.EXT.StencilTwoSide,
+   module Graphics.Rendering.OpenGL.Raw.EXT.DepthBoundsTest,
    module Graphics.Rendering.OpenGL.Raw.EXT.TextureMirrorClamp,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureObject,
+   module Graphics.Rendering.OpenGL.Raw.EXT.BlendEquationSeparate,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.PixelBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionDxt1,
+   module Graphics.Rendering.OpenGL.Raw.EXT.FramebufferObject,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.PackedDepthStencil,
+   module Graphics.Rendering.OpenGL.Raw.EXT.StencilClearTag,
    module Graphics.Rendering.OpenGL.Raw.EXT.TextureSRGB,
-   module Graphics.Rendering.OpenGL.Raw.EXT.TextureSwizzle,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.FramebufferBlit,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.FramebufferMultisample,
    module Graphics.Rendering.OpenGL.Raw.EXT.TimerQuery,
-   module Graphics.Rendering.OpenGL.Raw.EXT.VertexArray,
-   module Graphics.Rendering.OpenGL.Raw.EXT.VertexShader,
-   module Graphics.Rendering.OpenGL.Raw.EXT.VertexWeighting
+   module Graphics.Rendering.OpenGL.Raw.EXT.GpuProgramParameters,
+   module Graphics.Rendering.OpenGL.Raw.EXT.GeometryShader4,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.GpuShader4,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.DrawInstanced,
+   module Graphics.Rendering.OpenGL.Raw.EXT.PackedFloat,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.TextureArray,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.TextureBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionLatc,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionRgtc,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.TextureSharedExponent,
+   module Graphics.Rendering.OpenGL.Raw.EXT.FramebufferSRGB,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.DrawBuffers2,
+   module Graphics.Rendering.OpenGL.Raw.EXT.BindableUniform,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureInteger,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.TransformFeedback,
+   module Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess,
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.VertexArrayBgra,
+   module Graphics.Rendering.OpenGL.Raw.EXT.TextureSwizzle,
+   module Graphics.Rendering.OpenGL.Raw.EXT.ProvokingVertex
+   -- module Graphics.Rendering.OpenGL.Raw.EXT.TextureSnorm
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.EXT.Abgr
-import Graphics.Rendering.OpenGL.Raw.EXT.BindableUniform
-import Graphics.Rendering.OpenGL.Raw.EXT.ClipVolumeHint
+import Graphics.Rendering.OpenGL.Raw.EXT.BlendColor
+import Graphics.Rendering.OpenGL.Raw.EXT.PolygonOffset
+import Graphics.Rendering.OpenGL.Raw.EXT.Texture
+import Graphics.Rendering.OpenGL.Raw.EXT.Texture3D
+import Graphics.Rendering.OpenGL.Raw.EXT.Subtexture
+import Graphics.Rendering.OpenGL.Raw.EXT.CopyTexture
+import Graphics.Rendering.OpenGL.Raw.EXT.Histogram
+import Graphics.Rendering.OpenGL.Raw.EXT.Convolution
 import Graphics.Rendering.OpenGL.Raw.EXT.Cmyka
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureObject
+import Graphics.Rendering.OpenGL.Raw.EXT.PackedPixels
+import Graphics.Rendering.OpenGL.Raw.EXT.RescaleNormal
+import Graphics.Rendering.OpenGL.Raw.EXT.VertexArray
+-- import Graphics.Rendering.OpenGL.Raw.EXT.MiscAttribute
+import Graphics.Rendering.OpenGL.Raw.EXT.BlendMinmax
+import Graphics.Rendering.OpenGL.Raw.EXT.BlendSubtract
+-- import Graphics.Rendering.OpenGL.Raw.EXT.BlendLogicOp
+import Graphics.Rendering.OpenGL.Raw.EXT.PointParameters
 import Graphics.Rendering.OpenGL.Raw.EXT.ColorSubtable
+import Graphics.Rendering.OpenGL.Raw.EXT.PalettedTexture
+import Graphics.Rendering.OpenGL.Raw.EXT.ClipVolumeHint
+-- import Graphics.Rendering.OpenGL.Raw.EXT.IndexTexture
+import Graphics.Rendering.OpenGL.Raw.EXT.IndexMaterial
+import Graphics.Rendering.OpenGL.Raw.EXT.IndexFunc
+import Graphics.Rendering.OpenGL.Raw.EXT.IndexArrayFormats
 import Graphics.Rendering.OpenGL.Raw.EXT.CompiledVertexArray
-import Graphics.Rendering.OpenGL.Raw.EXT.CoordinateFrame
 import Graphics.Rendering.OpenGL.Raw.EXT.CullVertex
-import Graphics.Rendering.OpenGL.Raw.EXT.DepthBoundsTest
-import Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess
-import Graphics.Rendering.OpenGL.Raw.EXT.FogCoord
-import Graphics.Rendering.OpenGL.Raw.EXT.FourTwoTwoPixels
 import Graphics.Rendering.OpenGL.Raw.EXT.FragmentLighting
-import Graphics.Rendering.OpenGL.Raw.EXT.FramebufferObject
-import Graphics.Rendering.OpenGL.Raw.EXT.FramebufferSRGB
-import Graphics.Rendering.OpenGL.Raw.EXT.GeometryShader4
-import Graphics.Rendering.OpenGL.Raw.EXT.GpuProgramParameters
-import Graphics.Rendering.OpenGL.Raw.EXT.IndexArrayFormats
-import Graphics.Rendering.OpenGL.Raw.EXT.IndexFunc
-import Graphics.Rendering.OpenGL.Raw.EXT.IndexMaterial
+import Graphics.Rendering.OpenGL.Raw.EXT.DrawRangeElements
 import Graphics.Rendering.OpenGL.Raw.EXT.LightTexture
-import Graphics.Rendering.OpenGL.Raw.EXT.Multisample
-import Graphics.Rendering.OpenGL.Raw.EXT.PackedFloat
-import Graphics.Rendering.OpenGL.Raw.EXT.PalettedTexture
-import Graphics.Rendering.OpenGL.Raw.EXT.PerturbNormal
+import Graphics.Rendering.OpenGL.Raw.EXT.SceneMarker
+import Graphics.Rendering.OpenGL.Raw.EXT.Bgra
 import Graphics.Rendering.OpenGL.Raw.EXT.PixelTransform
-import Graphics.Rendering.OpenGL.Raw.EXT.PointParameters
-import Graphics.Rendering.OpenGL.Raw.EXT.PolygonOffset
-import Graphics.Rendering.OpenGL.Raw.EXT.ProvokingVertex
-import Graphics.Rendering.OpenGL.Raw.EXT.RescaleNormal
-import Graphics.Rendering.OpenGL.Raw.EXT.SecondaryColor
-import Graphics.Rendering.OpenGL.Raw.EXT.SeparateSpecularColor
+-- import Graphics.Rendering.OpenGL.Raw.EXT.PixelTransformColorTable
 import Graphics.Rendering.OpenGL.Raw.EXT.SharedTexturePalette
-import Graphics.Rendering.OpenGL.Raw.EXT.StencilClearTag
-import Graphics.Rendering.OpenGL.Raw.EXT.StencilTwoSide
-import Graphics.Rendering.OpenGL.Raw.EXT.Texture
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionDxt1
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionLatc
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionS3tc
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvAdd
+import Graphics.Rendering.OpenGL.Raw.EXT.SeparateSpecularColor
+import Graphics.Rendering.OpenGL.Raw.EXT.SecondaryColor
+-- import Graphics.Rendering.OpenGL.Raw.EXT.TextureEnv
+import Graphics.Rendering.OpenGL.Raw.EXT.TexturePerturbNormal
+import Graphics.Rendering.OpenGL.Raw.EXT.MultiDrawArrays
+import Graphics.Rendering.OpenGL.Raw.EXT.FogCoord
+import Graphics.Rendering.OpenGL.Raw.EXT.CoordinateFrame
 import Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvCombine
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvDot3
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureFilterAnisotropic
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureInteger
+import Graphics.Rendering.OpenGL.Raw.EXT.BlendFuncSeparate
+import Graphics.Rendering.OpenGL.Raw.EXT.StencilWrap
+import Graphics.Rendering.OpenGL.Raw.EXT.FourTwoTwoPixels
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvAdd
 import Graphics.Rendering.OpenGL.Raw.EXT.TextureLodBias
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureFilterAnisotropic
+import Graphics.Rendering.OpenGL.Raw.EXT.VertexWeighting
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionS3tc
+import Graphics.Rendering.OpenGL.Raw.EXT.Multisample
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureEnvDot3
+import Graphics.Rendering.OpenGL.Raw.EXT.VertexShader
+-- import Graphics.Rendering.OpenGL.Raw.EXT.ShadowFuncs
+import Graphics.Rendering.OpenGL.Raw.EXT.StencilTwoSide
+import Graphics.Rendering.OpenGL.Raw.EXT.DepthBoundsTest
 import Graphics.Rendering.OpenGL.Raw.EXT.TextureMirrorClamp
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureObject
+import Graphics.Rendering.OpenGL.Raw.EXT.BlendEquationSeparate
+-- import Graphics.Rendering.OpenGL.Raw.EXT.PixelBufferObject
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionDxt1
+import Graphics.Rendering.OpenGL.Raw.EXT.FramebufferObject
+-- import Graphics.Rendering.OpenGL.Raw.EXT.PackedDepthStencil
+import Graphics.Rendering.OpenGL.Raw.EXT.StencilClearTag
 import Graphics.Rendering.OpenGL.Raw.EXT.TextureSRGB
-import Graphics.Rendering.OpenGL.Raw.EXT.TextureSwizzle
+-- import Graphics.Rendering.OpenGL.Raw.EXT.FramebufferBlit
+-- import Graphics.Rendering.OpenGL.Raw.EXT.FramebufferMultisample
 import Graphics.Rendering.OpenGL.Raw.EXT.TimerQuery
-import Graphics.Rendering.OpenGL.Raw.EXT.VertexArray
-import Graphics.Rendering.OpenGL.Raw.EXT.VertexShader
-import Graphics.Rendering.OpenGL.Raw.EXT.VertexWeighting
+import Graphics.Rendering.OpenGL.Raw.EXT.GpuProgramParameters
+import Graphics.Rendering.OpenGL.Raw.EXT.GeometryShader4
+-- import Graphics.Rendering.OpenGL.Raw.EXT.GpuShader4
+-- import Graphics.Rendering.OpenGL.Raw.EXT.DrawInstanced
+import Graphics.Rendering.OpenGL.Raw.EXT.PackedFloat
+-- import Graphics.Rendering.OpenGL.Raw.EXT.TextureArray
+-- import Graphics.Rendering.OpenGL.Raw.EXT.TextureBufferObject
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionLatc
+-- import Graphics.Rendering.OpenGL.Raw.EXT.TextureCompressionRgtc
+-- import Graphics.Rendering.OpenGL.Raw.EXT.TextureSharedExponent
+import Graphics.Rendering.OpenGL.Raw.EXT.FramebufferSRGB
+-- import Graphics.Rendering.OpenGL.Raw.EXT.DrawBuffers2
+import Graphics.Rendering.OpenGL.Raw.EXT.BindableUniform
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureInteger
+-- import Graphics.Rendering.OpenGL.Raw.EXT.TransformFeedback
+import Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess
+-- import Graphics.Rendering.OpenGL.Raw.EXT.VertexArrayBgra
+import Graphics.Rendering.OpenGL.Raw.EXT.TextureSwizzle
+import Graphics.Rendering.OpenGL.Raw.EXT.ProvokingVertex
+-- import Graphics.Rendering.OpenGL.Raw.EXT.TextureSnorm
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Abgr.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Abgr.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/Abgr.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Abgr.hs
@@ -8,8 +8,8 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_abgr extension not already in the
--- OpenGL 3.1 core, see <http://www.opengl.org/registry/specs/EXT/abgr.txt>.
+-- All tokens from the EXT_abgr extension, see
+-- <http://www.opengl.org/registry/specs/EXT/abgr.txt>.
 --
 --------------------------------------------------------------------------------
 
@@ -18,7 +18,7 @@
    gl_ABGR
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_ABGR :: GLenum
 gl_ABGR = 0x8000
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Bgra.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Bgra.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Bgra.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.Bgra
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the EXT_bgra extension, see
+-- <http://www.opengl.org/registry/specs/EXT/bgra.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.Bgra (
+   -- * Tokens
+   gl_BGR,
+   gl_BGRA
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/BindableUniform.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/BindableUniform.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/BindableUniform.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/BindableUniform.hs
@@ -29,7 +29,7 @@
    gl_UNIFORM_BUFFER_EXT
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendColor.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendColor.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendColor.hs
@@ -0,0 +1,27 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.BlendColor
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_blend_color extension, see
+-- <http://www.opengl.org/registry/specs/EXT/blend_color.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.BlendColor (
+   -- * Functions
+   glBlendColor,
+   -- * Tokens
+   gl_CONSTANT_COLOR,
+   gl_ONE_MINUS_CONSTANT_COLOR,
+   gl_CONSTANT_ALPHA,
+   gl_ONE_MINUS_CONSTANT_ALPHA,
+   gl_BLEND_COLOR
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendEquationSeparate.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendEquationSeparate.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendEquationSeparate.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.BlendEquationSeparate
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_blend_equation_separate extension, see
+-- <http://www.opengl.org/registry/specs/EXT/blend_equation_separate.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.BlendEquationSeparate (
+   -- * Functions
+   glBlendEquationSeparate,
+   -- * Tokens
+   gl_BLEND_EQUATION_RGB,
+   gl_BLEND_EQUATION_ALPHA
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendFuncSeparate.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendFuncSeparate.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendFuncSeparate.hs
@@ -0,0 +1,26 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.BlendFuncSeparate
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_blend_func_separate extension, see
+-- <http://www.opengl.org/registry/specs/EXT/blend_func_separate.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.BlendFuncSeparate (
+   -- * Functions
+   glBlendFuncSeparate,
+   -- * Tokens
+   gl_BLEND_DST_RGB,
+   gl_BLEND_SRC_RGB,
+   gl_BLEND_DST_ALPHA,
+   gl_BLEND_SRC_ALPHA
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendMinmax.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendMinmax.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendMinmax.hs
@@ -0,0 +1,26 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.BlendMinmax
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_blend_minmax extension, see
+-- <http://www.opengl.org/registry/specs/EXT/blend_minmax.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.BlendMinmax (
+   -- * Functions
+   glBlendEquation,
+   -- * Tokens
+   gl_FUNC_ADD,
+   gl_MIN,
+   gl_MAX,
+   gl_BLEND_EQUATION
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendSubtract.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendSubtract.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/BlendSubtract.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.BlendSubtract
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the EXT_blend_subtract extension, see
+-- <http://www.opengl.org/registry/specs/EXT/blend_subtract.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.BlendSubtract (
+   -- * Tokens
+   gl_FUNC_SUBTRACT,
+   gl_FUNC_REVERSE_SUBTRACT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/ClipVolumeHint.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/ClipVolumeHint.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/ClipVolumeHint.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/ClipVolumeHint.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_clip_volume_hint extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_clip_volume_hint extension, see
 -- <http://www.opengl.org/registry/specs/EXT/clip_volume_hint.txt>.
 --
 --------------------------------------------------------------------------------
@@ -19,7 +18,7 @@
    gl_CLIP_VOLUME_CLIPPING_HINT
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_CLIP_VOLUME_CLIPPING_HINT :: GLenum
 gl_CLIP_VOLUME_CLIPPING_HINT = 0x80F0
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Cmyka.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Cmyka.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/Cmyka.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Cmyka.hs
@@ -8,8 +8,8 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_cmyka extension not already in the
--- OpenGL 3.1 core, see <http://www.opengl.org/registry/specs/EXT/cmyka.txt>.
+-- All tokens from the EXT_cmyka extension, see
+-- <http://www.opengl.org/registry/specs/EXT/cmyka.txt>.
 --
 --------------------------------------------------------------------------------
 
@@ -21,7 +21,7 @@
    gl_UNPACK_CMYK_HINT
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_CMYK :: GLenum
 gl_CMYK = 0x800C
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/ColorSubtable.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/ColorSubtable.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/ColorSubtable.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/ColorSubtable.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_color_subtable extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_color_subtable extension, see
 -- <http://www.opengl.org/registry/specs/EXT/color_subtable.txt>.
 --
 --------------------------------------------------------------------------------
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/CompiledVertexArray.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/CompiledVertexArray.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/CompiledVertexArray.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/CompiledVertexArray.hs
@@ -9,8 +9,8 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_compiled_vertex_array extension
--- not already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_compiled_vertex_array extension,
+-- see
 -- <http://www.opengl.org/registry/specs/EXT/compiled_vertex_array.txt>.
 --
 --------------------------------------------------------------------------------
@@ -24,7 +24,7 @@
    gl_ARRAY_ELEMENT_LOCK_COUNT
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Convolution.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Convolution.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Convolution.hs
@@ -0,0 +1,54 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.Convolution
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_convolution extension, see
+-- <http://www.opengl.org/registry/specs/EXT/convolution.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.Convolution (
+   -- * Functions
+   glConvolutionFilter1D,
+   glConvolutionFilter2D,
+   glCopyConvolutionFilter1D,
+   glCopyConvolutionFilter2D,
+   glGetConvolutionFilter,
+   glSeparableFilter2D,
+   glGetSeparableFilter,
+   glConvolutionParameteri,
+   glConvolutionParameteriv,
+   glConvolutionParameterf,
+   glConvolutionParameterfv,
+   glGetConvolutionParameteriv,
+   glGetConvolutionParameterfv,
+   -- * Tokens
+   gl_CONVOLUTION_1D,
+   gl_CONVOLUTION_2D,
+   gl_SEPARABLE_2D,
+   gl_CONVOLUTION_BORDER_MODE,
+   gl_CONVOLUTION_FILTER_SCALE,
+   gl_CONVOLUTION_FILTER_BIAS,
+   gl_REDUCE,
+   gl_CONVOLUTION_FORMAT,
+   gl_CONVOLUTION_WIDTH,
+   gl_CONVOLUTION_HEIGHT,
+   gl_MAX_CONVOLUTION_WIDTH,
+   gl_MAX_CONVOLUTION_HEIGHT,
+   gl_POST_CONVOLUTION_RED_SCALE,
+   gl_POST_CONVOLUTION_GREEN_SCALE,
+   gl_POST_CONVOLUTION_BLUE_SCALE,
+   gl_POST_CONVOLUTION_ALPHA_SCALE,
+   gl_POST_CONVOLUTION_RED_BIAS,
+   gl_POST_CONVOLUTION_GREEN_BIAS,
+   gl_POST_CONVOLUTION_BLUE_BIAS,
+   gl_POST_CONVOLUTION_ALPHA_BIAS
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/CoordinateFrame.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/CoordinateFrame.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/CoordinateFrame.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/CoordinateFrame.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_coordinate_frame extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_coordinate_frame extension, see
 -- <http://www.opengl.org/registry/specs/EXT/coordinate_frame.txt>.
 --
 --------------------------------------------------------------------------------
@@ -34,8 +33,8 @@
    glBinormal3s,
    glBinormal3bv,
    glBinormal3dv,
-   glBinormal3iv,
    glBinormal3fv,
+   glBinormal3iv,
    glBinormal3sv,
    glTangentPointer,
    glBinormalPointer,
@@ -57,7 +56,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/CopyTexture.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/CopyTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/CopyTexture.hs
@@ -0,0 +1,25 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.CopyTexture
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions from the EXT_copy_texture extension, see
+-- <http://www.opengl.org/registry/specs/EXT/copy_texture.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.CopyTexture (
+   -- * Functions
+   glCopyTexImage1D,
+   glCopyTexImage2D,
+   glCopyTexSubImage1D,
+   glCopyTexSubImage2D,
+   glCopyTexSubImage3D,
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/CullVertex.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/CullVertex.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/CullVertex.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/CullVertex.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_cull_vertex extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_cull_vertex extension, see
 -- <http://www.opengl.org/registry/specs/EXT/cull_vertex.txt>.
 --
 --------------------------------------------------------------------------------
@@ -26,7 +25,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/DepthBoundsTest.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/DepthBoundsTest.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/DepthBoundsTest.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/DepthBoundsTest.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_depth_bounds_test extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_depth_bounds_test extension, see
 -- <http://www.opengl.org/registry/specs/EXT/depth_bounds_test.txt>.
 --
 --------------------------------------------------------------------------------
@@ -23,7 +22,7 @@
    gl_DEPTH_BOUNDS
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/DirectStateAccess.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/DirectStateAccess.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/DirectStateAccess.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/DirectStateAccess.hs
@@ -215,7 +215,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/DrawRangeElements.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/DrawRangeElements.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/DrawRangeElements.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.DrawRangeElements
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_draw_range_elements extension, see
+-- <http://www.opengl.org/registry/specs/EXT/draw_range_elements.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.DrawRangeElements (
+   -- * Functions
+   glDrawRangeElements,
+   -- * Tokens
+   gl_MAX_ELEMENTS_VERTICES,
+   gl_MAX_ELEMENTS_INDICES
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/FogCoord.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/FogCoord.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/FogCoord.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/FogCoord.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_fog_coord extension not already
--- in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_fog_coord extension, see
 -- <http://www.opengl.org/registry/specs/EXT/fog_coord.txt>.
 --
 --------------------------------------------------------------------------------
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/FourTwoTwoPixels.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/FourTwoTwoPixels.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/FourTwoTwoPixels.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/FourTwoTwoPixels.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_422_pixels extension not already in
--- the OpenGL 3.1 core, see
+-- All tokens from the EXT_422_pixels extension, see
 -- <http://www.opengl.org/registry/specs/EXT/422_pixels.txt>.
 --
 --------------------------------------------------------------------------------
@@ -22,7 +21,7 @@
    gl_422_REV_AVERAGE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_422 :: GLenum
 gl_422 = 0x80CC
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/FragmentLighting.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/FragmentLighting.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/FragmentLighting.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/FragmentLighting.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_fragment_lighting extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_fragment_lighting extension, see
 -- <http://www.opengl.org/registry/specs/EXT/fragment_lighting.txt>.
 --
 --------------------------------------------------------------------------------
@@ -59,7 +58,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferObject.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferObject.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferObject.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferObject.hs
@@ -20,7 +20,7 @@
    gl_FRAMEBUFFER_INCOMPLETE_FORMATS
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS :: GLenum
 gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferSRGB.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferSRGB.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferSRGB.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/FramebufferSRGB.hs
@@ -19,7 +19,7 @@
    gl_FRAMEBUFFER_SRGB_CAPABLE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_FRAMEBUFFER_SRGB_CAPABLE :: GLenum
 gl_FRAMEBUFFER_SRGB_CAPABLE = 0x8DBA
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/GeometryShader4.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/GeometryShader4.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/GeometryShader4.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/GeometryShader4.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_geometry_shader4 extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_geometry_shader4 extension, see
 -- <http://www.opengl.org/registry/specs/EXT/geometry_shader4.txt>.
 --
 --------------------------------------------------------------------------------
@@ -41,58 +40,3 @@
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4
-import Graphics.Rendering.OpenGL.Raw.Core31
-
-gl_GEOMETRY_SHADER :: GLenum
-gl_GEOMETRY_SHADER = 0x8DD9
-
-gl_GEOMETRY_VERTICES_OUT :: GLenum
-gl_GEOMETRY_VERTICES_OUT = 0x8DDA
-
-gl_GEOMETRY_INPUT_TYPE :: GLenum
-gl_GEOMETRY_INPUT_TYPE = 0x8DDB
-
-gl_GEOMETRY_OUTPUT_TYPE :: GLenum
-gl_GEOMETRY_OUTPUT_TYPE = 0x8DDC
-
-gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS :: GLenum
-gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29
-
-gl_MAX_GEOMETRY_VARYING_COMPONENTS :: GLenum
-gl_MAX_GEOMETRY_VARYING_COMPONENTS = 0x8DDD
-
-gl_MAX_VERTEX_VARYING_COMPONENTS :: GLenum
-gl_MAX_VERTEX_VARYING_COMPONENTS = 0x8DDE
-
-gl_MAX_GEOMETRY_UNIFORM_COMPONENTS :: GLenum
-gl_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF
-
-gl_MAX_GEOMETRY_OUTPUT_VERTICES :: GLenum
-gl_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0
-
-gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS :: GLenum
-gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1
-
-gl_LINES_ADJACENCY :: GLenum
-gl_LINES_ADJACENCY = 0xA
-
-gl_LINE_STRIP_ADJACENCY :: GLenum
-gl_LINE_STRIP_ADJACENCY = 0xB
-
-gl_TRIANGLES_ADJACENCY :: GLenum
-gl_TRIANGLES_ADJACENCY = 0xC
-
-gl_TRIANGLE_STRIP_ADJACENCY :: GLenum
-gl_TRIANGLE_STRIP_ADJACENCY = 0xD
-
-gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS :: GLenum
-gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8
-
-gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT :: GLenum
-gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT = 0x8DA9
-
-gl_FRAMEBUFFER_ATTACHMENT_LAYERED :: GLenum
-gl_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7
-
-gl_PROGRAM_POINT_SIZE :: GLenum
-gl_PROGRAM_POINT_SIZE = 0x8642
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/GpuProgramParameters.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/GpuProgramParameters.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/GpuProgramParameters.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/GpuProgramParameters.hs
@@ -22,7 +22,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Histogram.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Histogram.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Histogram.hs
@@ -0,0 +1,44 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.Histogram
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_histogram extension, see
+-- <http://www.opengl.org/registry/specs/EXT/histogram.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.Histogram (
+   -- * Functions
+   glHistogram,
+   glResetHistogram,
+   glGetHistogram,
+   glGetHistogramParameteriv,
+   glGetHistogramParameterfv,
+   glMinmax,
+   glResetMinmax,
+   glGetMinmax,
+   glGetMinmaxParameteriv,
+   glGetMinmaxParameterfv,
+   -- * Tokens
+   gl_HISTOGRAM,
+   gl_PROXY_HISTOGRAM,
+   gl_HISTOGRAM_WIDTH,
+   gl_HISTOGRAM_FORMAT,
+   gl_HISTOGRAM_RED_SIZE,
+   gl_HISTOGRAM_GREEN_SIZE,
+   gl_HISTOGRAM_BLUE_SIZE,
+   gl_HISTOGRAM_ALPHA_SIZE,
+   gl_HISTOGRAM_LUMINANCE_SIZE,
+   gl_HISTOGRAM_SINK,
+   gl_MINMAX,
+   gl_MINMAX_FORMAT,
+   gl_MINMAX_SINK
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexArrayFormats.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexArrayFormats.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexArrayFormats.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexArrayFormats.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_index_array_formats extension not
--- already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_index_array_formats extension, see
 -- <http://www.opengl.org/registry/specs/EXT/index_array_formats.txt>.
 --
 --------------------------------------------------------------------------------
@@ -26,7 +25,7 @@
    gl_T2F_IUI_N3F_V3F
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_IUI_V2F :: GLenum
 gl_IUI_V2F = 0x81AD
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexFunc.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexFunc.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexFunc.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexFunc.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_index_func extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_index_func extension, see
 -- <http://www.opengl.org/registry/specs/EXT/index_func.txt>.
 --
 --------------------------------------------------------------------------------
@@ -24,7 +23,7 @@
    gl_INDEX_TEST_REF
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexMaterial.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexMaterial.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexMaterial.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/IndexMaterial.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_index_material extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_index_material extension, see
 -- <http://www.opengl.org/registry/specs/EXT/index_material.txt>.
 --
 --------------------------------------------------------------------------------
@@ -24,7 +23,7 @@
    gl_INDEX_MATERIAL_FACE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/LightTexture.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/LightTexture.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/LightTexture.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/LightTexture.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_light_texture extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_light_texture extension, see
 -- <http://www.opengl.org/registry/specs/EXT/light_texture.txt>.
 --
 --------------------------------------------------------------------------------
@@ -34,7 +33,7 @@
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/MultiDrawArrays.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/MultiDrawArrays.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/MultiDrawArrays.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.MultiDrawArrays
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_multi_draw_arrays extension, see
+-- <http://www.opengl.org/registry/specs/EXT/multi_draw_arrays.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.MultiDrawArrays (
+   -- * Functions
+   glMultiDrawArrays,
+   glMultiDrawElements
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Multisample.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Multisample.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/Multisample.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Multisample.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_multisample extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_multisample extension, see
 -- <http://www.opengl.org/registry/specs/EXT/multisample.txt>.
 --
 --------------------------------------------------------------------------------
@@ -20,8 +19,10 @@
    glSampleMask,
    glSamplePattern,
    -- * Tokens
+   gl_MULTISAMPLE,
    gl_SAMPLE_ALPHA_TO_MASK,
-   gl_SAMPLE_MASK,
+   gl_SAMPLE_ALPHA_TO_ONE,
+   gl_SAMPLE_MASK_EXT,
    gl_MULTISAMPLE_BIT,
    gl_1PASS,
    gl_2PASS_0,
@@ -30,13 +31,15 @@
    gl_4PASS_1,
    gl_4PASS_2,
    gl_4PASS_3,
-   gl_SAMPLE_MASK_VALUE,
+   gl_SAMPLE_BUFFERS,
+   gl_SAMPLES,
+   gl_SAMPLE_MASK_VALUE_EXT,
    gl_SAMPLE_MASK_INVERT,
    gl_SAMPLE_PATTERN
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
@@ -50,8 +53,9 @@
 gl_SAMPLE_ALPHA_TO_MASK :: GLenum
 gl_SAMPLE_ALPHA_TO_MASK = 0x809E
 
-gl_SAMPLE_MASK :: GLenum
-gl_SAMPLE_MASK = 0x80A0
+-- | Note: We use the EXT suffix here, because the name clashes with the ARB_texture_multisample extension.
+gl_SAMPLE_MASK_EXT :: GLenum
+gl_SAMPLE_MASK_EXT = 0x80A0
 
 gl_1PASS :: GLenum
 gl_1PASS = 0x80A1
@@ -74,8 +78,9 @@
 gl_4PASS_3 :: GLenum
 gl_4PASS_3 = 0x80A7
 
-gl_SAMPLE_MASK_VALUE :: GLenum
-gl_SAMPLE_MASK_VALUE = 0x80AA
+-- | Note: We use the EXT suffix here, because the name clashes with the ARB_texture_multisample extension.
+gl_SAMPLE_MASK_VALUE_EXT :: GLenum
+gl_SAMPLE_MASK_VALUE_EXT = 0x80AA
 
 gl_SAMPLE_MASK_INVERT :: GLenum
 gl_SAMPLE_MASK_INVERT = 0x80AB
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/PackedFloat.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/PackedFloat.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/PackedFloat.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/PackedFloat.hs
@@ -19,7 +19,7 @@
    gl_RGBA_SIGNED_COMPONENTS
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_RGBA_SIGNED_COMPONENTS :: GLenum
 gl_RGBA_SIGNED_COMPONENTS = 0x8C3C
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/PackedPixels.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/PackedPixels.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/PackedPixels.hs
@@ -0,0 +1,25 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.PackedPixels
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the EXT_packed_pixel extension, see
+-- <http://www.opengl.org/registry/specs/EXT/packed_pixel.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.PackedPixels (
+   -- * Tokens
+   gl_UNSIGNED_BYTE_3_3_2,
+   gl_UNSIGNED_SHORT_4_4_4_4,
+   gl_UNSIGNED_SHORT_5_5_5_1,
+   gl_UNSIGNED_INT_8_8_8_8,
+   gl_UNSIGNED_INT_10_10_10_2
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/PalettedTexture.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/PalettedTexture.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/PalettedTexture.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/PalettedTexture.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_paletted_texture extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_paletted_texture extension, see
 -- <http://www.opengl.org/registry/specs/EXT/paletted_texture.txt>.
 --
 --------------------------------------------------------------------------------
@@ -36,11 +35,19 @@
    gl_COLOR_TABLE_ALPHA_SIZE,
    gl_COLOR_TABLE_LUMINANCE_SIZE,
    gl_COLOR_TABLE_INTENSITY_SIZE,
-   gl_TEXTURE_INDEX_SIZE
+   gl_TEXTURE_INDEX_SIZE,
+   gl_TEXTURE_1D,
+   gl_TEXTURE_2D,
+   gl_TEXTURE_3D,
+   gl_TEXTURE_CUBE_MAP,
+   gl_PROXY_TEXTURE_1D,
+   gl_PROXY_TEXTURE_2D,
+   gl_PROXY_TEXTURE_3D,
+   gl_PROXY_TEXTURE_CUBE_MAP
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_COLOR_INDEX1 :: GLenum
 gl_COLOR_INDEX1 = 0x80E2
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/PerturbNormal.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/PerturbNormal.hs
deleted file mode 100644
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/PerturbNormal.hs
+++ /dev/null
@@ -1,40 +0,0 @@
-{-# LANGUAGE ForeignFunctionInterface, CPP #-}
---------------------------------------------------------------------------------
--- |
--- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.PerturbNormal
--- Copyright   :  (c) Sven Panne 2009
--- License     :  BSD-style (see the file LICENSE)
---
--- Maintainer  :  sven.panne@aedion.de
--- Stability   :  stable
--- Portability :  portable
---
--- All raw functions and tokens from the EXT_perturb_normal extension not
--- already in the OpenGL 3.1 core, see
--- <http://www.opengl.org/registry/specs/EXT/perturb_normal.txt>.
---
---------------------------------------------------------------------------------
-
-module Graphics.Rendering.OpenGL.Raw.EXT.PerturbNormal (
-   -- * Functions
-   glTextureNormal,
-   -- * Tokens
-   gl_PERTURB,
-   gl_TEXTURE_NORMAL
-) where
-
-import Graphics.Rendering.OpenGL.Raw.Core31
-import Graphics.Rendering.OpenGL.Raw.Extensions
-
-#include "HsOpenGLRaw.h"
-
-extensionNameString :: String
-extensionNameString = "GL_EXT_perturb_normal"
-
-EXTENSION_ENTRY(glTextureNormal,GLenum -> IO ())
-
-gl_PERTURB :: GLenum
-gl_PERTURB = 0x85AE
-
-gl_TEXTURE_NORMAL :: GLenum
-gl_TEXTURE_NORMAL = 0x85AF
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/PixelTransform.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/PixelTransform.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/PixelTransform.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/PixelTransform.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_pixel_transform extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_pixel_transform extension, see
 -- <http://www.opengl.org/registry/specs/EXT/pixel_transform.txt>.
 --
 --------------------------------------------------------------------------------
@@ -36,7 +35,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/PointParameters.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/PointParameters.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/PointParameters.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/PointParameters.hs
@@ -8,17 +8,24 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_point_parameters extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_point_parameters extension, see
 -- <http://www.opengl.org/registry/specs/EXT/point_parameters.txt>.
 --
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.EXT.PointParameters (
+   -- * Functions
+   glPointParameterf,
+   glPointParameterfv,
    -- * Tokens
    gl_POINT_SIZE_MIN,
    gl_POINT_SIZE_MAX,
-   gl_POINT_DISTANCE_ATTENUATION
+   gl_POINT_FADE_THRESHOLD_SIZE,
+   gl_DISTANCE_ATTENUATION
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_DISTANCE_ATTENUATION :: GLenum
+gl_DISTANCE_ATTENUATION = gl_POINT_DISTANCE_ATTENUATION
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/PolygonOffset.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/PolygonOffset.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/PolygonOffset.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/PolygonOffset.hs
@@ -8,18 +8,19 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_polygon_offset extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_polygon_offset extension, see
 --  <http://www.opengl.org/registry/specs/EXT/polygon_offset.txt>.
 --
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.EXT.PolygonOffset (
+   -- * Functions
+   glPolygonOffset,
    -- * Tokens
    gl_POLYGON_OFFSET_BIAS
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_POLYGON_OFFSET_BIAS :: GLenum
 gl_POLYGON_OFFSET_BIAS = 0x8039
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/ProvokingVertex.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/ProvokingVertex.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/ProvokingVertex.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/ProvokingVertex.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE ForeignFunctionInterface, CPP #-}
 --------------------------------------------------------------------------------
 -- |
 -- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.ProvokingVertex
@@ -9,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_provoking_vertex extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_provoking_vertex, see
 -- <http://www.opengl.org/registry/specs/EXT/EXT_provoking_vertex.txt>.
 --
 --------------------------------------------------------------------------------
@@ -25,24 +23,4 @@
    gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
-import Graphics.Rendering.OpenGL.Raw.Extensions
-
-#include "HsOpenGLRaw.h"
-
-extensionNameString :: String
-extensionNameString = "GL_EXT_provoking_vertex"
-
-EXTENSION_ENTRY(glProvokingVertex,GLenum -> IO ())
-
-gl_FIRST_VERTEX_CONVENTION :: GLenum
-gl_FIRST_VERTEX_CONVENTION = 0x8E4D
-
-gl_LAST_VERTEX_CONVENTION :: GLenum
-gl_LAST_VERTEX_CONVENTION = 0x8E4E
-
-gl_PROVOKING_VERTEX :: GLenum
-gl_PROVOKING_VERTEX = 0x8E4F
-
-gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION :: GLenum
-gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C
+import Graphics.Rendering.OpenGL.Raw.ARB.ProvokingVertex
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/RescaleNormal.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/RescaleNormal.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/RescaleNormal.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/RescaleNormal.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_rescale_normal extension not
--- already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_rescale_normal extension, see
 -- <http://www.opengl.org/registry/specs/EXT/rescale_normal.txt>.
 --
 --------------------------------------------------------------------------------
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/SceneMarker.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/SceneMarker.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/SceneMarker.hs
@@ -0,0 +1,31 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.SceneMarker
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions from the EXT_scene_marker extension, see
+-- <http://www.opengl.org/registry/specs/EXT/scene_marker.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.SceneMarker (
+   -- * Functions
+   glBeginScene,
+   glEndScene
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_EXT_scene_marker"
+
+EXTENSION_ENTRY(glBeginScene,IO ())
+EXTENSION_ENTRY(glEndScene,IO ())
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/SecondaryColor.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/SecondaryColor.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/SecondaryColor.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/SecondaryColor.hs
@@ -8,14 +8,13 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_secondary_color extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_secondary_color extension, see
 -- <http://www.opengl.org/registry/specs/EXT/secondary_color.txt>.
 --
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.EXT.SecondaryColor (
-   -- * Tokens
+   -- * Functions
    glSecondaryColor3b,
    glSecondaryColor3s,
    glSecondaryColor3i,
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/SeparateSpecularColor.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/SeparateSpecularColor.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/SeparateSpecularColor.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/SeparateSpecularColor.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_separate_specular_color extension
--- not already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_separate_specular_color extension, see
 -- <http://www.opengl.org/registry/specs/EXT/separate_specular_color.txt>.
 --
 --------------------------------------------------------------------------------
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/SharedTexturePalette.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/SharedTexturePalette.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/SharedTexturePalette.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/SharedTexturePalette.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_shared_texture_palette extension
--- not already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_shared_texture_palette extension, see
 -- <http://www.opengl.org/registry/specs/EXT/shared_texture_palette.txt>.
 --
 --------------------------------------------------------------------------------
@@ -19,7 +18,7 @@
    gl_SHARED_TEXTURE_PALETTE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_SHARED_TEXTURE_PALETTE :: GLenum
 gl_SHARED_TEXTURE_PALETTE = 0x81FB
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilClearTag.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilClearTag.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilClearTag.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilClearTag.hs
@@ -23,7 +23,7 @@
    gl_STENCIL_CLEAR_TAG_VALUE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilTwoSide.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilTwoSide.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilTwoSide.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilTwoSide.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_stencil_two_side extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_stencil_two_side extension, see
 -- <http://www.opengl.org/registry/specs/EXT/stencil_two_side.txt>.
 --
 --------------------------------------------------------------------------------
@@ -23,7 +22,7 @@
    gl_ACTIVE_STENCIL_FACE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilWrap.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilWrap.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/StencilWrap.hs
@@ -0,0 +1,23 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.StencilWrap
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the EXT_stencil_wrap extension, see
+-- <http://www.opengl.org/registry/specs/EXT/stencil_wrap.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.StencilWrap (
+   -- * Tokens
+   gl_INCR_WRAP,
+   gl_DECR_WRAP
+
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Subtexture.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Subtexture.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Subtexture.hs
@@ -0,0 +1,23 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.Subtexture
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions from the EXT_subtexture extension, see
+-- <http://www.opengl.org/registry/specs/EXT/subtexture.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.Subtexture (
+   -- * Functions
+   glTexSubImage1D,
+   glTexSubImage2D,
+   glTexSubImage3D
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Texture.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Texture.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/Texture.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Texture.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_texture extension not already in
--- the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_texture extension, see
 -- <http://www.opengl.org/registry/specs/EXT/texture.txt>.
 --
 --------------------------------------------------------------------------------
@@ -36,12 +35,36 @@
    gl_INTENSITY12,
    gl_INTENSITY16,
    gl_RGB2,
+   gl_RGB4,
+   gl_RGB5,
+   gl_RGB8,
+   gl_RGB10,
+   gl_RGB12,
+   gl_RGB16,
+   gl_RGBA2,
+   gl_RGBA4,
+   gl_RGB5_A1,
+   gl_RGBA8,
+   gl_RGB10_A2,
+   gl_RGBA12,
+   gl_RGBA16,
+   gl_TEXTURE_RED_SIZE,
+   gl_TEXTURE_GREEN_SIZE,
+   gl_TEXTURE_BLUE_SIZE,
+   gl_TEXTURE_ALPHA_SIZE,
    gl_TEXTURE_LUMINANCE_SIZE,
-   gl_TEXTURE_INTENSITY_SIZE
+   gl_TEXTURE_INTENSITY_SIZE,
+   gl_REPLACE,
+   gl_PROXY_TEXTURE_1D,
+   gl_PROXY_TEXTURE_2D,
+   gl_TEXTURE_TOO_LARGE
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_RGB2 :: GLenum
 gl_RGB2 = 0x804E
+
+gl_TEXTURE_TOO_LARGE :: GLenum
+gl_TEXTURE_TOO_LARGE = 0x8065
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/Texture3D.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/Texture3D.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/Texture3D.hs
@@ -0,0 +1,31 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.Texture3D
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_texture3d extension, see
+-- <http://www.opengl.org/registry/specs/EXT/texture3d.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.Texture3D (
+   -- * Functions
+   glTexImage3D,
+   -- * Tokens
+   gl_PACK_SKIP_IMAGES,
+   gl_PACK_IMAGE_HEIGHT,
+   gl_UNPACK_SKIP_IMAGES,
+   gl_UNPACK_IMAGE_HEIGHT,
+   gl_TEXTURE_3D,
+   gl_PROXY_TEXTURE_3D,
+   gl_TEXTURE_DEPTH,
+   gl_TEXTURE_WRAP_R,
+   gl_MAX_3D_TEXTURE_SIZE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionLatc.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionLatc.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionLatc.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionLatc.hs
@@ -22,7 +22,7 @@
    gl_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_COMPRESSED_LUMINANCE_LATC1 :: GLenum
 gl_COMPRESSED_LUMINANCE_LATC1 = 0x8C70
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionS3tc.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionS3tc.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionS3tc.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureCompressionS3tc.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_texture_compression_s3tc extension
--- not already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_texture_compression_s3tc extension, see
 -- <http://www.opengl.org/registry/specs/EXT/texture_compression_s3tc.txt>.
 --
 --------------------------------------------------------------------------------
@@ -22,7 +21,7 @@
    gl_COMPRESSED_RGBA_S3TC_DXT5
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_COMPRESSED_RGB_S3TC_DXT1 :: GLenum
 gl_COMPRESSED_RGB_S3TC_DXT1 = 0x83F0
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvAdd.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvAdd.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvAdd.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvAdd.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_texture_env_add extension not
--- already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_texture_env_add extension, see
 -- <http://www.opengl.org/registry/specs/EXT/texture_env_add.txt>.
 --
 --------------------------------------------------------------------------------
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvCombine.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvCombine.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvCombine.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureEnvCombine.hs
@@ -32,9 +32,6 @@
    gl_OPERAND1_ALPHA,
    gl_OPERAND2_ALPHA,
    gl_RGB_SCALE,
-   gl_ALPHA_SCALE,
-   gl_MODULATE,
-   gl_ADD,
    gl_ADD_SIGNED,
    gl_INTERPOLATE,
    gl_CONSTANT,
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureFilterAnisotropic.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureFilterAnisotropic.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureFilterAnisotropic.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureFilterAnisotropic.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_texture_filter_anisotropic
--- extension not already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_texture_filter_anisotropic, see
 -- <http://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt>.
 --
 --------------------------------------------------------------------------------
@@ -20,7 +19,7 @@
    gl_MAX_TEXTURE_MAX_ANISOTROPY
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_TEXTURE_MAX_ANISOTROPY :: GLenum
 gl_TEXTURE_MAX_ANISOTROPY = 0x84FE
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureInteger.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureInteger.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureInteger.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureInteger.hs
@@ -50,7 +50,7 @@
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureLodBias.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureLodBias.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureLodBias.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureLodBias.hs
@@ -8,15 +8,17 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_texture_lod_bias extension not
--- already in the OpenGL 3.1 core, see
+-- All tokens from the EXT_texture_lod_bias extension, see
 -- <http://www.opengl.org/registry/specs/EXT/texture_lod_bias.txt>.
 --
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.EXT.TextureLodBias (
    -- * Tokens
-   gl_TEXTURE_FILTER_CONTROL
+   gl_TEXTURE_FILTER_CONTROL,
+   gl_TEXTURE_LOD_BIAS,
+   gl_MAX_TEXTURE_LOD_BIAS
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureMirrorClamp.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureMirrorClamp.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureMirrorClamp.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureMirrorClamp.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_texture_mirror_clamp extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_texture_mirror_clamp extension, see
 -- <http://www.opengl.org/registry/specs/EXT/texture_mirror_clamp.txt>.
 --
 --------------------------------------------------------------------------------
@@ -21,7 +20,7 @@
   gl_MIRROR_CLAMP_TO_BORDER
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_MIRROR_CLAMP :: GLenum
 gl_MIRROR_CLAMP = 0x8742
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureObject.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureObject.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureObject.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureObject.hs
@@ -8,19 +8,35 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_texture_object extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_texture_object extension, see
 -- <http://www.opengl.org/registry/specs/EXT/texture_object.txt>.
 --
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.EXT.TextureObject (
    -- * Functions
+   glGenTextures,
+   glDeleteTextures,
+   glBindTexture,
    glPrioritizeTextures,
    glAreTexturesResident,
+   glIsTexture,
    -- * Tokens
    gl_TEXTURE_PRIORITY,
-   gl_TEXTURE_RESIDENT
+   gl_TEXTURE_RESIDENT,
+   gl_TEXTURE_1D_BINDING,
+   gl_TEXTURE_2D_BINDING,
+   gl_TEXTURE_3D_BINDING
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_TEXTURE_1D_BINDING :: GLenum
+gl_TEXTURE_1D_BINDING = gl_TEXTURE_BINDING_1D
+
+gl_TEXTURE_2D_BINDING :: GLenum
+gl_TEXTURE_2D_BINDING = gl_TEXTURE_BINDING_2D
+
+gl_TEXTURE_3D_BINDING :: GLenum
+gl_TEXTURE_3D_BINDING = gl_TEXTURE_BINDING_3D
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TexturePerturbNormal.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TexturePerturbNormal.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TexturePerturbNormal.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.TexturePerturbNormal
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the EXT_texture_perturb_normal, see
+-- <http://www.opengl.org/registry/specs/EXT/perturb_normal.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.EXT.TexturePerturbNormal (
+   -- * Functions
+   glTextureNormal,
+   -- * Tokens
+   gl_PERTURB,
+   gl_TEXTURE_NORMAL
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_EXT_texture_perturb_normal"
+
+EXTENSION_ENTRY(glTextureNormal,GLenum -> IO ())
+
+gl_PERTURB :: GLenum
+gl_PERTURB = 0x85AE
+
+gl_TEXTURE_NORMAL :: GLenum
+gl_TEXTURE_NORMAL = 0x85AF
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSRGB.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSRGB.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSRGB.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSRGB.hs
@@ -29,7 +29,7 @@
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_COMPRESSED_SRGB_S3TC_DXT1 :: GLenum
 gl_COMPRESSED_SRGB_S3TC_DXT1 = 0x8C4C
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSwizzle.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSwizzle.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSwizzle.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TextureSwizzle.hs
@@ -22,7 +22,7 @@
    gl_TEXTURE_SWIZZLE_A
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_TEXTURE_SWIZZLE_R :: GLenum
 gl_TEXTURE_SWIZZLE_R = 0x8E42
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/TimerQuery.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/TimerQuery.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/TimerQuery.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/TimerQuery.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_timer_query extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions, tokens and type from the EXT_timer_query extension, see
 -- <http://www.opengl.org/registry/specs/EXT/timer_query.txt>.
 --
 --------------------------------------------------------------------------------
@@ -26,9 +25,9 @@
    GLuint64
 ) where
 
-import Foreign.C.Types
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.ARB.Sync
+import Graphics.Rendering.OpenGL.Raw.Core31.Types
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
@@ -41,6 +40,3 @@
 
 gl_TIME_ELAPSED :: GLenum
 gl_TIME_ELAPSED = 0x88BF
-
-type GLint64 = CLLong
-type GLuint64 = CULLong
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexArray.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexArray.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexArray.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexArray.hs
@@ -8,21 +8,21 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_vertex_array extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_vertex_array extension, see
 -- <http://www.opengl.org/registry/specs/EXT/vertex_array.txt>.
 --
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.EXT.VertexArray (
    -- * Functions
-   glArrayElement,
+   glDrawArrays,
    glVertexPointer,
    glNormalPointer,
    glColorPointer,
    glIndexPointer,
    glTexCoordPointer,
    glEdgeFlagPointer,
+   glGetPointerv,
    -- * Tokens
    gl_VERTEX_ARRAY,
    gl_NORMAL_ARRAY,
@@ -30,6 +30,7 @@
    gl_INDEX_ARRAY,
    gl_TEXTURE_COORD_ARRAY,
    gl_EDGE_FLAG_ARRAY,
+   gl_DOUBLE,
    gl_VERTEX_ARRAY_SIZE,
    gl_VERTEX_ARRAY_TYPE,
    gl_VERTEX_ARRAY_STRIDE,
@@ -59,3 +60,4 @@
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexShader.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexShader.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexShader.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexShader.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_vertex_shader extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_vertex_shader extension, see
 -- <http://www.opengl.org/registry/specs/EXT/vertex_shader.txt>.
 --
 --------------------------------------------------------------------------------
@@ -60,6 +59,7 @@
    glGetLocalConstantIntegerv,
    glGetLocalConstantFloatv,
    -- * Tokens
+   gl_VERTEX_SHADER,
    gl_VARIANT_VALUE,
    gl_VARIANT_DATATYPE,
    gl_VARIANT_ARRAY_STRIDE,
@@ -162,6 +162,8 @@
    gl_NEGATIVE_Y,
    gl_NEGATIVE_Z,
    gl_NEGATIVE_W,
+   gl_ZERO,
+   gl_ONE,
    gl_NEGATIVE_ONE,
    gl_NORMALIZED_RANGE,
    gl_FULL_RANGE,
@@ -170,7 +172,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexWeighting.hs b/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexWeighting.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexWeighting.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/EXT/VertexWeighting.hs
@@ -9,8 +9,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the EXT_vertex_weighting extension not
--- already in the OpenGL 3.1 core, see
+-- All raw functions and tokens from the EXT_vertex_weighting extension, see
 -- <http://www.opengl.org/registry/specs/EXT/vertex_weighting.txt>.
 --
 --------------------------------------------------------------------------------
@@ -38,7 +37,7 @@
 
 import Foreign.Ptr
 import Graphics.Rendering.OpenGL.Raw.ARB.VertexBlend
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV.hs b/src/Graphics/Rendering/OpenGL/Raw/NV.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV.hs
@@ -13,39 +13,103 @@
 --------------------------------------------------------------------------------
 
 module Graphics.Rendering.OpenGL.Raw.NV (
-   module Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor,
-   module Graphics.Rendering.OpenGL.Raw.NV.DepthClamp,
-   module Graphics.Rendering.OpenGL.Raw.NV.Fence,
-   module Graphics.Rendering.OpenGL.Raw.NV.FogDistance,
+   module Graphics.Rendering.OpenGL.Raw.NV.TexgenReflection,
    module Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent,
-   module Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint,
-   module Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery,
-   module Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart,
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange,
    module Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners,
-   module Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2,
+   module Graphics.Rendering.OpenGL.Raw.NV.FogDistance,
    module Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss,
-   module Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc,
+   -- module Graphics.Rendering.OpenGL.Raw.NV.BlendSquare,
    module Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4,
+   module Graphics.Rendering.OpenGL.Raw.NV.Fence,
+   -- module Graphics.Rendering.OpenGL.Raw.NV.Evaluators,
+   module Graphics.Rendering.OpenGL.Raw.NV.PackedDepthStencil,
+   module Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureRectangle,
    module Graphics.Rendering.OpenGL.Raw.NV.TextureShader,
    module Graphics.Rendering.OpenGL.Raw.NV.TextureShader2,
-   module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange,
-   module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2,
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram,
+   module Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor,
+   module Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint,
+   module Graphics.Rendering.OpenGL.Raw.NV.DepthClamp,
+   module Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery,
+   module Graphics.Rendering.OpenGL.Raw.NV.PointSprite,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureShader3,
+   -- module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram11,
+   module Graphics.Rendering.OpenGL.Raw.NV.FloatBuffer,
+   module Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram,
+   module Graphics.Rendering.OpenGL.Raw.NV.HalfFloat,
+   module Graphics.Rendering.OpenGL.Raw.NV.PixelDataRange,
+   module Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart,
+   module Graphics.Rendering.OpenGL.Raw.NV.TextureExpandNormal,
+   -- module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram2,
+   -- module Graphics.Rendering.OpenGL.Raw.NV.FragmentProgramOption,
+   module Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram2,
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram2Option,
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram3,
+   module Graphics.Rendering.OpenGL.Raw.NV.GpuProgram4,
+   module Graphics.Rendering.OpenGL.Raw.NV.GeometryProgram4,
+   module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram4,
+   module Graphics.Rendering.OpenGL.Raw.NV.DepthBufferFloat,
+   -- module Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram4,
+   module Graphics.Rendering.OpenGL.Raw.NV.FramebufferMultisampleCoverage,
+   -- module Graphics.Rendering.OpenGL.Raw.NV.GeometryShader4,
+   module Graphics.Rendering.OpenGL.Raw.NV.ParameterBufferObject,
+   module Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback,
+   module Graphics.Rendering.OpenGL.Raw.NV.ConditionalRender,
+   module Graphics.Rendering.OpenGL.Raw.NV.PresentVideo,
+   module Graphics.Rendering.OpenGL.Raw.NV.ExplicitMultisample,
+   module Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback2
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor
-import Graphics.Rendering.OpenGL.Raw.NV.DepthClamp
-import Graphics.Rendering.OpenGL.Raw.NV.Fence
-import Graphics.Rendering.OpenGL.Raw.NV.FogDistance
+import Graphics.Rendering.OpenGL.Raw.NV.TexgenReflection
 import Graphics.Rendering.OpenGL.Raw.NV.LightMaxExponent
-import Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint
-import Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery
-import Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart
+import Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange
 import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
-import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2
+import Graphics.Rendering.OpenGL.Raw.NV.FogDistance
 import Graphics.Rendering.OpenGL.Raw.NV.TexgenEmboss
-import Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc
+-- import Graphics.Rendering.OpenGL.Raw.NV.BlendSquare
 import Graphics.Rendering.OpenGL.Raw.NV.TextureEnvCombine4
+import Graphics.Rendering.OpenGL.Raw.NV.Fence
+-- import Graphics.Rendering.OpenGL.Raw.NV.Evaluators
+import Graphics.Rendering.OpenGL.Raw.NV.PackedDepthStencil
+import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners2
+import Graphics.Rendering.OpenGL.Raw.NV.TextureCompressionVtc
+import Graphics.Rendering.OpenGL.Raw.NV.TextureRectangle
 import Graphics.Rendering.OpenGL.Raw.NV.TextureShader
 import Graphics.Rendering.OpenGL.Raw.NV.TextureShader2
-import Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange
 import Graphics.Rendering.OpenGL.Raw.NV.VertexArrayRange2
+import Graphics.Rendering.OpenGL.Raw.NV.VertexProgram
+import Graphics.Rendering.OpenGL.Raw.NV.CopyDepthToColor
+import Graphics.Rendering.OpenGL.Raw.NV.MultisampleFilterHint
+import Graphics.Rendering.OpenGL.Raw.NV.DepthClamp
+import Graphics.Rendering.OpenGL.Raw.NV.OcclusionQuery
+import Graphics.Rendering.OpenGL.Raw.NV.PointSprite
+import Graphics.Rendering.OpenGL.Raw.NV.TextureShader3
+-- import Graphics.Rendering.OpenGL.Raw.NV.VertexProgram11
+import Graphics.Rendering.OpenGL.Raw.NV.FloatBuffer
+import Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram
+import Graphics.Rendering.OpenGL.Raw.NV.HalfFloat
+import Graphics.Rendering.OpenGL.Raw.NV.PixelDataRange
+import Graphics.Rendering.OpenGL.Raw.NV.PrimitiveRestart
+import Graphics.Rendering.OpenGL.Raw.NV.TextureExpandNormal
+-- import Graphics.Rendering.OpenGL.Raw.NV.VertexProgram2
+-- import Graphics.Rendering.OpenGL.Raw.NV.FragmentProgramOption
+import Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram2
+import Graphics.Rendering.OpenGL.Raw.NV.VertexProgram2Option
+import Graphics.Rendering.OpenGL.Raw.NV.VertexProgram3
+import Graphics.Rendering.OpenGL.Raw.NV.GpuProgram4
+import Graphics.Rendering.OpenGL.Raw.NV.GeometryProgram4
+import Graphics.Rendering.OpenGL.Raw.NV.VertexProgram4
+import Graphics.Rendering.OpenGL.Raw.NV.DepthBufferFloat
+-- import Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram4
+import Graphics.Rendering.OpenGL.Raw.NV.FramebufferMultisampleCoverage
+-- import Graphics.Rendering.OpenGL.Raw.NV.GeometryShader4
+import Graphics.Rendering.OpenGL.Raw.NV.ParameterBufferObject
+import Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback
+import Graphics.Rendering.OpenGL.Raw.NV.ConditionalRender
+import Graphics.Rendering.OpenGL.Raw.NV.PresentVideo
+import Graphics.Rendering.OpenGL.Raw.NV.ExplicitMultisample
+import Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback2
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/ConditionalRender.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/ConditionalRender.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/ConditionalRender.hs
@@ -0,0 +1,27 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.ConditionalRender
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_conditional_render extension, see
+-- <http://www.opengl.org/registry/specs/NV/conditional_render.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.ConditionalRender (
+   -- * Functions
+   glBeginConditionalRender,
+   glEndConditionalRender,
+   -- * Tokens
+   gl_QUERY_WAIT,
+   gl_QUERY_NO_WAIT,
+   gl_QUERY_BY_REGION_WAIT,
+   gl_QUERY_BY_REGION_NO_WAIT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/CopyDepthToColor.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/CopyDepthToColor.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/CopyDepthToColor.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/CopyDepthToColor.hs
@@ -20,7 +20,7 @@
    gl_DEPTH_STENCIL_TO_BGRA
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_DEPTH_STENCIL_TO_RGBA :: GLenum
 gl_DEPTH_STENCIL_TO_RGBA = 0x886E
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/DepthBufferFloat.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/DepthBufferFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/DepthBufferFloat.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.DepthBufferFloat
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_depth_buffer_float extension, see
+-- <http://www.opengl.org/registry/specs/NV/NV_depth_buffer_float.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.DepthBufferFloat (
+   -- * Functions
+   glDepthRanged,
+   glClearDepthd,
+   glDepthBoundsd,
+   -- * Tokens
+   gl_DEPTH_COMPONENT32F,
+   gl_DEPTH32F_STENCIL8,
+   gl_FLOAT_32_UNSIGNED_INT_24_8_REV,
+   gl_DEPTH_BUFFER_FLOAT_MODE
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_depth_buffer_float"
+
+EXTENSION_ENTRY(glDepthRanged,GLdouble -> GLdouble -> IO ())
+EXTENSION_ENTRY(glClearDepthd,GLdouble -> IO ())
+EXTENSION_ENTRY(glDepthBoundsd,GLdouble -> GLdouble -> IO ())
+
+gl_DEPTH_BUFFER_FLOAT_MODE :: GLenum
+gl_DEPTH_BUFFER_FLOAT_MODE = 0x8DAF
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/DepthClamp.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/DepthClamp.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/DepthClamp.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/DepthClamp.hs
@@ -8,8 +8,7 @@
 -- Stability   :  stable
 -- Portability :  portable
 --
--- All raw functions and tokens from the NV_depth_clamp extension not
--- already in the OpenGL 3.1 core, see
+-- All tokens from the NV_depth_clamp extension, see
 -- <http://www.opengl.org/registry/specs/NV/depth_clamp.txt>.
 --
 --------------------------------------------------------------------------------
@@ -19,7 +18,4 @@
    gl_DEPTH_CLAMP
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
-
-gl_DEPTH_CLAMP :: GLenum
-gl_DEPTH_CLAMP = 0x864F
+import Graphics.Rendering.OpenGL.Raw.ARB.DepthClamp
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/ExplicitMultisample.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/ExplicitMultisample.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/ExplicitMultisample.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.ExplicitMultisample
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_explicit_multisample extension, see
+-- <http://www.opengl.org/registry/specs/NV/explicit_multisample.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.ExplicitMultisample (
+   -- * Functions
+   glGetBooleanIndexedv,
+   glGetIntegerIndexedv,
+   glGetMultisamplefv,
+   glSampleMaskIndexed,
+   glTexRenderbuffer,
+   -- * Tokens
+   gl_SAMPLE_POSITION,
+   gl_SAMPLE_MASK,
+   gl_SAMPLE_MASK_VALUE,
+   gl_TEXTURE_BINDING_RENDERBUFFER,
+   gl_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING,
+   gl_MAX_SAMPLE_MASK_WORDS,
+   gl_TEXTURE_RENDERBUFFER,
+   gl_SAMPLER_RENDERBUFFER,
+   gl_INT_SAMPLER_RENDERBUFFER,
+   gl_UNSIGNED_INT_SAMPLER_RENDERBUFFER
+) where
+
+import Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_explicit_multisample"
+
+EXTENSION_ENTRY(glSampleMaskIndexed,GLuint -> GLbitfield -> IO ())
+EXTENSION_ENTRY(glTexRenderbuffer,GLenum -> GLuint -> IO ())
+
+gl_TEXTURE_BINDING_RENDERBUFFER :: GLenum
+gl_TEXTURE_BINDING_RENDERBUFFER = 0x8E53
+
+gl_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING :: GLenum
+gl_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING = 0x8E54
+
+gl_TEXTURE_RENDERBUFFER :: GLenum
+gl_TEXTURE_RENDERBUFFER = 0x8E55
+
+gl_SAMPLER_RENDERBUFFER :: GLenum
+gl_SAMPLER_RENDERBUFFER = 0x8E56
+
+gl_INT_SAMPLER_RENDERBUFFER :: GLenum
+gl_INT_SAMPLER_RENDERBUFFER = 0x8E57
+
+gl_UNSIGNED_INT_SAMPLER_RENDERBUFFER :: GLenum
+gl_UNSIGNED_INT_SAMPLER_RENDERBUFFER = 0x8E58
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/Fence.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/Fence.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/Fence.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/Fence.hs
@@ -30,7 +30,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/FloatBuffer.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/FloatBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/FloatBuffer.hs
@@ -0,0 +1,80 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.FloatBuffer
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_float_buffer extension, see
+-- <http://www.opengl.org/registry/specs/NV/float_buffer.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.FloatBuffer (
+   -- * Tokens
+   gl_FLOAT_R,
+   gl_FLOAT_RG,
+   gl_FLOAT_RGB,
+   gl_FLOAT_RGBA,
+   gl_FLOAT_R16,
+   gl_FLOAT_R32,
+   gl_FLOAT_RG16,
+   gl_FLOAT_RG32,
+   gl_FLOAT_RGB16,
+   gl_FLOAT_RGB32,
+   gl_FLOAT_RGBA16,
+   gl_FLOAT_RGBA32,
+   gl_TEXTURE_FLOAT_COMPONENTS,
+   gl_FLOAT_CLEAR_COLOR_VALUE,
+   gl_FLOAT_RGBA_MODE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_FLOAT_R :: GLenum
+gl_FLOAT_R = 0x8880
+
+gl_FLOAT_RG :: GLenum
+gl_FLOAT_RG = 0x8881
+
+gl_FLOAT_RGB :: GLenum
+gl_FLOAT_RGB = 0x8882
+
+gl_FLOAT_RGBA :: GLenum
+gl_FLOAT_RGBA = 0x8883
+
+gl_FLOAT_R16 :: GLenum
+gl_FLOAT_R16 = 0x8884
+
+gl_FLOAT_R32 :: GLenum
+gl_FLOAT_R32 = 0x8885
+
+gl_FLOAT_RG16 :: GLenum
+gl_FLOAT_RG16 = 0x8886
+
+gl_FLOAT_RG32 :: GLenum
+gl_FLOAT_RG32 = 0x8887
+
+gl_FLOAT_RGB16 :: GLenum
+gl_FLOAT_RGB16 = 0x8888
+
+gl_FLOAT_RGB32 :: GLenum
+gl_FLOAT_RGB32 = 0x8889
+
+gl_FLOAT_RGBA16 :: GLenum
+gl_FLOAT_RGBA16 = 0x888A
+
+gl_FLOAT_RGBA32 :: GLenum
+gl_FLOAT_RGBA32 = 0x888B
+
+gl_TEXTURE_FLOAT_COMPONENTS :: GLenum
+gl_TEXTURE_FLOAT_COMPONENTS = 0x888C
+
+gl_FLOAT_CLEAR_COLOR_VALUE :: GLenum
+gl_FLOAT_CLEAR_COLOR_VALUE = 0x888D
+
+gl_FLOAT_RGBA_MODE :: GLenum
+gl_FLOAT_RGBA_MODE = 0x888E
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/FogDistance.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/FogDistance.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/FogDistance.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/FogDistance.hs
@@ -23,7 +23,7 @@
 ) where
 
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_FOG_DISTANCE_MODE :: GLenum
 gl_FOG_DISTANCE_MODE = 0x855A
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/FragmentProgram.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/FragmentProgram.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/FragmentProgram.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_fragment_program extension, see
+-- <http://www.opengl.org/registry/specs/NV/fragment_program.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram (
+   -- * Functions
+   glProgramNamedParameter4f,
+   glProgramNamedParameter4d,
+   glProgramNamedParameter4fv,
+   glProgramNamedParameter4dv,
+   glGetProgramNamedParameterfv,
+   glGetProgramNamedParameterdv,
+   glProgramLocalParameter4d,
+   glProgramLocalParameter4dv,
+   glProgramLocalParameter4f,
+   glProgramLocalParameter4fv,
+   glGetProgramLocalParameterdv,
+   glGetProgramLocalParameterfv,
+   -- * Tokens
+   gl_FRAGMENT_PROGRAM_NV,
+   gl_MAX_TEXTURE_COORDS,
+   gl_MAX_TEXTURE_IMAGE_UNITS,
+   gl_FRAGMENT_PROGRAM_BINDING,
+   gl_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS,
+   gl_PROGRAM_ERROR_STRING
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.ARB.FragmentProgram
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_fragment_program"
+
+EXTENSION_ENTRY(glProgramNamedParameter4f,GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+EXTENSION_ENTRY(glProgramNamedParameter4d,GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+EXTENSION_ENTRY(glProgramNamedParameter4fv,GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glProgramNamedParameter4dv,GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glGetProgramNamedParameterfv,GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetProgramNamedParameterdv,GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
+
+gl_FRAGMENT_PROGRAM_NV :: GLenum
+gl_FRAGMENT_PROGRAM_NV = 0x8870
+
+gl_FRAGMENT_PROGRAM_BINDING :: GLenum
+gl_FRAGMENT_PROGRAM_BINDING = 0x8873
+
+gl_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS :: GLenum
+gl_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS = 0x8868
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/FragmentProgram2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/FragmentProgram2.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/FragmentProgram2.hs
@@ -0,0 +1,40 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram2
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_fragment_program, see
+-- <http://www.opengl.org/registry/specs/NV/fragment_program.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram2 (
+   -- * Tokens
+   gl_MAX_PROGRAM_EXEC_INSTRUCTIONS,
+   gl_MAX_PROGRAM_CALL_DEPTH,
+   gl_MAX_PROGRAM_IF_DEPTH,
+   gl_MAX_PROGRAM_LOOP_DEPTH,
+   gl_MAX_PROGRAM_LOOP_COUNT
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_MAX_PROGRAM_EXEC_INSTRUCTIONS :: GLenum
+gl_MAX_PROGRAM_EXEC_INSTRUCTIONS = 0x88F4
+
+gl_MAX_PROGRAM_CALL_DEPTH :: GLenum
+gl_MAX_PROGRAM_CALL_DEPTH = 0x88F5
+
+gl_MAX_PROGRAM_IF_DEPTH :: GLenum
+gl_MAX_PROGRAM_IF_DEPTH = 0x88F6
+
+gl_MAX_PROGRAM_LOOP_DEPTH :: GLenum
+gl_MAX_PROGRAM_LOOP_DEPTH = 0x88F7
+
+gl_MAX_PROGRAM_LOOP_COUNT :: GLenum
+gl_MAX_PROGRAM_LOOP_COUNT = 0x88F8
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/FramebufferMultisampleCoverage.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/FramebufferMultisampleCoverage.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/FramebufferMultisampleCoverage.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.FramebufferMultisampleCoverage
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_framebuffer_multisample_coverage
+-- extension, see
+-- <http://www.opengl.org/registry/specs/NV/framebuffer_multisample_coverage.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.FramebufferMultisampleCoverage (
+   -- * Functions
+   glRenderbufferStorageMultisampleCoverage,
+   -- * Tokens
+   gl_RENDERBUFFER_COVERAGE_SAMPLES,
+   gl_RENDERBUFFER_COLOR_SAMPLES,
+   gl_MAX_MULTISAMPLE_COVERAGE_MODES,
+   gl_MULTISAMPLE_COVERAGE_MODES
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_framebuffer_multisample_coverage"
+
+EXTENSION_ENTRY(glRenderbufferStorageMultisampleCoverage,GLenum -> GLsizei -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
+
+gl_RENDERBUFFER_COVERAGE_SAMPLES :: GLenum
+gl_RENDERBUFFER_COVERAGE_SAMPLES = 0x8CAB
+
+gl_RENDERBUFFER_COLOR_SAMPLES :: GLenum
+gl_RENDERBUFFER_COLOR_SAMPLES = 0x8E10
+
+gl_MAX_MULTISAMPLE_COVERAGE_MODES :: GLenum
+gl_MAX_MULTISAMPLE_COVERAGE_MODES = 0x8E11
+
+gl_MULTISAMPLE_COVERAGE_MODES :: GLenum
+gl_MULTISAMPLE_COVERAGE_MODES = 0x8E12
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/GeometryProgram4.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/GeometryProgram4.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/GeometryProgram4.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.GeometryProgram4
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_geometry_program4 extension, see
+-- <http://www.opengl.org/registry/specs/NV/geometry_program4.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.GeometryProgram4 (
+   -- * Functions
+   glProgramVertexLimit,
+   -- * Tokens
+   gl_GEOMETRY_PROGRAM,
+   gl_MAX_PROGRAM_OUTPUT_VERTICES,
+   gl_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS,
+   gl_GEOMETRY_VERTICES_OUT,
+   gl_GEOMETRY_INPUT_TYPE,
+   gl_GEOMETRY_OUTPUT_TYPE,
+   gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS,
+   gl_LINES_ADJACENCY,
+   gl_LINE_STRIP_ADJACENCY,
+   gl_TRIANGLES_ADJACENCY,
+   gl_TRIANGLE_STRIP_ADJACENCY,
+   gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS,
+   gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT,
+   gl_FRAMEBUFFER_ATTACHMENT_LAYERED,
+   gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,
+   gl_PROGRAM_POINT_SIZE
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.ARB.GeometryShader4
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_geometry_program4"
+
+EXTENSION_ENTRY(glProgramVertexLimit,GLenum -> GLint -> IO ())
+
+gl_GEOMETRY_PROGRAM :: GLenum
+gl_GEOMETRY_PROGRAM = 0x8C26
+
+gl_MAX_PROGRAM_OUTPUT_VERTICES :: GLenum
+gl_MAX_PROGRAM_OUTPUT_VERTICES = 0x8C27
+
+gl_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS :: GLenum
+gl_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS = 0x8C28
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/GpuProgram4.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/GpuProgram4.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/GpuProgram4.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.GpuProgram4
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_gpu_program4 extension, see
+-- <http://www.opengl.org/registry/specs/NV/gpu_program4.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.GpuProgram4 (
+   -- * Functions
+   glProgramLocalParameterI4i,
+   glProgramLocalParameterI4iv,
+   glProgramLocalParametersI4iv,
+   glProgramLocalParameterI4ui,
+   glProgramLocalParameterI4uiv,
+   glProgramLocalParametersI4uiv,
+   glProgramEnvParameterI4i,
+   glProgramEnvParameterI4iv,
+   glProgramEnvParametersI4iv,
+   glProgramEnvParameterI4ui,
+   glProgramEnvParameterI4uiv,
+   glProgramEnvParametersI4uiv,
+   glGetProgramLocalParameterIiv,
+   glGetProgramLocalParameterIuiv,
+   glGetProgramEnvParameterIiv,
+   glGetProgramEnvParameterIuiv,
+   -- * Tokens
+   gl_MIN_PROGRAM_TEXEL_OFFSET,
+   gl_MAX_PROGRAM_TEXEL_OFFSET,
+   gl_PROGRAM_ATTRIB_COMPONENTS,
+   gl_PROGRAM_RESULT_COMPONENTS,
+   gl_MAX_PROGRAM_ATTRIB_COMPONENTS,
+   gl_MAX_PROGRAM_RESULT_COMPONENTS,
+   gl_MAX_PROGRAM_GENERIC_ATTRIBS,
+   gl_MAX_PROGRAM_GENERIC_RESULTS
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_gpu_program4"
+
+EXTENSION_ENTRY(glProgramLocalParameterI4i,GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
+EXTENSION_ENTRY(glProgramLocalParameterI4iv,GLenum -> GLuint -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glProgramLocalParametersI4iv,GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glProgramLocalParameterI4ui,GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+EXTENSION_ENTRY(glProgramLocalParameterI4uiv,GLenum -> GLuint -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glProgramLocalParametersI4uiv,GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameterI4i,GLenum -> GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameterI4iv,GLenum -> GLuint -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glProgramEnvParametersI4iv,GLenum -> GLuint -> GLsizei -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameterI4ui,GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
+EXTENSION_ENTRY(glProgramEnvParameterI4uiv,GLenum -> GLuint -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glProgramEnvParametersI4uiv,GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glGetProgramLocalParameterIiv,GLenum -> GLuint -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetProgramLocalParameterIuiv,GLenum -> GLuint -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glGetProgramEnvParameterIiv,GLenum -> GLuint -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetProgramEnvParameterIuiv,GLenum -> GLuint -> Ptr GLuint -> IO ())
+
+gl_PROGRAM_ATTRIB_COMPONENTS :: GLenum
+gl_PROGRAM_ATTRIB_COMPONENTS = 0x8906
+
+gl_PROGRAM_RESULT_COMPONENTS :: GLenum
+gl_PROGRAM_RESULT_COMPONENTS = 0x8907
+
+gl_MAX_PROGRAM_ATTRIB_COMPONENTS :: GLenum
+gl_MAX_PROGRAM_ATTRIB_COMPONENTS = 0x8908
+
+gl_MAX_PROGRAM_RESULT_COMPONENTS :: GLenum
+gl_MAX_PROGRAM_RESULT_COMPONENTS = 0x8909
+
+gl_MAX_PROGRAM_GENERIC_ATTRIBS :: GLenum
+gl_MAX_PROGRAM_GENERIC_ATTRIBS = 0x8DA5
+
+gl_MAX_PROGRAM_GENERIC_RESULTS :: GLenum
+gl_MAX_PROGRAM_GENERIC_RESULTS = 0x8DA6
+      
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/HalfFloat.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/HalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/HalfFloat.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.HalfFloat
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions, tokens and types from the NV_fragment_program extension,
+-- see <http://www.opengl.org/registry/specs/NV/fragment_program.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.HalfFloat (
+   -- * Functions
+   glVertex2h,
+   glVertex2hv,
+   glVertex3h,
+   glVertex3hv,
+   glVertex4h,
+   glVertex4hv,
+   glNormal3h,
+   glNormal3hv,
+   glColor3h,
+   glColor3hv,
+   glColor4h,
+   glColor4hv,
+   glTexCoord1h,
+   glTexCoord1hv,
+   glTexCoord2h,
+   glTexCoord2hv,
+   glTexCoord3h,
+   glTexCoord3hv,
+   glTexCoord4h,
+   glTexCoord4hv,
+   glMultiTexCoord1h,
+   glMultiTexCoord1hv,
+   glMultiTexCoord2h,
+   glMultiTexCoord2hv,
+   glMultiTexCoord3h,
+   glMultiTexCoord3hv,
+   glMultiTexCoord4h,
+   glMultiTexCoord4hv,
+   glFogCoordh,
+   glFogCoordhv,
+   glSecondaryColor3h,
+   glSecondaryColor3hv,
+   glVertexWeighth,
+   glVertexWeighthv,
+   glVertexAttrib1h,
+   glVertexAttrib1hv,
+   glVertexAttrib2h,
+   glVertexAttrib2hv,
+   glVertexAttrib3h,
+   glVertexAttrib3hv,
+   glVertexAttrib4h,
+   glVertexAttrib4hv,
+   glVertexAttribs1hv,
+   glVertexAttribs2hv,
+   glVertexAttribs3hv,
+   glVertexAttribs4hv,
+   -- * Tokens
+   gl_HALF_FLOAT,
+   -- * Types
+   GLhalf
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_half_float"
+
+EXTENSION_ENTRY(glVertex2h,GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glVertex2hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertex3h,GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glVertex3hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertex4h,GLhalf -> GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glVertex4hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glNormal3h,GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glNormal3hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glColor3h,GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glColor3hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glColor4h,GLhalf -> GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glColor4hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord1h,GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord1hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord2h,GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord2hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord3h,GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord3hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord4h,GLhalf -> GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glTexCoord4hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord1h,GLenum -> GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord1hv,GLenum -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord2h,GLenum -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord2hv,GLenum -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord3h,GLenum -> GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord3hv,GLenum -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord4h,GLenum -> GLhalf -> GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glMultiTexCoord4hv,GLenum -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glFogCoordh,GLhalf -> IO ())
+EXTENSION_ENTRY(glFogCoordhv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glSecondaryColor3h,GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glSecondaryColor3hv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexWeighth,GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexWeighthv,Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1h,GLuint -> GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1hv,GLuint -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2h,GLuint -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2hv,GLuint -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3h,GLuint -> GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3hv,GLuint -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4h,GLuint -> GLhalf -> GLhalf -> GLhalf -> GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4hv,GLuint -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttribs1hv,GLuint -> GLsizei -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttribs2hv,GLuint -> GLsizei -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttribs3hv,GLuint -> GLsizei -> Ptr GLhalf -> IO ())
+EXTENSION_ENTRY(glVertexAttribs4hv,GLuint -> GLsizei -> Ptr GLhalf -> IO ())
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/LightMaxExponent.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/LightMaxExponent.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/LightMaxExponent.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/LightMaxExponent.hs
@@ -20,7 +20,7 @@
    gl_MAX_SPOT_EXPONENT
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_MAX_SHININESS :: GLenum
 gl_MAX_SHININESS = 0x8504
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/MultisampleFilterHint.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/MultisampleFilterHint.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/MultisampleFilterHint.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/MultisampleFilterHint.hs
@@ -19,7 +19,7 @@
    gl_MULTISAMPLE_FILTER_HINT
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_MULTISAMPLE_FILTER_HINT :: GLenum
 gl_MULTISAMPLE_FILTER_HINT = 0x8534
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/OcclusionQuery.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/OcclusionQuery.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/OcclusionQuery.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/OcclusionQuery.hs
@@ -34,7 +34,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/PackedDepthStencil.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/PackedDepthStencil.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/PackedDepthStencil.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.PackedDepthStencil
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_packed_depth_stencil extension, see
+-- <http://www.opengl.org/registry/specs/NV/packed_depth_stencil.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.PackedDepthStencil (
+   -- * Tokens
+   gl_DEPTH_STENCIL,
+   gl_UNSIGNED_INT_24_8
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/ParameterBufferObject.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/ParameterBufferObject.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/ParameterBufferObject.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.ParameterBufferObject
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All functions and tokens from the NV_parameter_buffer_object extension, see
+-- <http://www.opengl.org/registry/specs/NV/parameter_buffer_object.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.ParameterBufferObject (
+   -- * Functions
+   glBindBufferRange,
+   glBindBufferOffset,
+   glBindBufferBase,
+   glProgramBufferParametersfv,
+   glProgramBufferParametersIiv,
+   glProgramBufferParametersIuiv,
+   glGetIntegerIndexedv,
+   -- * Tokens
+   gl_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS,
+   gl_MAX_PROGRAM_PARAMETER_BUFFER_SIZE,
+   gl_VERTEX_PROGRAM_PARAMETER_BUFFER,
+   gl_GEOMETRY_PROGRAM_PARAMETER_BUFFER,
+   gl_FRAGMENT_PROGRAM_PARAMETER_BUFFER
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_parameter_buffer_object"
+
+EXTENSION_ENTRY(glBindBufferOffset,GLenum -> GLuint -> GLuint -> GLintptr -> IO ())
+EXTENSION_ENTRY(glProgramBufferParametersfv,GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glProgramBufferParametersIiv,GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glProgramBufferParametersIuiv,GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
+
+gl_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS :: GLenum
+gl_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS = 0x8DA0
+
+gl_MAX_PROGRAM_PARAMETER_BUFFER_SIZE :: GLenum
+gl_MAX_PROGRAM_PARAMETER_BUFFER_SIZE = 0x8DA1
+
+gl_VERTEX_PROGRAM_PARAMETER_BUFFER :: GLenum
+gl_VERTEX_PROGRAM_PARAMETER_BUFFER = 0x8DA2
+
+gl_GEOMETRY_PROGRAM_PARAMETER_BUFFER :: GLenum
+gl_GEOMETRY_PROGRAM_PARAMETER_BUFFER = 0x8DA3
+
+gl_FRAGMENT_PROGRAM_PARAMETER_BUFFER :: GLenum
+gl_FRAGMENT_PROGRAM_PARAMETER_BUFFER = 0x8DA4
+
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/PixelDataRange.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/PixelDataRange.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/PixelDataRange.hs
@@ -0,0 +1,44 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.PixelDataRange
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_pixel_data_range extension, see
+-- <http://www.opengl.org/registry/specs/NV/pixel_data_range.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.PixelDataRange (
+   -- * Tokens
+   gl_WRITE_PIXEL_DATA_RANGE,
+   gl_READ_PIXEL_DATA_RANGE,
+   gl_WRITE_PIXEL_DATA_RANGE_LENGTH,
+   gl_READ_PIXEL_DATA_RANGE_LENGTH,
+   gl_WRITE_PIXEL_DATA_RANGE_POINTER,
+   gl_READ_PIXEL_DATA_RANGE_POINTER
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_WRITE_PIXEL_DATA_RANGE :: GLenum
+gl_WRITE_PIXEL_DATA_RANGE = 0x8878
+
+gl_READ_PIXEL_DATA_RANGE :: GLenum
+gl_READ_PIXEL_DATA_RANGE = 0x8879
+
+gl_WRITE_PIXEL_DATA_RANGE_LENGTH :: GLenum
+gl_WRITE_PIXEL_DATA_RANGE_LENGTH = 0x887A
+
+gl_READ_PIXEL_DATA_RANGE_LENGTH :: GLenum
+gl_READ_PIXEL_DATA_RANGE_LENGTH = 0x887B
+
+gl_WRITE_PIXEL_DATA_RANGE_POINTER :: GLenum
+gl_WRITE_PIXEL_DATA_RANGE_POINTER = 0x887C
+
+gl_READ_PIXEL_DATA_RANGE_POINTER :: GLenum
+gl_READ_PIXEL_DATA_RANGE_POINTER = 0x887D
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/PointSprite.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/PointSprite.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/PointSprite.hs
@@ -0,0 +1,28 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.PointSprite
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_point_sprite, see
+-- <http://www.opengl.org/registry/specs/NV/point_sprite.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.PointSprite (
+   -- * Tokens
+   gl_POINT_SPRITE,
+   gl_COORD_REPLACE,
+   gl_POINT_SPRITE_R_MODE
+
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_POINT_SPRITE_R_MODE :: GLenum
+gl_POINT_SPRITE_R_MODE = 0x8863
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/PresentVideo.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/PresentVideo.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/PresentVideo.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.PresentVideo
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_present_video extension, see
+-- <http://www.opengl.org/registry/specs/NV/present_video.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.PresentVideo (
+   -- * Functions
+   glPresentFrameKeyed,
+   glPresentFrameDualFill,
+   glGetVideoiv,
+   glGetVideouiv,
+   glGetVideoi64v,
+   glGetVideoui64v,
+   -- * Tokens
+   gl_FRAME,
+   gl_FIELDS,
+   gl_CURRENT_TIME,
+   gl_NUM_FILL_STREAMS,
+   gl_PRESENT_TIME,
+   gl_PRESENT_DURATION
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_present_video"
+
+EXTENSION_ENTRY(glPresentFrameKeyed,GLuint -> GLuint64 -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLuint -> GLenum -> GLuint -> GLuint -> IO ())
+EXTENSION_ENTRY(glPresentFrameDualFill,GLuint -> GLuint64 -> GLuint -> GLuint -> GLenum -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> IO ())
+EXTENSION_ENTRY(glGetVideoiv,GLuint -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetVideouiv,GLuint -> GLenum -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glGetVideoi64v,GLuint -> GLenum -> Ptr GLint64 -> IO ())
+EXTENSION_ENTRY(glGetVideoui64v,GLuint -> GLenum -> Ptr GLuint64 -> IO ())
+
+gl_FRAME :: GLenum
+gl_FRAME = 0x8E26
+
+gl_FIELDS :: GLenum
+gl_FIELDS = 0x8E27
+
+gl_CURRENT_TIME :: GLenum
+gl_CURRENT_TIME = 0x8E28
+
+gl_NUM_FILL_STREAMS :: GLenum
+gl_NUM_FILL_STREAMS = 0x8E29
+
+gl_PRESENT_TIME :: GLenum
+gl_PRESENT_TIME = 0x8E2A
+
+gl_PRESENT_DURATION :: GLenum
+gl_PRESENT_DURATION = 0x8E2B
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/PrimitiveRestart.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/PrimitiveRestart.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/PrimitiveRestart.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/PrimitiveRestart.hs
@@ -26,7 +26,7 @@
    gl_PRIMITIVE_RESTART_INDEX_NV
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners.hs
@@ -87,7 +87,7 @@
 
 import Foreign.Ptr
 import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners2.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners2.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/RegisterCombiners2.hs
@@ -34,7 +34,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
 
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenEmboss.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenEmboss.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenEmboss.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenEmboss.hs
@@ -21,7 +21,7 @@
    gl_EMBOSS_CONSTANT
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_EMBOSS_MAP :: GLenum
 gl_EMBOSS_MAP = 0x855F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenReflection.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenReflection.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TexgenReflection.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TexgenReflection
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_texgen_reflection, see
+-- <http://www.opengl.org/registry/specs/NV/texgen_reflection.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TexgenReflection (
+   -- * Tokens
+   gl_NORMAL_MAP,
+   gl_REFLECTION_MAP
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureEnvCombine4.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureEnvCombine4.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureEnvCombine4.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureEnvCombine4.hs
@@ -23,7 +23,7 @@
    gl_OPERAND3_ALPHA
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_COMBINE4 :: GLenum
 gl_COMBINE4 = 0x8503
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureExpandNormal.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureExpandNormal.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureExpandNormal.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TextureExpandNormal
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_texture_expand_normal, see
+-- <http://www.opengl.org/registry/specs/NV/texture_expand_normal.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TextureExpandNormal (
+   -- * Tokens
+   gl_TEXTURE_UNSIGNED_REMAP_MODE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_TEXTURE_UNSIGNED_REMAP_MODE :: GLenum
+gl_TEXTURE_UNSIGNED_REMAP_MODE = 0x888F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureRectangle.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureRectangle.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureRectangle.hs
@@ -0,0 +1,24 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TextureRectangle
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_texture_rectangle extension, see
+-- <http://www.opengl.org/registry/specs/NV/texture_rectangle.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TextureRectangle (
+   -- * Tokens
+   gl_TEXTURE_RECTANGLE,
+   gl_TEXTURE_BINDING_RECTANGLE,
+   gl_PROXY_TEXTURE_RECTANGLE, 
+   gl_MAX_RECTANGLE_TEXTURE_SIZE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader.hs
@@ -97,7 +97,7 @@
    gl_TEXTURE_MAG_SIZE
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
 
 gl_TEXTURE_SHADER :: GLenum
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader2.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader2.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader2.hs
@@ -46,7 +46,7 @@
    gl_DSDT8_MAG8_INTENSITY8
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.NV.TextureShader
 
 gl_DOT_PRODUCT_TEXTURE_3D :: GLenum
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader3.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader3.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TextureShader3.hs
@@ -0,0 +1,88 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TextureShader3
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_texture_shader3 extension, see
+-- <http://www.opengl.org/registry/specs/NV/texture_shader3.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TextureShader3 (
+   -- * Tokens
+   gl_OFFSET_PROJECTIVE_TEXTURE_2D,
+   gl_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE,
+   gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE,
+   gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE,
+   gl_OFFSET_HILO_TEXTURE_2D,
+   gl_OFFSET_HILO_TEXTURE_RECTANGLE,
+   gl_OFFSET_HILO_PROJECTIVE_TEXTURE_2D,
+   gl_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE,
+   gl_DEPENDENT_HILO_TEXTURE_2D,
+   gl_DEPENDENT_RGB_TEXTURE_3D,
+   gl_DEPENDENT_RGB_TEXTURE_CUBE_MAP,
+   gl_DOT_PRODUCT_PASS_THROUGH,
+   gl_DOT_PRODUCT_TEXTURE_1D,
+   gl_DOT_PRODUCT_AFFINE_DEPTH_REPLACE,
+   gl_HILO8,
+   gl_SIGNED_HILO8,
+   gl_FORCE_BLUE_TO_ONE
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
+
+gl_OFFSET_PROJECTIVE_TEXTURE_2D :: GLenum
+gl_OFFSET_PROJECTIVE_TEXTURE_2D = 0x8850
+
+gl_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE :: GLenum
+gl_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE = 0x8851
+
+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE :: GLenum
+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE = 0x8852
+
+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE :: GLenum
+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE = 0x8853
+
+gl_OFFSET_HILO_TEXTURE_2D :: GLenum
+gl_OFFSET_HILO_TEXTURE_2D = 0x8854
+
+gl_OFFSET_HILO_TEXTURE_RECTANGLE :: GLenum
+gl_OFFSET_HILO_TEXTURE_RECTANGLE = 0x8855
+
+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_2D :: GLenum
+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_2D = 0x8856
+
+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE :: GLenum
+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE = 0x8857
+
+gl_DEPENDENT_HILO_TEXTURE_2D :: GLenum
+gl_DEPENDENT_HILO_TEXTURE_2D = 0x8858
+
+gl_DEPENDENT_RGB_TEXTURE_3D :: GLenum
+gl_DEPENDENT_RGB_TEXTURE_3D = 0x8859
+
+gl_DEPENDENT_RGB_TEXTURE_CUBE_MAP :: GLenum
+gl_DEPENDENT_RGB_TEXTURE_CUBE_MAP = 0x885A
+
+gl_DOT_PRODUCT_PASS_THROUGH :: GLenum
+gl_DOT_PRODUCT_PASS_THROUGH = 0x885B
+
+gl_DOT_PRODUCT_TEXTURE_1D :: GLenum
+gl_DOT_PRODUCT_TEXTURE_1D = 0x885C
+
+gl_DOT_PRODUCT_AFFINE_DEPTH_REPLACE :: GLenum
+gl_DOT_PRODUCT_AFFINE_DEPTH_REPLACE = 0x885D
+
+gl_HILO8 :: GLenum
+gl_HILO8 = 0x885E
+
+gl_SIGNED_HILO8 :: GLenum
+gl_SIGNED_HILO8 = 0x885F
+
+gl_FORCE_BLUE_TO_ONE :: GLenum
+gl_FORCE_BLUE_TO_ONE = 0x8860
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TransformFeedback.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TransformFeedback.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TransformFeedback.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_transform_feedback extension, see
+-- <http://www.opengl.org/registry/specs/NV/transform_feedback.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback (
+   -- * Functions
+   glBindBufferRange,
+   glBindBufferOffset,
+   glBindBufferBase,
+   glTransformFeedbackAttribs,
+   glTransformFeedbackVaryingsNV,
+   glBeginTransformFeedback,
+   glEndTransformFeedback,
+   glGetVaryingLocation,
+   glGetActiveVarying,
+   glActiveVarying,
+   glGetTransformFeedbackVaryingNV,
+   glGetIntegerIndexedv,
+   glGetBooleanIndexedv,
+   -- * Tokens
+   gl_TRANSFORM_FEEDBACK_BUFFER,
+   gl_TRANSFORM_FEEDBACK_BUFFER_START,
+   gl_TRANSFORM_FEEDBACK_BUFFER_SIZE,
+   gl_TRANSFORM_FEEDBACK_RECORD,
+   gl_TRANSFORM_FEEDBACK_BUFFER_BINDING,
+   gl_INTERLEAVED_ATTRIBS,
+   gl_SEPARATE_ATTRIBS,
+   gl_PRIMITIVES_GENERATED,
+   gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,
+   gl_RASTERIZER_DISCARD,
+   gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+   gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
+   gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+   gl_TRANSFORM_FEEDBACK_ATTRIBS,
+   gl_ACTIVE_VARYINGS,
+   gl_ACTIVE_VARYING_MAX_LENGTH,
+   gl_TRANSFORM_FEEDBACK_VARYINGS,
+   gl_TRANSFORM_FEEDBACK_BUFFER_MODE,
+   gl_BACK_PRIMARY_COLOR,
+   gl_BACK_SECONDARY_COLOR,
+   gl_TEXTURE_COORD,
+   gl_CLIP_DISTANCE,
+   gl_VERTEX_ID,
+   gl_PRIMITIVE_ID,
+   gl_GENERIC_ATTRIB,
+   gl_POINT_SIZE,
+   gl_FOG_COORDINATE,
+   gl_SECONDARY_COLOR,
+   gl_PRIMARY_COLOR,
+   gl_POSITION,
+   gl_LAYER,
+   gl_UNSIGNED_INT_VEC2,
+   gl_UNSIGNED_INT_VEC3,
+   gl_UNSIGNED_INT_VEC4
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.ARB.Compatibility
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.EXT.DirectStateAccess
+import Graphics.Rendering.OpenGL.Raw.Extensions
+import Graphics.Rendering.OpenGL.Raw.NV.ParameterBufferObject
+import Graphics.Rendering.OpenGL.Raw.NV.RegisterCombiners
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_transform_feedback"
+
+EXTENSION_ENTRY(glTransformFeedbackAttribs,GLsizei -> Ptr GLint -> GLenum -> IO ())
+EXTENSION_ENTRY(glTransformFeedbackVaryingsNV,GLuint -> GLsizei -> Ptr GLint -> GLenum -> IO ())
+EXTENSION_ENTRY(glGetVaryingLocation,GLuint -> Ptr GLchar -> IO GLint)
+EXTENSION_ENTRY(glGetActiveVarying,GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ())
+EXTENSION_ENTRY(glActiveVarying,GLuint -> Ptr GLchar -> IO ())
+EXTENSION_ENTRY(glGetTransformFeedbackVaryingNV,GLuint -> GLuint -> Ptr GLint -> IO ())
+
+gl_TRANSFORM_FEEDBACK_RECORD :: GLenum
+gl_TRANSFORM_FEEDBACK_RECORD = 0x8C86
+
+gl_TRANSFORM_FEEDBACK_ATTRIBS :: GLenum
+gl_TRANSFORM_FEEDBACK_ATTRIBS = 0x8C7E
+
+gl_ACTIVE_VARYINGS :: GLenum
+gl_ACTIVE_VARYINGS = 0x8C81
+
+gl_ACTIVE_VARYING_MAX_LENGTH :: GLenum
+gl_ACTIVE_VARYING_MAX_LENGTH = 0x8C82
+
+gl_BACK_PRIMARY_COLOR :: GLenum
+gl_BACK_PRIMARY_COLOR = 0x8C77
+
+gl_BACK_SECONDARY_COLOR :: GLenum
+gl_BACK_SECONDARY_COLOR = 0x8C78
+
+gl_TEXTURE_COORD :: GLenum
+gl_TEXTURE_COORD = 0x8C79
+
+gl_CLIP_DISTANCE :: GLenum
+gl_CLIP_DISTANCE = 0x8C7A
+
+gl_VERTEX_ID :: GLenum
+gl_VERTEX_ID = 0x8C7B
+
+gl_PRIMITIVE_ID :: GLenum
+gl_PRIMITIVE_ID = 0x8C7C
+
+gl_GENERIC_ATTRIB :: GLenum
+gl_GENERIC_ATTRIB = 0x8C7D
+
+gl_LAYER :: GLenum
+gl_LAYER = 0x8DAA
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/TransformFeedback2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/TransformFeedback2.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/TransformFeedback2.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback2
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_transform_feedback2 extension, see
+-- <http://www.opengl.org/registry/specs/NV/transform_feedback2.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.TransformFeedback2 (
+   -- * Functions
+   glBindTransformFeedback,
+   glDeleteTransformFeedbacks,
+   glGenTransformFeedbacks,
+   glIsTransformFeedback,
+   glPauseTransformFeedback,
+   glResumeTransformFeedback,
+   glDrawTransformFeedback,
+   -- * Tokens
+   gl_TRANSFORM_FEEDBACK,
+   gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED,
+   gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE,
+   gl_TRANSFORM_FEEDBACK_BINDING
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_transform_feedback2"
+
+EXTENSION_ENTRY(glBindTransformFeedback,GLenum -> GLuint -> IO ())
+EXTENSION_ENTRY(glDeleteTransformFeedbacks,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glGenTransformFeedbacks,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glIsTransformFeedback,GLuint -> IO GLboolean)
+EXTENSION_ENTRY(glPauseTransformFeedback,IO ())
+EXTENSION_ENTRY(glResumeTransformFeedback,IO ())
+EXTENSION_ENTRY(glDrawTransformFeedback,GLenum -> GLuint -> IO ())
+
+gl_TRANSFORM_FEEDBACK :: GLenum
+gl_TRANSFORM_FEEDBACK = 0x8E22
+
+gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED :: GLenum
+gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23
+
+gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE :: GLenum
+gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24
+
+gl_TRANSFORM_FEEDBACK_BINDING :: GLenum
+gl_TRANSFORM_FEEDBACK_BINDING = 0x8E25
+
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange.hs
@@ -28,7 +28,7 @@
 ) where
 
 import Foreign.Ptr
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 import Graphics.Rendering.OpenGL.Raw.Extensions
 
 #include "HsOpenGLRaw.h"
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange2.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange2.hs
--- a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange2.hs
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexArrayRange2.hs
@@ -19,7 +19,7 @@
    gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH
 ) where
 
-import Graphics.Rendering.OpenGL.Raw.Core31
+import Graphics.Rendering.OpenGL.Raw.Core32
 
 gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH :: GLenum
 gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH = 0x8533
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram.hs
@@ -0,0 +1,475 @@
+{-# LANGUAGE ForeignFunctionInterface, CPP #-}
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.VertexProgram
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All raw functions and tokens from the NV_vertex_program extension, see
+-- <http://www.opengl.org/registry/specs/NV/vertex_program.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram (
+   -- * Functions
+   glBindProgramNV,
+   glDeleteProgramsNV,
+   glExecuteProgram,
+   glGenProgramsNV,
+   glAreProgramsResident,
+   glRequestResidentPrograms,
+   glGetProgramParameterfv,
+   glGetProgramParameterdv,
+   glGetProgramivNV,
+   glGetProgramStringNV,
+   glGetTrackMatrixiv,
+   glGetVertexAttribdvNV,
+   glGetVertexAttribfvNV,
+   glGetVertexAttribivNV,
+   glGetVertexAttribPointervNV,
+   glIsProgramNV,
+   glLoadProgram,
+   glProgramParameter4f,
+   glProgramParameter4d,
+   glProgramParameter4dv,
+   glProgramParameter4fv,
+   glProgramParameters4dv,
+   glProgramParameters4fv,
+   glTrackMatrix,
+   glVertexAttribPointerNV,
+   glVertexAttrib1sNV,
+   glVertexAttrib1fNV,
+   glVertexAttrib1dNV,
+   glVertexAttrib2sNV,
+   glVertexAttrib2fNV,
+   glVertexAttrib2dNV,
+   glVertexAttrib3sNV,
+   glVertexAttrib3fNV,
+   glVertexAttrib3dNV,
+   glVertexAttrib4sNV,
+   glVertexAttrib4fNV,
+   glVertexAttrib4dNV,
+   glVertexAttrib4ub,
+   glVertexAttrib1svNV,
+   glVertexAttrib1fvNV,
+   glVertexAttrib1dvNV,
+   glVertexAttrib2svNV,
+   glVertexAttrib2fvNV,
+   glVertexAttrib2dvNV,
+   glVertexAttrib3svNV,
+   glVertexAttrib3fvNV,
+   glVertexAttrib3dvNV,
+   glVertexAttrib4svNV,
+   glVertexAttrib4fvNV,
+   glVertexAttrib4dvNV,
+   glVertexAttrib4ubvNV,
+   glVertexAttribs1sv,
+   glVertexAttribs1fv,
+   glVertexAttribs1dv,
+   glVertexAttribs2sv,
+   glVertexAttribs2fv,
+   glVertexAttribs2dv,
+   glVertexAttribs3sv,
+   glVertexAttribs3fv,
+   glVertexAttribs3dv,
+   glVertexAttribs4sv,
+   glVertexAttribs4fv,
+   glVertexAttribs4dv,
+   glVertexAttribs4ubv,
+   -- * Tokens
+   gl_VERTEX_PROGRAM,
+   gl_VERTEX_PROGRAM_POINT_SIZE,
+   gl_VERTEX_PROGRAM_TWO_SIDE,
+   gl_VERTEX_STATE_PROGRAM,
+   gl_ATTRIB_ARRAY_SIZE,
+   gl_ATTRIB_ARRAY_STRIDE,
+   gl_ATTRIB_ARRAY_TYPE,
+   gl_CURRENT_ATTRIB,
+   gl_PROGRAM_PARAMETER,
+   gl_ATTRIB_ARRAY_POINTER,
+   gl_PROGRAM_TARGET,
+   gl_PROGRAM_LENGTH,
+   gl_PROGRAM_RESIDENT,
+   gl_PROGRAM_STRING,
+   gl_TRACK_MATRIX,
+   gl_TRACK_MATRIX_TRANSFORM,
+   gl_MAX_TRACK_MATRIX_STACK_DEPTH,
+   gl_MAX_TRACK_MATRICES,
+   gl_CURRENT_MATRIX_STACK_DEPTH,
+   gl_CURRENT_MATRIX,
+   gl_VERTEX_PROGRAM_BINDING,
+   gl_PROGRAM_ERROR_POSITION,
+   gl_MODELVIEW_PROJECTION,
+   gl_MATRIX0_NV,
+   gl_MATRIX1_NV,
+   gl_MATRIX2_NV,
+   gl_MATRIX3_NV,
+   gl_MATRIX4_NV,
+   gl_MATRIX5_NV,
+   gl_MATRIX6_NV,
+   gl_MATRIX7_NV,
+   gl_IDENTITY,
+   gl_INVERSE,
+   gl_TRANSPOSE,
+   gl_INVERSE_TRANSPOSE,
+   gl_VERTEX_ATTRIB_ARRAY0,
+   gl_VERTEX_ATTRIB_ARRAY1,
+   gl_VERTEX_ATTRIB_ARRAY2,
+   gl_VERTEX_ATTRIB_ARRAY3,
+   gl_VERTEX_ATTRIB_ARRAY4,
+   gl_VERTEX_ATTRIB_ARRAY5,
+   gl_VERTEX_ATTRIB_ARRAY6,
+   gl_VERTEX_ATTRIB_ARRAY7,
+   gl_VERTEX_ATTRIB_ARRAY8,
+   gl_VERTEX_ATTRIB_ARRAY9,
+   gl_VERTEX_ATTRIB_ARRAY10,
+   gl_VERTEX_ATTRIB_ARRAY11,
+   gl_VERTEX_ATTRIB_ARRAY12,
+   gl_VERTEX_ATTRIB_ARRAY13,
+   gl_VERTEX_ATTRIB_ARRAY14,
+   gl_VERTEX_ATTRIB_ARRAY15,
+   gl_MAP1_VERTEX_ATTRIB0_4,
+   gl_MAP1_VERTEX_ATTRIB1_4,
+   gl_MAP1_VERTEX_ATTRIB2_4,
+   gl_MAP1_VERTEX_ATTRIB3_4,
+   gl_MAP1_VERTEX_ATTRIB4_4,
+   gl_MAP1_VERTEX_ATTRIB5_4,
+   gl_MAP1_VERTEX_ATTRIB6_4,
+   gl_MAP1_VERTEX_ATTRIB7_4,
+   gl_MAP1_VERTEX_ATTRIB8_4,
+   gl_MAP1_VERTEX_ATTRIB9_4,
+   gl_MAP1_VERTEX_ATTRIB10_4,
+   gl_MAP1_VERTEX_ATTRIB11_4,
+   gl_MAP1_VERTEX_ATTRIB12_4,
+   gl_MAP1_VERTEX_ATTRIB13_4,
+   gl_MAP1_VERTEX_ATTRIB14_4,
+   gl_MAP1_VERTEX_ATTRIB15_4,
+   gl_MAP2_VERTEX_ATTRIB0_4,
+   gl_MAP2_VERTEX_ATTRIB1_4,
+   gl_MAP2_VERTEX_ATTRIB2_4,
+   gl_MAP2_VERTEX_ATTRIB3_4,
+   gl_MAP2_VERTEX_ATTRIB4_4,
+   gl_MAP2_VERTEX_ATTRIB5_4,
+   gl_MAP2_VERTEX_ATTRIB6_4,
+   gl_MAP2_VERTEX_ATTRIB7_4,
+   gl_MAP2_VERTEX_ATTRIB8_4,
+   gl_MAP2_VERTEX_ATTRIB9_4,
+   gl_MAP2_VERTEX_ATTRIB10_4,
+   gl_MAP2_VERTEX_ATTRIB11_4,
+   gl_MAP2_VERTEX_ATTRIB12_4,
+   gl_MAP2_VERTEX_ATTRIB13_4,
+   gl_MAP2_VERTEX_ATTRIB14_4,
+   gl_MAP2_VERTEX_ATTRIB15_4
+) where
+
+import Foreign.Ptr
+import Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram
+import Graphics.Rendering.OpenGL.Raw.Core32
+import Graphics.Rendering.OpenGL.Raw.Extensions
+
+#include "HsOpenGLRaw.h"
+
+extensionNameString :: String
+extensionNameString = "GL_NV_vertex_program"
+
+EXTENSION_ENTRY(glBindProgramNV,GLenum -> GLuint -> IO ())
+EXTENSION_ENTRY(glDeleteProgramsNV,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glExecuteProgram,GLenum -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGenProgramsNV,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glAreProgramsResident,GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean)
+EXTENSION_ENTRY(glRequestResidentPrograms,GLsizei -> Ptr GLuint -> IO ())
+EXTENSION_ENTRY(glGetProgramParameterfv,GLenum -> GLuint -> GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetProgramParameterdv,GLenum -> GLuint -> GLenum -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glGetProgramivNV,GLuint -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetProgramStringNV,GLuint -> GLenum -> Ptr GLubyte -> IO ())
+EXTENSION_ENTRY(glGetTrackMatrixiv,GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetVertexAttribdvNV,GLuint -> GLenum -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glGetVertexAttribfvNV,GLuint -> GLenum -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glGetVertexAttribivNV,GLuint -> GLenum -> Ptr GLint -> IO ())
+EXTENSION_ENTRY(glGetVertexAttribPointervNV,GLuint -> GLenum -> Ptr (Ptr a) -> IO ())
+EXTENSION_ENTRY(glIsProgramNV,GLuint -> IO GLboolean)
+EXTENSION_ENTRY(glLoadProgram,GLenum -> GLuint -> GLsizei -> Ptr GLubyte -> IO ())
+EXTENSION_ENTRY(glProgramParameter4f,GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat  -> IO ())
+EXTENSION_ENTRY(glProgramParameter4d,GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble  -> IO ())
+EXTENSION_ENTRY(glProgramParameter4dv,GLenum -> GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glProgramParameter4fv,GLenum -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glProgramParameters4dv,GLenum -> GLuint -> GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glProgramParameters4fv,GLenum -> GLuint -> GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glTrackMatrix,GLenum -> GLuint -> GLenum -> GLenum -> IO ())
+EXTENSION_ENTRY(glVertexAttribPointerNV,GLuint -> GLint -> GLenum -> GLsizei -> Ptr a -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1sNV,GLuint -> GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1fNV,GLuint -> GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1dNV,GLuint -> GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2sNV,GLuint -> GLshort -> GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2fNV,GLuint -> GLfloat -> GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2dNV,GLuint -> GLdouble -> GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3sNV,GLuint -> GLshort -> GLshort -> GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3fNV,GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3dNV,GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4sNV,GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4fNV,GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4dNV,GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4ub,GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1svNV,GLuint -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1fvNV,GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib1dvNV,GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2svNV,GLuint -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2fvNV,GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib2dvNV,GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3svNV,GLuint -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3fvNV,GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib3dvNV,GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4svNV,GLuint -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4fvNV,GLuint -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4dvNV,GLuint -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttrib4ubvNV,GLuint -> Ptr GLubyte -> IO ())
+EXTENSION_ENTRY(glVertexAttribs1sv,GLuint -> GLsizei -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttribs1fv,GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttribs1dv,GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttribs2sv,GLuint -> GLsizei -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttribs2fv,GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttribs2dv,GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttribs3sv,GLuint -> GLsizei -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttribs3fv,GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttribs3dv,GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttribs4sv,GLuint -> GLsizei -> Ptr GLshort -> IO ())
+EXTENSION_ENTRY(glVertexAttribs4fv,GLuint -> GLsizei -> Ptr GLfloat -> IO ())
+EXTENSION_ENTRY(glVertexAttribs4dv,GLuint -> GLsizei -> Ptr GLdouble -> IO ())
+EXTENSION_ENTRY(glVertexAttribs4ubv,GLuint -> GLsizei -> Ptr GLubyte -> IO ())
+
+gl_VERTEX_STATE_PROGRAM :: GLenum
+gl_VERTEX_STATE_PROGRAM = 0x8621
+
+gl_ATTRIB_ARRAY_SIZE :: GLenum
+gl_ATTRIB_ARRAY_SIZE = 0x8623
+
+gl_ATTRIB_ARRAY_STRIDE :: GLenum
+gl_ATTRIB_ARRAY_STRIDE = 0x8624
+
+gl_ATTRIB_ARRAY_TYPE :: GLenum
+gl_ATTRIB_ARRAY_TYPE = 0x8625
+
+gl_CURRENT_ATTRIB :: GLenum
+gl_CURRENT_ATTRIB = 0x8626
+
+gl_PROGRAM_PARAMETER :: GLenum
+gl_PROGRAM_PARAMETER = 0x8644
+
+gl_ATTRIB_ARRAY_POINTER :: GLenum
+gl_ATTRIB_ARRAY_POINTER = 0x8645
+
+gl_PROGRAM_TARGET :: GLenum
+gl_PROGRAM_TARGET = 0x8646
+
+gl_PROGRAM_RESIDENT :: GLenum
+gl_PROGRAM_RESIDENT = 0x8647
+
+gl_TRACK_MATRIX :: GLenum
+gl_TRACK_MATRIX = 0x8648
+
+gl_TRACK_MATRIX_TRANSFORM :: GLenum
+gl_TRACK_MATRIX_TRANSFORM = 0x8649
+
+gl_MAX_TRACK_MATRIX_STACK_DEPTH :: GLenum
+gl_MAX_TRACK_MATRIX_STACK_DEPTH = 0x862E
+
+gl_MAX_TRACK_MATRICES :: GLenum
+gl_MAX_TRACK_MATRICES = 0x862F
+
+gl_VERTEX_PROGRAM_BINDING :: GLenum
+gl_VERTEX_PROGRAM_BINDING = 0x864A
+
+gl_MODELVIEW_PROJECTION :: GLenum
+gl_MODELVIEW_PROJECTION = 0x8629
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX0_NV :: GLenum
+gl_MATRIX0_NV = 0x8630
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX1_NV :: GLenum
+gl_MATRIX1_NV = 0x8631
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX2_NV :: GLenum
+gl_MATRIX2_NV = 0x8632
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX3_NV :: GLenum
+gl_MATRIX3_NV = 0x8633
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX4_NV :: GLenum
+gl_MATRIX4_NV = 0x8634
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX5_NV :: GLenum
+gl_MATRIX5_NV = 0x8635
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX6_NV :: GLenum
+gl_MATRIX6_NV = 0x8636
+
+-- | Note: We use the NV suffix here, because the name clashes with the ARB_vertex_program.
+gl_MATRIX7_NV :: GLenum
+gl_MATRIX7_NV = 0x8637
+
+gl_IDENTITY :: GLenum
+gl_IDENTITY = 0x862A
+
+gl_INVERSE :: GLenum
+gl_INVERSE = 0x862B
+
+gl_TRANSPOSE :: GLenum
+gl_TRANSPOSE = 0x862C
+
+gl_INVERSE_TRANSPOSE :: GLenum
+gl_INVERSE_TRANSPOSE = 0x862D
+
+gl_VERTEX_ATTRIB_ARRAY0 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY0 = 0x8650
+
+gl_VERTEX_ATTRIB_ARRAY1 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY1 = 0x8651
+
+gl_VERTEX_ATTRIB_ARRAY2 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY2 = 0x8652
+
+gl_VERTEX_ATTRIB_ARRAY3 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY3 = 0x8653
+
+gl_VERTEX_ATTRIB_ARRAY4 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY4 = 0x8654
+
+gl_VERTEX_ATTRIB_ARRAY5 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY5 = 0x8655
+
+gl_VERTEX_ATTRIB_ARRAY6 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY6 = 0x8656
+
+gl_VERTEX_ATTRIB_ARRAY7 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY7 = 0x8657
+
+gl_VERTEX_ATTRIB_ARRAY8 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY8 = 0x8658
+
+gl_VERTEX_ATTRIB_ARRAY9 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY9 = 0x8659
+
+gl_VERTEX_ATTRIB_ARRAY10 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY10 = 0x865A
+
+gl_VERTEX_ATTRIB_ARRAY11 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY11 = 0x865B
+
+gl_VERTEX_ATTRIB_ARRAY12 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY12 = 0x865C
+
+gl_VERTEX_ATTRIB_ARRAY13 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY13 = 0x865D
+
+gl_VERTEX_ATTRIB_ARRAY14 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY14 = 0x865E
+
+gl_VERTEX_ATTRIB_ARRAY15 :: GLenum
+gl_VERTEX_ATTRIB_ARRAY15 = 0x865F
+
+gl_MAP1_VERTEX_ATTRIB0_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB0_4 = 0x8660
+
+gl_MAP1_VERTEX_ATTRIB1_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB1_4 = 0x8661
+
+gl_MAP1_VERTEX_ATTRIB2_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB2_4 = 0x8662
+
+gl_MAP1_VERTEX_ATTRIB3_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB3_4 = 0x8663
+
+gl_MAP1_VERTEX_ATTRIB4_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB4_4 = 0x8664
+
+gl_MAP1_VERTEX_ATTRIB5_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB5_4 = 0x8665
+
+gl_MAP1_VERTEX_ATTRIB6_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB6_4 = 0x8666
+
+gl_MAP1_VERTEX_ATTRIB7_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB7_4 = 0x8667
+
+gl_MAP1_VERTEX_ATTRIB8_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB8_4 = 0x8668
+
+gl_MAP1_VERTEX_ATTRIB9_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB9_4 = 0x8669
+
+gl_MAP1_VERTEX_ATTRIB10_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB10_4 = 0x866A
+
+gl_MAP1_VERTEX_ATTRIB11_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB11_4 = 0x866B
+
+gl_MAP1_VERTEX_ATTRIB12_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB12_4 = 0x866C
+
+gl_MAP1_VERTEX_ATTRIB13_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB13_4 = 0x866D
+
+gl_MAP1_VERTEX_ATTRIB14_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB14_4 = 0x866E
+
+gl_MAP1_VERTEX_ATTRIB15_4 :: GLenum
+gl_MAP1_VERTEX_ATTRIB15_4 = 0x866F
+
+gl_MAP2_VERTEX_ATTRIB0_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB0_4 = 0x8670
+
+gl_MAP2_VERTEX_ATTRIB1_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB1_4 = 0x8671
+
+gl_MAP2_VERTEX_ATTRIB2_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB2_4 = 0x8672
+
+gl_MAP2_VERTEX_ATTRIB3_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB3_4 = 0x8673
+
+gl_MAP2_VERTEX_ATTRIB4_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB4_4 = 0x8674
+
+gl_MAP2_VERTEX_ATTRIB5_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB5_4 = 0x8675
+
+gl_MAP2_VERTEX_ATTRIB6_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB6_4 = 0x8676
+
+gl_MAP2_VERTEX_ATTRIB7_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB7_4 = 0x8677
+
+gl_MAP2_VERTEX_ATTRIB8_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB8_4 = 0x8678
+
+gl_MAP2_VERTEX_ATTRIB9_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB9_4 = 0x8679
+
+gl_MAP2_VERTEX_ATTRIB10_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB10_4 = 0x867A
+
+gl_MAP2_VERTEX_ATTRIB11_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB11_4 = 0x867B
+
+gl_MAP2_VERTEX_ATTRIB12_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB12_4 = 0x867C
+
+gl_MAP2_VERTEX_ATTRIB13_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB13_4 = 0x867D
+
+gl_MAP2_VERTEX_ATTRIB14_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB14_4 = 0x867E
+
+gl_MAP2_VERTEX_ATTRIB15_4 :: GLenum
+gl_MAP2_VERTEX_ATTRIB15_4 = 0x867F
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram2Option.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram2Option.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram2Option.hs
@@ -0,0 +1,22 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.VertexProgram2Option
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_vertex_program2_option extension, see
+-- <http://www.opengl.org/registry/specs/NV/vertex_program2_option.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram2Option (
+   -- * Tokens
+   gl_MAX_PROGRAM_EXEC_INSTRUCTIONS,
+   gl_MAX_PROGRAM_CALL_DEPTH
+) where
+
+import Graphics.Rendering.OpenGL.Raw.NV.FragmentProgram2
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram3.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram3.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram3.hs
@@ -0,0 +1,21 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.VertexProgram3
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_vertex_program3 extension, see
+-- <http://www.opengl.org/registry/specs/NV/vertex_program3.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram3 (
+   -- * Tokens
+   gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS
+) where
+
+import Graphics.Rendering.OpenGL.Raw.ARB.VertexShader
diff --git a/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram4.hs b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram4.hs
new file mode 100644
--- /dev/null
+++ b/src/Graphics/Rendering/OpenGL/Raw/NV/VertexProgram4.hs
@@ -0,0 +1,45 @@
+--------------------------------------------------------------------------------
+-- |
+-- Module      :  Graphics.Rendering.OpenGL.Raw.NV.VertexProgram4
+-- Copyright   :  (c) Sven Panne 2009
+-- License     :  BSD-style (see the file LICENSE)
+--
+-- Maintainer  :  sven.panne@aedion.de
+-- Stability   :  stable
+-- Portability :  portable
+--
+-- All tokens from the NV_vertex_program4 extension, see
+-- <http://www.opengl.org/registry/specs/NV/vertex_program4.txt>.
+--
+--------------------------------------------------------------------------------
+
+module Graphics.Rendering.OpenGL.Raw.NV.VertexProgram4 (
+   -- * Functions
+   glVertexAttribI1i,
+   glVertexAttribI2i,
+   glVertexAttribI3i,
+   glVertexAttribI4i,
+   glVertexAttribI1ui,
+   glVertexAttribI2ui,
+   glVertexAttribI3ui,
+   glVertexAttribI4ui,
+   glVertexAttribI1iv,
+   glVertexAttribI2iv,
+   glVertexAttribI3iv,
+   glVertexAttribI4iv,
+   glVertexAttribI1uiv,
+   glVertexAttribI2uiv,
+   glVertexAttribI3uiv,
+   glVertexAttribI4uiv,
+   glVertexAttribI4bv,
+   glVertexAttribI4sv,
+   glVertexAttribI4ubv,
+   glVertexAttribI4usv,
+   glVertexAttribIPointer,
+   glGetVertexAttribIiv,
+   glGetVertexAttribIuiv,
+   -- * Tokens
+   gl_VERTEX_ATTRIB_ARRAY_INTEGER
+) where
+
+import Graphics.Rendering.OpenGL.Raw.Core32
