validate using nx to match bounds

Check the path against the bounds
using Nx instead of straight scalars,

R=mtklein@google.com
BUG=skia:5541
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2388903006

Review-Url: https://codereview.chromium.org/2388903006
This commit is contained in:
caryclark 2016-10-05 12:16:52 -07:00 committed by Commit bot
parent 2f036965f0
commit 0c52b1740e
2 changed files with 8 additions and 8 deletions

View File

@ -677,6 +677,9 @@ uint8_t SkPathRef::Iter::peek() const {
}
#ifdef SK_DEBUG
#include "SkNx.h"
void SkPathRef::validate() const {
SkASSERT(static_cast<ptrdiff_t>(fFreeSpace) >= 0);
SkASSERT(reinterpret_cast<intptr_t>(fVerbs) - reinterpret_cast<intptr_t>(fPoints) >= 0);
@ -700,11 +703,13 @@ void SkPathRef::validate() const {
if (!fBoundsIsDirty && !fBounds.isEmpty()) {
bool isFinite = true;
Sk2s leftTop = Sk2s(fBounds.fLeft, fBounds.fTop);
Sk2s rightBot = Sk2s(fBounds.fRight, fBounds.fBottom);
for (int i = 0; i < fPointCnt; ++i) {
Sk2s point = Sk2s(fPoints[i].fX, fPoints[i].fY);
#ifdef SK_DEBUG
if (fPoints[i].isFinite() &&
(fPoints[i].fX < fBounds.fLeft || fPoints[i].fX > fBounds.fRight ||
fPoints[i].fY < fBounds.fTop || fPoints[i].fY > fBounds.fBottom)) {
((point < leftTop).anyTrue() || (point > rightBot).anyTrue())) {
SkDebugf("bounds: %f %f %f %f\n",
fBounds.fLeft, fBounds.fTop, fBounds.fRight, fBounds.fBottom);
for (int j = 0; j < fPointCnt; ++j) {
@ -717,8 +722,7 @@ void SkPathRef::validate() const {
#endif
SkASSERT(!fPoints[i].isFinite() ||
(fPoints[i].fX >= fBounds.fLeft && fPoints[i].fX <= fBounds.fRight &&
fPoints[i].fY >= fBounds.fTop && fPoints[i].fY <= fBounds.fBottom));
(!(point < leftTop).anyTrue() && !(point > rightBot).anyTrue()));
if (!fPoints[i].isFinite()) {
isFinite = false;
}

View File

@ -6298,10 +6298,6 @@ static void fuzz763_1b(skiatest::Reporter* reporter, const char* filename) {
}
static void fuzz763_1a(skiatest::Reporter* reporter, const char* filename) {
// FIXME: fails on Nexus5 by generating a path with points that are not inside the path bounds
#if DEBUG_UNDER_DEVELOPMENT
return;
#endif
SkPath path;
path.setFillType((SkPath::FillType) 0);
path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0