Struct vulkano::buffer::device_local::DeviceLocalBuffer
source · pub struct DeviceLocalBuffer<T: ?Sized, A = PotentialDedicatedAllocation<StdMemoryPoolAlloc>> { /* private fields */ }
Expand description
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.
Implementations
sourceimpl<T> DeviceLocalBuffer<T>
impl<T> DeviceLocalBuffer<T>
sourcepub fn new<'a, I>(
device: Arc<Device>,
usage: BufferUsage,
queue_families: I
) -> Result<Arc<DeviceLocalBuffer<T>>, DeviceMemoryAllocError>where
I: IntoIterator<Item = QueueFamily<'a>>,
pub fn new<'a, I>(
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.
sourceimpl<T> DeviceLocalBuffer<[T]>
impl<T> DeviceLocalBuffer<[T]>
sourcepub 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>>,
pub 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>>,
Builds a new buffer. Can be used for arrays.
sourceimpl<T: ?Sized> DeviceLocalBuffer<T>
impl<T: ?Sized> DeviceLocalBuffer<T>
sourcepub 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>>,
pub 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>>,
Builds a new buffer without checking the size.
Safety
You must ensure that the size that you pass is correct for T
.
sourceimpl<T: ?Sized, A> DeviceLocalBuffer<T, A>
impl<T: ?Sized, A> DeviceLocalBuffer<T, A>
sourcepub fn queue_families(&self) -> Vec<QueueFamily<'_>>
pub fn queue_families(&self) -> Vec<QueueFamily<'_>>
Returns the queue families this buffer can be used on.
Trait Implementations
sourceimpl<T: ?Sized, A> BufferAccess for DeviceLocalBuffer<T, A>where
T: 'static + Send + Sync,
impl<T: ?Sized, A> BufferAccess for DeviceLocalBuffer<T, A>where
T: 'static + Send + Sync,
sourcefn inner(&self) -> BufferInner<'_>
fn inner(&self) -> BufferInner<'_>
Returns the inner information about this buffer.
sourcefn conflicts_buffer(&self, other: &dyn BufferAccess) -> bool
fn conflicts_buffer(&self, other: &dyn BufferAccess) -> bool
Returns true if an access to
self
potentially overlaps the same memory as an access to
other
. Read moresourcefn conflicts_image(&self, other: &dyn ImageAccess) -> bool
fn conflicts_image(&self, other: &dyn ImageAccess) -> bool
Returns true if an access to
self
potentially overlaps the same memory as an access to
other
. Read moresourcefn conflict_key(&self) -> (u64, usize)
fn conflict_key(&self) -> (u64, usize)
Returns a key that uniquely identifies the buffer. Two buffers or images that potentially
overlap in memory must return the same key. Read more
sourcefn try_gpu_lock(&self, exclusive: bool, _: &Queue) -> Result<(), AccessError>
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
sourceunsafe fn increase_gpu_lock(&self)
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
sourcefn as_buffer_slice(&self) -> BufferSlice<Self::Content, &Self>where
Self: Sized + TypedBufferAccess,
fn as_buffer_slice(&self) -> BufferSlice<Self::Content, &Self>where
Self: Sized + TypedBufferAccess,
Builds a
BufferSlice
object holding the buffer by reference.sourcefn slice<T>(&self, range: Range<usize>) -> Option<BufferSlice<[T], &Self>>where
Self: Sized + TypedBufferAccess<Content = [T]>,
fn slice<T>(&self, range: Range<usize>) -> Option<BufferSlice<[T], &Self>>where
Self: Sized + TypedBufferAccess<Content = [T]>,
Builds a
BufferSlice
object holding part of the buffer by reference. Read moresourcefn into_buffer_slice(self) -> BufferSlice<Self::Content, Self>where
Self: Sized + TypedBufferAccess,
fn into_buffer_slice(self) -> BufferSlice<Self::Content, Self>where
Self: Sized + TypedBufferAccess,
Builds a
BufferSlice
object holding the buffer by value.sourceimpl<T: ?Sized, A> DeviceOwned for DeviceLocalBuffer<T, A>
impl<T: ?Sized, A> DeviceOwned for DeviceLocalBuffer<T, A>
sourceimpl<T: ?Sized, A> TypedBufferAccess for DeviceLocalBuffer<T, A>where
T: 'static + Send + Sync,
impl<T: ?Sized, A> TypedBufferAccess for DeviceLocalBuffer<T, A>where
T: 'static + Send + Sync,
type Content = T
type Content = T
The type of the content.
Auto Trait Implementations
impl<T: ?Sized, A> RefUnwindSafe for DeviceLocalBuffer<T, A>where
A: RefUnwindSafe,
T: RefUnwindSafe,
impl<T: ?Sized, A> Send for DeviceLocalBuffer<T, A>where
A: Send,
T: Send,
impl<T: ?Sized, A> Sync for DeviceLocalBuffer<T, A>where
A: Sync,
T: Sync,
impl<T: ?Sized, A> Unpin for DeviceLocalBuffer<T, A>where
A: Unpin,
impl<T: ?Sized, A> UnwindSafe for DeviceLocalBuffer<T, A>where
A: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Content for T
impl<T> Content for T
sourcefn ref_from_ptr<'a>(ptr: *mut c_void, size: usize) -> Option<*mut T>
fn ref_from_ptr<'a>(ptr: *mut c_void, size: usize) -> Option<*mut T>
Builds a pointer to this type from a raw pointer.
sourcefn is_size_suitable(size: usize) -> bool
fn is_size_suitable(size: usize) -> bool
Returns true if the size is suitable to store a type like this.
sourcefn indiv_size() -> usize
fn indiv_size() -> usize
Returns the size of an individual element.