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
impl MapContext
Sourcepub(crate) fn new(
mapped: Option<MappingInfo>,
device_buffers: &Arc<Mutex<HashSet<WeakMapContext>>>,
) -> Arc<Mutex<Self>> ⓘ
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.
Sourcefn validate_and_add(&mut self, new_sub: Subrange) -> Result<(), MapRangeError>
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.
Sourcepub(crate) fn remove(&mut self, offset: BufferAddress, size: BufferAddress)
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
impl Debug for MapContext
Auto Trait Implementations§
impl Freeze for MapContext
impl !RefUnwindSafe for MapContext
impl Send for MapContext
impl Sync for MapContext
impl Unpin for MapContext
impl UnsafeUnpin 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