| Index: tools/VisualBench/VisualBench.h
|
| diff --git a/tools/VisualBench/VisualBench.h b/tools/VisualBench/VisualBench.h
|
| index 61002fc9e9355d412fc9a0e9b61036a8947583aa..75615f0735cd075c88494acfbcacd8e63fc442c9 100644
|
| --- a/tools/VisualBench/VisualBench.h
|
| +++ b/tools/VisualBench/VisualBench.h
|
| @@ -11,12 +11,11 @@
|
|
|
| #include "SkWindow.h"
|
|
|
| -#include "ResultsWriter.h"
|
| #include "SkPicture.h"
|
| #include "SkString.h"
|
| #include "SkSurface.h"
|
| -#include "Timer.h"
|
| -#include "VisualBenchmarkStream.h"
|
| +#include "VisualFlags.h"
|
| +#include "VisualModule.h"
|
| #include "gl/SkGLContext.h"
|
|
|
| class GrContext;
|
| @@ -32,6 +31,8 @@ public:
|
| VisualBench(void* hwnd, int argc, char** argv);
|
| ~VisualBench() override;
|
|
|
| + void reset() { this->resetContext(); }
|
| +
|
| protected:
|
| SkSurface* createSurface() override;
|
|
|
| @@ -40,73 +41,19 @@ protected:
|
| void onSizeChange() override;
|
|
|
| private:
|
| - /*
|
| - * The heart of visual bench is an event driven timing loop.
|
| - * kPreWarmLoopsPerCanvasPreDraw_State: Before we begin timing, Benchmarks have a hook to
|
| - * access the canvas. Then we prewarm before the autotune
|
| - * loops step.
|
| - * kPreWarmLoops_State: We prewarm the gpu before auto tuning to enter a steady
|
| - * work state
|
| - * kTuneLoops_State: Then we tune the loops of the benchmark to ensure we
|
| - * are doing a measurable amount of work
|
| - * kPreWarmTimingPerCanvasPreDraw_State: Because reset the context after tuning loops to ensure
|
| - * coherent state, we need to give the benchmark
|
| - * another hook
|
| - * kPreWarmTiming_State: We prewarm the gpu again to enter a steady state
|
| - * kTiming_State: Finally we time the benchmark. When finished timing
|
| - * if we have enough samples then we'll start the next
|
| - * benchmark in the kPreWarmLoopsPerCanvasPreDraw_State.
|
| - * otherwise, we enter the
|
| - * kPreWarmTimingPerCanvasPreDraw_State for another sample
|
| - * In either case we reset the context.
|
| - */
|
| - enum State {
|
| - kPreWarmLoopsPerCanvasPreDraw_State,
|
| - kPreWarmLoops_State,
|
| - kTuneLoops_State,
|
| - kPreWarmTimingPerCanvasPreDraw_State,
|
| - kPreWarmTiming_State,
|
| - kTiming_State,
|
| - };
|
| void setTitle();
|
| bool setupBackend();
|
| void resetContext();
|
| void setupRenderTarget();
|
| bool onHandleChar(SkUnichar unichar) override;
|
| - void printStats();
|
| - bool advanceRecordIfNecessary(SkCanvas*);
|
| - inline void renderFrame(SkCanvas*);
|
| - inline void nextState(State);
|
| - void perCanvasPreDraw(SkCanvas*, State);
|
| - void preWarm(State nextState);
|
| - void scaleLoops(double elapsedMs);
|
| - inline void tuneLoops();
|
| - inline void timing(SkCanvas*);
|
| - inline double elapsed();
|
| - void resetTimingState();
|
| - void postDraw(SkCanvas*);
|
| - void recordMeasurement();
|
| -
|
| - struct Record {
|
| - SkTArray<double> fMeasurements;
|
| - };
|
| -
|
| - int fCurrentSample;
|
| - int fCurrentFrame;
|
| - int fLoops;
|
| - SkTArray<Record> fRecords;
|
| - WallTimer fTimer;
|
| - State fState;
|
| - SkAutoTDelete<VisualBenchmarkStream> fBenchmarkStream;
|
| - SkAutoTUnref<Benchmark> fBenchmark;
|
|
|
| // support framework
|
| + SkAutoTDelete<VisualModule> fModule;
|
| SkAutoTUnref<SkSurface> fSurface;
|
| SkAutoTUnref<GrContext> fContext;
|
| SkAutoTUnref<GrRenderTarget> fRenderTarget;
|
| AttachmentInfo fAttachmentInfo;
|
| SkAutoTUnref<const GrGLInterface> fInterface;
|
| - SkAutoTDelete<ResultsWriter> fResults;
|
|
|
| typedef SkOSWindow INHERITED;
|
| };
|
|
|