Struct vulkano::buffer::device_local::DeviceLocalBuffer
[−]
[src]
pub struct DeviceLocalBuffer<T: ?Sized, A = StdMemoryPoolAlloc> { /* fields omitted */ }
Buffer whose content is in device-local memory.
This buffer type is useful in order to store intermediary data. For example you execute a compute shader that writes to this buffer, then read the content of the buffer in a following compute or graphics pipeline.
The DeviceLocalBuffer
will be in device-local memory, unless the device doesn't provide any
device-local memory.
Methods
impl<T> DeviceLocalBuffer<T>
[src]
fn new<'a, I>(
device: Arc<Device>,
usage: BufferUsage,
queue_families: I
) -> Result<Arc<DeviceLocalBuffer<T>>, DeviceMemoryAllocError> where
I: IntoIterator<Item = QueueFamily<'a>>,
device: Arc<Device>,
usage: BufferUsage,
queue_families: I
) -> Result<Arc<DeviceLocalBuffer<T>>, DeviceMemoryAllocError> where
I: IntoIterator<Item = QueueFamily<'a>>,
Builds a new buffer. Only allowed for sized data.
impl<T> DeviceLocalBuffer<[T]>
[src]
fn array<'a, I>(
device: Arc<Device>,
len: usize,
usage: BufferUsage,
queue_families: I
) -> Result<Arc<DeviceLocalBuffer<[T]>>, DeviceMemoryAllocError> where
I: IntoIterator<Item = QueueFamily<'a>>,
device: Arc<Device>,
len: usize,
usage: BufferUsage,
queue_families: I
) -> Result<Arc<DeviceLocalBuffer<[T]>>, DeviceMemoryAllocError> where
I: IntoIterator<Item = QueueFamily<'a>>,
Builds a new buffer. Can be used for arrays.
impl<T: ?Sized> DeviceLocalBuffer<T>
[src]
unsafe fn raw<'a, I>(
device: Arc<Device>,
size: usize,
usage: BufferUsage,
queue_families: I
) -> Result<Arc<DeviceLocalBuffer<T>>, DeviceMemoryAllocError> where
I: IntoIterator<Item = QueueFamily<'a>>,
device: Arc<Device>,
size: usize,
usage: BufferUsage,
queue_families: I
) -> Result<Arc<DeviceLocalBuffer<T>>, DeviceMemoryAllocError> where
I: IntoIterator<Item = QueueFamily<'a>>,
Builds a new buffer without checking the size.
Safety
You must ensure that the size that you pass is correct for T
.
impl<T: ?Sized, A> DeviceLocalBuffer<T, A>
[src]
fn queue_families(&self) -> Vec<QueueFamily>
Returns the queue families this buffer can be used on.
Trait Implementations
impl<T: Debug + ?Sized, A: Debug> Debug for DeviceLocalBuffer<T, A>
[src]
impl<T: ?Sized, A> DeviceOwned for DeviceLocalBuffer<T, A>
[src]
impl<T: ?Sized, A> BufferAccess for DeviceLocalBuffer<T, A> where
T: 'static + Send + Sync,
[src]
T: 'static + Send + Sync,
fn inner(&self) -> BufferInner
Returns the inner information about this buffer.
fn size(&self) -> usize
Returns the size of the buffer in bytes.
fn conflict_key(&self, self_offset: usize, self_size: usize) -> u64
Returns a key that uniquely identifies the range given by offset/size. Read more
fn try_gpu_lock(&self, exclusive: bool, _: &Queue) -> Result<(), AccessError>
Locks the resource for usage on the GPU. Returns an error if the lock can't be acquired. Read more
unsafe fn increase_gpu_lock(&self)
Locks the resource for usage on the GPU. Supposes that the resource is already locked, and simply increases the lock by one. Read more
unsafe fn unlock(&self)
Unlocks the resource previously acquired with try_gpu_lock
or increase_gpu_lock
. Read more
fn len(&self) -> usize where
Self: TypedBufferAccess,
Self::Content: Content,
Self: TypedBufferAccess,
Self::Content: Content,
Returns the length of the buffer in number of elements. Read more
fn as_buffer_slice(&self) -> BufferSlice<Self::Content, &Self> where
Self: Sized + TypedBufferAccess,
Self: Sized + TypedBufferAccess,
Builds a BufferSlice
object holding the buffer by reference.
fn slice<T>(&self, range: Range<usize>) -> Option<BufferSlice<[T], &Self>> where
Self: Sized + TypedBufferAccess<Content = [T]>,
Self: Sized + TypedBufferAccess<Content = [T]>,
Builds a BufferSlice
object holding part of the buffer by reference. Read more
fn into_buffer_slice(self) -> BufferSlice<Self::Content, Self> where
Self: Sized + TypedBufferAccess,
Self: Sized + TypedBufferAccess,
Builds a BufferSlice
object holding the buffer by value.
fn index<T>(&self, index: usize) -> Option<BufferSlice<[T], &Self>> where
Self: Sized + TypedBufferAccess<Content = [T]>,
Self: Sized + TypedBufferAccess<Content = [T]>,
Builds a BufferSlice
object holding part of the buffer by reference. Read more
fn conflicts_buffer(
&self,
self_offset: usize,
self_size: usize,
other: &BufferAccess,
other_offset: usize,
other_size: usize
) -> bool
&self,
self_offset: usize,
self_size: usize,
other: &BufferAccess,
other_offset: usize,
other_size: usize
) -> bool
Returns true if an access to self
(as defined by self_offset
and self_size
) potentially overlaps the same memory as an access to other
(as defined by other_offset
and other_size
). Read more
fn conflicts_image(
&self,
self_offset: usize,
self_size: usize,
other: &ImageAccess,
other_first_layer: u32,
other_num_layers: u32,
other_first_mipmap: u32,
other_num_mipmaps: u32
) -> bool
&self,
self_offset: usize,
self_size: usize,
other: &ImageAccess,
other_first_layer: u32,
other_num_layers: u32,
other_first_mipmap: u32,
other_num_mipmaps: u32
) -> bool
Returns true if an access to self
(as defined by self_offset
and self_size
) potentially overlaps the same memory as an access to other
(as defined by other_first_layer
, other_num_layers
, other_first_mipmap
and other_num_mipmaps
). Read more
fn conflicts_buffer_all(&self, other: &BufferAccess) -> bool
Shortcut for conflicts_buffer
that compares the whole buffer to another.
fn conflicts_image_all(&self, other: &ImageAccess) -> bool
Shortcut for conflicts_image
that compares the whole buffer to a whole image.
fn conflict_key_all(&self) -> u64
Shortcut for conflict_key
that grabs the key of the whole buffer.
impl<T: ?Sized, A> TypedBufferAccess for DeviceLocalBuffer<T, A> where
T: 'static + Send + Sync,
[src]
T: 'static + Send + Sync,
type Content = T
The type of the content.