| Index: tools/VisualBench/VisualStreamTimingModule.cpp
|
| diff --git a/tools/VisualBench/VisualStreamTimingModule.cpp b/tools/VisualBench/VisualStreamTimingModule.cpp
|
| index ad7c1d0e80c00204835d4f587517a08ec618a185..cb748ca5d825619d18119b377668e0d6a3d3a132 100644
|
| --- a/tools/VisualBench/VisualStreamTimingModule.cpp
|
| +++ b/tools/VisualBench/VisualStreamTimingModule.cpp
|
| @@ -9,9 +9,10 @@
|
|
|
| #include "SkCanvas.h"
|
|
|
| -VisualStreamTimingModule::VisualStreamTimingModule(VisualBench* owner, bool preWarmBeforeSample)
|
| +DEFINE_bool(reset, true, "Reset the GL context between samples.");
|
| +
|
| +VisualStreamTimingModule::VisualStreamTimingModule(VisualBench* owner)
|
| : fInitState(kReset_InitState)
|
| - , fPreWarmBeforeSample(preWarmBeforeSample)
|
| , fOwner(owner) {
|
| fBenchmarkStream.reset(new VisualBenchmarkStream(owner->getSurfaceProps()));
|
| }
|
| @@ -36,18 +37,13 @@ inline void VisualStreamTimingModule::handleInitState(SkCanvas* canvas) {
|
| inline void VisualStreamTimingModule::handleTimingEvent(SkCanvas* canvas,
|
| TimingStateMachine::ParentEvents event) {
|
| switch (event) {
|
| - case TimingStateMachine::kReset_ParentEvents:
|
| - fBenchmarkStream->current()->postTimingHooks(canvas);
|
| - fOwner->reset();
|
| - fInitState = kReset_InitState;
|
| - break;
|
| case TimingStateMachine::kTiming_ParentEvents:
|
| break;
|
| case TimingStateMachine::kTimingFinished_ParentEvents:
|
| - fBenchmarkStream->current()->postTimingHooks(canvas);
|
| - fOwner->reset();
|
| if (this->timingFinished(fBenchmarkStream->current(), fTSM.loops(),
|
| fTSM.lastMeasurement())) {
|
| + fBenchmarkStream->current()->postTimingHooks(canvas);
|
| + fOwner->reset();
|
| fTSM.nextBenchmark();
|
| if (!fBenchmarkStream->next()) {
|
| SkDebugf("Exiting VisualBench successfully\n");
|
| @@ -55,7 +51,13 @@ inline void VisualStreamTimingModule::handleTimingEvent(SkCanvas* canvas,
|
| } else {
|
| fInitState = kNewBenchmark_InitState;
|
| }
|
| - } else {
|
| + break;
|
| + }
|
| + // fallthrough
|
| + case TimingStateMachine::kReset_ParentEvents:
|
| + if (FLAGS_reset) {
|
| + fBenchmarkStream->current()->postTimingHooks(canvas);
|
| + fOwner->reset();
|
| fInitState = kReset_InitState;
|
| }
|
| break;
|
| @@ -72,6 +74,6 @@ void VisualStreamTimingModule::draw(SkCanvas* canvas) {
|
| this->handleInitState(canvas);
|
| this->renderFrame(canvas, fBenchmarkStream->current(), fTSM.loops());
|
| fOwner->present();
|
| - TimingStateMachine::ParentEvents event = fTSM.nextFrame(fPreWarmBeforeSample);
|
| + TimingStateMachine::ParentEvents event = fTSM.nextFrame(FLAGS_reset);
|
| this->handleTimingEvent(canvas, event);
|
| }
|
|
|