Skip to main content

MapContext

Struct MapContext 

Source
pub(crate) struct MapContext {
    mapped: Option<MappingInfo>,
    sub_ranges: Vec<Subrange>,
    device_buffers: Arc<Mutex<HashSet<WeakMapContext>>>,
}
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: Option<MappingInfo>

This becomes Some(…) when the buffer is mapped at creation time, and when you call map_async on some BufferSlice (so technically, it indicates the data that is or has been requested to be mapped.)

§sub_ranges: Vec<Subrange>

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

§device_buffers: Arc<Mutex<HashSet<WeakMapContext>>>

The set of buffers that are currently alive on the device. This is used to ensure that all buffers are unmapped before the device is destroyed.

We keep it here

Implementations§

Source§

impl MapContext

Source

pub(crate) fn new( mapped: Option<MappingInfo>, device_buffers: &Arc<Mutex<HashSet<WeakMapContext>>>, ) -> Arc<Mutex<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) -> Result<(), MapRangeError>

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

§Errors

This returns an error if the given range is invalid.

Source

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

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

impl Drop for MapContext

Source§

fn drop(&mut self)

Executes the destructor for this type. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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>

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

impl<T> WasmNotSendSync for T

Source§

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