-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.ARB.GeometryShader4 (
  -- * Extension Support
    gl_ARB_geometry_shader4

  -- * GL_ARB_geometry_shader4
  , glFramebufferTextureARB
  , glFramebufferTextureFaceARB
  , glFramebufferTextureLayerARB
  , glProgramParameteriARB
  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB
  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB
  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB
  , pattern GL_GEOMETRY_INPUT_TYPE_ARB
  , pattern GL_GEOMETRY_OUTPUT_TYPE_ARB
  , pattern GL_GEOMETRY_SHADER_ARB
  , pattern GL_GEOMETRY_VERTICES_OUT_ARB
  , pattern GL_LINES_ADJACENCY_ARB
  , pattern GL_LINE_STRIP_ADJACENCY_ARB
  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB
  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB
  , pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB
  , pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB
  , pattern GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB
  , pattern GL_MAX_VARYING_COMPONENTS
  , pattern GL_MAX_VERTEX_VARYING_COMPONENTS_ARB
  , pattern GL_PROGRAM_POINT_SIZE_ARB
  , pattern GL_TRIANGLES_ADJACENCY_ARB
  , pattern GL_TRIANGLE_STRIP_ADJACENCY_ARB
) 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_ARB_geometry_shader4 :: Bool
gl_ARB_geometry_shader4 = member "GL_ARB_geometry_shader4" extensions

glFramebufferTextureARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTextureARB = ffienumenumuintintIOV glFramebufferTextureARBFunPtr

glFramebufferTextureARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTextureARBFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureARB")

{-# NOINLINE glFramebufferTextureARBFunPtr #-}

glFramebufferTextureFaceARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLenum -> m ()
glFramebufferTextureFaceARB = ffienumenumuintintenumIOV glFramebufferTextureFaceARBFunPtr

glFramebufferTextureFaceARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ())
glFramebufferTextureFaceARBFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureFaceARB")

{-# NOINLINE glFramebufferTextureFaceARBFunPtr #-}

glFramebufferTextureLayerARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
glFramebufferTextureLayerARB = ffienumenumuintintintIOV glFramebufferTextureLayerARBFunPtr

glFramebufferTextureLayerARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glFramebufferTextureLayerARBFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureLayerARB")

{-# NOINLINE glFramebufferTextureLayerARBFunPtr #-}

glProgramParameteriARB :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glProgramParameteriARB = ffiuintenumintIOV glProgramParameteriARBFunPtr

glProgramParameteriARBFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glProgramParameteriARBFunPtr = unsafePerformIO (getProcAddress "glProgramParameteriARB")

{-# NOINLINE glProgramParameteriARBFunPtr #-}

pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7 :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9 :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8 :: GLenum

pattern GL_GEOMETRY_INPUT_TYPE_ARB = 0x8DDB :: GLenum

pattern GL_GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC :: GLenum

pattern GL_GEOMETRY_SHADER_ARB = 0x8DD9 :: GLenum

pattern GL_GEOMETRY_VERTICES_OUT_ARB = 0x8DDA :: GLenum

pattern GL_LINES_ADJACENCY_ARB = 0x000A :: GLenum

pattern GL_LINE_STRIP_ADJACENCY_ARB = 0x000B :: GLenum

pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0 :: GLenum

pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29 :: GLenum

pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1 :: GLenum

pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF :: GLenum

pattern GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD :: GLenum

pattern GL_MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE :: GLenum

pattern GL_PROGRAM_POINT_SIZE_ARB = 0x8642 :: GLenum

pattern GL_TRIANGLES_ADJACENCY_ARB = 0x000C :: GLenum

pattern GL_TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D :: GLenum