Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: tools/VisualBench/VisualBench.h

Issue 1240633005: Some cleanups of VisualBench (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: added comment Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/VisualBench/VisualBench.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/VisualBench/VisualBench.h
diff --git a/tools/VisualBench/VisualBench.h b/tools/VisualBench/VisualBench.h
index b8cd2bdb771a866171f32c25ab40c9920641dcc2..9843693777099b433dd371a3a1c2affaf6fdd727 100644
--- a/tools/VisualBench/VisualBench.h
+++ b/tools/VisualBench/VisualBench.h
@@ -39,6 +39,34 @@ 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();
@@ -47,19 +75,21 @@ private:
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;
};
- enum State {
- kPreWarmLoops_State,
- kTuneLoops_State,
- kPreWarmTiming_State,
- kTiming_State,
- };
- void preWarm(State nextState);
-
int fCurrentSample;
int fCurrentFrame;
int fFlushes;
« no previous file with comments | « no previous file | tools/VisualBench/VisualBench.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698