-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.QCOM.ExtendedGet (
  -- * Extension Support
    gl_QCOM_extended_get

  -- * GL_QCOM_extended_get
  , glExtGetBufferPointervQCOM
  , glExtGetBuffersQCOM
  , glExtGetFramebuffersQCOM
  , glExtGetRenderbuffersQCOM
  , glExtGetTexLevelParameterivQCOM
  , glExtGetTexSubImageQCOM
  , glExtGetTexturesQCOM
  , glExtTexObjectStateOverrideiQCOM
  , pattern GL_STATE_RESTORE
  , pattern GL_TEXTURE_DEPTH_QCOM
  , pattern GL_TEXTURE_FORMAT_QCOM
  , pattern GL_TEXTURE_HEIGHT_QCOM
  , pattern GL_TEXTURE_IMAGE_VALID_QCOM
  , pattern GL_TEXTURE_INTERNAL_FORMAT_QCOM
  , pattern GL_TEXTURE_NUM_LEVELS_QCOM
  , pattern GL_TEXTURE_OBJECT_VALID_QCOM
  , pattern GL_TEXTURE_TARGET_QCOM
  , pattern GL_TEXTURE_TYPE_QCOM
  , pattern GL_TEXTURE_WIDTH_QCOM
) 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/QCOM/QCOM_extended_get.txt GL_QCOM_extended_get> extension is available.

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

-- | Usage: @'glExtGetBufferPointervQCOM' target params@


glExtGetBufferPointervQCOM :: MonadIO m => GLenum -> Ptr (Ptr ()) -> m ()
glExtGetBufferPointervQCOM :: GLenum -> Ptr (Ptr ()) -> m ()
glExtGetBufferPointervQCOM = FunPtr (GLenum -> Ptr (Ptr ()) -> IO ())
-> GLenum -> Ptr (Ptr ()) -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> Ptr (Ptr ()) -> IO ())
-> GLenum -> Ptr (Ptr ()) -> m ()
ffienumPtrPtrVIOV FunPtr (GLenum -> Ptr (Ptr ()) -> IO ())
glExtGetBufferPointervQCOMFunPtr

glExtGetBufferPointervQCOMFunPtr :: FunPtr (GLenum -> Ptr (Ptr ()) -> IO ())
glExtGetBufferPointervQCOMFunPtr :: FunPtr (GLenum -> Ptr (Ptr ()) -> IO ())
glExtGetBufferPointervQCOMFunPtr = IO (FunPtr (GLenum -> Ptr (Ptr ()) -> IO ()))
-> FunPtr (GLenum -> Ptr (Ptr ()) -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> Ptr (Ptr ()) -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glExtGetBufferPointervQCOM")

{-# NOINLINE glExtGetBufferPointervQCOMFunPtr #-}

-- | Usage: @'glExtGetBuffersQCOM' buffers maxBuffers numBuffers@
--
-- The length of @buffers@ should be @maxBuffers@.
--
-- The length of @numBuffers@ should be @1@.


glExtGetBuffersQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
glExtGetBuffersQCOM :: Ptr GLenum -> GLint -> Ptr GLint -> m ()
glExtGetBuffersQCOM = FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
ffiPtruintintPtrintIOV FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
glExtGetBuffersQCOMFunPtr

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

{-# NOINLINE glExtGetBuffersQCOMFunPtr #-}

-- | Usage: @'glExtGetFramebuffersQCOM' framebuffers maxFramebuffers numFramebuffers@
--
-- The length of @framebuffers@ should be @maxFramebuffers@.
--
-- The length of @numFramebuffers@ should be @1@.


glExtGetFramebuffersQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
glExtGetFramebuffersQCOM :: Ptr GLenum -> GLint -> Ptr GLint -> m ()
glExtGetFramebuffersQCOM = FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
ffiPtruintintPtrintIOV FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
glExtGetFramebuffersQCOMFunPtr

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

{-# NOINLINE glExtGetFramebuffersQCOMFunPtr #-}

-- | Usage: @'glExtGetRenderbuffersQCOM' renderbuffers maxRenderbuffers numRenderbuffers@
--
-- The length of @renderbuffers@ should be @maxRenderbuffers@.
--
-- The length of @numRenderbuffers@ should be @1@.


glExtGetRenderbuffersQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
glExtGetRenderbuffersQCOM :: Ptr GLenum -> GLint -> Ptr GLint -> m ()
glExtGetRenderbuffersQCOM = FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
ffiPtruintintPtrintIOV FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
glExtGetRenderbuffersQCOMFunPtr

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

{-# NOINLINE glExtGetRenderbuffersQCOMFunPtr #-}

-- | Usage: @'glExtGetTexLevelParameterivQCOM' texture face level pname params@


glExtGetTexLevelParameterivQCOM :: MonadIO m => GLuint -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
glExtGetTexLevelParameterivQCOM :: GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
glExtGetTexLevelParameterivQCOM = FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ())
-> GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ())
-> GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
ffiuintenumintenumPtrintIOV FunPtr (GLenum -> GLenum -> GLint -> GLenum -> Ptr GLint -> IO ())
glExtGetTexLevelParameterivQCOMFunPtr

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

{-# NOINLINE glExtGetTexLevelParameterivQCOMFunPtr #-}

-- | Usage: @'glExtGetTexSubImageQCOM' target level xoffset yoffset zoffset width height depth format type texels@


glExtGetTexSubImageQCOM :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glExtGetTexSubImageQCOM :: GLenum
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLenum
-> GLenum
-> Ptr ()
-> m ()
glExtGetTexSubImageQCOM = FunPtr
  (GLenum
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLenum
   -> GLenum
   -> Ptr ()
   -> IO ())
-> GLenum
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLenum
-> GLenum
-> Ptr ()
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLenum
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLenum
   -> GLenum
   -> Ptr ()
   -> IO ())
-> GLenum
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLint
-> GLenum
-> GLenum
-> Ptr ()
-> m ()
ffienumintintintintsizeisizeisizeienumenumPtrVIOV FunPtr
  (GLenum
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLint
   -> GLenum
   -> GLenum
   -> Ptr ()
   -> IO ())
glExtGetTexSubImageQCOMFunPtr

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

{-# NOINLINE glExtGetTexSubImageQCOMFunPtr #-}

-- | Usage: @'glExtGetTexturesQCOM' textures maxTextures numTextures@


glExtGetTexturesQCOM :: MonadIO m => Ptr GLuint -> GLint -> Ptr GLint -> m ()
glExtGetTexturesQCOM :: Ptr GLenum -> GLint -> Ptr GLint -> m ()
glExtGetTexturesQCOM = FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
-> Ptr GLenum -> GLint -> Ptr GLint -> m ()
ffiPtruintintPtrintIOV FunPtr (Ptr GLenum -> GLint -> Ptr GLint -> IO ())
glExtGetTexturesQCOMFunPtr

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

{-# NOINLINE glExtGetTexturesQCOMFunPtr #-}

-- | Usage: @'glExtTexObjectStateOverrideiQCOM' target pname param@


glExtTexObjectStateOverrideiQCOM :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glExtTexObjectStateOverrideiQCOM :: GLenum -> GLenum -> GLint -> m ()
glExtTexObjectStateOverrideiQCOM = FunPtr (GLenum -> GLenum -> GLint -> IO ())
-> GLenum -> GLenum -> GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLint -> IO ())
-> GLenum -> GLenum -> GLint -> m ()
ffienumenumintIOV FunPtr (GLenum -> GLenum -> GLint -> IO ())
glExtTexObjectStateOverrideiQCOMFunPtr

glExtTexObjectStateOverrideiQCOMFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glExtTexObjectStateOverrideiQCOMFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glExtTexObjectStateOverrideiQCOMFunPtr = IO (FunPtr (GLenum -> GLenum -> GLint -> IO ()))
-> FunPtr (GLenum -> GLenum -> GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glExtTexObjectStateOverrideiQCOM")

{-# NOINLINE glExtTexObjectStateOverrideiQCOMFunPtr #-}

pattern $bGL_STATE_RESTORE :: a
$mGL_STATE_RESTORE :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_STATE_RESTORE = 0x8BDC

pattern $bGL_TEXTURE_DEPTH_QCOM :: a
$mGL_TEXTURE_DEPTH_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_DEPTH_QCOM = 0x8BD4

pattern $bGL_TEXTURE_FORMAT_QCOM :: a
$mGL_TEXTURE_FORMAT_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_FORMAT_QCOM = 0x8BD6

pattern $bGL_TEXTURE_HEIGHT_QCOM :: a
$mGL_TEXTURE_HEIGHT_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_HEIGHT_QCOM = 0x8BD3

pattern $bGL_TEXTURE_IMAGE_VALID_QCOM :: a
$mGL_TEXTURE_IMAGE_VALID_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_IMAGE_VALID_QCOM = 0x8BD8

pattern $bGL_TEXTURE_INTERNAL_FORMAT_QCOM :: a
$mGL_TEXTURE_INTERNAL_FORMAT_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_INTERNAL_FORMAT_QCOM = 0x8BD5

pattern $bGL_TEXTURE_NUM_LEVELS_QCOM :: a
$mGL_TEXTURE_NUM_LEVELS_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_NUM_LEVELS_QCOM = 0x8BD9

pattern $bGL_TEXTURE_OBJECT_VALID_QCOM :: a
$mGL_TEXTURE_OBJECT_VALID_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_OBJECT_VALID_QCOM = 0x8BDB

pattern $bGL_TEXTURE_TARGET_QCOM :: a
$mGL_TEXTURE_TARGET_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_TARGET_QCOM = 0x8BDA

pattern $bGL_TEXTURE_TYPE_QCOM :: a
$mGL_TEXTURE_TYPE_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_TYPE_QCOM = 0x8BD7

pattern $bGL_TEXTURE_WIDTH_QCOM :: a
$mGL_TEXTURE_WIDTH_QCOM :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_WIDTH_QCOM = 0x8BD2