Skip to content

Commit 29e44a7

Browse files
committed
Added support for ARB_shader_storage_buffer_object.
1 parent 9fe22fa commit 29e44a7

File tree

3 files changed

+104
-0
lines changed

3 files changed

+104
-0
lines changed

OpenGLRaw.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ library
7979
Graphics.Rendering.OpenGL.Raw.ARB.SeamlessCubeMap,
8080
Graphics.Rendering.OpenGL.Raw.ARB.ShaderAtomicCounters,
8181
Graphics.Rendering.OpenGL.Raw.ARB.ShaderObjects,
82+
Graphics.Rendering.OpenGL.Raw.ARB.ShaderStorageBufferObject,
8283
Graphics.Rendering.OpenGL.Raw.ARB.ShadingLanguage100,
8384
Graphics.Rendering.OpenGL.Raw.ARB.Shadow,
8485
Graphics.Rendering.OpenGL.Raw.ARB.ShadowAmbient,

src/Graphics/Rendering/OpenGL/Raw/ARB.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ module Graphics.Rendering.OpenGL.Raw.ARB (
8989
module Graphics.Rendering.OpenGL.Raw.ARB.ES2Compatibility, -- #95
9090
module Graphics.Rendering.OpenGL.Raw.ARB.ShaderAtomicCounters, -- #114
9191
module Graphics.Rendering.OpenGL.Raw.ARB.ES3Compatibility, -- #127
92+
module Graphics.Rendering.OpenGL.Raw.ARB.ShaderStorageBufferObject, -- #137
9293
module Graphics.Rendering.OpenGL.Raw.ARB.QueryBufferObject -- #148
9394
) where
9495

@@ -163,4 +164,5 @@ import Graphics.Rendering.OpenGL.Raw.ARB.TransformFeedback3
163164
import Graphics.Rendering.OpenGL.Raw.ARB.ES2Compatibility
164165
import Graphics.Rendering.OpenGL.Raw.ARB.ShaderAtomicCounters
165166
import Graphics.Rendering.OpenGL.Raw.ARB.ES3Compatibility
167+
import Graphics.Rendering.OpenGL.Raw.ARB.ShaderStorageBufferObject
166168
import Graphics.Rendering.OpenGL.Raw.ARB.QueryBufferObject
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
{-# LANGUAGE ForeignFunctionInterface, CPP #-}
2+
--------------------------------------------------------------------------------
3+
-- |
4+
-- Module : Graphics.Rendering.OpenGL.Raw.ARB.ShaderStorageBufferObject
5+
-- Copyright : (c) Sven Panne 2013
6+
-- License : BSD3
7+
--
8+
-- Maintainer : Sven Panne <[email protected]>
9+
-- Stability : stable
10+
-- Portability : portable
11+
--
12+
-- All raw functions and tokens from the ARB_shader_storage_buffer_object, see
13+
-- <http://www.opengl.org/registry/specs/ARB/shader_storage_buffer_object.txt>.
14+
--
15+
--------------------------------------------------------------------------------
16+
17+
module Graphics.Rendering.OpenGL.Raw.ARB.ShaderStorageBufferObject (
18+
-- * Functions
19+
glShaderStorageBlockBinding,
20+
21+
-- * Tokens
22+
gl_SHADER_STORAGE_BUFFER,
23+
gl_SHADER_STORAGE_BUFFER_BINDING,
24+
gl_SHADER_STORAGE_BUFFER_START,
25+
gl_SHADER_STORAGE_BUFFER_SIZE,
26+
gl_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
27+
gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS,
28+
gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS,
29+
gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS,
30+
gl_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
31+
gl_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,
32+
gl_MAX_COMBINED_SHADER_STORAGE_BLOCKS,
33+
gl_MAX_SHADER_STORAGE_BUFFER_BINDINGS,
34+
gl_MAX_SHADER_STORAGE_BLOCK_SIZE,
35+
gl_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT,
36+
gl_SHADER_STORAGE_BARRIER_BIT,
37+
gl_MAX_COMBINED_SHADER_OUTPUT_RESOURCES,
38+
gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS
39+
) where
40+
41+
import Foreign.C.Types
42+
import Graphics.Rendering.OpenGL.Raw.Extensions
43+
import Graphics.Rendering.OpenGL.Raw.Core31.Types
44+
45+
#include "HsOpenGLRaw.h"
46+
47+
extensionNameString :: String
48+
extensionNameString = "GL_ARB_shader_storage_buffer_object"
49+
50+
EXTENSION_ENTRY(glShaderStorageBlockBinding, GLuint -> GLuint -> GLuint -> IO())
51+
52+
gl_SHADER_STORAGE_BUFFER :: GLenum
53+
gl_SHADER_STORAGE_BUFFER = 0x90D2
54+
55+
gl_SHADER_STORAGE_BUFFER_BINDING :: GLenum
56+
gl_SHADER_STORAGE_BUFFER_BINDING = 0x90D3
57+
58+
gl_SHADER_STORAGE_BUFFER_START :: GLenum
59+
gl_SHADER_STORAGE_BUFFER_START = 0x90D4
60+
61+
gl_SHADER_STORAGE_BUFFER_SIZE :: GLenum
62+
gl_SHADER_STORAGE_BUFFER_SIZE = 0x90D5
63+
64+
gl_MAX_VERTEX_SHADER_STORAGE_BLOCKS :: GLenum
65+
gl_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6
66+
67+
gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS :: GLenum
68+
gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7
69+
70+
gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS :: GLenum
71+
gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8
72+
73+
gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS :: GLenum
74+
gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9
75+
76+
gl_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS :: GLenum
77+
gl_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA
78+
79+
gl_MAX_COMPUTE_SHADER_STORAGE_BLOCKS :: GLenum
80+
gl_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB
81+
82+
gl_MAX_COMBINED_SHADER_STORAGE_BLOCKS :: GLenum
83+
gl_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC
84+
85+
gl_MAX_SHADER_STORAGE_BUFFER_BINDINGS :: GLenum
86+
gl_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD
87+
88+
gl_MAX_SHADER_STORAGE_BLOCK_SIZE :: GLenum
89+
gl_MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE
90+
91+
gl_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT :: GLenum
92+
gl_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF
93+
94+
gl_SHADER_STORAGE_BARRIER_BIT :: GLbitfield
95+
gl_SHADER_STORAGE_BARRIER_BIT = 0x00002000
96+
97+
gl_MAX_COMBINED_SHADER_OUTPUT_RESOURCES :: GLenum
98+
gl_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39
99+
100+
gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS :: GLenum
101+
gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39

0 commit comments

Comments
 (0)