| Index: src/core/SkLiteDL.cpp
 | 
| diff --git a/src/core/SkLiteDL.cpp b/src/core/SkLiteDL.cpp
 | 
| index 8e64ae0a7d429ca527a4085de02529f0e4b7e110..701e9bd38f5f82823271cf8a08995722243fc27a 100644
 | 
| --- a/src/core/SkLiteDL.cpp
 | 
| +++ b/src/core/SkLiteDL.cpp
 | 
| @@ -353,12 +353,13 @@ namespace {
 | 
|      struct DrawImageLattice final : Op {
 | 
|          static const auto kType = Type::DrawImageLattice;
 | 
|          DrawImageLattice(sk_sp<const SkImage>&& image, int xs, int ys, int fs,
 | 
| -                         const SkRect& dst, const SkPaint* paint)
 | 
| -            : image(std::move(image)), xs(xs), ys(ys), fs(fs), dst(dst) {
 | 
| +                         const SkIRect& src, const SkRect& dst, const SkPaint* paint)
 | 
| +            : image(std::move(image)), xs(xs), ys(ys), fs(fs), src(src), dst(dst) {
 | 
|              if (paint) { this->paint = *paint; }
 | 
|          }
 | 
|          sk_sp<const SkImage> image;
 | 
|          int                  xs, ys, fs;
 | 
| +        SkIRect              src;
 | 
|          SkRect               dst;
 | 
|          SkPaint              paint;
 | 
|          void draw(SkCanvas* c, const SkMatrix&) {
 | 
| @@ -366,7 +367,7 @@ namespace {
 | 
|                   ydivs = pod<int>(this, xs*sizeof(int));
 | 
|              auto flags = (0 == fs) ? nullptr :
 | 
|                                       pod<SkCanvas::Lattice::Flags>(this, (xs+ys)*sizeof(int));
 | 
| -            c->drawImageLattice(image.get(), {xdivs, ydivs, flags, xs, ys}, dst, &paint);
 | 
| +            c->drawImageLattice(image.get(), {xdivs, ydivs, flags, xs, ys, &src}, dst, &paint);
 | 
|          }
 | 
|      };
 | 
|  
 | 
| @@ -669,8 +670,9 @@ void SkLiteDL::drawBitmapLattice(const SkBitmap& bm, const SkCanvas::Lattice& la
 | 
|      int xs = lattice.fXCount, ys = lattice.fYCount;
 | 
|      int fs = lattice.fFlags ? (xs + 1) * (ys + 1) : 0;
 | 
|      size_t bytes = (xs + ys) * sizeof(int) + fs * sizeof(SkCanvas::Lattice::Flags);
 | 
| -    void* pod = this->push<DrawImageLattice>(bytes, SkImage::MakeFromBitmap(bm), xs, ys, fs, dst,
 | 
| -                                             paint);
 | 
| +    SkASSERT(lattice.fBounds);
 | 
| +    void* pod = this->push<DrawImageLattice>(bytes, SkImage::MakeFromBitmap(bm), xs, ys, fs,
 | 
| +                                             *lattice.fBounds, dst, paint);
 | 
|      copy_v(pod, lattice.fXDivs, xs,
 | 
|                  lattice.fYDivs, ys,
 | 
|                  lattice.fFlags, fs);
 | 
| @@ -692,7 +694,9 @@ void SkLiteDL::drawImageLattice(const SkImage* image, const SkCanvas::Lattice& l
 | 
|      int xs = lattice.fXCount, ys = lattice.fYCount;
 | 
|      int fs = lattice.fFlags ? (xs + 1) * (ys + 1) : 0;
 | 
|      size_t bytes = (xs + ys) * sizeof(int) + fs * sizeof(SkCanvas::Lattice::Flags);
 | 
| -    void* pod = this->push<DrawImageLattice>(bytes, sk_ref_sp(image), xs, ys, fs, dst, paint);
 | 
| +    SkASSERT(lattice.fBounds);
 | 
| +    void* pod = this->push<DrawImageLattice>(bytes, sk_ref_sp(image), xs, ys, fs, *lattice.fBounds,
 | 
| +                                             dst, paint);
 | 
|      copy_v(pod, lattice.fXDivs, xs,
 | 
|                  lattice.fYDivs, ys,
 | 
|                  lattice.fFlags, fs);
 | 
| 
 |