Skip to main content

RenderStatsSnapshot

Struct RenderStatsSnapshot 

Source
pub struct RenderStatsSnapshot {
Show 69 fields pub submits: u32, pub encoder_count: u32, pub submit_count: u32, pub pass_count: u32, pub pass_pixels: u64, pub copy_count: u32, pub copy_pixels: u64, pub offscreen_acquires: u32, pub offscreen_news: u32, pub offscreen_total_bytes: u64, pub transient_texture_bytes: u64, pub retained_texture_bytes: u64, pub upload_bytes: u64, pub upload_writes: u32, pub isolated_layer_renders: u32, pub isolated_layer_pixels: u64, pub layer_cache_hits: u32, pub capture_fixup_passes: u32, pub layer_cache_misses: u32, pub layer_cache_hit_pixels: u64, pub layer_cache_miss_pixels: u64, pub layer_cache_hits_by_kind: [u32; 5], pub layer_cache_misses_by_kind: [u32; 5], pub layer_cache_miss_pixels_by_kind: [u64; 5], pub shadow_shape_cache_hits: u32, pub shadow_shape_cache_misses: u32, pub shadow_shape_cache_hit_pixels: u64, pub shadow_shape_cache_miss_pixels: u64, pub shadow_fully_occluded_composites: u32, pub shadow_text_blur_fallbacks: u32, pub blur_passes: u32, pub stages: u32, pub backdrop_admissions: u32, pub prefix_admissions: u32, pub substrates: u32, pub composite_passes: u32, pub effect_applies: u32, pub shader_pixels: u64, pub glass_rasterized_pixels: u64, pub blur_pixels: u64, pub shape_fill_pixels: u64, pub shape_fill_pixels_by_class: [u64; 6], pub shape_vertices: u64, pub shape_passes: u32, pub shape_pipeline_fallback_draws: u32, pub shape_specialized_draws: u32, pub pipelines_created: u64, pub shader_pipeline_fallback_draws: u32, pub shader_specialized_draws: u32, pub image_passes: u32, pub text_passes: u32, pub draw_calls: u32, pub text_image_cache_hits: u32, pub text_image_cache_misses: u32, pub text_image_cache_hit_pixels: u64, pub text_image_cache_miss_pixels: u64, pub text_image_raster_bytes: u64, pub text_glyph_atlas_hits: u32, pub text_glyph_atlas_misses: u32, pub text_glyph_atlas_miss_pixels: u64, pub offscreen_pool_size: u32, pub offscreen_pool_bytes: u64, pub text_pool_size: u32, pub layer_cache_size: u32, pub layer_cache_bytes: u64, pub image_cache_size: u32, pub text_cache_size: u32, pub top_isolated_layers: [Option<IsolatedLayerStat>; 8], pub top_isolated_layer_count: usize,
}

Fields§

§submits: u32§encoder_count: u32§submit_count: u32§pass_count: u32§pass_pixels: u64

Sum of every render pass’s first color target area: the tile traffic a tiling GPU pays whatever the passes draw.

§copy_count: u32

Texture regions copied outside any pass, and their texels.

§copy_pixels: u64§offscreen_acquires: u32§offscreen_news: u32§offscreen_total_bytes: u64§transient_texture_bytes: u64§retained_texture_bytes: u64§upload_bytes: u64§upload_writes: u32

Buffer writes the frame staged: uploads that reach the GPU as one write each, however many draws they carry.

§isolated_layer_renders: u32§isolated_layer_pixels: u64§layer_cache_hits: u32§capture_fixup_passes: u32

Passes that drew fix-ups over copied capture regions.

§layer_cache_misses: u32§layer_cache_hit_pixels: u64§layer_cache_miss_pixels: u64§layer_cache_hits_by_kind: [u32; 5]

Hits per key kind, indexed by LayerRasterCacheKey::kind_slot.

§layer_cache_misses_by_kind: [u32; 5]

Stores per key kind, indexed by LayerRasterCacheKey::kind_slot.

§layer_cache_miss_pixels_by_kind: [u64; 5]

Stored pixels per key kind, indexed by LayerRasterCacheKey::kind_slot.

§shadow_shape_cache_hits: u32§shadow_shape_cache_misses: u32§shadow_shape_cache_hit_pixels: u64§shadow_shape_cache_miss_pixels: u64§shadow_fully_occluded_composites: u32

Converted shadows whose caster occluded every visible coverage pixel this frame: they composite nothing and their draw item is dropped.

§shadow_text_blur_fallbacks: u32§blur_passes: u32§stages: u32

Backdrop stages resolved: every stage flushes the page and captures once, so the layer pass count is one more than this.

§backdrop_admissions: u32

Backdrops whose stage texture the layer cache pinned this frame, so later frames replay their composites from it.

§prefix_admissions: u32

Opaque page prefixes copied into the layer cache this frame.

§substrates: u32

Captures averaged into a quarter-size substrate for a shader’s wide taps.

§composite_passes: u32

Passes that draw at least one resolved composite: a final pass holding twelve glass tails counts once, a composite resolved into its own texture counts its own pass.

§effect_applies: u32§shader_pixels: u64

Pixels shaded by runtime shader composites: what every glass surface costs a tiling GPU per frame, each capture that re-shades one included.

§glass_rasterized_pixels: u64§blur_pixels: u64

Pixels the blur passes write: every downsample, horizontal and vertical pass of a backdrop’s blur and of its substrates, within the scissor the pass was given.

§shape_fill_pixels: u64

Pixels the shape draws rasterize: a band drawn as a mesh counts its mesh, everything else its quad. Fill rate is what a scene of rings costs a tiling GPU, however few draws it takes.

§shape_fill_pixels_by_class: [u64; 6]

shape_fill_pixels split by shape kind and brush, in the order of ShapeFill::LABELS: which records a fill-bound frame pays for.

§shape_vertices: u64

Vertices the shape draws run through the vertex stage: six per quad, six per band segment. A tiling GPU stores every vertex’s varyings before it shades a pixel, so this bounds a frame as fill does.

§shape_passes: u32§shape_pipeline_fallback_draws: u32

Shape draws using a general pipeline while their specialization compiles.

§shape_specialized_draws: u32

Shape draws using a completed specialized pipeline.

§pipelines_created: u64

Pipelines this process has built, counted since it started rather than over the frame. A count that grows while a person is interacting names a backend shader compile they waited through.

§shader_pipeline_fallback_draws: u32

Runtime shader draws using a shader’s general pipeline while the specialization they asked for compiles in the background.

§shader_specialized_draws: u32

Runtime shader draws using a completed specialized pipeline.

§image_passes: u32§text_passes: u32§draw_calls: u32

Shape, image, glyph and composite draws recorded this frame. The *_passes counters above count batches or passes, so a single image batch reports image_passes=1 however many images it draws; this counts what the driver actually sees. Blur and effect quads are not included: they are one draw each and already counted by blur_passes and effect_applies.

§text_image_cache_hits: u32§text_image_cache_misses: u32§text_image_cache_hit_pixels: u64§text_image_cache_miss_pixels: u64§text_image_raster_bytes: u64§text_glyph_atlas_hits: u32§text_glyph_atlas_misses: u32§text_glyph_atlas_miss_pixels: u64§offscreen_pool_size: u32§offscreen_pool_bytes: u64§text_pool_size: u32§layer_cache_size: u32§layer_cache_bytes: u64§image_cache_size: u32§text_cache_size: u32§top_isolated_layers: [Option<IsolatedLayerStat>; 8]§top_isolated_layer_count: usize

Implementations§

Source§

impl FrameStatsSnapshot

Source

pub fn top_isolated_layers(self) -> impl Iterator<Item = IsolatedLayerStat>

Trait Implementations§

Source§

impl Clone for FrameStatsSnapshot

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 FrameStatsSnapshot

Source§

impl Debug for FrameStatsSnapshot

Source§

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

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

impl Default for FrameStatsSnapshot

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for FrameStatsSnapshot

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 FrameStatsSnapshot

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<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

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> Same for T

Source§

type Output = T

Should always be Self
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> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

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