| 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 |