Struct gpu_alloc::MemoryBlock
source · pub struct MemoryBlock<M> { /* private fields */ }
Expand description
Memory block allocated by GpuAllocator
.
Implementations§
source§impl<M> MemoryBlock<M>
impl<M> MemoryBlock<M>
sourcepub fn offset(&self) -> u64
pub fn offset(&self) -> u64
Returns offset in bytes from start of memory object to start of this block.
sourcepub fn props(&self) -> MemoryPropertyFlags
pub fn props(&self) -> MemoryPropertyFlags
Returns memory property flags for parent memory object.
sourcepub fn memory_type(&self) -> u32
pub fn memory_type(&self) -> u32
Returns index of type of parent memory object.
sourcepub unsafe fn map(
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
size: usize
) -> Result<NonNull<u8>, MapError>
pub unsafe fn map( &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
.
sourcepub unsafe fn unmap(&mut self, device: &impl MemoryDevice<M>) -> bool
pub unsafe fn unmap(&mut self, device: &impl MemoryDevice<M>) -> bool
sourcepub unsafe fn write_bytes(
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
data: &[u8]
) -> Result<(), MapError>
pub unsafe fn write_bytes( &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.
sourcepub unsafe fn read_bytes(
&mut self,
device: &impl MemoryDevice<M>,
offset: u64,
data: &mut [u8]
) -> Result<(), MapError>
pub unsafe fn read_bytes( &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.