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.
The target can be neither copied nor sampled: no region is read back, and a backdrop blur draws nothing.
Implementations§
Source§impl RegionCopyMode
impl RegionCopyMode
Sourcepub fn of(target: &Texture) -> Self
pub fn of(target: &Texture) -> Self
The mode a frame rendering into target reads regions back with.
Sourcepub fn for_usage(
usage: TextureUsages,
format: TextureFormat,
sample_count: u32,
) -> Self
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
impl Clone for RegionCopyMode
impl Copy for RegionCopyMode
Source§impl Debug for RegionCopyMode
impl Debug for RegionCopyMode
impl Eq for RegionCopyMode
Source§impl PartialEq for RegionCopyMode
impl PartialEq for RegionCopyMode
impl StructuralPartialEq for RegionCopyMode
Auto Trait Implementations§
impl Freeze for RegionCopyMode
impl RefUnwindSafe for RegionCopyMode
impl Send for RegionCopyMode
impl Sync for RegionCopyMode
impl Unpin for RegionCopyMode
impl UnsafeUnpin for RegionCopyMode
impl UnwindSafe for RegionCopyMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.