rendering_stats.cc 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // Copyright 2012 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.h"
  5. namespace cc {
  6. RenderingStats::TimeDeltaList::TimeDeltaList() = default;
  7. RenderingStats::TimeDeltaList::TimeDeltaList(const TimeDeltaList& other) =
  8. default;
  9. RenderingStats::TimeDeltaList::~TimeDeltaList() = default;
  10. void RenderingStats::TimeDeltaList::Append(base::TimeDelta value) {
  11. values.push_back(value);
  12. }
  13. void RenderingStats::TimeDeltaList::AddToTracedValue(
  14. const char* name,
  15. base::trace_event::TracedValue* list_value) const {
  16. list_value->BeginArray(name);
  17. for (const auto& value : values) {
  18. list_value->AppendDouble(value.InMillisecondsF());
  19. }
  20. list_value->EndArray();
  21. }
  22. void RenderingStats::TimeDeltaList::Add(const TimeDeltaList& other) {
  23. values.insert(values.end(), other.values.begin(), other.values.end());
  24. }
  25. base::TimeDelta RenderingStats::TimeDeltaList::GetLastTimeDelta() const {
  26. return values.empty() ? base::TimeDelta() : values.back();
  27. }
  28. RenderingStats::RenderingStats()
  29. : frame_count(0),
  30. visible_content_area(0),
  31. approximated_visible_content_area(0),
  32. checkerboarded_visible_content_area(0),
  33. checkerboarded_no_recording_content_area(0),
  34. checkerboarded_needs_raster_content_area(0) {}
  35. RenderingStats::RenderingStats(const RenderingStats& other) = default;
  36. RenderingStats::~RenderingStats() = default;
  37. std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
  38. RenderingStats::AsTraceableData() const {
  39. std::unique_ptr<base::trace_event::TracedValue> record_data(
  40. new base::trace_event::TracedValue());
  41. record_data->SetInteger("frame_count", frame_count);
  42. record_data->SetInteger("visible_content_area", visible_content_area);
  43. record_data->SetInteger("approximated_visible_content_area",
  44. approximated_visible_content_area);
  45. record_data->SetInteger("checkerboarded_visible_content_area",
  46. checkerboarded_visible_content_area);
  47. record_data->SetInteger("checkerboarded_no_recording_content_area",
  48. checkerboarded_no_recording_content_area);
  49. record_data->SetInteger("checkerboarded_needs_raster_content_area",
  50. checkerboarded_needs_raster_content_area);
  51. draw_duration.AddToTracedValue("draw_duration_ms", record_data.get());
  52. draw_duration_estimate.AddToTracedValue("draw_duration_estimate_ms",
  53. record_data.get());
  54. begin_main_frame_to_commit_duration.AddToTracedValue(
  55. "begin_main_frame_to_commit_duration_ms", record_data.get());
  56. commit_to_activate_duration.AddToTracedValue("commit_to_activate_duration_ms",
  57. record_data.get());
  58. commit_to_activate_duration_estimate.AddToTracedValue(
  59. "commit_to_activate_duration_estimate_ms", record_data.get());
  60. return std::move(record_data);
  61. }
  62. } // namespace cc