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