-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.APPLE.FlushBufferRange (
  -- * Extension Support
    gl_APPLE_flush_buffer_range

  -- * GL_APPLE_flush_buffer_range
  , glBufferParameteriAPPLE
  , glFlushMappedBufferRangeAPPLE
  , pattern GL_BUFFER_FLUSHING_UNMAP_APPLE
  , pattern GL_BUFFER_SERIALIZED_MODIFY_APPLE
) where

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

gl_APPLE_flush_buffer_range :: Bool
gl_APPLE_flush_buffer_range = member "GL_APPLE_flush_buffer_range" extensions

glBufferParameteriAPPLE :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glBufferParameteriAPPLE = ffienumenumintIOV glBufferParameteriAPPLEFunPtr

glBufferParameteriAPPLEFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glBufferParameteriAPPLEFunPtr = unsafePerformIO (getProcAddress "glBufferParameteriAPPLE")

{-# NOINLINE glBufferParameteriAPPLEFunPtr #-}

glFlushMappedBufferRangeAPPLE :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> m ()
glFlushMappedBufferRangeAPPLE = ffienumintptrsizeiptrIOV glFlushMappedBufferRangeAPPLEFunPtr

glFlushMappedBufferRangeAPPLEFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> IO ())
glFlushMappedBufferRangeAPPLEFunPtr = unsafePerformIO (getProcAddress "glFlushMappedBufferRangeAPPLE")

{-# NOINLINE glFlushMappedBufferRangeAPPLEFunPtr #-}

pattern GL_BUFFER_FLUSHING_UNMAP_APPLE = 0x8A13 :: GLenum

pattern GL_BUFFER_SERIALIZED_MODIFY_APPLE = 0x8A12 :: GLenum