|
| 1 | +-- part of OpenGLAda, (c) 2022 Felix Krause |
| 2 | +-- released under the terms of the MIT license, see the file "COPYING" |
| 3 | + |
| 4 | +private with GL.Low_Level; |
| 5 | + |
| 6 | +package GL.Memory_Barriers is |
| 7 | + pragma Preelaborate; |
| 8 | + |
| 9 | + type Barrier_Bits is record |
| 10 | + Vertex_Attrib_Array : Boolean := False; |
| 11 | + Element_Array : Boolean := False; |
| 12 | + Uniform : Boolean := False; |
| 13 | + Texture_Fetch : Boolean := False; |
| 14 | + |
| 15 | + Shader_Image_Access : Boolean := False; |
| 16 | + Command : Boolean := False; |
| 17 | + Pixel_Buffer : Boolean := False; |
| 18 | + Texture_Update : Boolean := False; |
| 19 | + Buffer_Update : Boolean := False; |
| 20 | + Framebuffer : Boolean := False; |
| 21 | + Transform_Feedback : Boolean := False; |
| 22 | + Atomic_Counter : Boolean := False; |
| 23 | + Shader_Storage : Boolean := False; |
| 24 | + Client_Mapped_Buffer : Boolean := False; |
| 25 | + Query_Buffer : Boolean := False; |
| 26 | + |
| 27 | + Unused : Boolean := False; |
| 28 | + end record; |
| 29 | + pragma Convention (C, Barrier_Bits); |
| 30 | + |
| 31 | + procedure Memory_Barrier (Bits : Barrier_Bits); |
| 32 | + |
| 33 | +private |
| 34 | + for Barrier_Bits use record |
| 35 | + Vertex_Attrib_Array at 0 range 0 .. 0; |
| 36 | + Element_Array at 0 range 1 .. 1; |
| 37 | + Uniform at 0 range 2 .. 2; |
| 38 | + Texture_Fetch at 0 range 3 .. 3; |
| 39 | + |
| 40 | + Shader_Image_Access at 0 range 5 .. 5; |
| 41 | + Command at 0 range 6 .. 6; |
| 42 | + Pixel_Buffer at 0 range 7 .. 7; |
| 43 | + Texture_Update at 0 range 8 .. 8; |
| 44 | + Buffer_Update at 0 range 9 .. 9; |
| 45 | + Framebuffer at 0 range 10 .. 10; |
| 46 | + Transform_Feedback at 0 range 11 .. 11; |
| 47 | + Atomic_Counter at 0 range 12 .. 12; |
| 48 | + Shader_Storage at 0 range 13 .. 13; |
| 49 | + Client_Mapped_Buffer at 0 range 14 .. 14; |
| 50 | + Query_Buffer at 0 range 15 .. 15; |
| 51 | + |
| 52 | + Unused at 0 range 16 .. 31; |
| 53 | + end record; |
| 54 | + for Barrier_Bits'Size use Low_Level.Bitfield'Size; |
| 55 | +end GL.Memory_Barriers; |
| 56 | + |
0 commit comments