Struct MapContext

Source
pub(crate) struct MapContext {
    mapped_range: Range<BufferAddress>,
    sub_ranges: Vec<Subrange>,
}
Expand description

The mapped portion of a buffer, if any, and its outstanding views.

This ensures that views fall within the mapped range and don’t overlap.

Fields§

§mapped_range: Range<BufferAddress>

The range of the buffer that is mapped.

This is 0..0 if the buffer is not mapped. This becomes non-empty when the buffer is mapped at creation time, and when you call map_async on some BufferSlice (so technically, it indicates the portion that is or has been requested to be mapped.)

All BufferViews and BufferViewMuts must fall within this range.

§sub_ranges: Vec<Subrange>

The ranges covered by all outstanding BufferViews and BufferViewMuts. These are non-overlapping, and are all contained within mapped_range.

Implementations§

Source§

impl MapContext

Source

pub(crate) fn new(mapped_range: Option<Range<BufferAddress>>) -> Self

Creates a new MapContext.

For mapped_at_creation buffers, pass the full buffer range in the mapped_range argument. For other buffers, pass None.

Source

fn reset(&mut self)

Record that the buffer is no longer mapped.

Source

fn validate_and_add(&mut self, new_sub: Subrange)

Record that the size bytes of the buffer at offset are now viewed.

§Panics

This panics if the given range is invalid.

Source

fn remove(&mut self, offset: BufferAddress, size: BufferSize)

Record that the size bytes of the buffer at offset are no longer viewed.

§Panics

This panics if the given range does not exactly match one previously passed to MapContext::validate_and_add.

Trait Implementations§

Source§

impl Debug for MapContext

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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> AsAny for T
where T: 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

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
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

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.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

Source§

impl<T> CommonTraits for T
where T: AsAny + Any + Debug + WasmNotSendSync,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,