From e77dadd91ae6f4319c2c047e7e36cc79bb4d1eff Mon Sep 17 00:00:00 2001 From: robertphillips Date: Fri, 21 Nov 2014 05:50:21 -0800 Subject: 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 --- bench/SKPBench.cpp | 104 ++++++++--------------------------------------------- 1 file changed, 14 insertions(+), 90 deletions(-) (limited to 'bench/SKPBench.cpp') 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(); } } -- cgit v1.2.3