wgpu::api::buffer

Struct MapContext

source
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 BufferViews and BufferViewMuts must fall within this range.

§sub_ranges: Vec<Range<BufferAddress>>

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

Implementations§

source§

impl MapContext

source

pub(crate) fn new(total_size: BufferAddress) -> Self

source

fn reset(&mut self)

Record that the buffer is no longer mapped.

source

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.

source

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

Trait Implementations§

source§

impl Debug for MapContext

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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> 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, 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>

source§

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

source§

impl<T> WasmNotSendSync for T

source§

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