-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.INTEL.MapTexture (
  -- * Extension Support
    gl_INTEL_map_texture

  -- * GL_INTEL_map_texture
  , glMapTexture2DINTEL
  , glSyncTextureINTEL
  , glUnmapTexture2DINTEL
  , pattern GL_LAYOUT_DEFAULT_INTEL
  , pattern GL_LAYOUT_LINEAR_CPU_CACHED_INTEL
  , pattern GL_LAYOUT_LINEAR_INTEL
  , pattern GL_TEXTURE_MEMORY_LAYOUT_INTEL
) 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_INTEL_map_texture :: Bool
gl_INTEL_map_texture = member "GL_INTEL_map_texture" extensions

glMapTexture2DINTEL :: MonadIO m => GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> m (Ptr ())
glMapTexture2DINTEL = ffiuintintbitfieldPtrintPtrenumIOPtrV glMapTexture2DINTELFunPtr

glMapTexture2DINTELFunPtr :: FunPtr (GLuint -> GLint -> GLbitfield -> Ptr GLint -> Ptr GLenum -> IO (Ptr ()))
glMapTexture2DINTELFunPtr = unsafePerformIO (getProcAddress "glMapTexture2DINTEL")

{-# NOINLINE glMapTexture2DINTELFunPtr #-}

glSyncTextureINTEL :: MonadIO m => GLuint -> m ()
glSyncTextureINTEL = ffiuintIOV glSyncTextureINTELFunPtr

glSyncTextureINTELFunPtr :: FunPtr (GLuint -> IO ())
glSyncTextureINTELFunPtr = unsafePerformIO (getProcAddress "glSyncTextureINTEL")

{-# NOINLINE glSyncTextureINTELFunPtr #-}

glUnmapTexture2DINTEL :: MonadIO m => GLuint -> GLint -> m ()
glUnmapTexture2DINTEL = ffiuintintIOV glUnmapTexture2DINTELFunPtr

glUnmapTexture2DINTELFunPtr :: FunPtr (GLuint -> GLint -> IO ())
glUnmapTexture2DINTELFunPtr = unsafePerformIO (getProcAddress "glUnmapTexture2DINTEL")

{-# NOINLINE glUnmapTexture2DINTELFunPtr #-}

pattern GL_LAYOUT_DEFAULT_INTEL = 0 :: GLenum

pattern GL_LAYOUT_LINEAR_CPU_CACHED_INTEL = 2 :: GLenum

pattern GL_LAYOUT_LINEAR_INTEL = 1 :: GLenum

pattern GL_TEXTURE_MEMORY_LAYOUT_INTEL = 0x83FF :: GLenum