OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/scheduler/compositor_timing_history.h" | 5 #include "cc/scheduler/compositor_timing_history.h" |
6 | 6 |
7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
8 #include "base/trace_event/trace_event.h" | 8 #include "base/trace_event/trace_event.h" |
9 #include "cc/debug/rendering_stats_instrumentation.h" | 9 #include "cc/debug/rendering_stats_instrumentation.h" |
10 | 10 |
11 namespace cc { | 11 namespace cc { |
12 | 12 |
13 class CompositorTimingHistory::UMAReporter { | 13 class CompositorTimingHistory::UMAReporter { |
14 public: | 14 public: |
15 virtual ~UMAReporter() {} | 15 virtual ~UMAReporter() {} |
16 | 16 |
17 virtual void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, | 17 virtual void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, |
18 base::TimeDelta estimate, | 18 base::TimeDelta estimate, |
19 bool affects_estimate) = 0; | 19 bool affects_estimate) = 0; |
| 20 virtual void AddBeginMainFrameQueueDurationCriticalDuration( |
| 21 base::TimeDelta duration, |
| 22 base::TimeDelta estimate, |
| 23 bool affects_estimate) = 0; |
| 24 virtual void AddBeginMainFrameQueueDurationNotCriticalDuration( |
| 25 base::TimeDelta duration, |
| 26 base::TimeDelta estimate, |
| 27 bool affects_estimate) = 0; |
| 28 virtual void AddBeginMainFrameStartToCommitDuration( |
| 29 base::TimeDelta duration, |
| 30 base::TimeDelta estimate, |
| 31 bool affects_estimate) = 0; |
20 virtual void AddCommitToReadyToActivateDuration(base::TimeDelta duration, | 32 virtual void AddCommitToReadyToActivateDuration(base::TimeDelta duration, |
21 base::TimeDelta estimate, | 33 base::TimeDelta estimate, |
22 bool affects_estimate) = 0; | 34 bool affects_estimate) = 0; |
23 virtual void AddPrepareTilesDuration(base::TimeDelta duration, | 35 virtual void AddPrepareTilesDuration(base::TimeDelta duration, |
24 base::TimeDelta estimate, | 36 base::TimeDelta estimate, |
25 bool affects_estimate) = 0; | 37 bool affects_estimate) = 0; |
26 virtual void AddActivateDuration(base::TimeDelta duration, | 38 virtual void AddActivateDuration(base::TimeDelta duration, |
27 base::TimeDelta estimate, | 39 base::TimeDelta estimate, |
28 bool affects_estimate) = 0; | 40 bool affects_estimate) = 0; |
29 virtual void AddDrawDuration(base::TimeDelta duration, | 41 virtual void AddDrawDuration(base::TimeDelta duration, |
30 base::TimeDelta estimate, | 42 base::TimeDelta estimate, |
31 bool affects_estimate) = 0; | 43 bool affects_estimate) = 0; |
32 }; | 44 }; |
33 | 45 |
34 namespace { | 46 namespace { |
35 | 47 |
36 // Using the 90th percentile will disable latency recovery | 48 // Using the 90th percentile will disable latency recovery |
37 // if we are missing the deadline approximately ~6 times per | 49 // if we are missing the deadline approximately ~6 times per |
38 // second. | 50 // second. |
39 // TODO(brianderson): Fine tune the percentiles below. | 51 // TODO(brianderson): Fine tune the percentiles below. |
40 const size_t kDurationHistorySize = 60; | 52 const size_t kDurationHistorySize = 60; |
41 const double kBeginMainFrameToCommitEstimationPercentile = 90.0; | 53 const double kBeginMainFrameToCommitEstimationPercentile = 90.0; |
| 54 const double kBeginMainFrameQueueDurationCriticalEstimationPercentile = 90.0; |
| 55 const double kBeginMainFrameQueueDurationNotCriticalEstimationPercentile = 90.0; |
| 56 const double kBeginMainFrameStartToCommitEstimationPercentile = 90.0; |
42 const double kCommitToReadyToActivateEstimationPercentile = 90.0; | 57 const double kCommitToReadyToActivateEstimationPercentile = 90.0; |
43 const double kPrepareTilesEstimationPercentile = 90.0; | 58 const double kPrepareTilesEstimationPercentile = 90.0; |
44 const double kActivateEstimationPercentile = 90.0; | 59 const double kActivateEstimationPercentile = 90.0; |
45 const double kDrawEstimationPercentile = 90.0; | 60 const double kDrawEstimationPercentile = 90.0; |
46 | 61 |
47 const int kUmaDurationMinMicros = 1; | 62 const int kUmaDurationMinMicros = 1; |
48 const int64 kUmaDurationMaxMicros = 1 * base::Time::kMicrosecondsPerSecond; | 63 const int64 kUmaDurationMaxMicros = 1 * base::Time::kMicrosecondsPerSecond; |
49 const size_t kUmaDurationBucketCount = 100; | 64 const size_t kUmaDurationBucketCount = 100; |
50 | 65 |
51 // Deprecated because they combine Browser and Renderer stats and have low | 66 // Deprecated because they combine Browser and Renderer stats and have low |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 class RendererUMAReporter : public CompositorTimingHistory::UMAReporter { | 118 class RendererUMAReporter : public CompositorTimingHistory::UMAReporter { |
104 public: | 119 public: |
105 ~RendererUMAReporter() override {} | 120 ~RendererUMAReporter() override {} |
106 | 121 |
107 void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, | 122 void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, |
108 base::TimeDelta estimate, | 123 base::TimeDelta estimate, |
109 bool affects_estimate) override { | 124 bool affects_estimate) override { |
110 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", "BeginMainFrameToCommit"); | 125 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", "BeginMainFrameToCommit"); |
111 } | 126 } |
112 | 127 |
| 128 void AddBeginMainFrameQueueDurationCriticalDuration( |
| 129 base::TimeDelta duration, |
| 130 base::TimeDelta estimate, |
| 131 bool affects_estimate) override { |
| 132 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", |
| 133 "BeginMainFrameQueueDurationCritical"); |
| 134 } |
| 135 |
| 136 void AddBeginMainFrameQueueDurationNotCriticalDuration( |
| 137 base::TimeDelta duration, |
| 138 base::TimeDelta estimate, |
| 139 bool affects_estimate) override { |
| 140 REPORT_COMPOSITOR_TIMING_HISTORY_UMA( |
| 141 "Renderer", "BeginMainFrameQueueDurationNotCritical"); |
| 142 } |
| 143 |
| 144 void AddBeginMainFrameStartToCommitDuration(base::TimeDelta duration, |
| 145 base::TimeDelta estimate, |
| 146 bool affects_estimate) override { |
| 147 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", |
| 148 "BeginMainFrameStartToCommit"); |
| 149 } |
| 150 |
113 void AddCommitToReadyToActivateDuration(base::TimeDelta duration, | 151 void AddCommitToReadyToActivateDuration(base::TimeDelta duration, |
114 base::TimeDelta estimate, | 152 base::TimeDelta estimate, |
115 bool affects_estimate) override { | 153 bool affects_estimate) override { |
116 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", "CommitToReadyToActivate"); | 154 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", "CommitToReadyToActivate"); |
117 } | 155 } |
118 | 156 |
119 void AddPrepareTilesDuration(base::TimeDelta duration, | 157 void AddPrepareTilesDuration(base::TimeDelta duration, |
120 base::TimeDelta estimate, | 158 base::TimeDelta estimate, |
121 bool affects_estimate) override { | 159 bool affects_estimate) override { |
122 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", "PrepareTiles"); | 160 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Renderer", "PrepareTiles"); |
(...skipping 16 matching lines...) Expand all Loading... |
139 class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter { | 177 class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter { |
140 public: | 178 public: |
141 ~BrowserUMAReporter() override {} | 179 ~BrowserUMAReporter() override {} |
142 | 180 |
143 void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, | 181 void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, |
144 base::TimeDelta estimate, | 182 base::TimeDelta estimate, |
145 bool affects_estimate) override { | 183 bool affects_estimate) override { |
146 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", "BeginMainFrameToCommit"); | 184 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", "BeginMainFrameToCommit"); |
147 } | 185 } |
148 | 186 |
| 187 void AddBeginMainFrameQueueDurationCriticalDuration( |
| 188 base::TimeDelta duration, |
| 189 base::TimeDelta estimate, |
| 190 bool affects_estimate) override { |
| 191 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", |
| 192 "BeginMainFrameQueueDurationCritical"); |
| 193 } |
| 194 |
| 195 void AddBeginMainFrameQueueDurationNotCriticalDuration( |
| 196 base::TimeDelta duration, |
| 197 base::TimeDelta estimate, |
| 198 bool affects_estimate) override { |
| 199 REPORT_COMPOSITOR_TIMING_HISTORY_UMA( |
| 200 "Browser", "BeginMainFrameQueueDurationNotCritical"); |
| 201 } |
| 202 |
| 203 void AddBeginMainFrameStartToCommitDuration(base::TimeDelta duration, |
| 204 base::TimeDelta estimate, |
| 205 bool affects_estimate) override { |
| 206 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", |
| 207 "BeginMainFrameStartToCommit"); |
| 208 } |
| 209 |
149 void AddCommitToReadyToActivateDuration(base::TimeDelta duration, | 210 void AddCommitToReadyToActivateDuration(base::TimeDelta duration, |
150 base::TimeDelta estimate, | 211 base::TimeDelta estimate, |
151 bool affects_estimate) override { | 212 bool affects_estimate) override { |
152 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", "CommitToReadyToActivate"); | 213 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", "CommitToReadyToActivate"); |
153 } | 214 } |
154 | 215 |
155 void AddPrepareTilesDuration(base::TimeDelta duration, | 216 void AddPrepareTilesDuration(base::TimeDelta duration, |
156 base::TimeDelta estimate, | 217 base::TimeDelta estimate, |
157 bool affects_estimate) override { | 218 bool affects_estimate) override { |
158 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", "PrepareTiles"); | 219 REPORT_COMPOSITOR_TIMING_HISTORY_UMA("Browser", "PrepareTiles"); |
(...skipping 15 matching lines...) Expand all Loading... |
174 | 235 |
175 class NullUMAReporter : public CompositorTimingHistory::UMAReporter { | 236 class NullUMAReporter : public CompositorTimingHistory::UMAReporter { |
176 public: | 237 public: |
177 ~NullUMAReporter() override {} | 238 ~NullUMAReporter() override {} |
178 void AddPrepareTilesDuration(base::TimeDelta duration, | 239 void AddPrepareTilesDuration(base::TimeDelta duration, |
179 base::TimeDelta estimate, | 240 base::TimeDelta estimate, |
180 bool affects_estimate) override {} | 241 bool affects_estimate) override {} |
181 void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, | 242 void AddBeginMainFrameToCommitDuration(base::TimeDelta duration, |
182 base::TimeDelta estimate, | 243 base::TimeDelta estimate, |
183 bool affects_estimate) override {} | 244 bool affects_estimate) override {} |
| 245 void AddBeginMainFrameQueueDurationCriticalDuration( |
| 246 base::TimeDelta duration, |
| 247 base::TimeDelta estimate, |
| 248 bool affects_estimate) override {} |
| 249 void AddBeginMainFrameQueueDurationNotCriticalDuration( |
| 250 base::TimeDelta duration, |
| 251 base::TimeDelta estimate, |
| 252 bool affects_estimate) override {} |
| 253 void AddBeginMainFrameStartToCommitDuration(base::TimeDelta duration, |
| 254 base::TimeDelta estimate, |
| 255 bool affects_estimate) override {} |
184 void AddCommitToReadyToActivateDuration(base::TimeDelta duration, | 256 void AddCommitToReadyToActivateDuration(base::TimeDelta duration, |
185 base::TimeDelta estimate, | 257 base::TimeDelta estimate, |
186 bool affects_estimate) override {} | 258 bool affects_estimate) override {} |
187 void AddActivateDuration(base::TimeDelta duration, | 259 void AddActivateDuration(base::TimeDelta duration, |
188 base::TimeDelta estimate, | 260 base::TimeDelta estimate, |
189 bool affects_estimate) override {} | 261 bool affects_estimate) override {} |
190 void AddDrawDuration(base::TimeDelta duration, | 262 void AddDrawDuration(base::TimeDelta duration, |
191 base::TimeDelta estimate, | 263 base::TimeDelta estimate, |
192 bool affects_estimate) override {} | 264 bool affects_estimate) override {} |
193 }; | 265 }; |
194 | 266 |
195 } // namespace | 267 } // namespace |
196 | 268 |
197 CompositorTimingHistory::CompositorTimingHistory( | 269 CompositorTimingHistory::CompositorTimingHistory( |
198 UMACategory uma_category, | 270 UMACategory uma_category, |
199 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 271 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
200 : enabled_(false), | 272 : enabled_(false), |
201 begin_main_frame_to_commit_duration_history_(kDurationHistorySize), | 273 begin_main_frame_sent_to_commit_duration_history_(kDurationHistorySize), |
| 274 begin_main_frame_queue_duration_critical_history_(kDurationHistorySize), |
| 275 begin_main_frame_queue_duration_not_critical_history_( |
| 276 kDurationHistorySize), |
| 277 begin_main_frame_start_to_commit_duration_history_(kDurationHistorySize), |
202 commit_to_ready_to_activate_duration_history_(kDurationHistorySize), | 278 commit_to_ready_to_activate_duration_history_(kDurationHistorySize), |
203 prepare_tiles_duration_history_(kDurationHistorySize), | 279 prepare_tiles_duration_history_(kDurationHistorySize), |
204 activate_duration_history_(kDurationHistorySize), | 280 activate_duration_history_(kDurationHistorySize), |
205 draw_duration_history_(kDurationHistorySize), | 281 draw_duration_history_(kDurationHistorySize), |
| 282 begin_main_frame_on_critical_path_(false), |
206 uma_reporter_(CreateUMAReporter(uma_category)), | 283 uma_reporter_(CreateUMAReporter(uma_category)), |
207 rendering_stats_instrumentation_(rendering_stats_instrumentation) {} | 284 rendering_stats_instrumentation_(rendering_stats_instrumentation) {} |
208 | 285 |
209 CompositorTimingHistory::~CompositorTimingHistory() { | 286 CompositorTimingHistory::~CompositorTimingHistory() { |
210 } | 287 } |
211 | 288 |
212 scoped_ptr<CompositorTimingHistory::UMAReporter> | 289 scoped_ptr<CompositorTimingHistory::UMAReporter> |
213 CompositorTimingHistory::CreateUMAReporter(UMACategory category) { | 290 CompositorTimingHistory::CreateUMAReporter(UMACategory category) { |
214 switch (category) { | 291 switch (category) { |
215 case RENDERER_UMA: | 292 case RENDERER_UMA: |
(...skipping 27 matching lines...) Expand all Loading... |
243 base::TimeTicks CompositorTimingHistory::Now() const { | 320 base::TimeTicks CompositorTimingHistory::Now() const { |
244 return base::TimeTicks::Now(); | 321 return base::TimeTicks::Now(); |
245 } | 322 } |
246 | 323 |
247 void CompositorTimingHistory::SetRecordingEnabled(bool enabled) { | 324 void CompositorTimingHistory::SetRecordingEnabled(bool enabled) { |
248 enabled_ = enabled; | 325 enabled_ = enabled; |
249 } | 326 } |
250 | 327 |
251 base::TimeDelta | 328 base::TimeDelta |
252 CompositorTimingHistory::BeginMainFrameToCommitDurationEstimate() const { | 329 CompositorTimingHistory::BeginMainFrameToCommitDurationEstimate() const { |
253 return begin_main_frame_to_commit_duration_history_.Percentile( | 330 return begin_main_frame_sent_to_commit_duration_history_.Percentile( |
254 kBeginMainFrameToCommitEstimationPercentile); | 331 kBeginMainFrameToCommitEstimationPercentile); |
255 } | 332 } |
256 | 333 |
257 base::TimeDelta | 334 base::TimeDelta |
| 335 CompositorTimingHistory::BeginMainFrameQueueDurationCriticalEstimate() const { |
| 336 return begin_main_frame_queue_duration_critical_history_.Percentile( |
| 337 kBeginMainFrameQueueDurationCriticalEstimationPercentile); |
| 338 } |
| 339 |
| 340 base::TimeDelta |
| 341 CompositorTimingHistory::BeginMainFrameQueueDurationNotCriticalEstimate() |
| 342 const { |
| 343 return begin_main_frame_queue_duration_not_critical_history_.Percentile( |
| 344 kBeginMainFrameQueueDurationNotCriticalEstimationPercentile); |
| 345 } |
| 346 |
| 347 base::TimeDelta |
| 348 CompositorTimingHistory::BeginMainFrameStartToCommitDurationEstimate() const { |
| 349 return begin_main_frame_start_to_commit_duration_history_.Percentile( |
| 350 kBeginMainFrameStartToCommitEstimationPercentile); |
| 351 } |
| 352 |
| 353 base::TimeDelta |
258 CompositorTimingHistory::CommitToReadyToActivateDurationEstimate() const { | 354 CompositorTimingHistory::CommitToReadyToActivateDurationEstimate() const { |
259 return commit_to_ready_to_activate_duration_history_.Percentile( | 355 return commit_to_ready_to_activate_duration_history_.Percentile( |
260 kCommitToReadyToActivateEstimationPercentile); | 356 kCommitToReadyToActivateEstimationPercentile); |
261 } | 357 } |
262 | 358 |
263 base::TimeDelta CompositorTimingHistory::PrepareTilesDurationEstimate() const { | 359 base::TimeDelta CompositorTimingHistory::PrepareTilesDurationEstimate() const { |
264 return prepare_tiles_duration_history_.Percentile( | 360 return prepare_tiles_duration_history_.Percentile( |
265 kPrepareTilesEstimationPercentile); | 361 kPrepareTilesEstimationPercentile); |
266 } | 362 } |
267 | 363 |
268 base::TimeDelta CompositorTimingHistory::ActivateDurationEstimate() const { | 364 base::TimeDelta CompositorTimingHistory::ActivateDurationEstimate() const { |
269 return activate_duration_history_.Percentile(kActivateEstimationPercentile); | 365 return activate_duration_history_.Percentile(kActivateEstimationPercentile); |
270 } | 366 } |
271 | 367 |
272 base::TimeDelta CompositorTimingHistory::DrawDurationEstimate() const { | 368 base::TimeDelta CompositorTimingHistory::DrawDurationEstimate() const { |
273 return draw_duration_history_.Percentile(kDrawEstimationPercentile); | 369 return draw_duration_history_.Percentile(kDrawEstimationPercentile); |
274 } | 370 } |
275 | 371 |
276 void CompositorTimingHistory::WillBeginMainFrame() { | 372 void CompositorTimingHistory::WillBeginMainFrame(bool on_critical_path) { |
277 DCHECK_EQ(base::TimeTicks(), begin_main_frame_sent_time_); | 373 DCHECK_EQ(base::TimeTicks(), begin_main_frame_sent_time_); |
| 374 begin_main_frame_on_critical_path_ = on_critical_path; |
278 begin_main_frame_sent_time_ = Now(); | 375 begin_main_frame_sent_time_ = Now(); |
279 } | 376 } |
280 | 377 |
| 378 void CompositorTimingHistory::BeginMainFrameStarted( |
| 379 base::TimeTicks main_thread_start_time) { |
| 380 DCHECK_NE(base::TimeTicks(), begin_main_frame_sent_time_); |
| 381 DCHECK_EQ(base::TimeTicks(), begin_main_frame_start_time_); |
| 382 begin_main_frame_start_time_ = main_thread_start_time; |
| 383 } |
| 384 |
281 void CompositorTimingHistory::BeginMainFrameAborted() { | 385 void CompositorTimingHistory::BeginMainFrameAborted() { |
282 DidCommit(); | 386 DidCommit(); |
283 } | 387 } |
284 | 388 |
285 void CompositorTimingHistory::DidCommit() { | 389 void CompositorTimingHistory::DidCommit() { |
286 DCHECK_NE(base::TimeTicks(), begin_main_frame_sent_time_); | 390 DCHECK_NE(base::TimeTicks(), begin_main_frame_sent_time_); |
287 | 391 |
288 commit_time_ = Now(); | 392 commit_time_ = Now(); |
289 | 393 |
290 base::TimeDelta begin_main_frame_to_commit_duration = | 394 bool begin_main_frame_start_time_is_valid = |
| 395 !begin_main_frame_start_time_.is_null(); |
| 396 if (!begin_main_frame_start_time_is_valid) |
| 397 begin_main_frame_start_time_ = begin_main_frame_sent_time_; |
| 398 |
| 399 base::TimeDelta begin_main_frame_sent_to_commit_duration = |
291 commit_time_ - begin_main_frame_sent_time_; | 400 commit_time_ - begin_main_frame_sent_time_; |
| 401 base::TimeDelta begin_main_frame_queue_duration = |
| 402 begin_main_frame_start_time_ - begin_main_frame_sent_time_; |
| 403 base::TimeDelta begin_main_frame_start_to_commit_duration = |
| 404 commit_time_ - begin_main_frame_start_time_; |
292 | 405 |
293 // Before adding the new data point to the timing history, see what we would | 406 // Before adding the new data point to the timing history, see what we would |
294 // have predicted for this frame. This allows us to keep track of the accuracy | 407 // have predicted for this frame. This allows us to keep track of the accuracy |
295 // of our predictions. | 408 // of our predictions. |
296 base::TimeDelta begin_main_frame_to_commit_estimate = | 409 base::TimeDelta begin_main_frame_to_commit_estimate = |
297 BeginMainFrameToCommitDurationEstimate(); | 410 BeginMainFrameToCommitDurationEstimate(); |
298 uma_reporter_->AddBeginMainFrameToCommitDuration( | 411 uma_reporter_->AddBeginMainFrameToCommitDuration( |
299 begin_main_frame_to_commit_duration, begin_main_frame_to_commit_estimate, | 412 begin_main_frame_sent_to_commit_duration, |
300 enabled_); | 413 begin_main_frame_to_commit_estimate, enabled_); |
301 rendering_stats_instrumentation_->AddBeginMainFrameToCommitDuration( | 414 rendering_stats_instrumentation_->AddBeginMainFrameToCommitDuration( |
302 begin_main_frame_to_commit_duration, begin_main_frame_to_commit_estimate); | 415 begin_main_frame_sent_to_commit_duration, |
| 416 begin_main_frame_to_commit_estimate); |
| 417 |
| 418 if (begin_main_frame_start_time_is_valid) { |
| 419 if (begin_main_frame_on_critical_path_) { |
| 420 uma_reporter_->AddBeginMainFrameQueueDurationCriticalDuration( |
| 421 begin_main_frame_queue_duration, |
| 422 BeginMainFrameQueueDurationCriticalEstimate(), enabled_); |
| 423 } else { |
| 424 uma_reporter_->AddBeginMainFrameQueueDurationNotCriticalDuration( |
| 425 begin_main_frame_queue_duration, |
| 426 BeginMainFrameQueueDurationNotCriticalEstimate(), enabled_); |
| 427 } |
| 428 } |
| 429 |
| 430 uma_reporter_->AddBeginMainFrameStartToCommitDuration( |
| 431 begin_main_frame_start_to_commit_duration, |
| 432 BeginMainFrameStartToCommitDurationEstimate(), enabled_); |
303 | 433 |
304 if (enabled_) { | 434 if (enabled_) { |
305 begin_main_frame_to_commit_duration_history_.InsertSample( | 435 begin_main_frame_sent_to_commit_duration_history_.InsertSample( |
306 begin_main_frame_to_commit_duration); | 436 begin_main_frame_sent_to_commit_duration); |
| 437 if (begin_main_frame_on_critical_path_) { |
| 438 begin_main_frame_queue_duration_critical_history_.InsertSample( |
| 439 begin_main_frame_queue_duration); |
| 440 } else { |
| 441 begin_main_frame_queue_duration_not_critical_history_.InsertSample( |
| 442 begin_main_frame_queue_duration); |
| 443 } |
| 444 begin_main_frame_start_to_commit_duration_history_.InsertSample( |
| 445 begin_main_frame_start_to_commit_duration); |
307 } | 446 } |
308 | 447 |
309 begin_main_frame_sent_time_ = base::TimeTicks(); | 448 begin_main_frame_sent_time_ = base::TimeTicks(); |
| 449 begin_main_frame_start_time_ = base::TimeTicks(); |
310 } | 450 } |
311 | 451 |
312 void CompositorTimingHistory::WillPrepareTiles() { | 452 void CompositorTimingHistory::WillPrepareTiles() { |
313 DCHECK_EQ(base::TimeTicks(), start_prepare_tiles_time_); | 453 DCHECK_EQ(base::TimeTicks(), start_prepare_tiles_time_); |
314 start_prepare_tiles_time_ = Now(); | 454 start_prepare_tiles_time_ = Now(); |
315 } | 455 } |
316 | 456 |
317 void CompositorTimingHistory::DidPrepareTiles() { | 457 void CompositorTimingHistory::DidPrepareTiles() { |
318 DCHECK_NE(base::TimeTicks(), start_prepare_tiles_time_); | 458 DCHECK_NE(base::TimeTicks(), start_prepare_tiles_time_); |
319 | 459 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 uma_reporter_->AddDrawDuration(draw_duration, draw_estimate, enabled_); | 529 uma_reporter_->AddDrawDuration(draw_duration, draw_estimate, enabled_); |
390 | 530 |
391 if (enabled_) { | 531 if (enabled_) { |
392 draw_duration_history_.InsertSample(draw_duration); | 532 draw_duration_history_.InsertSample(draw_duration); |
393 } | 533 } |
394 | 534 |
395 start_draw_time_ = base::TimeTicks(); | 535 start_draw_time_ = base::TimeTicks(); |
396 } | 536 } |
397 | 537 |
398 } // namespace cc | 538 } // namespace cc |
OLD | NEW |