-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.EXT.MultiviewDrawBuffers (
  -- * Extension Support
    gl_EXT_multiview_draw_buffers

  -- * GL_EXT_multiview_draw_buffers
  , glDrawBuffersIndexedEXT
  , glGetIntegeri_vEXT
  , glReadBufferIndexedEXT
  , pattern GL_COLOR_ATTACHMENT_EXT
  , pattern GL_DRAW_BUFFER_EXT
  , pattern GL_MAX_MULTIVIEW_BUFFERS_EXT
  , pattern GL_MULTIVIEW_EXT
  , pattern GL_READ_BUFFER_EXT
) 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_EXT_multiview_draw_buffers :: Bool
gl_EXT_multiview_draw_buffers = member "GL_EXT_multiview_draw_buffers" extensions

glDrawBuffersIndexedEXT :: MonadIO m => GLint -> Ptr GLenum -> Ptr GLint -> m ()
glDrawBuffersIndexedEXT = ffiintPtrenumPtrintIOV glDrawBuffersIndexedEXTFunPtr

glDrawBuffersIndexedEXTFunPtr :: FunPtr (GLint -> Ptr GLenum -> Ptr GLint -> IO ())
glDrawBuffersIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glDrawBuffersIndexedEXT")

{-# NOINLINE glDrawBuffersIndexedEXTFunPtr #-}

glGetIntegeri_vEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
glGetIntegeri_vEXT = ffienumuintPtrintIOV glGetIntegeri_vEXTFunPtr

glGetIntegeri_vEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
glGetIntegeri_vEXTFunPtr = unsafePerformIO (getProcAddress "glGetIntegeri_vEXT")

{-# NOINLINE glGetIntegeri_vEXTFunPtr #-}

glReadBufferIndexedEXT :: MonadIO m => GLenum -> GLint -> m ()
glReadBufferIndexedEXT = ffienumintIOV glReadBufferIndexedEXTFunPtr

glReadBufferIndexedEXTFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glReadBufferIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glReadBufferIndexedEXT")

{-# NOINLINE glReadBufferIndexedEXTFunPtr #-}

pattern GL_COLOR_ATTACHMENT_EXT = 0x90F0 :: GLenum

pattern GL_DRAW_BUFFER_EXT = 0x0C01 :: GLenum

pattern GL_MAX_MULTIVIEW_BUFFERS_EXT = 0x90F2 :: GLenum

pattern GL_MULTIVIEW_EXT = 0x90F1 :: GLenum

pattern GL_READ_BUFFER_EXT = 0x0C02 :: GLenum