Filter out degenerate contours in GrConvexPolyEffect
authorlsalzman <lsalzman@mozilla.com>
Tue, 31 May 2016 16:46:00 +0000 (09:46 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 31 May 2016 16:46:00 +0000 (09:46 -0700)
commitd15947ea4d2d0ceee797a973a90fc1e5f86772bd
tree2189999a592414e9e5974f1e6fb5a1ebfecb3144
parent99eb6e2d5abab2cb74e3d413fc99d5cbbfac8765
Filter out degenerate contours in GrConvexPolyEffect

As noticed in a downstream Firefox bug report https://bugzilla.mozilla.org/show_bug.cgi?id=1255062

If a path such as (moveTo, moveTo, lineTo, lineTo, close) is supplied,
and if the non-degenerate contour is convex, the convexity test will
pass, and GrConvexPolyEffect will be used.

However, the path's raw points are used to build the edge list, which
does not filter out degenerate contours. This may cause the polygon to
fail to draw.

This patch ensures that the degenerate contours are filtered out by
using an iterator as the path convexity test does.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2018613003

Review-Url: https://codereview.chromium.org/2018613003
src/gpu/effects/GrConvexPolyEffect.cpp