// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_DEBUG_RASTERIZE_AND_RECORD_BENCHMARK_IMPL_H_ #define CC_DEBUG_RASTERIZE_AND_RECORD_BENCHMARK_IMPL_H_ #include #include #include #include "base/time/time.h" #include "cc/debug/micro_benchmark_impl.h" #include "cc/resources/task_graph_runner.h" namespace cc { class LayerTreeHostImpl; class PictureLayerImpl; class LayerImpl; class RasterizeAndRecordBenchmarkImpl : public MicroBenchmarkImpl { public: explicit RasterizeAndRecordBenchmarkImpl( scoped_refptr origin_loop, base::Value* value, const MicroBenchmarkImpl::DoneCallback& callback); virtual ~RasterizeAndRecordBenchmarkImpl(); // Implements MicroBenchmark interface. virtual void DidCompleteCommit(LayerTreeHostImpl* host) OVERRIDE; virtual void RunOnLayer(PictureLayerImpl* layer) OVERRIDE; private: void Run(LayerImpl* layer); struct RasterizeResults { RasterizeResults(); ~RasterizeResults(); int pixels_rasterized; int pixels_rasterized_with_non_solid_color; int pixels_rasterized_as_opaque; base::TimeDelta total_best_time; int total_layers; int total_picture_layers; int total_picture_layers_with_no_content; int total_picture_layers_off_screen; }; RasterizeResults rasterize_results_; int rasterize_repeat_count_; NamespaceToken task_namespace_; }; } // namespace cc #endif // CC_DEBUG_RASTERIZE_AND_RECORD_BENCHMARK_IMPL_H_