Skip to main content

RegionCopyMode

Enum RegionCopyMode 

Source
pub enum RegionCopyMode {
    Texture,
    Fragment,
    Unavailable,
}
Expand description

How a region of a frame’s own target is read back into a pooled page — the mechanism every effect sampling what the frame has already painted shares (a backdrop blur today; see crate::filters’ The backdrop blur).

Either way the region reaches the page through one pass of EnginePipeline::Copy that clears the page and draws the region at its origin: a pooled page is a render target and a sampled texture, never a copy destination, so a texture copy cannot land in one directly. The modes differ only in what that pass reads.

Decided per frame from the target texture itself, because the caller decides what it renders into: a swapchain texture is RENDER_ATTACHMENT only on this tier and is never widened, so frust-render renders a frame carrying a backdrop into an intermediate of its own (in the swapchain’s own format, sampled and copyable) and presents it with one copy pass.

Variants§

§

Texture

The target is COPY_SRC in the pages’ own INTERMEDIATE_FORMAT: a copy_texture_to_texture lands the region in the renderer’s own staging texture, unconverted, and the copy pass reads it from there — the route a target that cannot be sampled (a headless readback target) still has.

§

Fragment

The target is TEXTURE_BINDING: the copy pass reads the region straight out of it — any format the target is rendered in, converted on the way into the page’s own.

§

Unavailable

The target can be neither copied nor sampled: no region is read back, and a backdrop blur draws nothing.

Implementations§

Source§

impl RegionCopyMode

Source

pub fn of(target: &Texture) -> Self

The mode a frame rendering into target reads regions back with.

Source

pub fn for_usage( usage: TextureUsages, format: TextureFormat, sample_count: u32, ) -> Self

Self::of over the three facts it reads, so the decision is host-testable without a device.

Sampling is preferred whenever the target allows it — it costs the one pass alone, where a texture copy costs a transfer as well.

Trait Implementations§

Source§

impl Clone for RegionCopyMode

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for RegionCopyMode

Source§

impl Debug for RegionCopyMode

Source§

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

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

impl Eq for RegionCopyMode

Source§

impl PartialEq for RegionCopyMode

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for RegionCopyMode

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ToOwned for T
where T: Clone,

Source§

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

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,