-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.NV.VertexBufferUnifiedMemory (
  -- * Extension Support
    gl_NV_vertex_buffer_unified_memory

  -- * GL_NV_vertex_buffer_unified_memory
  , glBufferAddressRangeNV
  , glColorFormatNV
  , glEdgeFlagFormatNV
  , glFogCoordFormatNV
  , glGetIntegerui64i_vNV
  , glIndexFormatNV
  , glNormalFormatNV
  , glSecondaryColorFormatNV
  , glTexCoordFormatNV
  , glVertexAttribFormatNV
  , glVertexAttribIFormatNV
  , glVertexFormatNV
  , pattern GL_COLOR_ARRAY_ADDRESS_NV
  , pattern GL_COLOR_ARRAY_LENGTH_NV
  , pattern GL_DRAW_INDIRECT_ADDRESS_NV
  , pattern GL_DRAW_INDIRECT_LENGTH_NV
  , pattern GL_DRAW_INDIRECT_UNIFIED_NV
  , pattern GL_EDGE_FLAG_ARRAY_ADDRESS_NV
  , pattern GL_EDGE_FLAG_ARRAY_LENGTH_NV
  , pattern GL_ELEMENT_ARRAY_ADDRESS_NV
  , pattern GL_ELEMENT_ARRAY_LENGTH_NV
  , pattern GL_ELEMENT_ARRAY_UNIFIED_NV
  , pattern GL_FOG_COORD_ARRAY_ADDRESS_NV
  , pattern GL_FOG_COORD_ARRAY_LENGTH_NV
  , pattern GL_INDEX_ARRAY_ADDRESS_NV
  , pattern GL_INDEX_ARRAY_LENGTH_NV
  , pattern GL_NORMAL_ARRAY_ADDRESS_NV
  , pattern GL_NORMAL_ARRAY_LENGTH_NV
  , pattern GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV
  , pattern GL_SECONDARY_COLOR_ARRAY_LENGTH_NV
  , pattern GL_TEXTURE_COORD_ARRAY_ADDRESS_NV
  , pattern GL_TEXTURE_COORD_ARRAY_LENGTH_NV
  , pattern GL_VERTEX_ARRAY_ADDRESS_NV
  , pattern GL_VERTEX_ARRAY_LENGTH_NV
  , pattern GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV
  , pattern GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV
  , pattern GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV
) where

import Control.Monad.IO.Class
import Data.Set
import Foreign.Ptr
import Graphics.GL.Raw.Internal.FFI
import Graphics.GL.Raw.Internal.Proc
import Graphics.GL.Raw.Types
import System.IO.Unsafe

gl_NV_vertex_buffer_unified_memory :: Bool
gl_NV_vertex_buffer_unified_memory = member "GL_NV_vertex_buffer_unified_memory" extensions

glBufferAddressRangeNV :: MonadIO m => GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> m ()
glBufferAddressRangeNV = ffienumuintuint64EXTsizeiptrIOV glBufferAddressRangeNVFunPtr

glBufferAddressRangeNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint64EXT -> GLsizeiptr -> IO ())
glBufferAddressRangeNVFunPtr = unsafePerformIO (getProcAddress "glBufferAddressRangeNV")

{-# NOINLINE glBufferAddressRangeNVFunPtr #-}

glColorFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
glColorFormatNV = ffiintenumsizeiIOV glColorFormatNVFunPtr

glColorFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
glColorFormatNVFunPtr = unsafePerformIO (getProcAddress "glColorFormatNV")

{-# NOINLINE glColorFormatNVFunPtr #-}

glEdgeFlagFormatNV :: MonadIO m => GLsizei -> m ()
glEdgeFlagFormatNV = ffisizeiIOV glEdgeFlagFormatNVFunPtr

glEdgeFlagFormatNVFunPtr :: FunPtr (GLsizei -> IO ())
glEdgeFlagFormatNVFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagFormatNV")

{-# NOINLINE glEdgeFlagFormatNVFunPtr #-}

glFogCoordFormatNV :: MonadIO m => GLenum -> GLsizei -> m ()
glFogCoordFormatNV = ffienumsizeiIOV glFogCoordFormatNVFunPtr

glFogCoordFormatNVFunPtr :: FunPtr (GLenum -> GLsizei -> IO ())
glFogCoordFormatNVFunPtr = unsafePerformIO (getProcAddress "glFogCoordFormatNV")

{-# NOINLINE glFogCoordFormatNVFunPtr #-}

glGetIntegerui64i_vNV :: MonadIO m => GLenum -> GLuint -> Ptr GLuint64EXT -> m ()
glGetIntegerui64i_vNV = ffienumuintPtruint64EXTIOV glGetIntegerui64i_vNVFunPtr

glGetIntegerui64i_vNVFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint64EXT -> IO ())
glGetIntegerui64i_vNVFunPtr = unsafePerformIO (getProcAddress "glGetIntegerui64i_vNV")

{-# NOINLINE glGetIntegerui64i_vNVFunPtr #-}

glIndexFormatNV :: MonadIO m => GLenum -> GLsizei -> m ()
glIndexFormatNV = ffienumsizeiIOV glIndexFormatNVFunPtr

glIndexFormatNVFunPtr :: FunPtr (GLenum -> GLsizei -> IO ())
glIndexFormatNVFunPtr = unsafePerformIO (getProcAddress "glIndexFormatNV")

{-# NOINLINE glIndexFormatNVFunPtr #-}

glNormalFormatNV :: MonadIO m => GLenum -> GLsizei -> m ()
glNormalFormatNV = ffienumsizeiIOV glNormalFormatNVFunPtr

glNormalFormatNVFunPtr :: FunPtr (GLenum -> GLsizei -> IO ())
glNormalFormatNVFunPtr = unsafePerformIO (getProcAddress "glNormalFormatNV")

{-# NOINLINE glNormalFormatNVFunPtr #-}

glSecondaryColorFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
glSecondaryColorFormatNV = ffiintenumsizeiIOV glSecondaryColorFormatNVFunPtr

glSecondaryColorFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
glSecondaryColorFormatNVFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorFormatNV")

{-# NOINLINE glSecondaryColorFormatNVFunPtr #-}

glTexCoordFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
glTexCoordFormatNV = ffiintenumsizeiIOV glTexCoordFormatNVFunPtr

glTexCoordFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
glTexCoordFormatNVFunPtr = unsafePerformIO (getProcAddress "glTexCoordFormatNV")

{-# NOINLINE glTexCoordFormatNVFunPtr #-}

glVertexAttribFormatNV :: MonadIO m => GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> m ()
glVertexAttribFormatNV = ffiuintintenumbooleansizeiIOV glVertexAttribFormatNVFunPtr

glVertexAttribFormatNVFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> IO ())
glVertexAttribFormatNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribFormatNV")

{-# NOINLINE glVertexAttribFormatNVFunPtr #-}

glVertexAttribIFormatNV :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> m ()
glVertexAttribIFormatNV = ffiuintintenumsizeiIOV glVertexAttribIFormatNVFunPtr

glVertexAttribIFormatNVFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> IO ())
glVertexAttribIFormatNVFunPtr = unsafePerformIO (getProcAddress "glVertexAttribIFormatNV")

{-# NOINLINE glVertexAttribIFormatNVFunPtr #-}

glVertexFormatNV :: MonadIO m => GLint -> GLenum -> GLsizei -> m ()
glVertexFormatNV = ffiintenumsizeiIOV glVertexFormatNVFunPtr

glVertexFormatNVFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> IO ())
glVertexFormatNVFunPtr = unsafePerformIO (getProcAddress "glVertexFormatNV")

{-# NOINLINE glVertexFormatNVFunPtr #-}

pattern GL_COLOR_ARRAY_ADDRESS_NV = 0x8F23 :: GLenum

pattern GL_COLOR_ARRAY_LENGTH_NV = 0x8F2D :: GLenum

pattern GL_DRAW_INDIRECT_ADDRESS_NV = 0x8F41 :: GLenum

pattern GL_DRAW_INDIRECT_LENGTH_NV = 0x8F42 :: GLenum

pattern GL_DRAW_INDIRECT_UNIFIED_NV = 0x8F40 :: GLenum

pattern GL_EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26 :: GLenum

pattern GL_EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30 :: GLenum

pattern GL_ELEMENT_ARRAY_ADDRESS_NV = 0x8F29 :: GLenum

pattern GL_ELEMENT_ARRAY_LENGTH_NV = 0x8F33 :: GLenum

pattern GL_ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F :: GLenum

pattern GL_FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28 :: GLenum

pattern GL_FOG_COORD_ARRAY_LENGTH_NV = 0x8F32 :: GLenum

pattern GL_INDEX_ARRAY_ADDRESS_NV = 0x8F24 :: GLenum

pattern GL_INDEX_ARRAY_LENGTH_NV = 0x8F2E :: GLenum

pattern GL_NORMAL_ARRAY_ADDRESS_NV = 0x8F22 :: GLenum

pattern GL_NORMAL_ARRAY_LENGTH_NV = 0x8F2C :: GLenum

pattern GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27 :: GLenum

pattern GL_SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31 :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25 :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F :: GLenum

pattern GL_VERTEX_ARRAY_ADDRESS_NV = 0x8F21 :: GLenum

pattern GL_VERTEX_ARRAY_LENGTH_NV = 0x8F2B :: GLenum

pattern GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20 :: GLenum

pattern GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A :: GLenum

pattern GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E :: GLenum