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 BufferView
s and BufferViewMut
s must fall within this range.
sub_ranges: Vec<Subrange>
The ranges covered by all outstanding BufferView
s and
BufferViewMut
s. 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.
Sourcefn remove(&mut self, offset: BufferAddress, size: BufferSize)
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
.