Skip to main content

ImageSkip

Enum ImageSkip 

Source
pub enum ImageSkip {
    AtlasDisabled,
    UnsupportedFormat(ImageFormat),
    DegenerateExtent {
        width: u32,
        height: u32,
    },
    TooLarge {
        width: u32,
        height: u32,
        max: u32,
    },
    MalformedPixels {
        width: u32,
        height: u32,
        expected: usize,
        actual: usize,
    },
    SingularTransform,
    NoAtlasSpace {
        width: u32,
        height: u32,
        atlas_width: u32,
        atlas_height: u32,
    },
    SameFrameExtentConflict {
        width: u32,
        height: u32,
    },
}
Expand description

Why one image could not be made resident.

Every variant is a skip, never a frame failure: the draw paints nothing and the rest of the frame proceeds. They are distinguished because the remedies differ — a too-large image is an application decision, an exhausted atlas is a budget one, and a disabled atlas is the operator’s own doing.

Variants§

§

AtlasDisabled

FRUST_ENGINE_NO_ATLAS is set; the atlas is out of the frame entirely.

§

UnsupportedFormat(ImageFormat)

The image declares a format the atlas does not store.

§

DegenerateExtent

The image has no area, so there is nothing to make resident.

Fields

§width: u32

Declared width in pixels.

§height: u32

Declared height in pixels.

§

TooLarge

The image is larger than MAX_IMAGE_DIMENSION on at least one axis.

Fields

§width: u32

Declared width in pixels.

§height: u32

Declared height in pixels.

§max: u32

The per-axis ceiling that refused it.

§

MalformedPixels

The pixel buffer’s length disagrees with the declared extent and format.

Fields

§width: u32

Declared width in pixels.

§height: u32

Declared height in pixels.

§expected: usize

Bytes the declared extent and format require.

§actual: usize

Bytes the blob actually holds.

§

SingularTransform

The paint transform cannot be inverted, so there is no device-to-image mapping for the shader to sample through.

§

NoAtlasSpace

The image fits the ceiling but not the configured atlas budget, and no resident image could be evicted to make room for it — either the atlas holds nothing but images this same frame drew, or what it holds beside them still leaves no rectangle this one fits in.

Fields

§width: u32

Declared width in pixels.

§height: u32

Declared height in pixels.

§atlas_width: u32

Configured atlas width.

§atlas_height: u32

Configured atlas height.

§

SameFrameExtentConflict

The same blob was already resolved earlier in this same frame at a different extent.

Not an atlas-capacity refusal: the atlas may be nearly empty. The plan clears before it uploads (see the module doc), so releasing this blob’s rectangle to make room for its own second extent would schedule a clear over texels this frame already sampled — the first extent’s draw keeps its texels and the second is skipped until the next frame instead.

Fields

§width: u32

The refused extent’s width, after fit_extent the same way NoAtlasSpace reports it.

§height: u32

The refused extent’s height, after fit_extent.

Trait Implementations§

Source§

impl Clone for ImageSkip

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 ImageSkip

Source§

impl Debug for ImageSkip

Source§

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

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

impl Display for ImageSkip

Source§

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

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

impl Eq for ImageSkip

Source§

impl Error for ImageSkip

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl PartialEq for ImageSkip

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 ImageSkip

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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,