Index: tools/PictureBenchmark.cpp |
=================================================================== |
--- tools/PictureBenchmark.cpp (revision 12693) |
+++ tools/PictureBenchmark.cpp (working copy) |
@@ -170,30 +170,49 @@ |
this->logProgress(longRunningResult.c_str()); |
} |
} else { |
- SkAutoTDelete<BenchTimer> timer(this->setupTimer()); |
- TimerData timerData(fRepeats); |
+ SkAutoTDelete<BenchTimer> longRunningTimer(this->setupTimer()); |
+ TimerData longRunningTimerData(1); |
+ SkAutoTDelete<BenchTimer> perRunTimer(this->setupTimer(false)); |
+ TimerData perRunTimerData(fRepeats); |
+ |
+ longRunningTimer->start(); |
for (int i = 0; i < fRepeats; ++i) { |
fRenderer->setup(); |
- timer->start(); |
+ perRunTimer->start(); |
fRenderer->render(NULL); |
- timer->truncatedEnd(); |
+ perRunTimer->truncatedEnd(); |
+ fRenderer->resetState(false); |
+ perRunTimer->end(); |
- // Finishes gl context |
- fRenderer->resetState(true); |
- timer->end(); |
- |
- SkAssertResult(timerData.appendTimes(timer.get())); |
+ SkAssertResult(perRunTimerData.appendTimes(perRunTimer.get())); |
} |
+ longRunningTimer->truncatedEnd(); |
+ fRenderer->resetState(true); |
+ longRunningTimer->end(); |
+ SkAssertResult(longRunningTimerData.appendTimes(longRunningTimer.get())); |
SkString configName = fRenderer->getConfigName(); |
- SkString result = timerData.getResult(timeFormat.c_str(), |
- fTimerResult, |
- configName.c_str(), |
- timerTypes); |
+ // Beware - since the per-run-timer doesn't ever include a glFinish it can |
+ // report a lower time then the long-running-timer |
+#if 0 |
+ SkString result = perRunTimerData.getResult(timeFormat.c_str(), |
+ fTimerResult, |
+ configName.c_str(), |
+ timerTypes); |
result.append("\n"); |
+ |
this->logProgress(result.c_str()); |
+#else |
+ SkString result = longRunningTimerData.getResult(timeFormat.c_str(), |
+ fTimerResult, |
+ configName.c_str(), |
+ timerTypes, |
+ fRepeats); |
+ result.append("\n"); |
+ this->logProgress(result.c_str()); |
+#endif |
} |
fRenderer->end(); |