Trait luminance::buffer::HasBuffer
[−]
[src]
pub unsafe trait HasBuffer { type ABuffer; fn new(size: usize) -> Self::ABuffer; fn free(_: &mut Self::ABuffer); fn write_whole<T>(buffer: &Self::ABuffer,
values: &[T])
-> Result<(), BufferError>; fn write<T>(buffer: &Self::ABuffer,
offset: usize,
x: T)
-> Result<(), BufferError> where T: Copy; fn read_whole<T>(buffer: &Self::ABuffer, nb: usize) -> Vec<T> where T: Copy; fn read<T>(buffer: &Self::ABuffer, offset: usize) -> Option<T> where T: Copy; fn map<T>(_: &mut Self::ABuffer) -> *const T; fn map_mut<T>(_: &mut Self::ABuffer) -> *mut T; fn unmap(_: &mut Self::ABuffer); }
Implement this trait to provide buffers.
Associated Types
type ABuffer
A type representing minimal information to operate on a buffer. For instance, a size, a pointer, a method to retrieve data, a handle, whatever.
Required Methods
fn new(size: usize) -> Self::ABuffer
Create a new buffer with a given size.
fn free(_: &mut Self::ABuffer)
Destroy a buffer.
fn write_whole<T>(buffer: &Self::ABuffer,
values: &[T])
-> Result<(), BufferError>
values: &[T])
-> Result<(), BufferError>
Write values into the buffer.
Warnings
Those warnings are just hints. The behavior for each warning is specific and should be accounted.
Err(BufferError::TooManyValues)
if you provide more values than the buffer’s size. In that
case, the extra items are just ignored and all others are written; that is, the values
argument is considered having the same size as buffer
.
Err(BufferError::TooFewValues)
if you provide less values than the buffer’s size. In that
case, all values
are written and the missing ones remain the same in buffer
.
fn write<T>(buffer: &Self::ABuffer,
offset: usize,
x: T)
-> Result<(), BufferError> where T: Copy
offset: usize,
x: T)
-> Result<(), BufferError> where T: Copy
Write a single value in the buffer at a given offset.
Failures
Err(BufferError::Overflow)
if you provide an offset that doesn’t lie in the allocated GPU
region.
fn read_whole<T>(buffer: &Self::ABuffer, nb: usize) -> Vec<T> where T: Copy
Read all values from the buffer.
fn read<T>(buffer: &Self::ABuffer, offset: usize) -> Option<T> where T: Copy
Read a single value from the buffer at a given offset.
Failures
None
if you provide an offset that doesn’t lie in the allocated GPU region.