Index: src/gpu/effects/GrDashingEffect.cpp |
diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp |
index 860475524b9b6b625a7e08c8f1d0789327f14794..05aa277b5e74a99e00d61661dc7e38f3e073af3b 100644 |
--- a/src/gpu/effects/GrDashingEffect.cpp |
+++ b/src/gpu/effects/GrDashingEffect.cpp |
@@ -785,6 +785,8 @@ public: |
GrColor color() const { return fColor; } |
+ const SkMatrix& localMatrix() const { return fLocalMatrix; } |
+ |
virtual void getGLProcessorKey(const GrBatchTracker&, |
const GrGLSLCaps&, |
GrProcessorKeyBuilder* b) const override; |
@@ -798,6 +800,7 @@ private: |
DashingCircleEffect(GrColor, DashAAMode aaMode, const SkMatrix& localMatrix); |
GrColor fColor; |
+ SkMatrix fLocalMatrix; |
DashAAMode fAAMode; |
const Attribute* fInPosition; |
const Attribute* fInDashParams; |
@@ -825,6 +828,13 @@ public: |
const GrPrimitiveProcessor&, |
const GrBatchTracker&) override; |
+ void setTransformData(const GrPrimitiveProcessor& primProc, |
+ const GrGLProgramDataManager& pdman, |
+ int index, |
+ const SkTArray<const GrCoordTransform*, true>& transforms) override { |
+ this->setTransformDataHelper<DashingCircleEffect>(primProc, pdman, index, transforms); |
+ } |
+ |
private: |
UniformHandle fParamUniform; |
UniformHandle fColorUniform; |
@@ -910,7 +920,7 @@ void GLDashingCircleEffect::GenKey(const GrGeometryProcessor& gp, |
const DashingCircleBatchTracker& local = bt.cast<DashingCircleBatchTracker>(); |
const DashingCircleEffect& dce = gp.cast<DashingCircleEffect>(); |
uint32_t key = 0; |
- key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0; |
+ key |= local.fUsesLocalCoords && dce.localMatrix().hasPerspective() ? 0x1 : 0x0; |
key |= dce.aaMode() << 8; |
b->add32(key << 16 | local.fInputColorType); |
} |
@@ -937,8 +947,8 @@ GrGLPrimitiveProcessor* DashingCircleEffect::createGLInstance(const GrBatchTrack |
DashingCircleEffect::DashingCircleEffect(GrColor color, |
DashAAMode aaMode, |
const SkMatrix& localMatrix) |
- : INHERITED(localMatrix) |
- , fColor(color) |
+ : fColor(color) |
+ , fLocalMatrix(localMatrix) |
, fAAMode(aaMode) { |
this->initClassID<DashingCircleEffect>(); |
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType)); |
@@ -1003,6 +1013,8 @@ public: |
GrColor color() const { return fColor; } |
+ const SkMatrix& localMatrix() const { return fLocalMatrix; } |
+ |
virtual void getGLProcessorKey(const GrBatchTracker& bt, |
const GrGLSLCaps& caps, |
GrProcessorKeyBuilder* b) const override; |
@@ -1016,6 +1028,7 @@ private: |
DashingLineEffect(GrColor, DashAAMode aaMode, const SkMatrix& localMatrix); |
GrColor fColor; |
+ SkMatrix fLocalMatrix; |
DashAAMode fAAMode; |
const Attribute* fInPosition; |
const Attribute* fInDashParams; |
@@ -1043,6 +1056,13 @@ public: |
const GrPrimitiveProcessor&, |
const GrBatchTracker&) override; |
+ void setTransformData(const GrPrimitiveProcessor& primProc, |
+ const GrGLProgramDataManager& pdman, |
+ int index, |
+ const SkTArray<const GrCoordTransform*, true>& transforms) override { |
+ this->setTransformDataHelper<DashingLineEffect>(primProc, pdman, index, transforms); |
+ } |
+ |
private: |
GrColor fColor; |
UniformHandle fColorUniform; |
@@ -1140,7 +1160,7 @@ void GLDashingLineEffect::GenKey(const GrGeometryProcessor& gp, |
const DashingLineBatchTracker& local = bt.cast<DashingLineBatchTracker>(); |
const DashingLineEffect& de = gp.cast<DashingLineEffect>(); |
uint32_t key = 0; |
- key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0; |
+ key |= local.fUsesLocalCoords && de.localMatrix().hasPerspective() ? 0x1 : 0x0; |
key |= de.aaMode() << 8; |
b->add32(key << 16 | local.fInputColorType); |
} |
@@ -1167,8 +1187,8 @@ GrGLPrimitiveProcessor* DashingLineEffect::createGLInstance(const GrBatchTracker |
DashingLineEffect::DashingLineEffect(GrColor color, |
DashAAMode aaMode, |
const SkMatrix& localMatrix) |
- : INHERITED(localMatrix) |
- , fColor(color) |
+ : fColor(color) |
+ , fLocalMatrix(localMatrix) |
, fAAMode(aaMode) { |
this->initClassID<DashingLineEffect>(); |
fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVertexAttribType)); |