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

  -- * GL_EXT_shader_image_load_store
  , glBindImageTextureEXT
  , glMemoryBarrierEXT
  , pattern GL_ALL_BARRIER_BITS_EXT
  , pattern GL_ATOMIC_COUNTER_BARRIER_BIT_EXT
  , pattern GL_BUFFER_UPDATE_BARRIER_BIT_EXT
  , pattern GL_COMMAND_BARRIER_BIT_EXT
  , pattern GL_ELEMENT_ARRAY_BARRIER_BIT_EXT
  , pattern GL_FRAMEBUFFER_BARRIER_BIT_EXT
  , pattern GL_IMAGE_1D_ARRAY_EXT
  , pattern GL_IMAGE_1D_EXT
  , pattern GL_IMAGE_2D_ARRAY_EXT
  , pattern GL_IMAGE_2D_EXT
  , pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT
  , pattern GL_IMAGE_2D_MULTISAMPLE_EXT
  , pattern GL_IMAGE_2D_RECT_EXT
  , pattern GL_IMAGE_3D_EXT
  , pattern GL_IMAGE_BINDING_ACCESS_EXT
  , pattern GL_IMAGE_BINDING_FORMAT_EXT
  , pattern GL_IMAGE_BINDING_LAYERED_EXT
  , pattern GL_IMAGE_BINDING_LAYER_EXT
  , pattern GL_IMAGE_BINDING_LEVEL_EXT
  , pattern GL_IMAGE_BINDING_NAME_EXT
  , pattern GL_IMAGE_BUFFER_EXT
  , pattern GL_IMAGE_CUBE_EXT
  , pattern GL_IMAGE_CUBE_MAP_ARRAY_EXT
  , pattern GL_INT_IMAGE_1D_ARRAY_EXT
  , pattern GL_INT_IMAGE_1D_EXT
  , pattern GL_INT_IMAGE_2D_ARRAY_EXT
  , pattern GL_INT_IMAGE_2D_EXT
  , pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT
  , pattern GL_INT_IMAGE_2D_MULTISAMPLE_EXT
  , pattern GL_INT_IMAGE_2D_RECT_EXT
  , pattern GL_INT_IMAGE_3D_EXT
  , pattern GL_INT_IMAGE_BUFFER_EXT
  , pattern GL_INT_IMAGE_CUBE_EXT
  , pattern GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT
  , pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT
  , pattern GL_MAX_IMAGE_SAMPLES_EXT
  , pattern GL_MAX_IMAGE_UNITS_EXT
  , pattern GL_PIXEL_BUFFER_BARRIER_BIT_EXT
  , pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT
  , pattern GL_TEXTURE_FETCH_BARRIER_BIT_EXT
  , pattern GL_TEXTURE_UPDATE_BARRIER_BIT_EXT
  , pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT
  , pattern GL_UNIFORM_BARRIER_BIT_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_1D_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_2D_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_3D_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_BUFFER_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_EXT
  , pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT
  , pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_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_shader_image_load_store :: Bool
gl_EXT_shader_image_load_store = member "GL_EXT_shader_image_load_store" extensions

glBindImageTextureEXT :: MonadIO m => GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> m ()
glBindImageTextureEXT = ffiuintuintintbooleanintenumintIOV glBindImageTextureEXTFunPtr

glBindImageTextureEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLint -> IO ())
glBindImageTextureEXTFunPtr = unsafePerformIO (getProcAddress "glBindImageTextureEXT")

{-# NOINLINE glBindImageTextureEXTFunPtr #-}

glMemoryBarrierEXT :: MonadIO m => GLbitfield -> m ()
glMemoryBarrierEXT = ffibitfieldIOV glMemoryBarrierEXTFunPtr

glMemoryBarrierEXTFunPtr :: FunPtr (GLbitfield -> IO ())
glMemoryBarrierEXTFunPtr = unsafePerformIO (getProcAddress "glMemoryBarrierEXT")

{-# NOINLINE glMemoryBarrierEXTFunPtr #-}

pattern GL_ALL_BARRIER_BITS_EXT = 0xFFFFFFFF :: GLenum

pattern GL_ATOMIC_COUNTER_BARRIER_BIT_EXT = 0x00001000 :: GLenum

pattern GL_BUFFER_UPDATE_BARRIER_BIT_EXT = 0x00000200 :: GLenum

pattern GL_COMMAND_BARRIER_BIT_EXT = 0x00000040 :: GLenum

pattern GL_ELEMENT_ARRAY_BARRIER_BIT_EXT = 0x00000002 :: GLenum

pattern GL_FRAMEBUFFER_BARRIER_BIT_EXT = 0x00000400 :: GLenum

pattern GL_IMAGE_1D_ARRAY_EXT = 0x9052 :: GLenum

pattern GL_IMAGE_1D_EXT = 0x904C :: GLenum

pattern GL_IMAGE_2D_ARRAY_EXT = 0x9053 :: GLenum

pattern GL_IMAGE_2D_EXT = 0x904D :: GLenum

pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9056 :: GLenum

pattern GL_IMAGE_2D_MULTISAMPLE_EXT = 0x9055 :: GLenum

pattern GL_IMAGE_2D_RECT_EXT = 0x904F :: GLenum

pattern GL_IMAGE_3D_EXT = 0x904E :: GLenum

pattern GL_IMAGE_BINDING_ACCESS_EXT = 0x8F3E :: GLenum

pattern GL_IMAGE_BINDING_FORMAT_EXT = 0x906E :: GLenum

pattern GL_IMAGE_BINDING_LAYERED_EXT = 0x8F3C :: GLenum

pattern GL_IMAGE_BINDING_LAYER_EXT = 0x8F3D :: GLenum

pattern GL_IMAGE_BINDING_LEVEL_EXT = 0x8F3B :: GLenum

pattern GL_IMAGE_BINDING_NAME_EXT = 0x8F3A :: GLenum

pattern GL_IMAGE_CUBE_EXT = 0x9050 :: GLenum

pattern GL_INT_IMAGE_1D_ARRAY_EXT = 0x905D :: GLenum

pattern GL_INT_IMAGE_1D_EXT = 0x9057 :: GLenum

pattern GL_INT_IMAGE_2D_ARRAY_EXT = 0x905E :: GLenum

pattern GL_INT_IMAGE_2D_EXT = 0x9058 :: GLenum

pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9061 :: GLenum

pattern GL_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x9060 :: GLenum

pattern GL_INT_IMAGE_2D_RECT_EXT = 0x905A :: GLenum

pattern GL_INT_IMAGE_3D_EXT = 0x9059 :: GLenum

pattern GL_INT_IMAGE_CUBE_EXT = 0x905B :: GLenum

pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = 0x8F39 :: GLenum

pattern GL_MAX_IMAGE_SAMPLES_EXT = 0x906D :: GLenum

pattern GL_MAX_IMAGE_UNITS_EXT = 0x8F38 :: GLenum

pattern GL_PIXEL_BUFFER_BARRIER_BIT_EXT = 0x00000080 :: GLenum

pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT = 0x00000020 :: GLenum

pattern GL_TEXTURE_FETCH_BARRIER_BIT_EXT = 0x00000008 :: GLenum

pattern GL_TEXTURE_UPDATE_BARRIER_BIT_EXT = 0x00000100 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT = 0x00000800 :: GLenum

pattern GL_UNIFORM_BARRIER_BIT_EXT = 0x00000004 :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = 0x9068 :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_1D_EXT = 0x9062 :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = 0x9069 :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_2D_EXT = 0x9063 :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x906C :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x906B :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT = 0x9065 :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_3D_EXT = 0x9064 :: GLenum

pattern GL_UNSIGNED_INT_IMAGE_CUBE_EXT = 0x9066 :: GLenum

pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT = 0x00000001 :: GLenum