| Index: src/core/SkCanvas.cpp
 | 
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
 | 
| index 09c50c69b0248cf2dc83e95c87f07d662c80252c..881c19bf326bb2f06a5ac1b12354fafdeaabc7f5 100644
 | 
| --- a/src/core/SkCanvas.cpp
 | 
| +++ b/src/core/SkCanvas.cpp
 | 
| @@ -318,22 +318,19 @@ public:
 | 
|  
 | 
|  class SkDrawIter : public SkDraw {
 | 
|  public:
 | 
| -    SkDrawIter(SkCanvas* canvas, bool skipEmptyClips = true) {
 | 
| +    SkDrawIter(SkCanvas* canvas) {
 | 
|          canvas = canvas->canvasForDrawIter();
 | 
|          fCanvas = canvas;
 | 
|          canvas->updateDeviceCMCache();
 | 
|  
 | 
|          fClipStack = canvas->fClipStack;
 | 
|          fCurrLayer = canvas->fMCRec->fTopLayer;
 | 
| -        fSkipEmptyClips = skipEmptyClips;
 | 
|      }
 | 
|  
 | 
|      bool next() {
 | 
|          // skip over recs with empty clips
 | 
| -        if (fSkipEmptyClips) {
 | 
| -            while (fCurrLayer && fCurrLayer->fClip.isEmpty()) {
 | 
| -                fCurrLayer = fCurrLayer->fNext;
 | 
| -            }
 | 
| +        while (fCurrLayer && fCurrLayer->fClip.isEmpty()) {
 | 
| +            fCurrLayer = fCurrLayer->fNext;
 | 
|          }
 | 
|  
 | 
|          const DeviceCM* rec = fCurrLayer;
 | 
| @@ -367,7 +364,6 @@ private:
 | 
|      SkCanvas*       fCanvas;
 | 
|      const DeviceCM* fCurrLayer;
 | 
|      const SkPaint*  fPaint;     // May be null.
 | 
| -    SkBool8         fSkipEmptyClips;
 | 
|  
 | 
|      typedef SkDraw INHERITED;
 | 
|  };
 | 
| @@ -432,8 +428,7 @@ public:
 | 
|      // "rawBounds" is the original bounds of the primitive about to be drawn, unmodified by the
 | 
|      // paint. It's used to determine the size of the offscreen layer for filters.
 | 
|      // If null, the clip will be used instead.
 | 
| -    AutoDrawLooper(SkCanvas* canvas, const SkSurfaceProps& props, const SkPaint& paint,
 | 
| -                   bool skipLayerForImageFilter = false,
 | 
| +    AutoDrawLooper(SkCanvas* canvas, const SkPaint& paint, bool skipLayerForImageFilter = false,
 | 
|                     const SkRect* rawBounds = nullptr) : fOrigPaint(paint) {
 | 
|          fCanvas = canvas;
 | 
|  #ifdef SK_SUPPORT_LEGACY_DRAWFILTER
 | 
| @@ -580,28 +575,28 @@ bool AutoDrawLooper::doNext(SkDrawFilter::Type drawType) {
 | 
|  
 | 
|  ////////// macros to place around the internal draw calls //////////////////
 | 
|  
 | 
| -#define LOOPER_BEGIN_DRAWBITMAP(paint, skipLayerForFilter, bounds)          \
 | 
| -    this->predrawNotify();                                                  \
 | 
| -    AutoDrawLooper looper(this, fProps, paint, skipLayerForFilter, bounds); \
 | 
| -    while (looper.next(SkDrawFilter::kBitmap_Type)) {                       \
 | 
| +#define LOOPER_BEGIN_DRAWBITMAP(paint, skipLayerForFilter, bounds)  \
 | 
| +    this->predrawNotify();                                          \
 | 
| +    AutoDrawLooper looper(this, paint, skipLayerForFilter, bounds); \
 | 
| +    while (looper.next(SkDrawFilter::kBitmap_Type)) {               \
 | 
|          SkDrawIter iter(this);
 | 
|  
 | 
|  
 | 
|  #define LOOPER_BEGIN_DRAWDEVICE(paint, type)                        \
 | 
|      this->predrawNotify();                                          \
 | 
| -    AutoDrawLooper  looper(this, fProps, paint, true);              \
 | 
| +    AutoDrawLooper  looper(this, paint, true);                      \
 | 
|      while (looper.next(type)) {                                     \
 | 
|          SkDrawIter          iter(this);
 | 
|  
 | 
|  #define LOOPER_BEGIN(paint, type, bounds)                           \
 | 
|      this->predrawNotify();                                          \
 | 
| -    AutoDrawLooper  looper(this, fProps, paint, false, bounds);     \
 | 
| +    AutoDrawLooper  looper(this, paint, false, bounds);             \
 | 
|      while (looper.next(type)) {                                     \
 | 
|          SkDrawIter          iter(this);
 | 
|  
 | 
|  #define LOOPER_BEGIN_CHECK_COMPLETE_OVERWRITE(paint, type, bounds, auxOpaque)  \
 | 
|      this->predrawNotify(bounds, &paint, auxOpaque);                 \
 | 
| -    AutoDrawLooper  looper(this, fProps, paint, false, bounds);     \
 | 
| +    AutoDrawLooper  looper(this, paint, false, bounds);             \
 | 
|      while (looper.next(type)) {                                     \
 | 
|          SkDrawIter          iter(this);
 | 
|  
 | 
| @@ -3263,12 +3258,12 @@ void SkCanvas::onDrawShadowedPicture(const SkPicture* picture,
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
|  
 | 
| -SkCanvas::LayerIter::LayerIter(SkCanvas* canvas, bool skipEmptyClips) {
 | 
| +SkCanvas::LayerIter::LayerIter(SkCanvas* canvas) {
 | 
|      static_assert(sizeof(fStorage) >= sizeof(SkDrawIter), "fStorage_too_small");
 | 
|  
 | 
|      SkASSERT(canvas);
 | 
|  
 | 
| -    fImpl = new (fStorage) SkDrawIter(canvas, skipEmptyClips);
 | 
| +    fImpl = new (fStorage) SkDrawIter(canvas);
 | 
|      fDone = !fImpl->next();
 | 
|  }
 | 
|  
 | 
| 
 |