зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1624627 - Add a slow transaction indicator. r=jrmuizel
It moves when DL building + IPC + scene building takes more than 100ms. Depends on D69247 Differential Revision: https://phabricator.services.mozilla.com/D69254 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
fdb6027218
Коммит
5ca5cd78ce
|
@ -693,6 +693,7 @@ pub struct BackendProfileCounters {
|
|||
pub resources: ResourceProfileCounters,
|
||||
pub ipc: IpcProfileCounters,
|
||||
pub intern: InternProfileCounters,
|
||||
pub scene_changed: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
@ -844,12 +845,14 @@ impl BackendProfileCounters {
|
|||
filter_data: ResourceProfileCounter::new("Interned filter data", None, None),
|
||||
backdrop: ResourceProfileCounter::new("Interned backdrops", None, None),
|
||||
},
|
||||
scene_changed: false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn reset(&mut self) {
|
||||
self.total_time.reset();
|
||||
self.resources.texture_cache.rasterized_blob_pixels.reset();
|
||||
self.scene_changed = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1772,7 +1775,7 @@ impl Profiler {
|
|||
style: ProfileStyle,
|
||||
) {
|
||||
self.draw_state.x_left = 20.0;
|
||||
self.draw_state.y_left = 40.0;
|
||||
self.draw_state.y_left = 50.0;
|
||||
self.draw_state.x_right = 450.0;
|
||||
self.draw_state.y_right = 40.0;
|
||||
|
||||
|
|
|
@ -915,6 +915,7 @@ impl RenderBackend {
|
|||
let scene_build_time =
|
||||
txn.scene_build_end_time - txn.scene_build_start_time;
|
||||
profile_counters.scene_build_time.set(scene_build_time);
|
||||
profile_counters.scene_changed = true;
|
||||
}
|
||||
|
||||
if let Some(doc) = self.documents.get_mut(&txn.document_id) {
|
||||
|
|
|
@ -1883,6 +1883,7 @@ pub struct Renderer {
|
|||
new_frame_indicator: ChangeIndicator,
|
||||
new_scene_indicator: ChangeIndicator,
|
||||
slow_frame_indicator: ChangeIndicator,
|
||||
slow_txn_indicator: ChangeIndicator,
|
||||
|
||||
last_time: u64,
|
||||
|
||||
|
@ -2465,6 +2466,7 @@ impl Renderer {
|
|||
new_frame_indicator: ChangeIndicator::new(),
|
||||
new_scene_indicator: ChangeIndicator::new(),
|
||||
slow_frame_indicator: ChangeIndicator::new(),
|
||||
slow_txn_indicator: ChangeIndicator::new(),
|
||||
max_recorded_profiles: options.max_recorded_profiles,
|
||||
clear_color: options.clear_color,
|
||||
enable_clear_scissor: options.enable_clear_scissor,
|
||||
|
@ -3346,6 +3348,16 @@ impl Renderer {
|
|||
self.slow_frame_indicator.changed();
|
||||
}
|
||||
|
||||
if self.backend_profile_counters.scene_changed {
|
||||
let txn_time_ns = self.backend_profile_counters.ipc.total_send_time.get()
|
||||
+ self.backend_profile_counters.ipc.build_time.get()
|
||||
+ self.backend_profile_counters.scene_build_time.get();
|
||||
let txn_time_ms = txn_time_ns as f64 / 1000000.0;
|
||||
if txn_time_ms > 100.0 {
|
||||
self.slow_txn_indicator.changed();
|
||||
}
|
||||
}
|
||||
|
||||
if self.max_recorded_profiles > 0 {
|
||||
while self.cpu_profiles.len() >= self.max_recorded_profiles {
|
||||
self.cpu_profiles.pop_front();
|
||||
|
@ -3412,8 +3424,13 @@ impl Renderer {
|
|||
|
||||
if self.debug_flags.contains(DebugFlags::SLOW_FRAME_INDICATOR) {
|
||||
if let Some(debug_renderer) = self.debug.get_mut(&mut self.device) {
|
||||
self.slow_frame_indicator.draw(
|
||||
self.slow_txn_indicator.draw(
|
||||
x, 0.0,
|
||||
ColorU::new(250, 80, 80, 255),
|
||||
debug_renderer,
|
||||
);
|
||||
self.slow_frame_indicator.draw(
|
||||
x, 10.0,
|
||||
ColorU::new(220, 30, 10, 255),
|
||||
debug_renderer,
|
||||
);
|
||||
|
|
Загрузка…
Ссылка в новой задаче