aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkBlitter.cpp
diff options
context:
space:
mode:
authorGravatar Yuqian Li <liyuqian@google.com>2017-09-01 15:38:45 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-09-01 20:10:49 +0000
commitbd40a5bf5bef1ebb5400f0cf087a420a98bb707b (patch)
tree0f598ee6f0c71bc49a1b1699165a2f33071705d5 /src/core/SkBlitter.cpp
parentb7da7239f73554abebc579a1525e1f4993fee8d8 (diff)
Use SkSTArenaAlloc to manage SkCoverageDeltaMask's stack memory
This way, we could have more stack memory on Google3: if each of the two branche has 12K stack memory, Google3 would believe that it needs 24K stack memory; but using SkSTArenaAlloc, we could use 12K stack memory to handle those two branches. Bug: skia: Change-Id: Ie9234226cd4ba93b5be2ebeb95ab771031354f97 Reviewed-on: https://skia-review.googlesource.com/42101 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Yuqian Li <liyuqian@google.com>
Diffstat (limited to 'src/core/SkBlitter.cpp')
-rw-r--r--src/core/SkBlitter.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp
index a1a1db6ce5..618eed5871 100644
--- a/src/core/SkBlitter.cpp
+++ b/src/core/SkBlitter.cpp
@@ -98,12 +98,13 @@ void SkBlitter::blitCoverageDeltas(SkCoverageDeltaList* deltas, const SkIRect& c
continue;
}
- // If there are too many deltas, sorting will be slow. Using a mask will be much faster.
+ // If there are too many deltas, sorting will be slow. Using a mask is much faster.
// This is such an important optimization that will bring ~2x speedup for benches like
// path_fill_small_long_line and path_stroke_small_sawtooth.
if (canUseMask && !deltas->sorted(y) && deltas->count(y) << 3 >= clip.width()) {
SkIRect rowIR = SkIRect::MakeLTRB(clip.fLeft, y, clip.fRight, y + 1);
- SkCoverageDeltaMask mask(rowIR);
+ SkSTArenaAlloc<SkCoverageDeltaMask::MAX_SIZE> alloc;
+ SkCoverageDeltaMask mask(&alloc, rowIR);
for(int i = 0; i < deltas->count(y); ++i) {
const SkCoverageDelta& delta = deltas->getDelta(y, i);
mask.addDelta(delta.fX, y, delta.fDelta);