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:
parent
2f036965f0
commit
0c52b1740e
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user