| Index: cc/scheduler/compositor_timing_history.cc
|
| diff --git a/cc/scheduler/compositor_timing_history.cc b/cc/scheduler/compositor_timing_history.cc
|
| index 0e88a8af073c93f361fa0adcf08266e661f4a9c1..d53023a6ba7b287fec3426a0ba9f8ee9df9975f3 100644
|
| --- a/cc/scheduler/compositor_timing_history.cc
|
| +++ b/cc/scheduler/compositor_timing_history.cc
|
| @@ -26,7 +26,7 @@ class CompositorTimingHistory::UMAReporter {
|
| virtual void AddDrawInterval(base::TimeDelta interval) = 0;
|
|
|
| // Latency measurements
|
| - virtual void AddBeginMainFrameLatency(base::TimeDelta delta) = 0;
|
| + virtual void AddBeginImplFrameLatency(base::TimeDelta delta) = 0;
|
| virtual void AddBeginMainFrameQueueDurationCriticalDuration(
|
| base::TimeDelta duration) = 0;
|
| virtual void AddBeginMainFrameQueueDurationNotCriticalDuration(
|
| @@ -147,6 +147,11 @@ class RendererUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| interval);
|
| }
|
|
|
| + void AddBeginImplFrameLatency(base::TimeDelta delta) override {
|
| + UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
|
| + "Scheduling.Renderer.BeginImplFrameLatency", delta);
|
| + }
|
| +
|
| void AddBeginMainFrameQueueDurationCriticalDuration(
|
| base::TimeDelta duration) override {
|
| UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
|
| @@ -198,11 +203,6 @@ class RendererUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED(
|
| "Scheduling.Renderer.MainAndImplFrameTimeDelta", delta);
|
| }
|
| -
|
| - void AddBeginMainFrameLatency(base::TimeDelta delta) override {
|
| - UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
|
| - "Scheduling.Renderer.VsyncToBeginMainFrameLatency", delta);
|
| - }
|
| };
|
|
|
| class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| @@ -229,6 +229,11 @@ class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| interval);
|
| }
|
|
|
| + void AddBeginImplFrameLatency(base::TimeDelta delta) override {
|
| + UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
|
| + "Scheduling.Browser.BeginImplFrameLatency", delta);
|
| + }
|
| +
|
| void AddBeginMainFrameQueueDurationCriticalDuration(
|
| base::TimeDelta duration) override {
|
| UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
|
| @@ -280,11 +285,6 @@ class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED(
|
| "Scheduling.Browser.MainAndImplFrameTimeDelta", delta);
|
| }
|
| -
|
| - void AddBeginMainFrameLatency(base::TimeDelta delta) override {
|
| - UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
|
| - "Scheduling.Browser.VsyncToBeginMainFrameLatency", delta);
|
| - }
|
| };
|
|
|
| class NullUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| @@ -295,6 +295,7 @@ class NullUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| }
|
| void AddCommitInterval(base::TimeDelta interval) override {}
|
| void AddDrawInterval(base::TimeDelta interval) override {}
|
| + void AddBeginImplFrameLatency(base::TimeDelta delta) override {}
|
| void AddBeginMainFrameQueueDurationCriticalDuration(
|
| base::TimeDelta duration) override {}
|
| void AddBeginMainFrameQueueDurationNotCriticalDuration(
|
| @@ -308,7 +309,6 @@ class NullUMAReporter : public CompositorTimingHistory::UMAReporter {
|
| void AddSubmitToAckLatency(base::TimeDelta duration) override {}
|
| void AddSubmitAckWasFast(bool was_fast) override {}
|
| void AddMainAndImplFrameTimeDelta(base::TimeDelta delta) override {}
|
| - void AddBeginMainFrameLatency(base::TimeDelta delta) override {}
|
| };
|
|
|
| } // namespace
|
| @@ -467,7 +467,10 @@ void CompositorTimingHistory::DidCreateAndInitializeCompositorFrameSink() {
|
| }
|
|
|
| void CompositorTimingHistory::WillBeginImplFrame(
|
| - bool new_active_tree_is_likely) {
|
| + bool new_active_tree_is_likely,
|
| + base::TimeTicks frame_time,
|
| + BeginFrameArgs::BeginFrameArgsType frame_type,
|
| + base::TimeTicks now) {
|
| // The check for whether a BeginMainFrame was sent anytime between two
|
| // BeginImplFrames protects us from not detecting a fast main thread that
|
| // does all it's work and goes idle in between BeginImplFrames.
|
| @@ -480,7 +483,7 @@ void CompositorTimingHistory::WillBeginImplFrame(
|
| }
|
|
|
| if (submit_ack_watchdog_enabled_) {
|
| - base::TimeDelta submit_not_acked_time_ = Now() - submit_start_time_;
|
| + base::TimeDelta submit_not_acked_time_ = now - submit_start_time_;
|
| if (submit_not_acked_time_ >= kSubmitAckWatchdogTimeout) {
|
| uma_reporter_->AddSubmitAckWasFast(false);
|
| // Only record this UMA once per submitted CompositorFrame.
|
| @@ -488,6 +491,9 @@ void CompositorTimingHistory::WillBeginImplFrame(
|
| }
|
| }
|
|
|
| + if (frame_type == BeginFrameArgs::NORMAL)
|
| + uma_reporter_->AddBeginImplFrameLatency(now - frame_time);
|
| +
|
| did_send_begin_main_frame_ = false;
|
| }
|
|
|
| @@ -504,8 +510,7 @@ void CompositorTimingHistory::BeginImplFrameNotExpectedSoon() {
|
|
|
| void CompositorTimingHistory::WillBeginMainFrame(
|
| bool on_critical_path,
|
| - base::TimeTicks main_frame_time,
|
| - BeginFrameArgs::BeginFrameArgsType frame_type) {
|
| + base::TimeTicks main_frame_time) {
|
| DCHECK_EQ(base::TimeTicks(), begin_main_frame_sent_time_);
|
| DCHECK_EQ(base::TimeTicks(), begin_main_frame_frame_time_);
|
|
|
| @@ -513,11 +518,6 @@ void CompositorTimingHistory::WillBeginMainFrame(
|
| begin_main_frame_sent_time_ = Now();
|
| begin_main_frame_frame_time_ = main_frame_time;
|
|
|
| - if (frame_type == BeginFrameArgs::NORMAL) {
|
| - uma_reporter_->AddBeginMainFrameLatency(begin_main_frame_sent_time_ -
|
| - begin_main_frame_frame_time_);
|
| - }
|
| -
|
| did_send_begin_main_frame_ = true;
|
| SetBeginMainFrameNeededContinuously(true);
|
| }
|
|
|