-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.AMD.PerformanceMonitor (
  -- * Extension Support
    gl_AMD_performance_monitor

  -- * GL_AMD_performance_monitor
  , glBeginPerfMonitorAMD
  , glDeletePerfMonitorsAMD
  , glEndPerfMonitorAMD
  , glGenPerfMonitorsAMD
  , glGetPerfMonitorCounterDataAMD
  , glGetPerfMonitorCounterInfoAMD
  , glGetPerfMonitorCounterStringAMD
  , glGetPerfMonitorCountersAMD
  , glGetPerfMonitorGroupStringAMD
  , glGetPerfMonitorGroupsAMD
  , glSelectPerfMonitorCountersAMD
  , pattern GL_COUNTER_RANGE_AMD
  , pattern GL_COUNTER_TYPE_AMD
  , pattern GL_PERCENTAGE_AMD
  , pattern GL_PERFMON_RESULT_AMD
  , pattern GL_PERFMON_RESULT_AVAILABLE_AMD
  , pattern GL_PERFMON_RESULT_SIZE_AMD
  , pattern GL_UNSIGNED_INT64_AMD
) where

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

-- | Checks that the <https://www.khronos.org/registry/gles/extensions/AMD/AMD_performance_monitor.txt GL_AMD_performance_monitor> extension is available.

gl_AMD_performance_monitor :: Bool
gl_AMD_performance_monitor :: Bool
gl_AMD_performance_monitor = [Char] -> Set [Char] -> Bool
forall a. Ord a => a -> Set a -> Bool
member "GL_AMD_performance_monitor" Set [Char]
extensions
{-# NOINLINE gl_AMD_performance_monitor #-}

-- | Usage: @'glBeginPerfMonitorAMD' monitor@


glBeginPerfMonitorAMD :: MonadIO m => GLuint -> m ()
glBeginPerfMonitorAMD :: GLuint -> m ()
glBeginPerfMonitorAMD = FunPtr (GLuint -> IO ()) -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO ()) -> GLuint -> m ()
ffiuintIOV FunPtr (GLuint -> IO ())
glBeginPerfMonitorAMDFunPtr

glBeginPerfMonitorAMDFunPtr :: FunPtr (GLuint -> IO ())
glBeginPerfMonitorAMDFunPtr :: FunPtr (GLuint -> IO ())
glBeginPerfMonitorAMDFunPtr = IO (FunPtr (GLuint -> IO ())) -> FunPtr (GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBeginPerfMonitorAMD")

{-# NOINLINE glBeginPerfMonitorAMDFunPtr #-}

-- | Usage: @'glDeletePerfMonitorsAMD' n monitors@
--
-- The length of @monitors@ should be @n@.


glDeletePerfMonitorsAMD :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeletePerfMonitorsAMD :: GLsizei -> Ptr GLuint -> m ()
glDeletePerfMonitorsAMD = FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeletePerfMonitorsAMDFunPtr

glDeletePerfMonitorsAMDFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeletePerfMonitorsAMDFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeletePerfMonitorsAMDFunPtr = IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
-> FunPtr (GLsizei -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeletePerfMonitorsAMD")

{-# NOINLINE glDeletePerfMonitorsAMDFunPtr #-}

-- | Usage: @'glEndPerfMonitorAMD' monitor@


glEndPerfMonitorAMD :: MonadIO m => GLuint -> m ()
glEndPerfMonitorAMD :: GLuint -> m ()
glEndPerfMonitorAMD = FunPtr (GLuint -> IO ()) -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO ()) -> GLuint -> m ()
ffiuintIOV FunPtr (GLuint -> IO ())
glEndPerfMonitorAMDFunPtr

glEndPerfMonitorAMDFunPtr :: FunPtr (GLuint -> IO ())
glEndPerfMonitorAMDFunPtr :: FunPtr (GLuint -> IO ())
glEndPerfMonitorAMDFunPtr = IO (FunPtr (GLuint -> IO ())) -> FunPtr (GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glEndPerfMonitorAMD")

{-# NOINLINE glEndPerfMonitorAMDFunPtr #-}

-- | Usage: @'glGenPerfMonitorsAMD' n monitors@
--
-- The length of @monitors@ should be @n@.


glGenPerfMonitorsAMD :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenPerfMonitorsAMD :: GLsizei -> Ptr GLuint -> m ()
glGenPerfMonitorsAMD = FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLuint -> IO ())
-> GLsizei -> Ptr GLuint -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenPerfMonitorsAMDFunPtr

glGenPerfMonitorsAMDFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenPerfMonitorsAMDFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenPerfMonitorsAMDFunPtr = IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
-> FunPtr (GLsizei -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsizei -> Ptr GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGenPerfMonitorsAMD")

{-# NOINLINE glGenPerfMonitorsAMDFunPtr #-}

-- | Usage: @'glGetPerfMonitorCounterDataAMD' monitor pname dataSize data bytesWritten@
--
-- The length of @data@ should be @dataSize@.
--
-- The length of @bytesWritten@ should be @1@.


glGetPerfMonitorCounterDataAMD :: MonadIO m => GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> m ()
glGetPerfMonitorCounterDataAMD :: GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> m ()
glGetPerfMonitorCounterDataAMD = FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> IO ())
-> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> IO ())
-> GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> m ()
ffiuintenumsizeiPtruintPtrintIOV FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> IO ())
glGetPerfMonitorCounterDataAMDFunPtr

glGetPerfMonitorCounterDataAMDFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> Ptr GLuint -> Ptr GLint -> IO ())
glGetPerfMonitorCounterDataAMDFunPtr :: FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> IO ())
glGetPerfMonitorCounterDataAMDFunPtr = IO
  (FunPtr
     (GLuint
      -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> IO ()))
-> FunPtr
     (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLsizei -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetPerfMonitorCounterDataAMD")

{-# NOINLINE glGetPerfMonitorCounterDataAMDFunPtr #-}

-- | Usage: @'glGetPerfMonitorCounterInfoAMD' group counter pname data@
--
-- The length of @data@ should be @COMPSIZE(pname)@.


glGetPerfMonitorCounterInfoAMD :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr () -> m ()
glGetPerfMonitorCounterInfoAMD :: GLuint -> GLuint -> GLuint -> Ptr () -> m ()
glGetPerfMonitorCounterInfoAMD = FunPtr (GLuint -> GLuint -> GLuint -> Ptr () -> IO ())
-> GLuint -> GLuint -> GLuint -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> Ptr () -> IO ())
-> GLuint -> GLuint -> GLuint -> Ptr () -> m ()
ffiuintuintenumPtrVIOV FunPtr (GLuint -> GLuint -> GLuint -> Ptr () -> IO ())
glGetPerfMonitorCounterInfoAMDFunPtr

glGetPerfMonitorCounterInfoAMDFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr () -> IO ())
glGetPerfMonitorCounterInfoAMDFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr () -> IO ())
glGetPerfMonitorCounterInfoAMDFunPtr = IO (FunPtr (GLuint -> GLuint -> GLuint -> Ptr () -> IO ()))
-> FunPtr (GLuint -> GLuint -> GLuint -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO (FunPtr (GLuint -> GLuint -> GLuint -> Ptr () -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetPerfMonitorCounterInfoAMD")

{-# NOINLINE glGetPerfMonitorCounterInfoAMDFunPtr #-}

-- | Usage: @'glGetPerfMonitorCounterStringAMD' group counter bufSize length counterString@
--
-- The length of @length@ should be @1@.
--
-- The length of @counterString@ should be @bufSize@.


glGetPerfMonitorCounterStringAMD :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetPerfMonitorCounterStringAMD :: GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetPerfMonitorCounterStringAMD = FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
ffiuintuintsizeiPtrsizeiPtrcharIOV FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetPerfMonitorCounterStringAMDFunPtr

glGetPerfMonitorCounterStringAMDFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetPerfMonitorCounterStringAMDFunPtr :: FunPtr
  (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetPerfMonitorCounterStringAMDFunPtr = IO
  (FunPtr
     (GLuint
      -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
-> FunPtr
     (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetPerfMonitorCounterStringAMD")

{-# NOINLINE glGetPerfMonitorCounterStringAMDFunPtr #-}

-- | Usage: @'glGetPerfMonitorCountersAMD' group numCounters maxActiveCounters counterSize counters@
--
-- The length of @numCounters@ should be @1@.
--
-- The length of @maxActiveCounters@ should be @1@.
--
-- The length of @counters@ should be @counterSize@.


glGetPerfMonitorCountersAMD :: MonadIO m => GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> m ()
glGetPerfMonitorCountersAMD :: GLuint
-> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> m ()
glGetPerfMonitorCountersAMD = FunPtr
  (GLuint
   -> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
-> GLuint
-> Ptr GLsizei
-> Ptr GLsizei
-> GLsizei
-> Ptr GLuint
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint
   -> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
-> GLuint
-> Ptr GLsizei
-> Ptr GLsizei
-> GLsizei
-> Ptr GLuint
-> m ()
ffiuintPtrintPtrintsizeiPtruintIOV FunPtr
  (GLuint
   -> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
glGetPerfMonitorCountersAMDFunPtr

glGetPerfMonitorCountersAMDFunPtr :: FunPtr (GLuint -> Ptr GLint -> Ptr GLint -> GLsizei -> Ptr GLuint -> IO ())
glGetPerfMonitorCountersAMDFunPtr :: FunPtr
  (GLuint
   -> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
glGetPerfMonitorCountersAMDFunPtr = IO
  (FunPtr
     (GLuint
      -> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ()))
-> FunPtr
     (GLuint
      -> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> Ptr GLsizei -> Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetPerfMonitorCountersAMD")

{-# NOINLINE glGetPerfMonitorCountersAMDFunPtr #-}

-- | Usage: @'glGetPerfMonitorGroupStringAMD' group bufSize length groupString@
--
-- The length of @length@ should be @1@.
--
-- The length of @groupString@ should be @bufSize@.


glGetPerfMonitorGroupStringAMD :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetPerfMonitorGroupStringAMD :: GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetPerfMonitorGroupStringAMD = FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
ffiuintsizeiPtrsizeiPtrcharIOV FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetPerfMonitorGroupStringAMDFunPtr

glGetPerfMonitorGroupStringAMDFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetPerfMonitorGroupStringAMDFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetPerfMonitorGroupStringAMDFunPtr = IO
  (FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
-> FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetPerfMonitorGroupStringAMD")

{-# NOINLINE glGetPerfMonitorGroupStringAMDFunPtr #-}

-- | Usage: @'glGetPerfMonitorGroupsAMD' numGroups groupsSize groups@
--
-- The length of @numGroups@ should be @1@.
--
-- The length of @groups@ should be @groupsSize@.


glGetPerfMonitorGroupsAMD :: MonadIO m => Ptr GLint -> GLsizei -> Ptr GLuint -> m ()
glGetPerfMonitorGroupsAMD :: Ptr GLsizei -> GLsizei -> Ptr GLuint -> m ()
glGetPerfMonitorGroupsAMD = FunPtr (Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
-> Ptr GLsizei -> GLsizei -> Ptr GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
-> Ptr GLsizei -> GLsizei -> Ptr GLuint -> m ()
ffiPtrintsizeiPtruintIOV FunPtr (Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
glGetPerfMonitorGroupsAMDFunPtr

glGetPerfMonitorGroupsAMDFunPtr :: FunPtr (Ptr GLint -> GLsizei -> Ptr GLuint -> IO ())
glGetPerfMonitorGroupsAMDFunPtr :: FunPtr (Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
glGetPerfMonitorGroupsAMDFunPtr = IO (FunPtr (Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ()))
-> FunPtr (Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO (FunPtr (Ptr GLsizei -> GLsizei -> Ptr GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetPerfMonitorGroupsAMD")

{-# NOINLINE glGetPerfMonitorGroupsAMDFunPtr #-}

-- | Usage: @'glSelectPerfMonitorCountersAMD' monitor enable group numCounters counterList@
--
-- The parameter @enable@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @counterList@ should be @numCounters@.


glSelectPerfMonitorCountersAMD :: MonadIO m => GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> m ()
glSelectPerfMonitorCountersAMD :: GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> m ()
glSelectPerfMonitorCountersAMD = FunPtr
  (GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
-> GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
-> GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> m ()
ffiuintbooleanuintintPtruintIOV FunPtr
  (GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
glSelectPerfMonitorCountersAMDFunPtr

glSelectPerfMonitorCountersAMDFunPtr :: FunPtr (GLuint -> GLboolean -> GLuint -> GLint -> Ptr GLuint -> IO ())
glSelectPerfMonitorCountersAMDFunPtr :: FunPtr
  (GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
glSelectPerfMonitorCountersAMDFunPtr = IO
  (FunPtr
     (GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> IO ()))
-> FunPtr
     (GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint -> GLboolean -> GLuint -> GLsizei -> Ptr GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glSelectPerfMonitorCountersAMD")

{-# NOINLINE glSelectPerfMonitorCountersAMDFunPtr #-}

pattern $bGL_COUNTER_RANGE_AMD :: a
$mGL_COUNTER_RANGE_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_COUNTER_RANGE_AMD = 0x8BC1

pattern $bGL_COUNTER_TYPE_AMD :: a
$mGL_COUNTER_TYPE_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_COUNTER_TYPE_AMD = 0x8BC0

pattern $bGL_PERCENTAGE_AMD :: a
$mGL_PERCENTAGE_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PERCENTAGE_AMD = 0x8BC3

pattern $bGL_PERFMON_RESULT_AMD :: a
$mGL_PERFMON_RESULT_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PERFMON_RESULT_AMD = 0x8BC6

pattern $bGL_PERFMON_RESULT_AVAILABLE_AMD :: a
$mGL_PERFMON_RESULT_AVAILABLE_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PERFMON_RESULT_AVAILABLE_AMD = 0x8BC4

pattern $bGL_PERFMON_RESULT_SIZE_AMD :: a
$mGL_PERFMON_RESULT_SIZE_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PERFMON_RESULT_SIZE_AMD = 0x8BC5

pattern $bGL_UNSIGNED_INT64_AMD :: a
$mGL_UNSIGNED_INT64_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_UNSIGNED_INT64_AMD = 0x8BC2