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

  -- * GL_AMD_framebuffer_sample_positions
  , glFramebufferSamplePositionsfvAMD
  , glGetFramebufferParameterfvAMD
  , glGetNamedFramebufferParameterfvAMD
  , glNamedFramebufferSamplePositionsfvAMD
  , pattern GL_ALL_PIXELS_AMD
  , pattern GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD
  , pattern GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD
  , pattern GL_SUBSAMPLE_DISTANCE_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.Internal.Shared
import Graphics.GL.Types
import System.IO.Unsafe

-- | Checks that the <https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_framebuffer_sample_positions.txt GL_AMD_framebuffer_sample_positions> extension is available.

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

-- | Usage: @'glFramebufferSamplePositionsfvAMD' target numsamples pixelindex values@


glFramebufferSamplePositionsfvAMD :: MonadIO m => GLenum -> GLuint -> GLuint -> Ptr GLfloat -> m ()
glFramebufferSamplePositionsfvAMD :: GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
glFramebufferSamplePositionsfvAMD = FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
-> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
-> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
ffienumuintuintPtrfloatIOV FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
glFramebufferSamplePositionsfvAMDFunPtr

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

{-# NOINLINE glFramebufferSamplePositionsfvAMDFunPtr #-}

-- | Usage: @'glGetFramebufferParameterfvAMD' target pname numsamples pixelindex size values@


glGetFramebufferParameterfvAMD :: MonadIO m => GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
glGetFramebufferParameterfvAMD :: GLenum
-> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> m ()
glGetFramebufferParameterfvAMD = FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
-> GLenum
-> GLenum
-> GLenum
-> GLenum
-> GLsizei
-> Ptr GLfloat
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
-> GLenum
-> GLenum
-> GLenum
-> GLenum
-> GLsizei
-> Ptr GLfloat
-> m ()
ffienumenumuintuintsizeiPtrfloatIOV FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
glGetFramebufferParameterfvAMDFunPtr

glGetFramebufferParameterfvAMDFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
glGetFramebufferParameterfvAMDFunPtr :: FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
glGetFramebufferParameterfvAMDFunPtr = IO
  (FunPtr
     (GLenum
      -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()))
-> FunPtr
     (GLenum
      -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLenum
         -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetFramebufferParameterfvAMD")

{-# NOINLINE glGetFramebufferParameterfvAMDFunPtr #-}

-- | Usage: @'glGetNamedFramebufferParameterfvAMD' framebuffer pname numsamples pixelindex size values@


glGetNamedFramebufferParameterfvAMD :: MonadIO m => GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> m ()
glGetNamedFramebufferParameterfvAMD :: GLenum
-> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> m ()
glGetNamedFramebufferParameterfvAMD = FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
-> GLenum
-> GLenum
-> GLenum
-> GLenum
-> GLsizei
-> Ptr GLfloat
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
-> GLenum
-> GLenum
-> GLenum
-> GLenum
-> GLsizei
-> Ptr GLfloat
-> m ()
ffienumenumuintuintsizeiPtrfloatIOV FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
glGetNamedFramebufferParameterfvAMDFunPtr

glGetNamedFramebufferParameterfvAMDFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLuint -> GLsizei -> Ptr GLfloat -> IO ())
glGetNamedFramebufferParameterfvAMDFunPtr :: FunPtr
  (GLenum
   -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
glGetNamedFramebufferParameterfvAMDFunPtr = IO
  (FunPtr
     (GLenum
      -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()))
-> FunPtr
     (GLenum
      -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLenum
         -> GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetNamedFramebufferParameterfvAMD")

{-# NOINLINE glGetNamedFramebufferParameterfvAMDFunPtr #-}

-- | Usage: @'glNamedFramebufferSamplePositionsfvAMD' framebuffer numsamples pixelindex values@


glNamedFramebufferSamplePositionsfvAMD :: MonadIO m => GLuint -> GLuint -> GLuint -> Ptr GLfloat -> m ()
glNamedFramebufferSamplePositionsfvAMD :: GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
glNamedFramebufferSamplePositionsfvAMD = FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
-> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
-> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
ffiuintuintuintPtrfloatIOV FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
glNamedFramebufferSamplePositionsfvAMDFunPtr

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

{-# NOINLINE glNamedFramebufferSamplePositionsfvAMDFunPtr #-}

pattern $bGL_ALL_PIXELS_AMD :: a
$mGL_ALL_PIXELS_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_ALL_PIXELS_AMD = 0xFFFFFFFF

pattern $bGL_PIXELS_PER_SAMPLE_PATTERN_X_AMD :: a
$mGL_PIXELS_PER_SAMPLE_PATTERN_X_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD = 0x91AE

pattern $bGL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD :: a
$mGL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD = 0x91AF