diff options
author | robertphillips <robertphillips@google.com> | 2014-11-21 05:50:21 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-21 05:50:21 -0800 |
commit | e77dadd91ae6f4319c2c047e7e36cc79bb4d1eff (patch) | |
tree | 53caf01479f56733a51197521047592b8ffdb762 /bench/SKPBench.cpp | |
parent | 0ddad31012dabfc1267effc8071d37f7d606efbe (diff) |
Revert of Add MultiPictureDraw to nanobench (patchset #7 id:120001 of https://codereview.chromium.org/731973005/)
Reason for revert:
Needs more work
Original issue's description:
> Add MultiPictureDraw to nanobench
>
> I would like some guard against performance regressions on our side before turning layer hoisting on in Chromium.
>
> TBR=bsalomon@google.com
>
> Committed: https://skia.googlesource.com/skia/+/0ddad31012dabfc1267effc8071d37f7d606efbe
TBR=mtklein@google.com,bsalomon@google.com
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/750583002
Diffstat (limited to 'bench/SKPBench.cpp')
-rw-r--r-- | bench/SKPBench.cpp | 104 |
1 files changed, 14 insertions, 90 deletions
diff --git a/bench/SKPBench.cpp b/bench/SKPBench.cpp index fd8df429c2..5844d8a588 100644 --- a/bench/SKPBench.cpp +++ b/bench/SKPBench.cpp @@ -7,28 +7,15 @@ #include "SKPBench.h" #include "SkCommandLineFlags.h" -#include "SkMultiPictureDraw.h" -#include "SkSurface.h" DEFINE_int32(benchTile, 256, "Tile dimension used for SKP playback."); -SKPBench::SKPBench(const char* name, const SkPicture* pic, const SkIRect& clip, SkScalar scale, - bool useMultiPictureDraw) +SKPBench::SKPBench(const char* name, const SkPicture* pic, const SkIRect& clip, SkScalar scale) : fPic(SkRef(pic)) , fClip(clip) , fScale(scale) - , fName(name) - , fUseMultiPictureDraw(useMultiPictureDraw) { + , fName(name) { fUniqueName.printf("%s_%.2g", name, scale); // Scale makes this unqiue for skiaperf.com traces. - if (useMultiPictureDraw) { - fUniqueName.append("_mpd"); - } -} - -SKPBench::~SKPBench() { - for (int i = 0; i < fSurfaces.count(); ++i) { - fSurfaces[i]->unref(); - } } const char* SKPBench::onGetName() { @@ -39,49 +26,6 @@ const char* SKPBench::onGetUniqueName() { return fUniqueName.c_str(); } -void SKPBench::onPerCanvasPreDraw(SkCanvas* canvas) { - if (!fUseMultiPictureDraw) { - return; - } - - SkIRect bounds; - SkAssertResult(canvas->getClipDeviceBounds(&bounds)); - - int xTiles = SkScalarCeilToInt(bounds.width() / SkIntToScalar(FLAGS_benchTile)); - int yTiles = SkScalarCeilToInt(bounds.height() / SkIntToScalar(FLAGS_benchTile)); - - fSurfaces.setReserve(xTiles * yTiles); - fTileRects.setReserve(xTiles * yTiles); - - SkImageInfo ii = canvas->imageInfo().makeWH(FLAGS_benchTile, FLAGS_benchTile); - - for (int y = bounds.fTop; y < bounds.fBottom; y += FLAGS_benchTile) { - for (int x = bounds.fLeft; x < bounds.fRight; x += FLAGS_benchTile) { - *fTileRects.append() = SkIRect::MakeXYWH(x, y, FLAGS_benchTile, FLAGS_benchTile); - *fSurfaces.push() = canvas->newSurface(ii); - fSurfaces.top()->getCanvas()->setMatrix(canvas->getTotalMatrix()); - fSurfaces.top()->getCanvas()->scale(fScale, fScale); - } - } -} - -void SKPBench::onPerCanvasPostDraw(SkCanvas* canvas) { - if (!fUseMultiPictureDraw) { - return; - } - - // Draw the last set of tiles into the master canvas in case we're - // saving the images - for (int i = 0; i < fTileRects.count(); ++i) { - canvas->drawImage(fSurfaces[i]->newImageSnapshot(), - SkIntToScalar(fTileRects[i].fLeft), SkIntToScalar(fTileRects[i].fTop)); - SkSafeSetNull(fSurfaces[i]); - } - - fSurfaces.rewind(); - fTileRects.rewind(); -} - bool SKPBench::isSuitableFor(Backend backend) { return backend != kNonRendering_Backend; } @@ -91,41 +35,21 @@ SkIPoint SKPBench::onGetSize() { } void SKPBench::onDraw(const int loops, SkCanvas* canvas) { - if (fUseMultiPictureDraw) { - for (int i = 0; i < loops; i++) { - SkMultiPictureDraw mpd; - - for (int i = 0; i < fTileRects.count(); ++i) { - SkMatrix trans; - trans.setTranslate(-fTileRects[i].fLeft/fScale, - -fTileRects[i].fTop/fScale); - mpd.add(fSurfaces[i]->getCanvas(), fPic, &trans); - } - - mpd.draw(); - - for (int i = 0; i < fTileRects.count(); ++i) { - fSurfaces[i]->getCanvas()->flush(); - } - } - } else { - SkIRect bounds; - SkAssertResult(canvas->getClipDeviceBounds(&bounds)); + SkIRect bounds; + SkAssertResult(canvas->getClipDeviceBounds(&bounds)); - SkAutoCanvasRestore overall(canvas, true/*save now*/); - canvas->scale(fScale, fScale); + SkAutoCanvasRestore overall(canvas, true/*save now*/); + canvas->scale(fScale, fScale); - for (int i = 0; i < loops; i++) { - for (int y = bounds.fTop; y < bounds.fBottom; y += FLAGS_benchTile) { - for (int x = bounds.fLeft; x < bounds.fRight; x += FLAGS_benchTile) { - SkAutoCanvasRestore perTile(canvas, true/*save now*/); - canvas->clipRect(SkRect::Make( - SkIRect::MakeXYWH(x, y, FLAGS_benchTile, FLAGS_benchTile))); - fPic->playback(canvas); - } + for (int i = 0; i < loops; i++) { + for (int y = bounds.fTop; y < bounds.fBottom; y += FLAGS_benchTile) { + for (int x = bounds.fLeft; x < bounds.fRight; x += FLAGS_benchTile) { + SkAutoCanvasRestore perTile(canvas, true/*save now*/); + canvas->clipRect(SkRect::Make( + SkIRect::MakeXYWH(x, y, FLAGS_benchTile, FLAGS_benchTile))); + fPic->playback(canvas); } - - canvas->flush(); } + canvas->flush(); } } |