deferred canvas

tries to eliminate unneeded clipRects and concats (and their associated save/restores).

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2120333002

Review-Url: https://codereview.chromium.org/2120333002
diff --git a/tools/DumpRecord.cpp b/tools/DumpRecord.cpp
index efaf0eb..51a9d1f 100644
--- a/tools/DumpRecord.cpp
+++ b/tools/DumpRecord.cpp
@@ -75,6 +75,25 @@
         }
     }
 
+#if 0
+    void print(const SkRecords::DrawAnnotation& command, double ns) {
+        int us = (int)(ns * 1e-3);
+        if (!fTimeWithCommand) {
+            printf("%6dus  ", us);
+        }
+        printf("%*d ", fDigits, fIndex++);
+        for (int i = 0; i < fIndent; i++) {
+            printf("    ");
+        }
+        if (fTimeWithCommand) {
+            printf("%6dus  ", us);
+        }
+        printf("DrawAnnotation [%g %g %g %g] %s\n",
+               command.rect.left(), command.rect.top(), command.rect.right(), command.rect.bottom(),
+               command.key.c_str());
+    }
+#endif
+
 private:
     template <typename T>
     void printNameAndTime(const T& command, double ns) {