| Index: src/gpu/effects/GrDashingEffect.cpp
|
| diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp
|
| index 7016ef203e204f11ef24abc0ec34b04c00fa01ee..88ffad0c2e5b598531c1d59ca331fa8f53e3f052 100644
|
| --- a/src/gpu/effects/GrDashingEffect.cpp
|
| +++ b/src/gpu/effects/GrDashingEffect.cpp
|
| @@ -531,7 +531,7 @@ class GLDashingCircleEffect : public GrGLGeometryProcessor {
|
| public:
|
| GLDashingCircleEffect(const GrGeometryProcessor&, const GrBatchTracker&);
|
|
|
| - void onEmitCode(EmitArgs&) SK_OVERRIDE;
|
| + void onEmitCode(EmitArgs&, GrGPArgs*) SK_OVERRIDE;
|
|
|
| static inline void GenKey(const GrGeometryProcessor&,
|
| const GrBatchTracker&,
|
| @@ -560,7 +560,7 @@ GLDashingCircleEffect::GLDashingCircleEffect(const GrGeometryProcessor&,
|
| fPrevIntervalLength = SK_ScalarMax;
|
| }
|
|
|
| -void GLDashingCircleEffect::onEmitCode(EmitArgs& args) {
|
| +void GLDashingCircleEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
|
| const DashingCircleEffect& dce = args.fGP.cast<DashingCircleEffect>();
|
| const DashingCircleBatchTracker local = args.fBT.cast<DashingCircleBatchTracker>();
|
| GrGLGPBuilder* pb = args.fPB;
|
| @@ -587,11 +587,10 @@ void GLDashingCircleEffect::onEmitCode(EmitArgs& args) {
|
| this->addUniformViewMatrix(pb);
|
|
|
| // Setup position
|
| - vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uViewM(),
|
| - dce.inPosition()->fName);
|
| + SetupPosition(vsBuilder, gpArgs, dce.inPosition()->fName, dce.viewMatrix(), this->uViewM());
|
|
|
| // emit transforms
|
| - this->emitTransforms(args.fPB, this->position(), dce.inPosition()->fName, dce.localMatrix(),
|
| + this->emitTransforms(args.fPB, gpArgs->fPositionVar, dce.inPosition()->fName, dce.localMatrix(),
|
| args.fTransformsIn, args.fTransformsOut);
|
|
|
| // transforms all points so that we can compare them to our test circle
|
| @@ -637,14 +636,17 @@ void GLDashingCircleEffect::setData(const GrGLProgramDataManager& pdman,
|
| }
|
| }
|
|
|
| -void GLDashingCircleEffect::GenKey(const GrGeometryProcessor& processor,
|
| +void GLDashingCircleEffect::GenKey(const GrGeometryProcessor& gp,
|
| const GrBatchTracker& bt,
|
| const GrGLCaps&,
|
| GrProcessorKeyBuilder* b) {
|
| const DashingCircleBatchTracker& local = bt.cast<DashingCircleBatchTracker>();
|
| - const DashingCircleEffect& dce = processor.cast<DashingCircleEffect>();
|
| - b->add32(local.fUsesLocalCoords && processor.localMatrix().hasPerspective());
|
| - b->add32(dce.getEdgeType() << 16 | local.fInputColorType);
|
| + const DashingCircleEffect& dce = gp.cast<DashingCircleEffect>();
|
| + uint32_t key = 0;
|
| + key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0;
|
| + key |= ComputePosKey(gp.viewMatrix()) << 1;
|
| + key |= dce.getEdgeType() << 8;
|
| + b->add32(key << 16 | local.fInputColorType);
|
| }
|
|
|
| //////////////////////////////////////////////////////////////////////////////
|
| @@ -822,7 +824,7 @@ class GLDashingLineEffect : public GrGLGeometryProcessor {
|
| public:
|
| GLDashingLineEffect(const GrGeometryProcessor&, const GrBatchTracker&);
|
|
|
| - void onEmitCode(EmitArgs&) SK_OVERRIDE;
|
| + void onEmitCode(EmitArgs&, GrGPArgs*) SK_OVERRIDE;
|
|
|
| static inline void GenKey(const GrGeometryProcessor&,
|
| const GrBatchTracker&,
|
| @@ -850,7 +852,7 @@ GLDashingLineEffect::GLDashingLineEffect(const GrGeometryProcessor&,
|
| fPrevIntervalLength = SK_ScalarMax;
|
| }
|
|
|
| -void GLDashingLineEffect::onEmitCode(EmitArgs& args) {
|
| +void GLDashingLineEffect::onEmitCode(EmitArgs& args, GrGPArgs* gpArgs) {
|
| const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>();
|
| const DashingLineBatchTracker& local = args.fBT.cast<DashingLineBatchTracker>();
|
| GrGLGPBuilder* pb = args.fPB;
|
| @@ -885,11 +887,10 @@ void GLDashingLineEffect::onEmitCode(EmitArgs& args) {
|
| this->addUniformViewMatrix(pb);
|
|
|
| // Setup position
|
| - vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uViewM(),
|
| - de.inPosition()->fName);
|
| + SetupPosition(vsBuilder, gpArgs, de.inPosition()->fName, de.viewMatrix(), this->uViewM());
|
|
|
| // emit transforms
|
| - this->emitTransforms(args.fPB, this->position(), de.inPosition()->fName, de.localMatrix(),
|
| + this->emitTransforms(args.fPB, gpArgs->fPositionVar, de.inPosition()->fName, de.localMatrix(),
|
| args.fTransformsIn, args.fTransformsOut);
|
|
|
| // transforms all points so that we can compare them to our test rect
|
| @@ -942,14 +943,17 @@ void GLDashingLineEffect::setData(const GrGLProgramDataManager& pdman,
|
| }
|
| }
|
|
|
| -void GLDashingLineEffect::GenKey(const GrGeometryProcessor& processor,
|
| +void GLDashingLineEffect::GenKey(const GrGeometryProcessor& gp,
|
| const GrBatchTracker& bt,
|
| const GrGLCaps&,
|
| GrProcessorKeyBuilder* b) {
|
| const DashingLineBatchTracker& local = bt.cast<DashingLineBatchTracker>();
|
| - const DashingLineEffect& de = processor.cast<DashingLineEffect>();
|
| - b->add32(local.fUsesLocalCoords && processor.localMatrix().hasPerspective());
|
| - b->add32(de.getEdgeType() << 16 | local.fInputColorType);
|
| + const DashingLineEffect& de = gp.cast<DashingLineEffect>();
|
| + uint32_t key = 0;
|
| + key |= local.fUsesLocalCoords && gp.localMatrix().hasPerspective() ? 0x1 : 0x0;
|
| + key |= ComputePosKey(gp.viewMatrix()) << 1;
|
| + key |= de.getEdgeType() << 8;
|
| + b->add32(key << 16 | local.fInputColorType);
|
| }
|
|
|
| //////////////////////////////////////////////////////////////////////////////
|
|
|