Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3655)

Unified Diff: cc/scheduler/compositor_timing_history.cc

Issue 2754943002: Reimplement vsync latency UMA to be based on BeginImplFrame rather than BeginMainFrame (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..dda74e75da773d41653dc63cdd126df322e5ed76 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(
@@ -199,9 +199,9 @@ class RendererUMAReporter : public CompositorTimingHistory::UMAReporter {
"Scheduling.Renderer.MainAndImplFrameTimeDelta", delta);
}
- void AddBeginMainFrameLatency(base::TimeDelta delta) override {
+ void AddBeginImplFrameLatency(base::TimeDelta delta) override {
brianderson 2017/03/16 19:11:56 Nit: Here and below, can you put the method in the
stanisc 2017/03/16 20:45:48 Done.
UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
- "Scheduling.Renderer.VsyncToBeginMainFrameLatency", delta);
+ "Scheduling.Renderer.VsyncToBeginImplFrameLatency", delta);
}
};
@@ -281,9 +281,9 @@ class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter {
"Scheduling.Browser.MainAndImplFrameTimeDelta", delta);
}
- void AddBeginMainFrameLatency(base::TimeDelta delta) override {
+ void AddBeginImplFrameLatency(base::TimeDelta delta) override {
UMA_HISTOGRAM_CUSTOM_TIMES_DURATION(
- "Scheduling.Browser.VsyncToBeginMainFrameLatency", delta);
+ "Scheduling.Browser.VsyncToBeginImplFrameLatency", delta);
}
};
@@ -308,7 +308,7 @@ 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 {}
+ void AddBeginImplFrameLatency(base::TimeDelta delta) override {}
};
} // namespace
@@ -467,13 +467,18 @@ 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) {
// 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.
// For example, this may happen if an animation is being driven with
// setInterval(17) or if input events just happen to arrive in the
// middle of every frame.
+ if (frame_type == BeginFrameArgs::NORMAL)
+ uma_reporter_->AddBeginImplFrameLatency(Now() - frame_time);
+
if (!new_active_tree_is_likely && !did_send_begin_main_frame_) {
SetBeginMainFrameNeededContinuously(false);
SetBeginMainFrameCommittingContinuously(false);
@@ -504,8 +509,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 +517,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);
}

Powered by Google App Engine
This is Rietveld 408576698