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