Struct wgpu_async::AsyncQueue

source ·
pub struct AsyncQueue { /* private fields */ }
Expand description

A wrapper around a wgpu::Queue which shadows some methods to allow for callback-and-poll methods to be made async, such as AsyncQueue::submit.

Implementations§

source§

impl AsyncQueue

source

pub fn submit<I: IntoIterator<Item = CommandBuffer>>( &self, command_buffers: I ) -> WgpuFuture<()>

This is an async version of wgpu::Queue::submit.

Just like wgpu::Queue::submit, a call to this method starts the given work immediately, however this method returns a future that can be awaited giving the completion of the submitted work.

source

pub fn device(&self) -> &AsyncDevice

Gets the device associated with this queue.

Methods from Deref<Target = Queue>§

source

pub fn write_buffer(&self, buffer: &Buffer, offset: u64, data: &[u8])

Schedule a data write into buffer starting at offset.

This method is intended to have low performance costs. As such, the write is not immediately submitted, and instead enqueued internally to happen at the start of the next submit() call.

This method fails if data overruns the size of buffer starting at offset.

source

pub fn write_buffer_with<'a>( &'a self, buffer: &'a Buffer, offset: u64, size: NonZero<u64> ) -> Option<QueueWriteBufferView<'a>>

Schedule a data write into buffer starting at offset via the returned QueueWriteBufferView.

Reading from this buffer is slow and will not yield the actual contents of the buffer.

This method is intended to have low performance costs. As such, the write is not immediately submitted, and instead enqueued internally to happen at the start of the next submit() call.

This method fails if size is greater than the size of buffer starting at offset.

source

pub fn write_texture( &self, texture: ImageCopyTexture<&Texture>, data: &[u8], data_layout: ImageDataLayout, size: Extent3d )

Schedule a write of some data into a texture.

  • data contains the texels to be written, which must be in the same format as the texture.
  • data_layout describes the memory layout of data, which does not necessarily have to have tightly packed rows.
  • texture specifies the texture to write into, and the location within the texture (coordinate offset, mip level) that will be overwritten.
  • size is the size, in texels, of the region to be written.

This method is intended to have low performance costs. As such, the write is not immediately submitted, and instead enqueued internally to happen at the start of the next submit() call. However, data will be immediately copied into staging memory; so the caller may discard it any time after this call completes.

This method fails if size overruns the size of texture, or if data is too short.

source

pub fn submit<I>(&self, command_buffers: I) -> SubmissionIndex
where I: IntoIterator<Item = CommandBuffer>,

Submits a series of finished command buffers for execution.

source

pub fn get_timestamp_period(&self) -> f32

Gets the amount of nanoseconds each tick of a timestamp query represents.

Returns zero if timestamp queries are unsupported.

Timestamp values are represented in nanosecond values on WebGPU, see <https://gpuweb.github.io/gpuweb/#timestamp> Therefore, this is always 1.0 on the web, but on wgpu-core a manual conversion is required.

source

pub fn on_submitted_work_done(&self, callback: impl FnOnce() + Send + 'static)

Registers a callback when the previous call to submit finishes running on the gpu. This callback being called implies that all mapped buffer callbacks which were registered before this call will have been called.

For the callback to complete, either queue.submit(..), instance.poll_all(..), or device.poll(..) must be called elsewhere in the runtime, possibly integrated into an event loop or run on a separate thread.

The callback will be called on the thread that first calls the above functions after the gpu work has completed. There are no restrictions on the code you can run in the callback, however on native the call to the function will not complete until the callback returns, so prefer keeping callbacks short and used to set flags, send messages, etc.

source

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

Returns a globally-unique identifier for this Queue.

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> AsRef<T> for AsyncQueue
where T: ?Sized, <AsyncQueue 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 Clone for AsyncQueue

source§

fn clone(&self) -> AsyncQueue

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for AsyncQueue

source§

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

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

impl Deref for AsyncQueue

§

type Target = Queue

The resulting type after dereferencing.
source§

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

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
§

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

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

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

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