Add DDLTileHelper option to tile separately in x & y

afaik Chrome only tiles in Y which should yield less threaded text blob contention

Change-Id: I9ff484ed2ce66428e2d7ca6188eba79cd99b1547
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/376608
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/tools/DDLTileHelper.cpp b/tools/DDLTileHelper.cpp
index 1035982..315c8a8 100644
--- a/tools/DDLTileHelper.cpp
+++ b/tools/DDLTileHelper.cpp
@@ -262,24 +262,25 @@
 DDLTileHelper::DDLTileHelper(GrDirectContext* direct,
                              const SkSurfaceCharacterization& dstChar,
                              const SkIRect& viewport,
-                             int numDivisions,
+                             int numXDivisions, int numYDivisions,
                              bool addRandomPaddingToDst)
-        : fNumDivisions(numDivisions)
-        , fTiles(numDivisions * numDivisions)
+        : fNumXDivisions(numXDivisions)
+        , fNumYDivisions(numYDivisions)
+        , fTiles(numXDivisions * numYDivisions)
         , fDstCharacterization(dstChar) {
-    SkASSERT(fNumDivisions > 0);
+    SkASSERT(fNumXDivisions > 0 && fNumYDivisions > 0);
 
-    int xTileSize = viewport.width()/fNumDivisions;
-    int yTileSize = viewport.height()/fNumDivisions;
+    int xTileSize = viewport.width()/fNumXDivisions;
+    int yTileSize = viewport.height()/fNumYDivisions;
 
     SkRandom rand;
 
     // Create the destination tiles
-    for (int y = 0, yOff = 0; y < fNumDivisions; ++y, yOff += yTileSize) {
-        int ySize = (y < fNumDivisions-1) ? yTileSize : viewport.height()-yOff;
+    for (int y = 0, yOff = 0; y < fNumYDivisions; ++y, yOff += yTileSize) {
+        int ySize = (y < fNumYDivisions-1) ? yTileSize : viewport.height()-yOff;
 
-        for (int x = 0, xOff = 0; x < fNumDivisions; ++x, xOff += xTileSize) {
-            int xSize = (x < fNumDivisions-1) ? xTileSize : viewport.width()-xOff;
+        for (int x = 0, xOff = 0; x < fNumXDivisions; ++x, xOff += xTileSize) {
+            int xSize = (x < fNumXDivisions-1) ? xTileSize : viewport.width()-xOff;
 
             SkIRect clip = SkIRect::MakeXYWH(xOff, yOff, xSize, ySize);
 
@@ -291,7 +292,7 @@
             int32_t rPad = addRandomPaddingToDst ? rand.nextRangeU(0, kMaxPad) : 0;
             int32_t bPad = addRandomPaddingToDst ? rand.nextRangeU(0, kMaxPad) : 0;
 
-            fTiles[y*fNumDivisions+x].init(y*fNumDivisions+x, direct, dstChar, clip,
+            fTiles[y*fNumXDivisions+x].init(y*fNumXDivisions+x, direct, dstChar, clip,
                                            {lPad, tPad, rPad, bPad});
         }
     }