Struct gpu_alloc::MemoryBlock [−][src]
pub struct MemoryBlock<M> { /* fields omitted */ }
Memory block allocated by GpuAllocator
.
Implementations
impl<M> MemoryBlock<M>
[src]
impl<M> MemoryBlock<M>
[src]pub fn memory(&self) -> &M
[src]
Returns reference to parent memory object.
pub fn offset(&self) -> u64
[src]
Returns offset in bytes from start of memory object to start of this block.
pub fn size(&self) -> u64
[src]
Returns size of this memory block.
pub fn props(&self) -> MemoryPropertyFlags
[src]
Returns memory property flags for parent memory object.
pub fn memory_type(&self) -> u32
[src]
Returns index of type of parent memory object.
pub unsafe fn map(
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
size: usize
) -> Result<NonNull<u8>, MapError>
[src]
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
size: usize
) -> Result<NonNull<u8>, MapError>
Returns pointer to mapped memory range of this block. This blocks becomes mapped.
The user of returned pointer must guarantee that any previously submitted command that writes to this range has completed
before the host reads from or writes to that range,
and that any previously submitted command that reads from that range has completed
before the host writes to that region.
If the device memory was allocated without the HOST_COHERENT
property flag set,
these guarantees must be made for an extended range:
the user must round down the start of the range to the nearest multiple of non_coherent_atom_size
,
and round the end of the range up to the nearest multiple of non_coherent_atom_size
.
Panics
This function panics if block is currently mapped.
Safety
block
must have been allocated from specified device
.
pub unsafe fn unmap(&mut self, device: &impl MemoryDevice<M>) -> bool
[src]
Unmaps memory range of this block that was previously mapped with Block::map
.
This block becomes unmapped.
Panics
This function panics if this block is not currently mapped.
Safety
block
must have been allocated from specified device
.
pub unsafe fn write_bytes(
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
data: &[u8]
) -> Result<(), MapError>
[src]
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
data: &[u8]
) -> Result<(), MapError>
Transiently maps block memory range and copies specified data to the mapped memory range.
Panics
This function panics if block is currently mapped.
Safety
block
must have been allocated from specified device
.
The caller must guarantee that any previously submitted command that reads or writes to this range has completed.
pub unsafe fn read_bytes(
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
data: &mut [u8]
) -> Result<(), MapError>
[src]
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
data: &mut [u8]
) -> Result<(), MapError>
Transiently maps block memory range and copies specified data from the mapped memory range.
Panics
This function panics if block is currently mapped.
Safety
block
must have been allocated from specified device
.
The caller must guarantee that any previously submitted command that reads to this range has completed.
Trait Implementations
impl<M> Send for MemoryBlock<M> where
M: Send,
[src]
impl<M> Send for MemoryBlock<M> where
M: Send,
[src]impl<M> Sync for MemoryBlock<M> where
M: Sync,
[src]
impl<M> Sync for MemoryBlock<M> where
M: Sync,
[src]Auto Trait Implementations
impl<M> RefUnwindSafe for MemoryBlock<M> where
M: RefUnwindSafe,
impl<M> RefUnwindSafe for MemoryBlock<M> where
M: RefUnwindSafe,
impl<M> Unpin for MemoryBlock<M> where
M: Unpin,
impl<M> Unpin for MemoryBlock<M> where
M: Unpin,
impl<M> UnwindSafe for MemoryBlock<M> where
M: RefUnwindSafe + UnwindSafe,
impl<M> UnwindSafe for MemoryBlock<M> where
M: RefUnwindSafe + UnwindSafe,