pub(crate) struct MapContext {
pub(crate) total_size: BufferAddress,
pub(crate) initial_range: Range<BufferAddress>,
sub_ranges: Vec<Range<BufferAddress>>,
}
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, and
also takes care of turning Option<BufferSize>
sizes into actual buffer
offsets.
Fields§
§total_size: BufferAddress
The overall size of the buffer.
This is just a convenient copy of Buffer::size
.
initial_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<Range<BufferAddress>>
The ranges covered by all outstanding BufferView
s and
BufferViewMut
s. These are non-overlapping, and are all contained
within initial_range
.
Implementations§
source§impl MapContext
impl MapContext
pub(crate) fn new(total_size: BufferAddress) -> Self
sourcefn add(
&mut self,
offset: BufferAddress,
size: Option<BufferSize>,
) -> BufferAddress
fn add( &mut self, offset: BufferAddress, size: Option<BufferSize>, ) -> BufferAddress
Record that the size
bytes of the buffer at offset
are now viewed.
Return the byte offset within the buffer of the end of the viewed range.
§Panics
This panics if the given range overlaps with any existing range.
sourcefn remove(&mut self, offset: BufferAddress, size: Option<BufferSize>)
fn remove(&mut self, offset: BufferAddress, size: Option<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 [add
].
[add]
: MapContext::add