Clip-only tiling in Viewer

Use clipping for tile isolation, instead of separate surface.

Change-Id: I8ae09ef25962fe877d54b1154ab9b5bf9a5f5a1c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/271859
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index 8ff1bee..49ae040 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -1336,19 +1336,11 @@
     if (fTiled) {
         int tileW = SkScalarCeilToInt(fWindow->width() * fTileScale.width());
         int tileH = SkScalarCeilToInt(fWindow->height() * fTileScale.height());
-        sk_sp<SkSurface> tileSurface = make_surface(tileW, tileH);
-        SkCanvas* tileCanvas = tileSurface->getCanvas();
-        SkMatrix m = this->computeMatrix();
         for (int y = 0; y < fWindow->height(); y += tileH) {
             for (int x = 0; x < fWindow->width(); x += tileW) {
-                SkAutoCanvasRestore acr(tileCanvas, true);
-                tileCanvas->translate(-x, -y);
-                tileCanvas->clear(SK_ColorTRANSPARENT);
-                tileCanvas->concat(m);
-                OveridePaintFilterCanvas filterCanvas(tileCanvas, &fPaint, &fPaintOverrides,
-                                                      &fFont, &fFontOverrides);
-                fSlides[fCurrentSlide]->draw(&filterCanvas);
-                tileSurface->draw(slideCanvas, x, y, nullptr);
+                SkAutoCanvasRestore acr(slideCanvas, true);
+                slideCanvas->clipRect(SkRect::MakeXYWH(x, y, tileW, tileH));
+                fSlides[fCurrentSlide]->draw(slideCanvas);
             }
         }