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
impl MapContext
Sourcepub(crate) fn new(mapped_range: Option<Range<BufferAddress>>) -> Self
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.
Sourcefn validate_and_add(&mut self, new_sub: Subrange)
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.
Sourcepub(crate) fn remove(&mut self, offset: BufferAddress, size: BufferSize)
pub(crate) 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§
Auto Trait Implementations§
impl Freeze for MapContext
impl RefUnwindSafe for MapContext
impl Send for MapContext
impl Sync for MapContext
impl Unpin for MapContext
impl UnwindSafe for MapContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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