rendy_memory

Struct MappedRange

Source
pub struct MappedRange<'a, B: Backend, C = MaybeCoherent> { /* private fields */ }
Expand description

Represents range of the memory mapped to the host. Provides methods for safer host access to the memory.

Implementations§

Source§

impl<'a, B> MappedRange<'a, B>
where B: Backend,

Source

pub unsafe fn from_raw( memory: &'a Memory<B>, ptr: NonNull<u8>, range: Range<u64>, ) -> Self

Construct mapped range from raw mapping

§Safety

memory range must be mapped to host memory region pointer by ptr. range is in memory object space. ptr points to the range.start offset from memory origin.

Source

pub fn ptr(&self) -> NonNull<u8>

Get pointer to beginning of memory region. i.e. to range().start offset from memory origin.

Source

pub fn range(&self) -> Range<u64>

Get mapped range.

Source

pub unsafe fn read<'b, T>( &'b mut self, device: &B::Device, range: Range<u64>, ) -> Result<&'b [T], MapError>
where T: Copy, 'a: 'b,

Fetch readable slice of sub-range to be read. Invalidating range if memory is not coherent. range.end - range.start must be multiple of size_of::(). mapping offset + range.start must be multiple of align_of::().

§Safety
  • Caller must ensure that device won’t write to the memory region until the borrowing ends.
  • T Must be plain-old-data type compatible with data in mapped region.
Source

pub unsafe fn write<'b, T>( &'b mut self, device: &'b B::Device, range: Range<u64>, ) -> Result<impl Write<T> + 'b, MapError>
where T: Copy + 'b, 'a: 'b,

Fetch writer to the sub-region. This writer will flush data on drop if written at least once.

§Safety
  • Caller must ensure that device won’t write to or read from the memory region.
Source

pub fn coherent( self, ) -> Result<MappedRange<'a, B, Coherent>, MappedRange<'a, B, NonCoherent>>

Convert into mapped range with statically known coherency.

Source§

impl<'a, B> MappedRange<'a, B, Coherent>
where B: Backend,

Source

pub unsafe fn write<'b, U>( &'b mut self, range: Range<u64>, ) -> Result<impl Write<U> + 'b, MapError>
where U: Copy + 'b,

Fetch writer to the sub-region.

§Safety
  • Caller must ensure that device won’t write to or read from the memory region.

Trait Implementations§

Source§

impl<'a, B: Debug + Backend, C: Debug> Debug for MappedRange<'a, B, C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a, B> From<MappedRange<'a, B, Coherent>> for MappedRange<'a, B>
where B: Backend,

Source§

fn from(range: MappedRange<'a, B, Coherent>) -> Self

Converts to this type from the input type.
Source§

impl<'a, B> From<MappedRange<'a, B, NonCoherent>> for MappedRange<'a, B>
where B: Backend,

Source§

fn from(range: MappedRange<'a, B, NonCoherent>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a, B, C> Freeze for MappedRange<'a, B, C>
where C: Freeze,

§

impl<'a, B, C> RefUnwindSafe for MappedRange<'a, B, C>

§

impl<'a, B, C = MaybeCoherent> !Send for MappedRange<'a, B, C>

§

impl<'a, B, C = MaybeCoherent> !Sync for MappedRange<'a, B, C>

§

impl<'a, B, C> Unpin for MappedRange<'a, B, C>
where C: Unpin,

§

impl<'a, B, C> UnwindSafe for MappedRange<'a, B, C>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.