Struct wgpu_async::AsyncBuffer

source ·
pub struct AsyncBuffer
where Self: WasmNotSend,
{ /* private fields */ }
Expand description

A wrapper around a wgpu::Buffer which shadows some methods to allow for async mapping using Rust’s async API.

Implementations§

source§

impl AsyncBuffer

source

pub fn slice<S: RangeBounds<BufferAddress>>( &self, bounds: S, ) -> AsyncBufferSlice<'_>

Takes a slice of this buffer, in the same way a call to wgpu::Buffer::slice would, except wraps the result in an AsyncBufferSlice so that the map_async method can be awaited.

Methods from Deref<Target = Buffer>§

source

pub fn as_entire_binding(&self) -> BindingResource<'_>

Return the binding view of the entire buffer.

source

pub fn as_entire_buffer_binding(&self) -> BufferBinding<'_>

Return the binding view of the entire buffer.

source

pub unsafe fn as_hal<A, F, R>(&self, hal_buffer_callback: F) -> R
where A: HalApi, F: FnOnce(Option<&<A as Api>::Buffer>) -> R,

Returns the inner hal Buffer using a callback. The hal buffer will be None if the backend type argument does not match with this wgpu Buffer

§Safety
  • The raw handle obtained from the hal Buffer must not be manually destroyed
source

pub fn slice<S>(&self, bounds: S) -> BufferSlice<'_>
where S: RangeBounds<u64>,

Return a slice of a Buffer’s bytes.

Return a BufferSlice referring to the portion of self’s contents indicated by bounds. Regardless of what sort of data self stores, bounds start and end are given in bytes.

A BufferSlice can be used to supply vertex and index data, or to map buffer contents for access from the CPU. See the BufferSlice documentation for details.

The range argument can be half or fully unbounded: for example, buffer.slice(..) refers to the entire buffer, and buffer.slice(n..) refers to the portion starting at the nth byte and extending to the end of the buffer.

source

pub fn unmap(&self)

Flushes any pending write operations and unmaps the buffer from host memory.

source

pub fn destroy(&self)

Destroy the associated native resources as soon as possible.

source

pub fn size(&self) -> u64

Returns the length of the buffer allocation in bytes.

This is always equal to the size that was specified when creating the buffer.

source

pub fn usage(&self) -> BufferUsages

Returns the allowed usages for this Buffer.

This is always equal to the usage that was specified when creating the buffer.

source

pub fn global_id(&self) -> Id<Buffer>

Returns a globally-unique identifier for this Buffer.

Calling this method multiple times on the same object will always return the same value. The returned value is guaranteed to be different for all resources created from the same Instance.

Trait Implementations§

source§

impl<T> AsMut<T> for AsyncBuffer
where <AsyncBuffer as Deref>::Target: AsMut<T>,

source§

fn as_mut(&mut self) -> &mut T

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl<T> AsRef<T> for AsyncBuffer
where T: ?Sized, <AsyncBuffer as Deref>::Target: AsRef<T>,

source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Debug for AsyncBuffer
where Self: WasmNotSend,

source§

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

Formats the value using the given formatter. Read more
source§

impl Deref for AsyncBuffer

§

type Target = Buffer

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl DerefMut for AsyncBuffer

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

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
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>,

§

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>,

§

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.
source§

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

source§

impl<T> WasmNotSendSync for T

source§

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