{-# LANGUAGE PatternSynonyms #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  Graphics.GL.ARB.ShaderImageLoadStore
-- Copyright   :  (c) Sven Panne 2019
-- License     :  BSD3
--
-- Maintainer  :  Sven Panne <svenpanne@gmail.com>
-- Stability   :  stable
-- Portability :  portable
--
--------------------------------------------------------------------------------

module Graphics.GL.ARB.ShaderImageLoadStore (
  -- * Extension Support
  glGetARBShaderImageLoadStore,
  gl_ARB_shader_image_load_store,
  -- * Enums
  pattern GL_ALL_BARRIER_BITS,
  pattern GL_ATOMIC_COUNTER_BARRIER_BIT,
  pattern GL_BUFFER_UPDATE_BARRIER_BIT,
  pattern GL_COMMAND_BARRIER_BIT,
  pattern GL_ELEMENT_ARRAY_BARRIER_BIT,
  pattern GL_FRAMEBUFFER_BARRIER_BIT,
  pattern GL_IMAGE_1D,
  pattern GL_IMAGE_1D_ARRAY,
  pattern GL_IMAGE_2D,
  pattern GL_IMAGE_2D_ARRAY,
  pattern GL_IMAGE_2D_MULTISAMPLE,
  pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY,
  pattern GL_IMAGE_2D_RECT,
  pattern GL_IMAGE_3D,
  pattern GL_IMAGE_BINDING_ACCESS,
  pattern GL_IMAGE_BINDING_FORMAT,
  pattern GL_IMAGE_BINDING_LAYER,
  pattern GL_IMAGE_BINDING_LAYERED,
  pattern GL_IMAGE_BINDING_LEVEL,
  pattern GL_IMAGE_BINDING_NAME,
  pattern GL_IMAGE_BUFFER,
  pattern GL_IMAGE_CUBE,
  pattern GL_IMAGE_CUBE_MAP_ARRAY,
  pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS,
  pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE,
  pattern GL_IMAGE_FORMAT_COMPATIBILITY_TYPE,
  pattern GL_INT_IMAGE_1D,
  pattern GL_INT_IMAGE_1D_ARRAY,
  pattern GL_INT_IMAGE_2D,
  pattern GL_INT_IMAGE_2D_ARRAY,
  pattern GL_INT_IMAGE_2D_MULTISAMPLE,
  pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY,
  pattern GL_INT_IMAGE_2D_RECT,
  pattern GL_INT_IMAGE_3D,
  pattern GL_INT_IMAGE_BUFFER,
  pattern GL_INT_IMAGE_CUBE,
  pattern GL_INT_IMAGE_CUBE_MAP_ARRAY,
  pattern GL_MAX_COMBINED_IMAGE_UNIFORMS,
  pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS,
  pattern GL_MAX_FRAGMENT_IMAGE_UNIFORMS,
  pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS,
  pattern GL_MAX_IMAGE_SAMPLES,
  pattern GL_MAX_IMAGE_UNITS,
  pattern GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS,
  pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS,
  pattern GL_MAX_VERTEX_IMAGE_UNIFORMS,
  pattern GL_PIXEL_BUFFER_BARRIER_BIT,
  pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT,
  pattern GL_TEXTURE_FETCH_BARRIER_BIT,
  pattern GL_TEXTURE_UPDATE_BARRIER_BIT,
  pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT,
  pattern GL_UNIFORM_BARRIER_BIT,
  pattern GL_UNSIGNED_INT_IMAGE_1D,
  pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY,
  pattern GL_UNSIGNED_INT_IMAGE_2D,
  pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY,
  pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE,
  pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY,
  pattern GL_UNSIGNED_INT_IMAGE_2D_RECT,
  pattern GL_UNSIGNED_INT_IMAGE_3D,
  pattern GL_UNSIGNED_INT_IMAGE_BUFFER,
  pattern GL_UNSIGNED_INT_IMAGE_CUBE,
  pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY,
  pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT,
  -- * Functions
  glBindImageTexture,
  glMemoryBarrier
) where

import Graphics.GL.ExtensionPredicates
import Graphics.GL.Tokens
import Graphics.GL.Functions