12880df2609eba09b555ca37be04b6ad89290c765Tom Hudson/* 22880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * Copyright 2015 Google Inc. 32880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * 42880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * Use of this source code is governed by a BSD-style license that can be 52880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * found in the LICENSE file. 62880df2609eba09b555ca37be04b6ad89290c765Tom Hudson */ 72880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 82880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#ifndef VisualLightweightBenchModule_DEFINED 92880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#define VisualLightweightBenchModule_DEFINED 102880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 112880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "VisualStreamTimingModule.h" 122880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 132880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "ResultsWriter.h" 142880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "SkPicture.h" 152880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#include "VisualBench.h" 162880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 172880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonclass SkCanvas; 182880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 192880df2609eba09b555ca37be04b6ad89290c765Tom Hudson/* 202880df2609eba09b555ca37be04b6ad89290c765Tom Hudson * This module is designed to be a minimal overhead timing module for VisualBench 212880df2609eba09b555ca37be04b6ad89290c765Tom Hudson */ 222880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonclass VisualLightweightBenchModule : public VisualStreamTimingModule { 232880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonpublic: 242880df2609eba09b555ca37be04b6ad89290c765Tom Hudson // TODO get rid of backpointer 252880df2609eba09b555ca37be04b6ad89290c765Tom Hudson VisualLightweightBenchModule(VisualBench* owner); 262880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 272880df2609eba09b555ca37be04b6ad89290c765Tom Hudson bool onHandleChar(SkUnichar c) override; 282880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 292880df2609eba09b555ca37be04b6ad89290c765Tom Hudsonprivate: 302880df2609eba09b555ca37be04b6ad89290c765Tom Hudson void renderFrame(SkCanvas*, Benchmark*, int loops) override; 312880df2609eba09b555ca37be04b6ad89290c765Tom Hudson bool timingFinished(Benchmark*, int loops, double measurement) override; 322880df2609eba09b555ca37be04b6ad89290c765Tom Hudson void printStats(Benchmark*, int loops); 332880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 342880df2609eba09b555ca37be04b6ad89290c765Tom Hudson struct Record { 352880df2609eba09b555ca37be04b6ad89290c765Tom Hudson SkTArray<double> fMeasurements; 362880df2609eba09b555ca37be04b6ad89290c765Tom Hudson }; 372880df2609eba09b555ca37be04b6ad89290c765Tom Hudson int fCurrentSample; 382880df2609eba09b555ca37be04b6ad89290c765Tom Hudson SkTArray<Record> fRecords; 392880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 402880df2609eba09b555ca37be04b6ad89290c765Tom Hudson // support framework 412880df2609eba09b555ca37be04b6ad89290c765Tom Hudson SkAutoTDelete<ResultsWriter> fResults; 422880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 432880df2609eba09b555ca37be04b6ad89290c765Tom Hudson typedef VisualStreamTimingModule INHERITED; 442880df2609eba09b555ca37be04b6ad89290c765Tom Hudson}; 452880df2609eba09b555ca37be04b6ad89290c765Tom Hudson 462880df2609eba09b555ca37be04b6ad89290c765Tom Hudson#endif 47