Home | History | Annotate | Download | only in VisualBench
      1 /*
      2  * Copyright 2015 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef VisualLightweightBenchModule_DEFINED
      9 #define VisualLightweightBenchModule_DEFINED
     10 
     11 #include "VisualStreamTimingModule.h"
     12 
     13 #include "ResultsWriter.h"
     14 #include "SkPicture.h"
     15 #include "VisualBench.h"
     16 
     17 class SkCanvas;
     18 
     19 /*
     20  * This module is designed to be a minimal overhead timing module for VisualBench
     21  */
     22 class VisualLightweightBenchModule : public VisualStreamTimingModule {
     23 public:
     24     // TODO get rid of backpointer
     25     VisualLightweightBenchModule(VisualBench* owner);
     26 
     27     bool onHandleChar(SkUnichar c) override;
     28 
     29 private:
     30     void renderFrame(SkCanvas*, Benchmark*, int loops) override;
     31     bool timingFinished(Benchmark*, int loops, double measurement) override;
     32     void printStats(Benchmark*, int loops);
     33 
     34     struct Record {
     35         SkTArray<double> fMeasurements;
     36     };
     37     int fCurrentSample;
     38     SkTArray<Record> fRecords;
     39 
     40     // support framework
     41     SkAutoTDelete<ResultsWriter> fResults;
     42 
     43     typedef VisualStreamTimingModule INHERITED;
     44 };
     45 
     46 #endif
     47