-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.KHR.Debug (
  -- * Extension Support
    gl_KHR_debug

  -- * GL_KHR_debug
  , glDebugMessageCallback
  , glDebugMessageCallbackKHR
  , glDebugMessageControl
  , glDebugMessageControlKHR
  , glDebugMessageInsert
  , glDebugMessageInsertKHR
  , glGetDebugMessageLog
  , glGetDebugMessageLogKHR
  , glGetObjectLabel
  , glGetObjectLabelKHR
  , glGetObjectPtrLabel
  , glGetObjectPtrLabelKHR
  , glGetPointerv
  , glGetPointervKHR
  , glObjectLabel
  , glObjectLabelKHR
  , glObjectPtrLabel
  , glObjectPtrLabelKHR
  , glPopDebugGroup
  , glPopDebugGroupKHR
  , glPushDebugGroup
  , glPushDebugGroupKHR
  , pattern GL_BUFFER
  , pattern GL_BUFFER_KHR
  , pattern GL_CONTEXT_FLAG_DEBUG_BIT
  , pattern GL_CONTEXT_FLAG_DEBUG_BIT_KHR
  , pattern GL_DEBUG_CALLBACK_FUNCTION
  , pattern GL_DEBUG_CALLBACK_FUNCTION_KHR
  , pattern GL_DEBUG_CALLBACK_USER_PARAM
  , pattern GL_DEBUG_CALLBACK_USER_PARAM_KHR
  , pattern GL_DEBUG_GROUP_STACK_DEPTH
  , pattern GL_DEBUG_GROUP_STACK_DEPTH_KHR
  , pattern GL_DEBUG_LOGGED_MESSAGES
  , pattern GL_DEBUG_LOGGED_MESSAGES_KHR
  , pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH
  , pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR
  , pattern GL_DEBUG_OUTPUT
  , pattern GL_DEBUG_OUTPUT_KHR
  , pattern GL_DEBUG_OUTPUT_SYNCHRONOUS
  , pattern GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR
  , pattern GL_DEBUG_SEVERITY_HIGH
  , pattern GL_DEBUG_SEVERITY_HIGH_KHR
  , pattern GL_DEBUG_SEVERITY_LOW
  , pattern GL_DEBUG_SEVERITY_LOW_KHR
  , pattern GL_DEBUG_SEVERITY_MEDIUM
  , pattern GL_DEBUG_SEVERITY_MEDIUM_KHR
  , pattern GL_DEBUG_SEVERITY_NOTIFICATION
  , pattern GL_DEBUG_SEVERITY_NOTIFICATION_KHR
  , pattern GL_DEBUG_SOURCE_API
  , pattern GL_DEBUG_SOURCE_API_KHR
  , pattern GL_DEBUG_SOURCE_APPLICATION
  , pattern GL_DEBUG_SOURCE_APPLICATION_KHR
  , pattern GL_DEBUG_SOURCE_OTHER
  , pattern GL_DEBUG_SOURCE_OTHER_KHR
  , pattern GL_DEBUG_SOURCE_SHADER_COMPILER
  , pattern GL_DEBUG_SOURCE_SHADER_COMPILER_KHR
  , pattern GL_DEBUG_SOURCE_THIRD_PARTY
  , pattern GL_DEBUG_SOURCE_THIRD_PARTY_KHR
  , pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM
  , pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR
  , pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
  , pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR
  , pattern GL_DEBUG_TYPE_ERROR
  , pattern GL_DEBUG_TYPE_ERROR_KHR
  , pattern GL_DEBUG_TYPE_MARKER
  , pattern GL_DEBUG_TYPE_MARKER_KHR
  , pattern GL_DEBUG_TYPE_OTHER
  , pattern GL_DEBUG_TYPE_OTHER_KHR
  , pattern GL_DEBUG_TYPE_PERFORMANCE
  , pattern GL_DEBUG_TYPE_PERFORMANCE_KHR
  , pattern GL_DEBUG_TYPE_POP_GROUP
  , pattern GL_DEBUG_TYPE_POP_GROUP_KHR
  , pattern GL_DEBUG_TYPE_PORTABILITY
  , pattern GL_DEBUG_TYPE_PORTABILITY_KHR
  , pattern GL_DEBUG_TYPE_PUSH_GROUP
  , pattern GL_DEBUG_TYPE_PUSH_GROUP_KHR
  , pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
  , pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR
  , pattern GL_DISPLAY_LIST
  , pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH
  , pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR
  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES
  , pattern GL_MAX_DEBUG_LOGGED_MESSAGES_KHR
  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH
  , pattern GL_MAX_DEBUG_MESSAGE_LENGTH_KHR
  , pattern GL_MAX_LABEL_LENGTH
  , pattern GL_MAX_LABEL_LENGTH_KHR
  , pattern GL_PROGRAM
  , pattern GL_PROGRAM_KHR
  , pattern GL_PROGRAM_PIPELINE
  , pattern GL_QUERY
  , pattern GL_QUERY_KHR
  , pattern GL_SAMPLER
  , pattern GL_SAMPLER_KHR
  , pattern GL_SHADER
  , pattern GL_SHADER_KHR
  , pattern GL_STACK_OVERFLOW
  , pattern GL_STACK_OVERFLOW_KHR
  , pattern GL_STACK_UNDERFLOW
  , pattern GL_STACK_UNDERFLOW_KHR
  , pattern GL_VERTEX_ARRAY
  , pattern GL_VERTEX_ARRAY_KHR
) 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.Internal.Shared
import Graphics.GL.Raw.Types
import System.IO.Unsafe

gl_KHR_debug :: Bool
gl_KHR_debug = member "GL_KHR_debug" extensions

glDebugMessageCallbackKHR :: MonadIO m => GLDEBUGPROCKHR -> Ptr () -> m ()
glDebugMessageCallbackKHR = ffiDEBUGPROCKHRPtrVIOV glDebugMessageCallbackKHRFunPtr

glDebugMessageCallbackKHRFunPtr :: FunPtr (GLDEBUGPROCKHR -> Ptr () -> IO ())
glDebugMessageCallbackKHRFunPtr = unsafePerformIO (getProcAddress "glDebugMessageCallbackKHR")

{-# NOINLINE glDebugMessageCallbackKHRFunPtr #-}

glDebugMessageControlKHR :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> m ()
glDebugMessageControlKHR = ffienumenumenumsizeiPtruintbooleanIOV glDebugMessageControlKHRFunPtr

glDebugMessageControlKHRFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ())
glDebugMessageControlKHRFunPtr = unsafePerformIO (getProcAddress "glDebugMessageControlKHR")

{-# NOINLINE glDebugMessageControlKHRFunPtr #-}

glDebugMessageInsertKHR :: MonadIO m => GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> m ()
glDebugMessageInsertKHR = ffienumenumuintenumsizeiPtrcharIOV glDebugMessageInsertKHRFunPtr

glDebugMessageInsertKHRFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> IO ())
glDebugMessageInsertKHRFunPtr = unsafePerformIO (getProcAddress "glDebugMessageInsertKHR")

{-# NOINLINE glDebugMessageInsertKHRFunPtr #-}

glGetDebugMessageLogKHR :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> m GLuint
glGetDebugMessageLogKHR = ffiuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint glGetDebugMessageLogKHRFunPtr

glGetDebugMessageLogKHRFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> IO GLuint)
glGetDebugMessageLogKHRFunPtr = unsafePerformIO (getProcAddress "glGetDebugMessageLogKHR")

{-# NOINLINE glGetDebugMessageLogKHRFunPtr #-}

glGetObjectLabelKHR :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetObjectLabelKHR = ffienumuintsizeiPtrsizeiPtrcharIOV glGetObjectLabelKHRFunPtr

glGetObjectLabelKHRFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetObjectLabelKHRFunPtr = unsafePerformIO (getProcAddress "glGetObjectLabelKHR")

{-# NOINLINE glGetObjectLabelKHRFunPtr #-}

glGetObjectPtrLabelKHR :: MonadIO m => Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetObjectPtrLabelKHR = ffiPtrVsizeiPtrsizeiPtrcharIOV glGetObjectPtrLabelKHRFunPtr

glGetObjectPtrLabelKHRFunPtr :: FunPtr (Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetObjectPtrLabelKHRFunPtr = unsafePerformIO (getProcAddress "glGetObjectPtrLabelKHR")

{-# NOINLINE glGetObjectPtrLabelKHRFunPtr #-}

glGetPointervKHR :: MonadIO m => GLenum -> Ptr () -> m ()
glGetPointervKHR = ffienumPtrVIOV glGetPointervKHRFunPtr

glGetPointervKHRFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
glGetPointervKHRFunPtr = unsafePerformIO (getProcAddress "glGetPointervKHR")

{-# NOINLINE glGetPointervKHRFunPtr #-}

glObjectLabelKHR :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
glObjectLabelKHR = ffienumuintsizeiPtrcharIOV glObjectLabelKHRFunPtr

glObjectLabelKHRFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ())
glObjectLabelKHRFunPtr = unsafePerformIO (getProcAddress "glObjectLabelKHR")

{-# NOINLINE glObjectLabelKHRFunPtr #-}

glObjectPtrLabelKHR :: MonadIO m => Ptr () -> GLsizei -> Ptr GLchar -> m ()
glObjectPtrLabelKHR = ffiPtrVsizeiPtrcharIOV glObjectPtrLabelKHRFunPtr

glObjectPtrLabelKHRFunPtr :: FunPtr (Ptr () -> GLsizei -> Ptr GLchar -> IO ())
glObjectPtrLabelKHRFunPtr = unsafePerformIO (getProcAddress "glObjectPtrLabelKHR")

{-# NOINLINE glObjectPtrLabelKHRFunPtr #-}

glPopDebugGroupKHR :: MonadIO m => m ()
glPopDebugGroupKHR = ffiIOV glPopDebugGroupKHRFunPtr

glPopDebugGroupKHRFunPtr :: FunPtr (IO ())
glPopDebugGroupKHRFunPtr = unsafePerformIO (getProcAddress "glPopDebugGroupKHR")

{-# NOINLINE glPopDebugGroupKHRFunPtr #-}

glPushDebugGroupKHR :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
glPushDebugGroupKHR = ffienumuintsizeiPtrcharIOV glPushDebugGroupKHRFunPtr

glPushDebugGroupKHRFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLchar -> IO ())
glPushDebugGroupKHRFunPtr = unsafePerformIO (getProcAddress "glPushDebugGroupKHR")

{-# NOINLINE glPushDebugGroupKHRFunPtr #-}

pattern GL_BUFFER_KHR = 0x82E0 :: GLenum

pattern GL_CONTEXT_FLAG_DEBUG_BIT_KHR = 0x00000002 :: GLenum

pattern GL_DEBUG_CALLBACK_FUNCTION_KHR = 0x8244 :: GLenum

pattern GL_DEBUG_CALLBACK_USER_PARAM_KHR = 0x8245 :: GLenum

pattern GL_DEBUG_GROUP_STACK_DEPTH_KHR = 0x826D :: GLenum

pattern GL_DEBUG_LOGGED_MESSAGES_KHR = 0x9145 :: GLenum

pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 0x8243 :: GLenum

pattern GL_DEBUG_OUTPUT_KHR = 0x92E0 :: GLenum

pattern GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = 0x8242 :: GLenum

pattern GL_DEBUG_SEVERITY_HIGH_KHR = 0x9146 :: GLenum

pattern GL_DEBUG_SEVERITY_LOW_KHR = 0x9148 :: GLenum

pattern GL_DEBUG_SEVERITY_MEDIUM_KHR = 0x9147 :: GLenum

pattern GL_DEBUG_SEVERITY_NOTIFICATION_KHR = 0x826B :: GLenum

pattern GL_DEBUG_SOURCE_API_KHR = 0x8246 :: GLenum

pattern GL_DEBUG_SOURCE_APPLICATION_KHR = 0x824A :: GLenum

pattern GL_DEBUG_SOURCE_OTHER_KHR = 0x824B :: GLenum

pattern GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = 0x8248 :: GLenum

pattern GL_DEBUG_SOURCE_THIRD_PARTY_KHR = 0x8249 :: GLenum

pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 0x8247 :: GLenum

pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 0x824D :: GLenum

pattern GL_DEBUG_TYPE_ERROR_KHR = 0x824C :: GLenum

pattern GL_DEBUG_TYPE_MARKER_KHR = 0x8268 :: GLenum

pattern GL_DEBUG_TYPE_OTHER_KHR = 0x8251 :: GLenum

pattern GL_DEBUG_TYPE_PERFORMANCE_KHR = 0x8250 :: GLenum

pattern GL_DEBUG_TYPE_POP_GROUP_KHR = 0x826A :: GLenum

pattern GL_DEBUG_TYPE_PORTABILITY_KHR = 0x824F :: GLenum

pattern GL_DEBUG_TYPE_PUSH_GROUP_KHR = 0x8269 :: GLenum

pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 0x824E :: GLenum

pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 0x826C :: GLenum

pattern GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = 0x9144 :: GLenum

pattern GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = 0x9143 :: GLenum

pattern GL_MAX_LABEL_LENGTH_KHR = 0x82E8 :: GLenum

pattern GL_PROGRAM_KHR = 0x82E2 :: GLenum

pattern GL_QUERY_KHR = 0x82E3 :: GLenum

pattern GL_SAMPLER_KHR = 0x82E6 :: GLenum

pattern GL_SHADER_KHR = 0x82E1 :: GLenum

pattern GL_STACK_OVERFLOW_KHR = 0x0503 :: GLenum

pattern GL_STACK_UNDERFLOW_KHR = 0x0504 :: GLenum

pattern GL_VERTEX_ARRAY_KHR = 0x8074 :: GLenum