rendering_stats_instrumentation.cc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. // Copyright 2013 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "cc/debug/rendering_stats_instrumentation.h"
  5. #include <stdint.h>
  6. #include "base/memory/ptr_util.h"
  7. namespace cc {
  8. // static
  9. std::unique_ptr<RenderingStatsInstrumentation>
  10. RenderingStatsInstrumentation::Create() {
  11. return base::WrapUnique(new RenderingStatsInstrumentation());
  12. }
  13. RenderingStatsInstrumentation::RenderingStatsInstrumentation()
  14. : record_rendering_stats_(false) {
  15. }
  16. RenderingStatsInstrumentation::~RenderingStatsInstrumentation() = default;
  17. RenderingStats RenderingStatsInstrumentation::TakeImplThreadRenderingStats() {
  18. base::AutoLock scoped_lock(lock_);
  19. auto stats = impl_thread_rendering_stats_;
  20. impl_thread_rendering_stats_ = RenderingStats();
  21. return stats;
  22. }
  23. void RenderingStatsInstrumentation::IncrementFrameCount(int64_t count) {
  24. if (!record_rendering_stats_)
  25. return;
  26. base::AutoLock scoped_lock(lock_);
  27. impl_thread_rendering_stats_.frame_count += count;
  28. }
  29. void RenderingStatsInstrumentation::AddVisibleContentArea(int64_t area) {
  30. if (!record_rendering_stats_)
  31. return;
  32. base::AutoLock scoped_lock(lock_);
  33. impl_thread_rendering_stats_.visible_content_area += area;
  34. }
  35. void RenderingStatsInstrumentation::AddApproximatedVisibleContentArea(
  36. int64_t area) {
  37. if (!record_rendering_stats_)
  38. return;
  39. base::AutoLock scoped_lock(lock_);
  40. impl_thread_rendering_stats_.approximated_visible_content_area += area;
  41. }
  42. void RenderingStatsInstrumentation::AddCheckerboardedVisibleContentArea(
  43. int64_t area) {
  44. if (!record_rendering_stats_)
  45. return;
  46. base::AutoLock scoped_lock(lock_);
  47. impl_thread_rendering_stats_.checkerboarded_visible_content_area += area;
  48. }
  49. void RenderingStatsInstrumentation::AddCheckerboardedNoRecordingContentArea(
  50. int64_t area) {
  51. if (!record_rendering_stats_)
  52. return;
  53. base::AutoLock scoped_lock(lock_);
  54. impl_thread_rendering_stats_.checkerboarded_no_recording_content_area += area;
  55. }
  56. void RenderingStatsInstrumentation::AddCheckerboardedNeedsRasterContentArea(
  57. int64_t area) {
  58. if (!record_rendering_stats_)
  59. return;
  60. base::AutoLock scoped_lock(lock_);
  61. impl_thread_rendering_stats_.checkerboarded_needs_raster_content_area += area;
  62. }
  63. void RenderingStatsInstrumentation::AddDrawDuration(
  64. base::TimeDelta draw_duration,
  65. base::TimeDelta draw_duration_estimate) {
  66. if (!record_rendering_stats_)
  67. return;
  68. base::AutoLock scoped_lock(lock_);
  69. impl_thread_rendering_stats_.draw_duration.Append(draw_duration);
  70. impl_thread_rendering_stats_.draw_duration_estimate.Append(
  71. draw_duration_estimate);
  72. }
  73. void RenderingStatsInstrumentation::AddBeginMainFrameToCommitDuration(
  74. base::TimeDelta begin_main_frame_to_commit_duration) {
  75. if (!record_rendering_stats_)
  76. return;
  77. base::AutoLock scoped_lock(lock_);
  78. impl_thread_rendering_stats_.begin_main_frame_to_commit_duration.Append(
  79. begin_main_frame_to_commit_duration);
  80. }
  81. void RenderingStatsInstrumentation::AddCommitToActivateDuration(
  82. base::TimeDelta commit_to_activate_duration,
  83. base::TimeDelta commit_to_activate_duration_estimate) {
  84. if (!record_rendering_stats_)
  85. return;
  86. base::AutoLock scoped_lock(lock_);
  87. impl_thread_rendering_stats_.commit_to_activate_duration.Append(
  88. commit_to_activate_duration);
  89. impl_thread_rendering_stats_.commit_to_activate_duration_estimate.Append(
  90. commit_to_activate_duration_estimate);
  91. }
  92. } // namespace cc