Copyright | (C) 2015, 2016 Dimitri Sabadie |
---|---|
License | BSD3 |
Maintainer | Dimitri Sabadie <dimitri.sabadie@gmail.com> |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
- createBuffer :: forall a m rw. (BufferRW rw, MonadIO m, MonadResource m) => BuildBuffer rw a -> m a
- class BufferRW rw
- data Buffer rw a
- data BuildBuffer rw a
- newRegion :: forall rw a. Storable a => Word32 -> BuildBuffer rw (Buffer rw a)
- readWhole :: (MonadIO m, Readable r, Storable a) => Buffer r a -> m [a]
- writeWhole :: (Foldable f, MonadIO m, Storable a, Writable w) => Buffer w a -> f a -> m ()
- fill :: (MonadIO m, Storable a, Writable w) => Buffer w a -> a -> m ()
- (@?) :: (MonadIO m, Storable a, Readable r) => Buffer r a -> Word32 -> m (Maybe a)
- (@!) :: (MonadIO m, Storable a, Readable r) => Buffer r a -> Word32 -> m a
- writeAt :: (MonadIO m, Storable a, Writable w) => Buffer w a -> Word32 -> a -> m ()
- writeAt' :: (MonadIO m, Storable a, Writable w) => Buffer w a -> Word32 -> a -> m ()
Buffer creation
createBuffer :: forall a m rw. (BufferRW rw, MonadIO m, MonadResource m) => BuildBuffer rw a -> m a Source
Create a new Buffer
. Through the 'BuildBuild type, you can yield new regions and embed them
in the type of your choice. The function returns that type.
Buffer access
Buffer
s can have reads and writes. That typeclass makes implements all possible
cases.
bufferFlagsFromRW
Buffer regions
A Buffer
is a GPU typed memory area. It can be pictured as a GPU array.
data BuildBuffer rw a Source
Convenient type to build Buffer
s.
Monad (BuildBuffer rw) Source | |
Functor (BuildBuffer rw) Source | |
Applicative (BuildBuffer rw) Source |
newRegion :: forall rw a. Storable a => Word32 -> BuildBuffer rw (Buffer rw a) Source
Create a new Buffer
by providing the number of wished elements.
Operations on buffer regions
fill :: (MonadIO m, Storable a, Writable w) => Buffer w a -> a -> m () Source
Fill a Buffer
with a value.
(@?) :: (MonadIO m, Storable a, Readable r) => Buffer r a -> Word32 -> m (Maybe a) Source
Index getter. Bounds checking is performed and returns Nothing
if out of bounds.
(@!) :: (MonadIO m, Storable a, Readable r) => Buffer r a -> Word32 -> m a Source
Index getter. Unsafe version of '(@?)'.