Revert of SkCanvas::resetForNextPicture() (patchset #4 id:60001 of https://codereview...
authormtklein <mtklein@google.com>
Tue, 7 Apr 2015 22:27:14 +0000 (15:27 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 7 Apr 2015 22:27:14 +0000 (15:27 -0700)
Reason for revert:
https://uberchromegw.corp.google.com/i/client.skia/builders/Linux%20Tests/builds/1816

Original issue's description:
> SkCanvas::resetForNextPicture()
>
> No diffs against head for DM --config 8888 gpu 2ndpic-8888 2ndpic-gpu.
>
>   picture_overhead_draw 1.62us ->  1.6us 0.99x
> picture_overhead_nodraw  792ns ->  342ns 0.43x
>
> tiles and serialization modes will also test this a bit.
>
> BUG=chromium:470553
>
> Committed: https://skia.googlesource.com/skia/+/f920e468ac66a36c9653d1b11181480295044c7d

TBR=mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:470553

Review URL: https://codereview.chromium.org/1062353002

include/core/SkBitmapDevice.h
include/core/SkCanvas.h
src/core/SkBitmapDevice.cpp
src/core/SkCanvas.cpp
src/core/SkPictureRecorder.cpp
src/core/SkRecorder.cpp
src/core/SkRecorder.h

index 69adc9a..9d8c4c5 100644 (file)
@@ -150,8 +150,6 @@ private:
 
     SkBitmap    fBitmap;
 
-    void setNewSize(const SkISize&);  // Used by SkCanvas for resetForNextPicture().
-
     typedef SkBaseDevice INHERITED;
 };
 
index 828b923..853877d 100644 (file)
@@ -1301,8 +1301,6 @@ private:
     SkCanvas(const SkIRect& bounds, InitFlags);
     SkCanvas(SkBaseDevice*, const SkSurfaceProps*, InitFlags);
 
-    void resetForNextPicture(const SkIRect& bounds);
-
     // needs gettotalclip()
     friend class SkCanvasStateUtils;
 
index 5b2fc38..5fae2b5 100644 (file)
@@ -103,11 +103,6 @@ SkImageInfo SkBitmapDevice::imageInfo() const {
     return fBitmap.info();
 }
 
-void SkBitmapDevice::setNewSize(const SkISize& size) {
-    SkASSERT(!fBitmap.pixelRef());
-    fBitmap.setInfo(fBitmap.info().makeWH(size.fWidth, size.fHeight));
-}
-
 void SkBitmapDevice::replaceBitmapBackendForRasterSurface(const SkBitmap& bm) {
     SkASSERT(bm.width() == fBitmap.width());
     SkASSERT(bm.height() == fBitmap.height());
index 63a9241..ec21955 100644 (file)
@@ -135,13 +135,6 @@ struct DeviceCM {
         SkDELETE(fPaint);
     }
 
-    void reset(const SkIRect& bounds) {
-        SkASSERT(!fPaint);
-        SkASSERT(!fNext);
-        SkASSERT(fDevice);
-        fClip.setRect(bounds);
-    }
-
     void updateMC(const SkMatrix& totalMatrix, const SkRasterClip& totalClip,
                   const SkClipStack& clipStack, SkRasterClip* updateClip) {
         int x = fDevice->getOrigin().x();
@@ -231,15 +224,6 @@ public:
         SkDELETE(fLayer);
         dec_rec();
     }
-
-    void reset(const SkIRect& bounds) {
-        SkASSERT(fLayer);
-        SkASSERT(fDeferredSaveCount == 0);
-
-        fMatrix.reset();
-        fRasterClip.setRect(bounds);
-        fLayer->reset(bounds);
-    }
 };
 
 class SkDrawIter : public SkDraw {
@@ -441,18 +425,6 @@ bool AutoDrawLooper::doNext(SkDrawFilter::Type drawType) {
 
 ////////////////////////////////////////////////////////////////////////////
 
-void SkCanvas::resetForNextPicture(const SkIRect& bounds) {
-    this->restoreToCount(1);
-    fCachedLocalClipBounds.setEmpty();
-    fCachedLocalClipBoundsDirty = true;
-    fClipStack->reset();
-    fMCRec->reset(bounds);
-
-    // We're peering through a lot of structs here.  Only at this scope do we
-    // know that the device is an SkBitmapDevice (really an SkNoPixelsBitmapDevice).
-    static_cast<SkBitmapDevice*>(fMCRec->fLayer->fDevice)->setNewSize(bounds.size());
-}
-
 SkBaseDevice* SkCanvas::init(SkBaseDevice* device, InitFlags flags) {
     fConservativeRasterClip = SkToBool(flags & kConservativeRasterClip_InitFlag);
     fCachedLocalClipBounds.setEmpty();
index 7c0abce..850be27 100644 (file)
@@ -15,9 +15,7 @@
 #include "SkRecordOpts.h"
 #include "SkTypes.h"
 
-SkPictureRecorder::SkPictureRecorder() {
-    fRecorder.reset(SkNEW_ARGS(SkRecorder, (nullptr, SkRect::MakeWH(0,0))));
-}
+SkPictureRecorder::SkPictureRecorder() {}
 
 SkPictureRecorder::~SkPictureRecorder() {}
 
@@ -33,7 +31,7 @@ SkCanvas* SkPictureRecorder::beginRecording(const SkRect& cullRect,
     }
 
     fRecord.reset(SkNEW(SkRecord));
-    fRecorder->reset(fRecord.get(), cullRect);
+    fRecorder.reset(SkNEW_ARGS(SkRecorder, (fRecord.get(), cullRect)));
     return this->getRecordingCanvas();
 }
 
@@ -42,7 +40,6 @@ SkCanvas* SkPictureRecorder::getRecordingCanvas() {
 }
 
 SkPicture* SkPictureRecorder::endRecordingAsPicture() {
-    fRecorder->restoreToCount(1);  // If we were missing any restores, add them now.
     // TODO: delay as much of this work until just before first playback?
     SkRecordOptimize(fRecord);
 
@@ -76,6 +73,7 @@ SkPicture* SkPictureRecorder::endRecordingAsPicture() {
     }
 
     // release our refs now, so only the picture will be the owner.
+    fRecorder.reset(NULL);
     fRecord.reset(NULL);
     fBBH.reset(NULL);
 
@@ -160,7 +158,6 @@ protected:
 };
 
 SkDrawable* SkPictureRecorder::endRecordingAsDrawable() {
-    fRecorder->restoreToCount(1);  // If we were missing any restores, add them now.
     // TODO: delay as much of this work until just before first playback?
     SkRecordOptimize(fRecord);
 
@@ -174,6 +171,7 @@ SkDrawable* SkPictureRecorder::endRecordingAsDrawable() {
                                          SkToBool(fFlags & kComputeSaveLayerInfo_RecordFlag)));
 
     // release our refs now, so only the drawable will be the owner.
+    fRecorder.reset(NULL);
     fRecord.reset(NULL);
     fBBH.reset(NULL);
 
index 8684a8e..aafb540 100644 (file)
@@ -39,12 +39,6 @@ SkRecorder::SkRecorder(SkRecord* record, const SkRect& bounds)
     : SkCanvas(bounds.roundOut(), SkCanvas::kConservativeRasterClip_InitFlag)
     , fRecord(record) {}
 
-void SkRecorder::reset(SkRecord* record, const SkRect& bounds) {
-    this->forgetRecord();
-    fRecord = record;
-    this->resetForNextPicture(bounds.roundOut());
-}
-
 void SkRecorder::forgetRecord() {
     fDrawableList.reset(NULL);
     fRecord = NULL;
index 6842aec..834a2b6 100644 (file)
@@ -39,8 +39,6 @@ public:
     SkRecorder(SkRecord*, int width, int height);   // legacy version
     SkRecorder(SkRecord*, const SkRect& bounds);
 
-    void reset(SkRecord*, const SkRect& bounds);
-
     SkDrawableList* getDrawableList() const { return fDrawableList.get(); }
     SkDrawableList* detachDrawableList() { return fDrawableList.detach(); }