diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkGeometry.h | 17 | ||||
-rw-r--r-- | src/gpu/ccpr/GrCCPRCoverageProcessor.cpp | 6 | ||||
-rw-r--r-- | src/gpu/ccpr/GrCCPRCoverageProcessor.h | 16 |
3 files changed, 26 insertions, 13 deletions
diff --git a/src/core/SkGeometry.h b/src/core/SkGeometry.h index d9554448a3..96565888d8 100644 --- a/src/core/SkGeometry.h +++ b/src/core/SkGeometry.h @@ -166,8 +166,21 @@ enum class SkCubicType { kQuadratic, kLineOrPoint }; -constexpr bool SkCubicIsDegenerate(SkCubicType type) { - return type >= SkCubicType::kQuadratic; + +static inline bool SkCubicIsDegenerate(SkCubicType type) { + switch (type) { + case SkCubicType::kSerpentine: + case SkCubicType::kLoop: + case SkCubicType::kLocalCusp: + case SkCubicType::kCuspAtInfinity: + return false; + default: + SK_ABORT("Invalid SkCubicType"); + // fallthru + case SkCubicType::kQuadratic: + case SkCubicType::kLineOrPoint: + return true; + } } /** Returns the cubic classification. diff --git a/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp b/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp index 69605095f6..079f240231 100644 --- a/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp +++ b/src/gpu/ccpr/GrCCPRCoverageProcessor.cpp @@ -159,8 +159,8 @@ void PrimitiveProcessor::emitGeometryShader(const GrCCPRCoverageProcessor& proc, g->codeAppendf("highp float2 bloat = %f * abs(%s.xz);", kAABloatRadius, rtAdjust); #ifdef SK_DEBUG - if (proc.debugVisualizations()) { - g->codeAppendf("bloat *= %f;", GrCCPRCoverageProcessor::kDebugBloat); + if (proc.debugVisualizationsEnabled()) { + g->codeAppendf("bloat *= %f;", proc.debugBloat()); } #endif @@ -324,7 +324,7 @@ void PrimitiveProcessor::emitCoverage(const GrCCPRCoverageProcessor& proc, GrGLS f->codeAppendf("%s = float4(1);", outputCoverage); #ifdef SK_DEBUG - if (proc.debugVisualizations()) { + if (proc.debugVisualizationsEnabled()) { f->codeAppendf("%s = float4(-%s.a, %s.a, 0, 1);", outputColor, outputColor, outputColor); } #endif diff --git a/src/gpu/ccpr/GrCCPRCoverageProcessor.h b/src/gpu/ccpr/GrCCPRCoverageProcessor.h index 2835cc5a5f..b8032d9ec2 100644 --- a/src/gpu/ccpr/GrCCPRCoverageProcessor.h +++ b/src/gpu/ccpr/GrCCPRCoverageProcessor.h @@ -92,12 +92,12 @@ public: void getGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; GrGLSLPrimitiveProcessor* createGLSLInstance(const GrShaderCaps&) const override; - static constexpr float kDebugBloat = 50; #ifdef SK_DEBUG - // Increases the 1/2 pixel AA bloat by a factor of kDebugBloat and outputs color instead of + // Increases the 1/2 pixel AA bloat by a factor of debugBloat and outputs color instead of // coverage (coverage=+1 -> green, coverage=0 -> black, coverage=-1 -> red). - void enableDebugVisualizations() { fDebugVisualizations = true; } - bool debugVisualizations() const { return fDebugVisualizations; } + void enableDebugVisualizations(float debugBloat) { fDebugBloat = debugBloat; } + bool debugVisualizationsEnabled() const { return fDebugBloat > 0; } + float debugBloat() const { SkASSERT(this->debugVisualizationsEnabled()); return fDebugBloat; } static void Validate(GrRenderTargetProxy* atlasProxy); #endif @@ -105,10 +105,10 @@ public: class PrimitiveProcessor; private: - const Mode fMode; - const Attribute& fInstanceAttrib; - BufferAccess fPointsBufferAccess; - SkDEBUGCODE(bool fDebugVisualizations = false;) + const Mode fMode; + const Attribute& fInstanceAttrib; + BufferAccess fPointsBufferAccess; + SkDEBUGCODE(float fDebugBloat = false;) typedef GrGeometryProcessor INHERITED; }; |