Skip to main content

Yuv420pReadback

Struct Yuv420pReadback 

Source
pub struct Yuv420pReadback { /* private fields */ }
Expand description

A submitted GPU RGB-to-YUV420 conversion whose buffer is not mapped yet.

Implementations§

Source§

impl Yuv420pReadback

Source

pub const fn size(&self) -> RenderSize

Returns the luma-plane dimensions.

Source

pub const fn staging_bytes(&self) -> u64

Returns bytes retained by the GPU-visible staging buffer.

Source

pub fn wait_ready(&self) -> Result<(), RenderError>

Blocks a native caller until this readback is mapped.

§Errors

Returns RenderError::TextureReadback when mapping or polling fails.

Source

pub fn wait_for_submission(&self) -> Result<(), RenderError>

Blocks native GPU progress through this readback’s submission.

This can be paired with an earlier Self::map_async call when a scheduler wants mapping to begin before it eventually has to wait.

§Errors

Returns RenderError::GpuTimeout when the submission does not complete within the renderer’s wait timeout, or RenderError::TextureReadback when device polling fails.

Source

pub fn wait(self) -> Result<Yuv420pPlanes, RenderError>

Waits for this readback and returns tightly packed planes.

§Errors

Returns RenderError::TextureReadback when mapping, polling, or row packing fails.

Source

pub fn map_async( &self, on_ready: impl FnOnce(Result<(), RenderError>) + Send + 'static, )

Requests buffer mapping and reports readiness exactly once.

Source

pub fn poll(&self)

Advances backends that require explicit polling.

Source

pub fn finish_into( self, targets: &mut Yuv420pTargets<'_>, ) -> Result<(), RenderError>

Packs mapped Y and UV rows into plane buffers the caller already owns.

Yuv420pReadback::finish allocates three vectors per frame, which is what the browser path wants. A native caller that already owns the memory the encoder will read from can pack straight into it, which removes both that allocation and the copy that would follow it. The pixels written are the same either way.

Each target may be strided, because encoder plane memory usually is.

§Errors

Returns RenderError::TextureReadback when the buffer is not mapped, its layout cannot be represented, or a target is too small, and RenderError::GpuWorkDropped when the GPU did not run the copy: the buffer holds no frame of this readback, so it is not recycled, and the renderer refuses further work.

Source

pub fn finish(self) -> Result<Yuv420pPlanes, RenderError>

Packs mapped Y and UV rows into three tightly packed planes.

§Errors

Returns RenderError::TextureReadback when the buffer is not mapped or its layout cannot be represented, and RenderError::GpuWorkDropped when the GPU did not run the copy, as Self::finish_into does.

Trait Implementations§

Source§

impl Debug for Yuv420pReadback

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
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast<T> for T

Source§

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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

impl<T> Upcast<T> for T

Source§

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,