14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef CC_DEBUG_PICTURE_RECORD_BENCHMARK_H_ 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define CC_DEBUG_PICTURE_RECORD_BENCHMARK_H_ 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <map> 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <utility> 108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include <vector> 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/time/time.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "cc/debug/micro_benchmark_controller.h" 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace cc { 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class LayerTreeHost; 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class Layer; 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class CC_EXPORT PictureRecordBenchmark : public MicroBenchmark { 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) explicit PictureRecordBenchmark(scoped_ptr<base::Value> value, 228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const MicroBenchmark::DoneCallback& callback); 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~PictureRecordBenchmark(); 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Implements MicroBenchmark interface. 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void DidUpdateLayers(LayerTreeHost* host) OVERRIDE; 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void RunOnLayer(PictureLayer* layer) OVERRIDE; 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private: 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void Run(Layer* layer); 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) typedef std::pair<base::TimeDelta, unsigned> TotalTime; 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) std::map<std::pair<int, int>, TotalTime> times_; 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) std::vector<std::pair<int, int> > dimensions_; 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace cc 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // CC_DEBUG_PICTURE_RECORD_BENCHMARK_H_ 40