| Index: tools/PictureBenchmark.cpp | 
| diff --git a/tools/PictureBenchmark.cpp b/tools/PictureBenchmark.cpp | 
| index f1d00035cc6ae138c992ebae87d5cbb87bb86ac3..6c0325e2ee115c76c3c021c50101b30ed61053d3 100644 | 
| --- a/tools/PictureBenchmark.cpp | 
| +++ b/tools/PictureBenchmark.cpp | 
| @@ -5,6 +5,7 @@ | 
| * found in the LICENSE file. | 
| */ | 
|  | 
| +#include "SkBenchLogger.h" | 
| #include "BenchTimer.h" | 
| #include "PictureBenchmark.h" | 
| #include "SkCanvas.h" | 
| @@ -16,13 +17,13 @@ | 
|  | 
| PictureBenchmark::PictureBenchmark() | 
| : fRepeats(1) | 
| +, fLogger(NULL) | 
| , fRenderer(NULL) | 
| , fTimerResult(TimerData::kAvg_Result) | 
| , fTimerTypes(0) | 
| , fTimeIndividualTiles(false) | 
| , fPurgeDecodedTex(false) | 
| , fPreprocess(false) | 
| -, fWriter(NULL) | 
| {} | 
|  | 
| PictureBenchmark::~PictureBenchmark() { | 
| @@ -51,6 +52,12 @@ | 
| return SkNEW_ARGS(BenchTimer, (NULL)); | 
| } | 
|  | 
| +void PictureBenchmark::logProgress(const char msg[]) { | 
| +    if (fLogger != NULL) { | 
| +        fLogger->logProgress(msg); | 
| +    } | 
| +} | 
| + | 
| PictureRenderer* PictureBenchmark::setRenderer(sk_tools::PictureRenderer* renderer) { | 
| SkRefCnt_SafeAssign(fRenderer, renderer); | 
| return renderer; | 
| @@ -129,6 +136,10 @@ | 
| if (!tiledRenderer->tileDimensions(xTiles, yTiles)) { | 
| return; | 
| } | 
| + | 
| +        // Insert a newline so that each tile is reported on its own line (separate from the line | 
| +        // that describes the skp being run). | 
| +        this->logProgress("\n"); | 
|  | 
| int x, y; | 
| while (tiledRenderer->nextTile(x, y)) { | 
| @@ -173,8 +184,8 @@ | 
| SkAssertResult(longRunningTimerData.appendTimes(longRunningTimer.get())); | 
| } | 
|  | 
| -            fWriter->tileConfig(tiledRenderer->getConfigName()); | 
| -            fWriter->tileMeta(x, y, xTiles, yTiles); | 
| +            SkString configName = tiledRenderer->getConfigName(); | 
| +            configName.appendf(": tile [%i,%i] out of [%i,%i]", x, y, xTiles, yTiles); | 
|  | 
| // TODO(borenet): Turn off per-iteration tile time reporting for now. | 
| // Avoiding logging the time for every iteration for each tile cuts | 
| @@ -182,23 +193,22 @@ | 
| // we're loading the bench data directly into a data store and are no | 
| // longer generating SVG graphs. | 
| #if 0 | 
| -            fWriter->tileData( | 
| -                    &perTileTimerData, | 
| -                    timeFormat.c_str(), | 
| -                    fTimerResult, | 
| -                    timerTypes); | 
| +            SkString result = perTileTimerData.getResult(timeFormat.c_str(), fTimerResult, | 
| +                                                         configName.c_str(), timerTypes); | 
| +            result.append("\n"); | 
| +            this->logProgress(result.c_str()); | 
| #endif | 
|  | 
| if (fPurgeDecodedTex) { | 
| -                fWriter->addTileFlag(PictureResultsWriter::kPurging); | 
| +                configName.append(" <withPurging>"); | 
| } | 
| -            fWriter->addTileFlag(PictureResultsWriter::kAvg); | 
| -            fWriter->tileData( | 
| -                &longRunningTimerData, | 
| +            configName.append(" <averaged>"); | 
| +            SkString longRunningResult = longRunningTimerData.getResult( | 
| tiledRenderer->getNormalTimeFormat().c_str(), | 
| TimerData::kAvg_Result, | 
| -                timerTypes, | 
| -                numInnerLoops); | 
| +                configName.c_str(), timerTypes, numInnerLoops); | 
| +            longRunningResult.append("\n"); | 
| +            this->logProgress(longRunningResult.c_str()); | 
| } | 
| } else { | 
| SkAutoTDelete<BenchTimer> longRunningTimer(this->setupTimer()); | 
| @@ -236,26 +246,29 @@ | 
| SkAssertResult(longRunningTimerData.appendTimes(longRunningTimer.get())); | 
| } | 
|  | 
| -        fWriter->tileConfig(fRenderer->getConfigName()); | 
| +        SkString configName = fRenderer->getConfigName(); | 
| if (fPurgeDecodedTex) { | 
| -            fWriter->addTileFlag(PictureResultsWriter::kPurging); | 
| +            configName.append(" <withPurging>"); | 
| } | 
|  | 
| // 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 | 
| -        fWriter->tileData( | 
| -                &perRunTimerData, | 
| -                timeFormat.c_str(), | 
| -                fTimerResult, | 
| -                timerTypes); | 
| +        SkString result = perRunTimerData.getResult(timeFormat.c_str(), | 
| +                                                    fTimerResult, | 
| +                                                    configName.c_str(), | 
| +                                                    timerTypes); | 
| +        result.append("\n"); | 
| + | 
| +        this->logProgress(result.c_str()); | 
| #else | 
| -        fWriter->tileData( | 
| -                &longRunningTimerData, | 
| -                timeFormat.c_str(), | 
| -                fTimerResult, | 
| -                timerTypes, | 
| -                numInnerLoops); | 
| +        SkString result = longRunningTimerData.getResult(timeFormat.c_str(), | 
| +                                                            fTimerResult, | 
| +                                                            configName.c_str(), | 
| +                                                            timerTypes, | 
| +                                                            numInnerLoops); | 
| +        result.append("\n"); | 
| +        this->logProgress(result.c_str()); | 
| #endif | 
| } | 
|  | 
|  |