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});
}
}