Home | History | Annotate | Download | only in debug
      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 
      5 #include "base/values.h"
      6 #include "cc/debug/rendering_stats.h"
      7 
      8 namespace cc {
      9 
     10 MainThreadRenderingStats::MainThreadRenderingStats()
     11     : frame_count(0),
     12       painted_pixel_count(0),
     13       recorded_pixel_count(0) {}
     14 
     15 scoped_refptr<base::debug::ConvertableToTraceFormat>
     16 MainThreadRenderingStats::AsTraceableData() const {
     17   scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue());
     18   record_data->SetInteger("frame_count", frame_count);
     19   record_data->SetDouble("paint_time", paint_time.InSecondsF());
     20   record_data->SetInteger("painted_pixel_count", painted_pixel_count);
     21   record_data->SetDouble("record_time", record_time.InSecondsF());
     22   record_data->SetInteger("recorded_pixel_count", recorded_pixel_count);
     23   return TracedValue::FromValue(record_data.release());
     24 }
     25 
     26 void MainThreadRenderingStats::Add(const MainThreadRenderingStats& other) {
     27   frame_count += other.frame_count;
     28   paint_time += other.paint_time;
     29   painted_pixel_count += other.painted_pixel_count;
     30   record_time += other.record_time;
     31   recorded_pixel_count += other.recorded_pixel_count;
     32 }
     33 
     34 ImplThreadRenderingStats::ImplThreadRenderingStats()
     35     : frame_count(0),
     36       rasterized_pixel_count(0) {}
     37 
     38 scoped_refptr<base::debug::ConvertableToTraceFormat>
     39 ImplThreadRenderingStats::AsTraceableData() const {
     40   scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue());
     41   record_data->SetInteger("frame_count", frame_count);
     42   record_data->SetDouble("rasterize_time", rasterize_time.InSecondsF());
     43   record_data->SetInteger("rasterized_pixel_count", rasterized_pixel_count);
     44   return TracedValue::FromValue(record_data.release());
     45 }
     46 
     47 void ImplThreadRenderingStats::Add(const ImplThreadRenderingStats& other) {
     48   frame_count += other.frame_count;
     49   rasterize_time += other.rasterize_time;
     50   analysis_time += other.analysis_time;
     51   rasterized_pixel_count += other.rasterized_pixel_count;
     52 }
     53 
     54 void RenderingStats::EnumerateFields(Enumerator* enumerator) const {
     55   enumerator->AddInt64("frameCount",
     56                        main_stats.frame_count + impl_stats.frame_count);
     57   enumerator->AddDouble("paintTime",
     58                         main_stats.paint_time.InSecondsF());
     59   enumerator->AddInt64("paintedPixelCount",
     60                        main_stats.painted_pixel_count);
     61   enumerator->AddDouble("recordTime",
     62                         main_stats.record_time.InSecondsF());
     63   enumerator->AddInt64("recordedPixelCount",
     64                        main_stats.recorded_pixel_count);
     65   // Combine rasterization and analysis time as a precursor to combining
     66   // them in the same step internally.
     67   enumerator->AddDouble("rasterizeTime",
     68                         impl_stats.rasterize_time.InSecondsF() +
     69                             impl_stats.analysis_time.InSecondsF());
     70   enumerator->AddInt64("rasterizedPixelCount",
     71                        impl_stats.rasterized_pixel_count);
     72 }
     73 
     74 void RenderingStats::Add(const RenderingStats& other) {
     75   main_stats.Add(other.main_stats);
     76   impl_stats.Add(other.impl_stats);
     77 }
     78 
     79 }  // namespace cc
     80