| Index: src/gpu/effects/GrConvexPolyEffect.cpp
|
| diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp
|
| index cf874cfa52604e1666ddecad3fec720d1063279a..7b78305bb1e014d8a8d5ca2597ff00c942ac884a 100644
|
| --- a/src/gpu/effects/GrConvexPolyEffect.cpp
|
| +++ b/src/gpu/effects/GrConvexPolyEffect.cpp
|
| @@ -8,6 +8,7 @@
|
| #include "GrConvexPolyEffect.h"
|
| #include "GrInvariantOutput.h"
|
| #include "SkPathPriv.h"
|
| +#include "effects/GrConstColorProcessor.h"
|
| #include "glsl/GrGLSLFragmentProcessor.h"
|
| #include "glsl/GrGLSLFragmentShaderBuilder.h"
|
| #include "glsl/GrGLSLProgramDataManager.h"
|
| @@ -254,7 +255,16 @@ GrFragmentProcessor* GrConvexPolyEffect::Create(GrPrimitiveEdgeType type, const
|
| SkScalar edges[3 * kMaxEdges];
|
|
|
| SkPathPriv::FirstDirection dir;
|
| - SkAssertResult(SkPathPriv::CheapComputeFirstDirection(path, &dir));
|
| + // The only way this should fail is if the clip is effectively a infinitely thin line. In that
|
| + // case nothing is inside the clip. It'd be nice to detect this at a higher level and either
|
| + // skip the draw or omit the clip element.
|
| + if (!SkPathPriv::CheapComputeFirstDirection(path, &dir)) {
|
| + if (GrProcessorEdgeTypeIsInverseFill(type)) {
|
| + return GrConstColorProcessor::Create(0xFFFFFFFF,
|
| + GrConstColorProcessor::kModulateRGBA_InputMode);
|
| + }
|
| + return GrConstColorProcessor::Create(0, GrConstColorProcessor::kIgnore_InputMode);
|
| + }
|
|
|
| SkVector t;
|
| if (nullptr == offset) {
|
|
|