Skip to main content

Residency

Enum Residency 

Source
pub enum Residency {
    Host,
    Device,
}
Expand description

Where the frame’s pixel data physically resides.

Residency describes storage location, not access semantics. A host-resident frame stores pixel bytes in CPU-accessible memory. A device-resident frame stores data on an accelerator (GPU, NPU, DMA‑buf, etc.) where host-readable bytes are not directly available.

§Access pattern

The canonical way to handle frames in CPU/GPU-mixed pipelines:

match frame.data_access() {
    DataAccess::HostReadable => {
        let bytes = frame.host_data().unwrap();
    }
    DataAccess::MappableToHost => {
        let pixels = frame.require_host_data()?;
    }
    DataAccess::Opaque => {
        let handle = frame.accelerated_handle::<MyBuffer>().unwrap();
    }
    _ => {}
}

For pure CPU stages, FrameEnvelope::require_host_data() handles all three cases with a single call.

§Relationship to DataAccess

Residency describes where the data lives. DataAccess describes what host-access is available:

ResidencyDataAccessMeaning
HostHostReadableCPU bytes directly available
DeviceMappableToHostDevice buffer, host-downloadable
DeviceOpaqueDevice buffer, no host path

Use FrameEnvelope::data_access() when you need the finer-grained access classification.

§Adapter crates

This enum deliberately does not name any vendor or backend. Concrete buffer types (CUDA buffers, OpenCL images, DMA‑buf fds, …) are defined by adapter crates and stored behind a type‑erased handle accessible via FrameEnvelope::accelerated_handle().

Variants§

§

Host

Pixel data is in CPU-accessible memory.

FrameEnvelope::host_data() returns Some(&[u8]).

§

Device

Pixel data resides on an accelerator device.

Host-readable bytes may or may not be obtainable — check FrameEnvelope::data_access() for details. Use FrameEnvelope::accelerated_handle() to obtain the type-erased handle.

Trait Implementations§

Source§

impl Clone for Residency

Source§

fn clone(&self) -> Residency

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Residency

Source§

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

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

impl Hash for Residency

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Residency

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Residency

Source§

impl Eq for Residency

Source§

impl StructuralPartialEq for Residency

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

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.