-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.EXT.GpuShader4 (
  -- * Extension Support
    gl_EXT_gpu_shader4

  -- * GL_EXT_gpu_shader4
  , glBindFragDataLocationEXT
  , glGetFragDataLocationEXT
  , glGetUniformuivEXT
  , glUniform1uiEXT
  , glUniform1uivEXT
  , glUniform2uiEXT
  , glUniform2uivEXT
  , glUniform3uiEXT
  , glUniform3uivEXT
  , glUniform4uiEXT
  , glUniform4uivEXT
  , pattern GL_INT_SAMPLER_1D_ARRAY_EXT
  , pattern GL_INT_SAMPLER_1D_EXT
  , pattern GL_INT_SAMPLER_2D_ARRAY_EXT
  , pattern GL_INT_SAMPLER_2D_EXT
  , pattern GL_INT_SAMPLER_2D_RECT_EXT
  , pattern GL_INT_SAMPLER_3D_EXT
  , pattern GL_INT_SAMPLER_BUFFER_EXT
  , pattern GL_INT_SAMPLER_CUBE_EXT
  , pattern GL_MAX_PROGRAM_TEXEL_OFFSET_EXT
  , pattern GL_MIN_PROGRAM_TEXEL_OFFSET_EXT
  , pattern GL_SAMPLER_1D_ARRAY_EXT
  , pattern GL_SAMPLER_1D_ARRAY_SHADOW_EXT
  , pattern GL_SAMPLER_2D_ARRAY_EXT
  , pattern GL_SAMPLER_2D_ARRAY_SHADOW_EXT
  , pattern GL_SAMPLER_BUFFER_EXT
  , pattern GL_SAMPLER_CUBE_SHADOW_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_1D_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_2D_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_3D_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT
  , pattern GL_UNSIGNED_INT_SAMPLER_CUBE_EXT
  , pattern GL_UNSIGNED_INT_VEC2_EXT
  , pattern GL_UNSIGNED_INT_VEC3_EXT
  , pattern GL_UNSIGNED_INT_VEC4_EXT
  , pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT
) 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_EXT_gpu_shader4 :: Bool
gl_EXT_gpu_shader4 = member "GL_EXT_gpu_shader4" extensions

glBindFragDataLocationEXT :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
glBindFragDataLocationEXT = ffiuintuintPtrcharIOV glBindFragDataLocationEXTFunPtr

glBindFragDataLocationEXTFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
glBindFragDataLocationEXTFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocationEXT")

{-# NOINLINE glBindFragDataLocationEXTFunPtr #-}

glGetFragDataLocationEXT :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetFragDataLocationEXT = ffiuintPtrcharIOint glGetFragDataLocationEXTFunPtr

glGetFragDataLocationEXTFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetFragDataLocationEXTFunPtr = unsafePerformIO (getProcAddress "glGetFragDataLocationEXT")

{-# NOINLINE glGetFragDataLocationEXTFunPtr #-}

glGetUniformuivEXT :: MonadIO m => GLuint -> GLint -> Ptr GLuint -> m ()
glGetUniformuivEXT = ffiuintintPtruintIOV glGetUniformuivEXTFunPtr

glGetUniformuivEXTFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLuint -> IO ())
glGetUniformuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetUniformuivEXT")

{-# NOINLINE glGetUniformuivEXTFunPtr #-}

glUniform1uiEXT :: MonadIO m => GLint -> GLuint -> m ()
glUniform1uiEXT = ffiintuintIOV glUniform1uiEXTFunPtr

glUniform1uiEXTFunPtr :: FunPtr (GLint -> GLuint -> IO ())
glUniform1uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform1uiEXT")

{-# NOINLINE glUniform1uiEXTFunPtr #-}

glUniform1uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform1uivEXT = ffiintsizeiPtruintIOV glUniform1uivEXTFunPtr

glUniform1uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform1uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform1uivEXT")

{-# NOINLINE glUniform1uivEXTFunPtr #-}

glUniform2uiEXT :: MonadIO m => GLint -> GLuint -> GLuint -> m ()
glUniform2uiEXT = ffiintuintuintIOV glUniform2uiEXTFunPtr

glUniform2uiEXTFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> IO ())
glUniform2uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform2uiEXT")

{-# NOINLINE glUniform2uiEXTFunPtr #-}

glUniform2uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform2uivEXT = ffiintsizeiPtruintIOV glUniform2uivEXTFunPtr

glUniform2uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform2uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform2uivEXT")

{-# NOINLINE glUniform2uivEXTFunPtr #-}

glUniform3uiEXT :: MonadIO m => GLint -> GLuint -> GLuint -> GLuint -> m ()
glUniform3uiEXT = ffiintuintuintuintIOV glUniform3uiEXTFunPtr

glUniform3uiEXTFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> IO ())
glUniform3uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform3uiEXT")

{-# NOINLINE glUniform3uiEXTFunPtr #-}

glUniform3uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform3uivEXT = ffiintsizeiPtruintIOV glUniform3uivEXTFunPtr

glUniform3uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform3uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform3uivEXT")

{-# NOINLINE glUniform3uivEXTFunPtr #-}

glUniform4uiEXT :: MonadIO m => GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glUniform4uiEXT = ffiintuintuintuintuintIOV glUniform4uiEXTFunPtr

glUniform4uiEXTFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glUniform4uiEXTFunPtr = unsafePerformIO (getProcAddress "glUniform4uiEXT")

{-# NOINLINE glUniform4uiEXTFunPtr #-}

glUniform4uivEXT :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform4uivEXT = ffiintsizeiPtruintIOV glUniform4uivEXTFunPtr

glUniform4uivEXTFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform4uivEXTFunPtr = unsafePerformIO (getProcAddress "glUniform4uivEXT")

{-# NOINLINE glUniform4uivEXTFunPtr #-}

pattern GL_INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE :: GLenum

pattern GL_INT_SAMPLER_1D_EXT = 0x8DC9 :: GLenum

pattern GL_INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF :: GLenum

pattern GL_INT_SAMPLER_2D_EXT = 0x8DCA :: GLenum

pattern GL_INT_SAMPLER_2D_RECT_EXT = 0x8DCD :: GLenum

pattern GL_INT_SAMPLER_3D_EXT = 0x8DCB :: GLenum

pattern GL_INT_SAMPLER_CUBE_EXT = 0x8DCC :: GLenum

pattern GL_MAX_PROGRAM_TEXEL_OFFSET_EXT = 0x8905 :: GLenum

pattern GL_MIN_PROGRAM_TEXEL_OFFSET_EXT = 0x8904 :: GLenum

pattern GL_SAMPLER_1D_ARRAY_EXT = 0x8DC0 :: GLenum

pattern GL_SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3 :: GLenum

pattern GL_SAMPLER_2D_ARRAY_EXT = 0x8DC1 :: GLenum

pattern GL_SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4 :: GLenum

pattern GL_SAMPLER_CUBE_SHADOW_EXT = 0x8DC5 :: GLenum

pattern GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6 :: GLenum

pattern GL_UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1 :: GLenum

pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7 :: GLenum

pattern GL_UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2 :: GLenum

pattern GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5 :: GLenum

pattern GL_UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3 :: GLenum

pattern GL_UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4 :: GLenum

pattern GL_UNSIGNED_INT_VEC2_EXT = 0x8DC6 :: GLenum

pattern GL_UNSIGNED_INT_VEC3_EXT = 0x8DC7 :: GLenum

pattern GL_UNSIGNED_INT_VEC4_EXT = 0x8DC8 :: GLenum

pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD :: GLenum