Skip to main content

OffscreenRenderTiming

Struct OffscreenRenderTiming 

pub struct OffscreenRenderTiming {
Show 47 fields pub vello_submit_us: u128, pub copy_submit_us: u128, pub settle_wait_us: u128, pub full_attempts: u32, pub damage_setup_us: u128, pub damage_target_creations: u32, pub sparse_submissions: u32, pub sparse_coarse_active_bins_submissions: u32, pub sparse_coarse_adaptive_submissions: u32, pub sparse_coarse_adaptive_dense_submissions: u32, pub sparse_coarse_native_bins: u64, pub sparse_coarse_selected_native_bins: u64, pub sparse_path_tile_bounds_submissions: u32, pub sparse_path_tile_bounds_tiles: u64, pub sparse_coarse_opaque_prune_submissions: u32, pub sparse_solid_fuse_submissions: u32, pub sparse_segment_row_mask_submissions: u32, pub canonical_segment_order_sparse_selected_attempts: u32, pub canonical_segment_order_full_selected_attempts: u32, pub area_ppt8_sparse_selected_attempts: u32, pub area_ppt8_full_selected_attempts: u32, pub clip_single_group_sparse_selected_attempts: u32, pub clip_single_group_full_selected_attempts: u32, pub sparse_fine_quad_skip_submissions: u32, pub sparse_fine_quad_total_quads: u64, pub sparse_fine_quad_active_quads: u64, pub sparse_fine_quad_skipped_quads: u64, pub sparse_fine_tiles: u64, pub sparse_written_pixels: u64, pub coarse_prefix_pixels: u64, pub gpu_timestamp_span_ns: u128, pub gpu_timestamp_pass_ns: u128, pub gpu_timestamp_last_pass_ns: u128, pub gpu_timestamp_other_pass_ns: u128, pub gpu_timestamp_pass_count: u32, pub gpu_timestamp_expected_submissions: u32, pub gpu_timestamp_sampled_submissions: u32, pub gpu_timestamp_missing_submissions: u32, pub gpu_dispatch_timestamp_expected_submissions: u32, pub gpu_dispatch_timestamp_sampled_submissions: u32, pub gpu_dispatch_timestamp_missing_submissions: u32, pub gpu_dispatch_timestamp_stale_submissions: u32, pub gpu_dispatch_timestamp_present_stages: u32, pub gpu_dispatch_timestamp_stage_duration_ns: [u128; 32], pub gpu_dispatch_timestamp_stage_dispatch_count: [u32; 32], pub gpu_dispatch_timestamp_unknown_duration_ns: u128, pub gpu_dispatch_timestamp_unknown_dispatch_count: u32,
}
Expand description

Host-side phases of one completed offscreen render, populated only by OffscreenRenderer::render_damage_regions_gpu_wait_profiled.

vello_submit_us includes scene resolution, uploads, and Vello’s shared queue submission, excluding separately measured copy encoding. copy_submit_us covers only dirty-copy command encoding in Vello’s post-render callback. settle_wait_us is the blocking GPU-complete wait while collecting Vello’s bump counters.

Fields§

§vello_submit_us: u128§copy_submit_us: u128§settle_wait_us: u128§full_attempts: u32§damage_setup_us: u128§damage_target_creations: u32§sparse_submissions: u32§sparse_coarse_active_bins_submissions: u32

Sparse submissions that actually selected the opt-in native active-bin coarse shader. Capability alone is not counted because oversized selectors fall back to legacy coarse.

§sparse_coarse_adaptive_submissions: u32

Sparse submissions made while Vello’s opt-in adaptive coarse policy was active.

§sparse_coarse_adaptive_dense_submissions: u32

Adaptive sparse submissions which deliberately retained dense coarse work.

§sparse_coarse_native_bins: u64

Sum of representable native coarse bins across adaptive sparse submissions.

§sparse_coarse_selected_native_bins: u64

Sum of selected native coarse bins across adaptive sparse submissions.

§sparse_path_tile_bounds_submissions: u32

Sparse submissions where Vello actually applied path-level native tile bounds.

§sparse_path_tile_bounds_tiles: u64

Sum of native bounding-box tile areas from actually bounded sparse submissions. This is diagnostic coverage accounting, not an allocation or memory-saving metric.

§sparse_coarse_opaque_prune_submissions: u32

Sparse submissions where the coarse opaque-prune shader was actually selected. This does not claim a number of tiles or commands pruned, or any resource savings.

§sparse_solid_fuse_submissions: u32

Sparse submissions where the solid-fuse producer/consumer shader path was selected. This does not claim command fusion counts or any resource savings.

§sparse_segment_row_mask_submissions: u32

Sparse submissions where the segment-row-mask shader path was actually selected. This does not claim a number of rows skipped or any resource savings.

§canonical_segment_order_sparse_selected_attempts: u32

Sparse submissions where canonical segment ordering was actually recorded. This is route-attempt telemetry, not a completion or speed claim.

§canonical_segment_order_full_selected_attempts: u32

Full submissions where canonical segment ordering was actually recorded. This is route-attempt telemetry, not a completion or speed claim.

§area_ppt8_sparse_selected_attempts: u32

Sparse submissions where the Area PPT8 shader was actually selected. This is route-attempt telemetry, not a completion or speed claim.

§area_ppt8_full_selected_attempts: u32

Full submissions where the Area PPT8 shader was actually selected. This is route-attempt telemetry, not a completion or speed claim.

§clip_single_group_sparse_selected_attempts: u32

Sparse submissions where the single-workgroup clip leaf shader was selected. This is route-attempt telemetry, not a completion or speed claim.

§clip_single_group_full_selected_attempts: u32

Full submissions where the single-workgroup clip leaf shader was selected. This is route-attempt telemetry, not a completion or speed claim.

§sparse_fine_quad_skip_submissions: u32

Sparse submissions where the Area fine shader actually skipped zero-mask quad invocations.

§sparse_fine_quad_total_quads: u64

Total fine invocation groups considered by the applied quad-skip path.

§sparse_fine_quad_active_quads: u64

Non-zero-mask fine invocation groups evaluated by the applied quad-skip path.

§sparse_fine_quad_skipped_quads: u64

Zero-mask fine invocation groups skipped by the applied quad-skip path.

§sparse_fine_tiles: u64§sparse_written_pixels: u64§coarse_prefix_pixels: u64§gpu_timestamp_span_ns: u128

Rounded GPU timestamp span across verified submissions.

§gpu_timestamp_pass_ns: u128

Rounded sum of individual GPU pass durations across verified submissions.

§gpu_timestamp_last_pass_ns: u128

Rounded duration of the final recorded compute pass in verified submissions.

§gpu_timestamp_other_pass_ns: u128

Rounded duration of all earlier recorded compute passes in verified submissions.

§gpu_timestamp_pass_count: u32§gpu_timestamp_expected_submissions: u32§gpu_timestamp_sampled_submissions: u32§gpu_timestamp_missing_submissions: u32

Submissions for which timestamp data was disabled, unavailable, stale, or failed.

§gpu_dispatch_timestamp_expected_submissions: u32

Matched submissions expected to have an opt-in per-dispatch sample.

§gpu_dispatch_timestamp_sampled_submissions: u32§gpu_dispatch_timestamp_missing_submissions: u32

Missing dispatch samples are not treated as zero GPU time.

§gpu_dispatch_timestamp_stale_submissions: u32

A completed sample belonging to an older submission was discarded.

§gpu_dispatch_timestamp_present_stages: u32

Bit stage_id - 1 is set when that stable stage was present.

§gpu_dispatch_timestamp_stage_duration_ns: [u128; 32]§gpu_dispatch_timestamp_stage_dispatch_count: [u32; 32]§gpu_dispatch_timestamp_unknown_duration_ns: u128§gpu_dispatch_timestamp_unknown_dispatch_count: u32

Trait Implementations§

§

impl Clone for OffscreenRenderTiming

§

fn clone(&self) -> OffscreenRenderTiming

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
§

impl Debug for OffscreenRenderTiming

§

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

Formats the value using the given formatter. Read more
§

impl Default for OffscreenRenderTiming

§

fn default() -> OffscreenRenderTiming

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

impl PartialEq for OffscreenRenderTiming

§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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.
§

impl Copy for OffscreenRenderTiming

§

impl Eq for OffscreenRenderTiming

§

impl StructuralPartialEq for OffscreenRenderTiming

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
§

impl<T> AnyEq for T
where T: Any + PartialEq,

§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

§

fn as_any(&self) -> &(dyn Any + 'static)

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
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

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

§

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

Compare self to key and return true if they are equal.
§

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

§

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

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

§

fn simd_from(_simd: S, value: T) -> T

§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

§

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 = 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.
§

impl<T> Upcast<T> for T

§

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

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> Fruit for T
where T: Send + Downcast,

§

impl<T> MaybeSendSync for T
where T: Send + Sync + ?Sized,

§

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

§

impl<T> WasmNotSendSync for T

§

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