| Index: src/gpu/GrTessellatingPathRenderer.cpp
|
| diff --git a/src/gpu/GrTessellatingPathRenderer.cpp b/src/gpu/GrTessellatingPathRenderer.cpp
|
| index 3d4a81cf0cbccbab94b2d7e043146823546eb94a..e9e8da240b0a93bc46b5490f237c3cf5395719fe 100644
|
| --- a/src/gpu/GrTessellatingPathRenderer.cpp
|
| +++ b/src/gpu/GrTessellatingPathRenderer.cpp
|
| @@ -355,9 +355,6 @@ struct Poly {
|
| Vertex* v = first->fNext;
|
| while (v != fTail) {
|
| SkASSERT(v && v->fPrev && v->fNext);
|
| -#ifdef SK_DEBUG
|
| - validate();
|
| -#endif
|
| Vertex* prev = v->fPrev;
|
| Vertex* curr = v;
|
| Vertex* next = v->fNext;
|
| @@ -376,27 +373,10 @@ struct Poly {
|
| }
|
| } else {
|
| v = v->fNext;
|
| - SkASSERT(v != fTail);
|
| }
|
| }
|
| return data;
|
| }
|
| -
|
| -#ifdef SK_DEBUG
|
| - void validate() {
|
| - int winding = sweep_lt(fHead->fPoint, fTail->fPoint) ? 1 : -1;
|
| - Vertex* top = winding < 0 ? fTail : fHead;
|
| - Vertex* bottom = winding < 0 ? fHead : fTail;
|
| - Edge e(top, bottom, winding);
|
| - for (Vertex* v = fHead->fNext; v != fTail; v = v->fNext) {
|
| - if (fSide == kRight_Side) {
|
| - SkASSERT(!e.isRightOf(v));
|
| - } else if (fSide == Poly::kLeft_Side) {
|
| - SkASSERT(!e.isLeftOf(v));
|
| - }
|
| - }
|
| - }
|
| -#endif
|
| };
|
| Poly* addVertex(Vertex* v, Side side, SkChunkAlloc& alloc) {
|
| LOG("addVertex() to %d at %g (%g, %g), %s side\n", fID, v->fID, v->fPoint.fX, v->fPoint.fY,
|
| @@ -410,9 +390,6 @@ struct Poly {
|
| fActive = ALLOC_NEW(MonotonePoly, (), alloc);
|
| }
|
| if (fActive->addVertex(v, side, alloc)) {
|
| -#ifdef SK_DEBUG
|
| - fActive->validate();
|
| -#endif
|
| if (fTail) {
|
| fActive->fPrev = fTail;
|
| fTail->fNext = fActive;
|
| @@ -477,67 +454,6 @@ Poly* new_poly(Poly** head, Vertex* v, int winding, SkChunkAlloc& alloc) {
|
| return poly;
|
| }
|
|
|
| -#ifdef SK_DEBUG
|
| -void validate_edges(Edge* head) {
|
| - for (Edge* e = head; e != NULL; e = e->fRight) {
|
| - SkASSERT(e->fTop != e->fBottom);
|
| - if (e->fLeft) {
|
| - SkASSERT(e->fLeft->fRight == e);
|
| - if (sweep_gt(e->fTop->fPoint, e->fLeft->fTop->fPoint)) {
|
| - SkASSERT(e->fLeft->isLeftOf(e->fTop));
|
| - }
|
| - if (sweep_lt(e->fBottom->fPoint, e->fLeft->fBottom->fPoint)) {
|
| - SkASSERT(e->fLeft->isLeftOf(e->fBottom));
|
| - }
|
| - } else {
|
| - SkASSERT(e == head);
|
| - }
|
| - if (e->fRight) {
|
| - SkASSERT(e->fRight->fLeft == e);
|
| - if (sweep_gt(e->fTop->fPoint, e->fRight->fTop->fPoint)) {
|
| - SkASSERT(e->fRight->isRightOf(e->fTop));
|
| - }
|
| - if (sweep_lt(e->fBottom->fPoint, e->fRight->fBottom->fPoint)) {
|
| - SkASSERT(e->fRight->isRightOf(e->fBottom));
|
| - }
|
| - }
|
| - }
|
| -}
|
| -
|
| -void validate_connectivity(Vertex* v) {
|
| - for (Edge* e = v->fFirstEdgeAbove; e != NULL; e = e->fNextEdgeAbove) {
|
| - SkASSERT(e->fBottom == v);
|
| - if (e->fPrevEdgeAbove) {
|
| - SkASSERT(e->fPrevEdgeAbove->fNextEdgeAbove == e);
|
| - SkASSERT(e->fPrevEdgeAbove->isLeftOf(e->fTop));
|
| - } else {
|
| - SkASSERT(e == v->fFirstEdgeAbove);
|
| - }
|
| - if (e->fNextEdgeAbove) {
|
| - SkASSERT(e->fNextEdgeAbove->fPrevEdgeAbove == e);
|
| - SkASSERT(e->fNextEdgeAbove->isRightOf(e->fTop));
|
| - } else {
|
| - SkASSERT(e == v->fLastEdgeAbove);
|
| - }
|
| - }
|
| - for (Edge* e = v->fFirstEdgeBelow; e != NULL; e = e->fNextEdgeBelow) {
|
| - SkASSERT(e->fTop == v);
|
| - if (e->fPrevEdgeBelow) {
|
| - SkASSERT(e->fPrevEdgeBelow->fNextEdgeBelow == e);
|
| - SkASSERT(e->fPrevEdgeBelow->isLeftOf(e->fBottom));
|
| - } else {
|
| - SkASSERT(e == v->fFirstEdgeBelow);
|
| - }
|
| - if (e->fNextEdgeBelow) {
|
| - SkASSERT(e->fNextEdgeBelow->fPrevEdgeBelow == e);
|
| - SkASSERT(e->fNextEdgeBelow->isRightOf(e->fBottom));
|
| - } else {
|
| - SkASSERT(e == v->fLastEdgeBelow);
|
| - }
|
| - }
|
| -}
|
| -#endif
|
| -
|
| Vertex* append_point_to_contour(const SkPoint& p, Vertex* prev, Vertex** head,
|
| SkChunkAlloc& alloc) {
|
| Vertex* v = ALLOC_NEW(Vertex, (p), alloc);
|
| @@ -783,7 +699,6 @@ void fix_active_state(Edge* edge, Edge** activeEdges) {
|
| void insert_edge_above(Edge* edge, Vertex* v) {
|
| if (edge->fTop->fPoint == edge->fBottom->fPoint ||
|
| sweep_gt(edge->fTop->fPoint, edge->fBottom->fPoint)) {
|
| - SkASSERT(false);
|
| return;
|
| }
|
| LOG("insert edge (%g -> %g) above vertex %g\n", edge->fTop->fID, edge->fBottom->fID, v->fID);
|
| @@ -802,7 +717,6 @@ void insert_edge_above(Edge* edge, Vertex* v) {
|
| void insert_edge_below(Edge* edge, Vertex* v) {
|
| if (edge->fTop->fPoint == edge->fBottom->fPoint ||
|
| sweep_gt(edge->fTop->fPoint, edge->fBottom->fPoint)) {
|
| - SkASSERT(false);
|
| return;
|
| }
|
| LOG("insert edge (%g -> %g) below vertex %g\n", edge->fTop->fID, edge->fBottom->fID, v->fID);
|
| @@ -1040,9 +954,6 @@ Vertex* check_for_intersection(Edge* edge, Edge* other, Edge** activeEdges, SkCh
|
| split_edge(edge, v, activeEdges, alloc);
|
| split_edge(other, v, activeEdges, alloc);
|
| }
|
| -#ifdef SK_DEBUG
|
| - validate_connectivity(v);
|
| -#endif
|
| return v;
|
| }
|
| return NULL;
|
| @@ -1193,9 +1104,6 @@ void simplify(Vertex* vertices, SkChunkAlloc& alloc) {
|
| #if LOGGING_ENABLED
|
| LOG("\nvertex %g: (%g,%g)\n", v->fID, v->fPoint.fX, v->fPoint.fY);
|
| #endif
|
| -#ifdef SK_DEBUG
|
| - validate_connectivity(v);
|
| -#endif
|
| Edge* leftEnclosingEdge = NULL;
|
| Edge* rightEnclosingEdge = NULL;
|
| bool restartChecks;
|
| @@ -1224,11 +1132,6 @@ void simplify(Vertex* vertices, SkChunkAlloc& alloc) {
|
|
|
| }
|
| } while (restartChecks);
|
| - SkASSERT(!leftEnclosingEdge || leftEnclosingEdge->isLeftOf(v));
|
| - SkASSERT(!rightEnclosingEdge || rightEnclosingEdge->isRightOf(v));
|
| -#ifdef SK_DEBUG
|
| - validate_edges(activeEdges);
|
| -#endif
|
| for (Edge* e = v->fFirstEdgeAbove; e; e = e->fNextEdgeAbove) {
|
| remove_edge(e, &activeEdges);
|
| }
|
| @@ -1254,17 +1157,9 @@ Poly* tessellate(Vertex* vertices, SkChunkAlloc& alloc) {
|
| #if LOGGING_ENABLED
|
| LOG("\nvertex %g: (%g,%g)\n", v->fID, v->fPoint.fX, v->fPoint.fY);
|
| #endif
|
| -#ifdef SK_DEBUG
|
| - validate_connectivity(v);
|
| -#endif
|
| Edge* leftEnclosingEdge = NULL;
|
| Edge* rightEnclosingEdge = NULL;
|
| find_enclosing_edges(v, activeEdges, &leftEnclosingEdge, &rightEnclosingEdge);
|
| - SkASSERT(!leftEnclosingEdge || leftEnclosingEdge->isLeftOf(v));
|
| - SkASSERT(!rightEnclosingEdge || rightEnclosingEdge->isRightOf(v));
|
| -#ifdef SK_DEBUG
|
| - validate_edges(activeEdges);
|
| -#endif
|
| Poly* leftPoly = NULL;
|
| Poly* rightPoly = NULL;
|
| if (v->fFirstEdgeAbove) {
|
| @@ -1356,9 +1251,6 @@ Poly* tessellate(Vertex* vertices, SkChunkAlloc& alloc) {
|
| }
|
| v->fLastEdgeBelow->fRightPoly = rightPoly;
|
| }
|
| -#ifdef SK_DEBUG
|
| - validate_edges(activeEdges);
|
| -#endif
|
| #if LOGGING_ENABLED
|
| LOG("\nactive edges:\n");
|
| for (Edge* e = activeEdges; e != NULL; e = e->fRight) {
|
| @@ -1507,6 +1399,9 @@ public:
|
| count += (poly->fCount - 2) * (WIREFRAME ? 6 : 3);
|
| }
|
| }
|
| + if (0 == count) {
|
| + return;
|
| + }
|
|
|
| size_t stride = gp->getVertexStride();
|
| const GrVertexBuffer* vertexBuffer;
|
|
|