Revert "Revert "use blitMask for left/right edges in blur-nine""

This reverts commit 0e29c633fe.

Reason for revert: The layout tests have been suppressed in https://chromium-review.googlesource.com/c/553239/ - no need to revert

Bug: 737714

Original change's description:
> Revert "use blitMask for left/right edges in blur-nine"
> 
> This reverts commit 3fe44544c9.
> 
> Reason for revert: I believe this is the cause of the layout test regressions in crbug.com/737714
> 
> Bug: 737714
> 
> Original change's description:
> > use blitMask for left/right edges in blur-nine
> > 
> > Seems about same speed for legacy blitter, but much faster for raster-pipeline
> > 
> > Bug: skia:
> > Change-Id: I19be307c01a199e2477e045fb8c2cca7784564a5
> > Reviewed-on: https://skia-review.googlesource.com/20967
> > Commit-Queue: Mike Reed <reed@google.com>
> > Reviewed-by: Mike Klein <mtklein@chromium.org>
> 
> TBR=mtklein@chromium.org,mtklein@google.com,fmalita@chromium.org,reed@google.com
> 
> Change-Id: Id7be3ff779191175d91ebd51c7d275fd1104ae0d
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:
> Reviewed-on: https://skia-review.googlesource.com/21182
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Robert Phillips <robertphillips@google.com>

TBR=mtklein@chromium.org,mtklein@google.com,robertphillips@google.com,fmalita@chromium.org,reed@google.com

Change-Id: I9f232e838bcad4e4cf0d8c7226d5e57a349e52be
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 737714, skia:
Reviewed-on: https://skia-review.googlesource.com/21183
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
This commit is contained in:
Robert Phillips 2017-06-28 21:29:10 +00:00 committed by Skia Commit-Bot
parent 0e29c633fe
commit e911c63b6a

View File

@ -164,15 +164,30 @@ static void draw_nine_clipped(const SkMask& mask, const SkIRect& outerR,
blitter->blitAntiH(r.left(), outerR.bottom() - y - 1, alpha, runs);
}
}
#ifdef SK_SUPPORT_BLITV_FOR_BLUR_NINE
const bool useBlitV = true;
#else
const bool useBlitV = false;
#endif
// left
r.set(outerR.left(), innerR.top(), innerR.left(), innerR.bottom());
if (r.intersect(clipR)) {
int startX = r.left() - outerR.left();
int stopX = startX + r.width();
int height = r.height();
for (int x = startX; x < stopX; ++x) {
blitter->blitV(outerR.left() + x, r.top(), height,
*mask.getAddr8(mask.fBounds.left() + x, mask.fBounds.top() + cy));
if (useBlitV) {
for (int x = startX; x < stopX; ++x) {
blitter->blitV(outerR.left() + x, r.top(), height,
*mask.getAddr8(mask.fBounds.left() + x, mask.fBounds.top() + cy));
}
} else {
SkMask m;
m.fImage = mask.getAddr8(mask.fBounds.left() + r.left() - outerR.left(),
mask.fBounds.top() + cy);
m.fBounds = r;
m.fRowBytes = 0; // so we repeat the scanline for our height
m.fFormat = SkMask::kA8_Format;
blitter->blitMask(m, r);
}
}
// right
@ -181,9 +196,19 @@ static void draw_nine_clipped(const SkMask& mask, const SkIRect& outerR,
int startX = outerR.right() - r.right();
int stopX = startX + r.width();
int height = r.height();
for (int x = startX; x < stopX; ++x) {
blitter->blitV(outerR.right() - x - 1, r.top(), height,
*mask.getAddr8(mask.fBounds.right() - x - 1, mask.fBounds.top() + cy));
if (useBlitV) {
for (int x = startX; x < stopX; ++x) {
blitter->blitV(outerR.right() - x - 1, r.top(), height,
*mask.getAddr8(mask.fBounds.right() - x - 1, mask.fBounds.top() + cy));
}
} else {
SkMask m;
m.fImage = mask.getAddr8(mask.fBounds.right() - outerR.right() + r.left(),
mask.fBounds.top() + cy);
m.fBounds = r;
m.fRowBytes = 0; // so we repeat the scanline for our height
m.fFormat = SkMask::kA8_Format;
blitter->blitMask(m, r);
}
}
}