pub struct TextureCapturer { /* private fields */ }
Expand description

A type dedicated to capturing a texture as a non-linear sRGBA image that can be read on the CPU.

Calling capture will return a Snapshot that may be read after the given command encoder has been submitted. Snapshots can be read on the current thread via read or on a thread pool via read_threaded.

If the Capturer is dropped while threaded callbacks are still being processed, the drop implementation will block the current thread.

Implementations§

source§

impl Capturer

source

pub const DST_FORMAT: TextureFormat = wgpu::TextureFormat::Rgba8UnormSrgb

The format to which textures will be converted before being mapped back to the CPU.

source

pub fn new(workers: Option<u32>, timeout: Option<Duration>) -> Capturer

Create a new TextureCapturer.

Note that a TextureCapturer must only be used with a single texture. If you require capturing multiple textures, you may create multiple TextureCapturers.

workers refers to the number of worker threads used to await GPU buffers to be mapped for reading and for running user callbacks. If None is specified, a threadpool will be spawned with a number of threads equal to the number of CPUs available on the system.

timeout specifies how long to block and wait for an available worker in the case that all workers are busy at the time a Snapshot::read occurs. If None is specified, calls to Snapshot::read will never time out (the default behaviour).

Note that the specified parameters are only relevant to calls to Snapshot::read. In the case that the user uses Snapshot::read_async, it is the responsibility of the user to execute the future.

source

pub fn active_snapshots(&self) -> u32

The number of futures currently running on the inner ThreadPool.

Note that futures are only run on the threadpool when the Snapshot::read method is used. In the case that Snapshot::read_async is used it is up to the user to track their futures.

If the inner thread pool mutex has been poisoned, or if the thread pool has not been created due to no calls to read, this will return 0.

source

pub fn workers(&self) -> u32

The number of worker threads used to await GPU buffers to be mapped for reading and for running user callbacks.

source

pub fn capture( &self, device: &Device, encoder: &mut CommandEncoder, src_texture: &Texture ) -> Snapshot

Capture the given texture at the state of the given command encoder.

source

pub fn await_active_snapshots( &self, device: &Device ) -> Result<(), AwaitWorkerTimeout<()>>

Await for the completion of all Snapshot::read active futures, polling the device as necessary until all futures have reached completion or until a timeout is reached.

Trait Implementations§

source§

impl Debug for Capturer

source§

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

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

impl Default for Capturer

source§

fn default() -> Capturer

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Component + Float, Swp: WhitePoint, Dwp: WhitePoint, D: AdaptFrom<S, Swp, Dwp, T>,

source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<Swp, Dwp, T>,

Convert the source color to the destination color using the specified method
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default
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, U> ConvertInto<U> for T
where U: ConvertFrom<T>,

source§

fn convert_into(self) -> U

Convert into T with values clamped to the color defined bounds Read more
source§

fn convert_unclamped_into(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
source§

fn try_convert_into(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

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

§

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