CCPR: Transform path points before handling curves
Does the transform before handling curves. This way all curves can be
carefully chopped in device space in order two avoid msaa.
Bug: skia:
Change-Id: I0508668142cda3fe3fda41f8475c408288aa4a47
Reviewed-on: https://skia-review.googlesource.com/29720
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/ccpr/GrCCPRCoverageOpsBuilder.h b/src/gpu/ccpr/GrCCPRCoverageOpsBuilder.h
index 92d0203..710ee88 100644
--- a/src/gpu/ccpr/GrCCPRCoverageOpsBuilder.h
+++ b/src/gpu/ccpr/GrCCPRCoverageOpsBuilder.h
@@ -95,7 +95,6 @@
std::unique_ptr<GrDrawOp> SK_WARN_UNUSED_RESULT finalize(SkISize drawBounds);
class CoverageOp;
- class AccumulatingViewMatrix;
private:
using PrimitiveInstance = GrCCPRCoverageProcessor::PrimitiveInstance;
@@ -116,12 +115,11 @@
SkIRect fScissor;
};
- void startContour(AccumulatingViewMatrix&, const SkPoint& anchorPoint);
- void fanTo(AccumulatingViewMatrix&, const SkPoint& pt);
- void quadraticTo(AccumulatingViewMatrix&, const SkPoint P[3]);
- void cubicTo(AccumulatingViewMatrix&, const SkPoint P[4]);
- void emitCubicSegment(AccumulatingViewMatrix&, SkCubicType, const SkDCubic&,
- const SkPoint& ts0, const SkPoint& ts1);
+ void startContour(const SkPoint& anchorPoint);
+ void fanTo(const SkPoint& pt);
+ void quadraticTo(SkPoint controlPt, SkPoint endPt);
+ void cubicTo(SkPoint controlPt1, SkPoint controlPt2, SkPoint endPt);
+ void emitCubicSegment(SkCubicType, const SkDCubic&, const SkPoint& ts0, const SkPoint& ts1);
void closeContour();
void emitHierarchicalFan(int32_t indices[], int count);
SkDEBUGCODE(void validate();)
@@ -129,7 +127,8 @@
ScissorMode fCurrScissorMode;
PrimitiveTallies fCurrPathIndices;
int32_t fCurrContourStartIdx;
- SkPoint fCurrPathSpaceAnchorPoint;
+ SkPoint fCurrAnchorPoint;
+ SkPoint fCurrFanPoint;
sk_sp<GrBuffer> fPointsBuffer;
SkPoint* fPointsData;