| Index: src/gpu/effects/GrBezierEffect.cpp
|
| diff --git a/src/gpu/effects/GrBezierEffect.cpp b/src/gpu/effects/GrBezierEffect.cpp
|
| index e16601dee111bd682716e691dbd90a52109bfd81..f6743457284786f970ec8e49eb733e2813e4f526 100644
|
| --- a/src/gpu/effects/GrBezierEffect.cpp
|
| +++ b/src/gpu/effects/GrBezierEffect.cpp
|
| @@ -24,7 +24,7 @@ public:
|
| GrGLConicEffect(const GrGeometryProcessor&,
|
| const GrBatchTracker&);
|
|
|
| - void emitCode(const EmitArgs&) SK_OVERRIDE;
|
| + void onEmitCode(EmitArgs&) SK_OVERRIDE;
|
|
|
| static inline void GenKey(const GrGeometryProcessor&,
|
| const GrBatchTracker&,
|
| @@ -66,12 +66,15 @@ GrGLConicEffect::GrGLConicEffect(const GrGeometryProcessor& processor,
|
| fEdgeType = ce.getEdgeType();
|
| }
|
|
|
| -void GrGLConicEffect::emitCode(const EmitArgs& args) {
|
| +void GrGLConicEffect::onEmitCode(EmitArgs& args) {
|
| GrGLGPBuilder* pb = args.fPB;
|
| GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
|
| const GrConicEffect& gp = args.fGP.cast<GrConicEffect>();
|
| const ConicBatchTracker& local = args.fBT.cast<ConicBatchTracker>();
|
|
|
| + // emit attributes
|
| + vsBuilder->emitAttributes(gp);
|
| +
|
| GrGLVertToFrag v(kVec4f_GrSLType);
|
| args.fPB->addVarying("ConicCoeffs", &v);
|
| vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inConicCoeffs()->fName);
|
| @@ -80,17 +83,17 @@ void GrGLConicEffect::emitCode(const EmitArgs& args) {
|
| this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputColor, NULL,
|
| &fColorUniform);
|
|
|
| - // setup coord outputs
|
| - vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPosition()->fName);
|
| - vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition()->fName);
|
| -
|
| // setup uniform viewMatrix
|
| this->addUniformViewMatrix(pb);
|
|
|
| - // setup position varying
|
| - vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), this->uViewM(),
|
| + // Setup position
|
| + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uViewM(),
|
| gp.inPosition()->fName);
|
|
|
| + // emit transforms with position
|
| + this->emitTransforms(pb, this->position(), gp.inPosition()->fName, gp.localMatrix(),
|
| + args.fTransformsIn, args.fTransformsOut);
|
| +
|
| GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
| fsBuilder->codeAppend("float edgeAlpha;");
|
|
|
| @@ -184,7 +187,8 @@ void GrConicEffect::getGLProcessorKey(const GrBatchTracker& bt,
|
| GrGLConicEffect::GenKey(*this, bt, caps, b);
|
| }
|
|
|
| -GrGLGeometryProcessor* GrConicEffect::createGLInstance(const GrBatchTracker& bt) const {
|
| +GrGLPrimitiveProcessor* GrConicEffect::createGLInstance(const GrBatchTracker& bt,
|
| + const GrGLCaps&) const {
|
| return SkNEW_ARGS(GrGLConicEffect, (*this, bt));
|
| }
|
|
|
| @@ -258,7 +262,7 @@ public:
|
| GrGLQuadEffect(const GrGeometryProcessor&,
|
| const GrBatchTracker&);
|
|
|
| - void emitCode(const EmitArgs&) SK_OVERRIDE;
|
| + void onEmitCode(EmitArgs&) SK_OVERRIDE;
|
|
|
| static inline void GenKey(const GrGeometryProcessor&,
|
| const GrBatchTracker&,
|
| @@ -300,12 +304,15 @@ GrGLQuadEffect::GrGLQuadEffect(const GrGeometryProcessor& processor,
|
| fEdgeType = ce.getEdgeType();
|
| }
|
|
|
| -void GrGLQuadEffect::emitCode(const EmitArgs& args) {
|
| +void GrGLQuadEffect::onEmitCode(EmitArgs& args) {
|
| GrGLGPBuilder* pb = args.fPB;
|
| GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
|
| const GrQuadEffect& gp = args.fGP.cast<GrQuadEffect>();
|
| const QuadBatchTracker& local = args.fBT.cast<QuadBatchTracker>();
|
|
|
| + // emit attributes
|
| + vsBuilder->emitAttributes(gp);
|
| +
|
| GrGLVertToFrag v(kVec4f_GrSLType);
|
| args.fPB->addVarying("HairQuadEdge", &v);
|
| vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inHairQuadEdge()->fName);
|
| @@ -314,17 +321,17 @@ void GrGLQuadEffect::emitCode(const EmitArgs& args) {
|
| this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputColor, NULL,
|
| &fColorUniform);
|
|
|
| - // setup coord outputs
|
| - vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPosition()->fName);
|
| - vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition()->fName);
|
| -
|
| // setup uniform viewMatrix
|
| this->addUniformViewMatrix(pb);
|
|
|
| - // setup position varying
|
| - vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), this->uViewM(),
|
| + // Setup position
|
| + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uViewM(),
|
| gp.inPosition()->fName);
|
|
|
| + // emit transforms with position
|
| + this->emitTransforms(pb, this->position(), gp.inPosition()->fName, gp.localMatrix(),
|
| + args.fTransformsIn, args.fTransformsOut);
|
| +
|
| GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
| fsBuilder->codeAppendf("float edgeAlpha;");
|
|
|
| @@ -404,7 +411,8 @@ void GrQuadEffect::getGLProcessorKey(const GrBatchTracker& bt,
|
| GrGLQuadEffect::GenKey(*this, bt, caps, b);
|
| }
|
|
|
| -GrGLGeometryProcessor* GrQuadEffect::createGLInstance(const GrBatchTracker& bt) const {
|
| +GrGLPrimitiveProcessor* GrQuadEffect::createGLInstance(const GrBatchTracker& bt,
|
| + const GrGLCaps&) const {
|
| return SkNEW_ARGS(GrGLQuadEffect, (*this, bt));
|
| }
|
|
|
| @@ -478,7 +486,7 @@ public:
|
| GrGLCubicEffect(const GrGeometryProcessor&,
|
| const GrBatchTracker&);
|
|
|
| - void emitCode(const EmitArgs&) SK_OVERRIDE;
|
| + void onEmitCode(EmitArgs&) SK_OVERRIDE;
|
|
|
| static inline void GenKey(const GrGeometryProcessor&,
|
| const GrBatchTracker&,
|
| @@ -514,11 +522,14 @@ GrGLCubicEffect::GrGLCubicEffect(const GrGeometryProcessor& processor,
|
| fEdgeType = ce.getEdgeType();
|
| }
|
|
|
| -void GrGLCubicEffect::emitCode(const EmitArgs& args) {
|
| +void GrGLCubicEffect::onEmitCode(EmitArgs& args) {
|
| GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder();
|
| const GrCubicEffect& gp = args.fGP.cast<GrCubicEffect>();
|
| const CubicBatchTracker& local = args.fBT.cast<CubicBatchTracker>();
|
|
|
| + // emit attributes
|
| + vsBuilder->emitAttributes(gp);
|
| +
|
| GrGLVertToFrag v(kVec4f_GrSLType);
|
| args.fPB->addVarying("CubicCoeffs", &v, kHigh_GrSLPrecision);
|
| vsBuilder->codeAppendf("%s = %s;", v.vsOut(), gp.inCubicCoeffs()->fName);
|
| @@ -527,17 +538,17 @@ void GrGLCubicEffect::emitCode(const EmitArgs& args) {
|
| this->setupColorPassThrough(args.fPB, local.fInputColorType, args.fOutputColor, NULL,
|
| &fColorUniform);
|
|
|
| - // setup coord outputs
|
| - vsBuilder->codeAppendf("%s = %s;", vsBuilder->positionCoords(), gp.inPosition()->fName);
|
| - vsBuilder->codeAppendf("%s = %s;", vsBuilder->localCoords(), gp.inPosition()->fName);
|
| -
|
| // setup uniform viewMatrix
|
| this->addUniformViewMatrix(args.fPB);
|
|
|
| - // setup position varying
|
| - vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", vsBuilder->glPosition(), this->uViewM(),
|
| + // Setup position
|
| + vsBuilder->codeAppendf("%s = %s * vec3(%s, 1);", this->position(), this->uViewM(),
|
| gp.inPosition()->fName);
|
|
|
| + // emit transforms with position
|
| + this->emitTransforms(args.fPB, this->position(), gp.inPosition()->fName, gp.localMatrix(),
|
| + args.fTransformsIn, args.fTransformsOut);
|
| +
|
| GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder();
|
|
|
| GrGLShaderVar edgeAlpha("edgeAlpha", kFloat_GrSLType, 0, kHigh_GrSLPrecision);
|
| @@ -647,7 +658,8 @@ void GrCubicEffect::getGLProcessorKey(const GrBatchTracker& bt,
|
| GrGLCubicEffect::GenKey(*this, bt, caps, b);
|
| }
|
|
|
| -GrGLGeometryProcessor* GrCubicEffect::createGLInstance(const GrBatchTracker& bt) const {
|
| +GrGLPrimitiveProcessor* GrCubicEffect::createGLInstance(const GrBatchTracker& bt,
|
| + const GrGLCaps&) const {
|
| return SkNEW_ARGS(GrGLCubicEffect, (*this, bt));
|
| }
|
|
|
|
|