use crate::brush::gpu_context::BrushPerfCounters;
#[derive(Default, Debug, Clone)]
pub struct BrushPerfDelta {
pub submit_us: u64,
pub submits: u32,
pub dab_flushes: u32,
pub flushed_dabs: u64,
pub dab_union_bbox_area_total: u64,
pub dabs_per_flush: Vec<u32>,
pub dab_union_bbox_area_per_flush: Vec<u32>,
}
impl BrushPerfDelta {
pub(crate) fn between(curr: &mut BrushPerfCounters, prev: &BrushPerfCounters) -> Self {
Self {
submit_us: curr.submit_us.saturating_sub(prev.submit_us),
submits: curr.submits.saturating_sub(prev.submits),
dab_flushes: curr.dab_flushes.saturating_sub(prev.dab_flushes),
flushed_dabs: (curr.flushed_dabs as u64).saturating_sub(prev.flushed_dabs as u64),
dab_union_bbox_area_total: curr
.dab_union_bbox_area
.saturating_sub(prev.dab_union_bbox_area),
dabs_per_flush: std::mem::take(&mut curr.dabs_per_flush),
dab_union_bbox_area_per_flush: std::mem::take(&mut curr.dab_union_bbox_area_per_flush),
}
}
}
#[derive(Default, Clone, Copy)]
pub struct FrameRenderPhases {
pub poll_us: u64,
pub thumb_us: u64,
pub anim_us: u64,
pub compositor_us: u64,
}