Skip to main content

CopyPresentPass

Struct CopyPresentPass 

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

The plain present pass for one surface: the frame, rendered into an intermediate of the swapchain’s own format, copied into the swapchain unconverted (see the module doc’s A plain copy).

Built once per surface configure, like UnpremultiplyPass: a pipeline for the swapchain’s format, the bind-group layout its program derived, and the one 16-byte instance the quad is drawn from.

Implementations§

Source§

impl CopyPresentPass

Source

pub fn new( device: &Device, format: TextureFormat, driver_cache: Option<&PipelineCache>, ) -> Self

Builds the pass for a format target, through a pipeline cache of its own exactly as UnpremultiplyPass::new does — a surface configure is not a frame, so the one pipeline is compiled here.

Source

pub fn format(&self) -> TextureFormat

The target format this pass was built for — the swapchain’s own.

Source

pub fn record( &self, device: &Device, queue: &Queue, encoder: &mut CommandEncoder, source_view: &TextureView, target_view: &TextureView, size: (u32, u32), timestamp_writes: Option<RenderPassTimestampWrites<'_>>, )

Records the copy into encoder: reads source_view (the intermediate the frame was rendered into, width x height like the swapchain) and writes it unconverted over the whole of target_view (the acquired swapchain texture). The caller submits encoder.

The instance is written through queue and lands ahead of the command buffer the caller submits, so a resize between frames is honoured by the very next one. The attachment is cleared rather than loaded, for UnpremultiplyPass::record’s reason. timestamp_writes is that method’s too.

Source

pub fn layout_desc() -> PipelineLayoutDesc

This pass’s shape as the downlevel lint reads it — one bind group, one instance buffer of four u32 attributes, no uniform.

Trait Implementations§

Source§

impl Debug for CopyPresentPass

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> 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, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(_simd: S, value: T) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

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> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

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