Index: src/gpu/effects/GrDashingEffect.cpp |
diff --git a/src/gpu/effects/GrDashingEffect.cpp b/src/gpu/effects/GrDashingEffect.cpp |
index 80735f0929459202a664b128cc06dff1f8a753c0..4f6eef15461ae0ace3f1e2911fab5fe526d257a1 100644 |
--- a/src/gpu/effects/GrDashingEffect.cpp |
+++ b/src/gpu/effects/GrDashingEffect.cpp |
@@ -482,13 +482,7 @@ class GLDashingCircleEffect : public GrGLGeometryProcessor { |
public: |
GLDashingCircleEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
- virtual void emitCode(GrGLGPBuilder* builder, |
- const GrGeometryProcessor& geometryProcessor, |
- const GrProcessorKey& key, |
- const char* outputColor, |
- const char* inputColor, |
- const TransformedCoordsArray&, |
- const TextureSamplerArray&) SK_OVERRIDE; |
+ virtual void emitCode(const EmitArgs&) SK_OVERRIDE; |
static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKeyBuilder*); |
@@ -510,30 +504,24 @@ GLDashingCircleEffect::GLDashingCircleEffect(const GrBackendProcessorFactory& fa |
fPrevIntervalLength = SK_ScalarMax; |
} |
-void GLDashingCircleEffect::emitCode(GrGLGPBuilder* builder, |
- const GrGeometryProcessor& geometryProcessor, |
- const GrProcessorKey& key, |
- const char* outputColor, |
- const char* inputColor, |
- const TransformedCoordsArray&, |
- const TextureSamplerArray& samplers) { |
- const DashingCircleEffect& dce = geometryProcessor.cast<DashingCircleEffect>(); |
+void GLDashingCircleEffect::emitCode(const EmitArgs& args) { |
+ const DashingCircleEffect& dce = args.fGP.cast<DashingCircleEffect>(); |
const char *paramName; |
// The param uniforms, xyz, refer to circle radius - 0.5, cicles center x coord, and |
// the total interval length of the dash. |
- fParamUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
- kVec3f_GrSLType, |
- "params", |
- ¶mName); |
+ fParamUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
+ kVec3f_GrSLType, |
+ "params", |
+ ¶mName); |
const char *vsCoordName, *fsCoordName; |
- builder->addVarying(kVec2f_GrSLType, "Coord", &vsCoordName, &fsCoordName); |
+ args.fPB->addVarying(kVec2f_GrSLType, "Coord", &vsCoordName, &fsCoordName); |
- GrGLVertexBuilder* vsBuilder = builder->getVertexShaderBuilder(); |
+ GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); |
vsBuilder->codeAppendf("\t%s = %s;\n", vsCoordName, dce.inCoord().c_str()); |
// transforms all points so that we can compare them to our test circle |
- GrGLGPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
+ GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s.z) * %s.z;\n", |
fsCoordName, fsCoordName, paramName, paramName); |
fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", fsCoordName); |
@@ -547,8 +535,8 @@ void GLDashingCircleEffect::emitCode(GrGLGPBuilder* builder, |
fsBuilder->codeAppendf("\t\tfloat alpha = 1.0;\n"); |
fsBuilder->codeAppendf("\t\talpha *= dist < %s.x + 0.5 ? 1.0 : 0.0;\n", paramName); |
} |
- fsBuilder->codeAppendf("\t\t%s = %s;\n", outputColor, |
- (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_str()); |
+ fsBuilder->codeAppendf("\t\t%s = %s;\n", args.fOutput, |
+ (GrGLSLExpr4(args.fInput) * GrGLSLExpr1("alpha")).c_str()); |
} |
void GLDashingCircleEffect::setData(const GrGLProgramDataManager& pdman |
@@ -693,13 +681,7 @@ class GLDashingLineEffect : public GrGLGeometryProcessor { |
public: |
GLDashingLineEffect(const GrBackendProcessorFactory&, const GrProcessor&); |
- virtual void emitCode(GrGLGPBuilder* builder, |
- const GrGeometryProcessor& geometryProcessor, |
- const GrProcessorKey& key, |
- const char* outputColor, |
- const char* inputColor, |
- const TransformedCoordsArray&, |
- const TextureSamplerArray&) SK_OVERRIDE; |
+ virtual void emitCode(const EmitArgs&) SK_OVERRIDE; |
static inline void GenKey(const GrProcessor&, const GrGLCaps&, GrProcessorKeyBuilder*); |
@@ -720,35 +702,29 @@ GLDashingLineEffect::GLDashingLineEffect(const GrBackendProcessorFactory& factor |
fPrevIntervalLength = SK_ScalarMax; |
} |
-void GLDashingLineEffect::emitCode(GrGLGPBuilder* builder, |
- const GrGeometryProcessor& geometryProcessor, |
- const GrProcessorKey& key, |
- const char* outputColor, |
- const char* inputColor, |
- const TransformedCoordsArray&, |
- const TextureSamplerArray& samplers) { |
- const DashingLineEffect& de = geometryProcessor.cast<DashingLineEffect>(); |
+void GLDashingLineEffect::emitCode(const EmitArgs& args) { |
+ const DashingLineEffect& de = args.fGP.cast<DashingLineEffect>(); |
const char *rectName; |
// The rect uniform's xyzw refer to (left + 0.5, top + 0.5, right - 0.5, bottom - 0.5), |
// respectively. |
- fRectUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
+ fRectUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
kVec4f_GrSLType, |
"rect", |
&rectName); |
const char *intervalName; |
// The interval uniform's refers to the total length of the interval (on + off) |
- fIntervalUniform = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
- kFloat_GrSLType, |
- "interval", |
- &intervalName); |
+ fIntervalUniform = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
+ kFloat_GrSLType, |
+ "interval", |
+ &intervalName); |
const char *vsCoordName, *fsCoordName; |
- builder->addVarying(kVec2f_GrSLType, "Coord", &vsCoordName, &fsCoordName); |
- GrGLVertexBuilder* vsBuilder = builder->getVertexShaderBuilder(); |
+ args.fPB->addVarying(kVec2f_GrSLType, "Coord", &vsCoordName, &fsCoordName); |
+ GrGLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); |
vsBuilder->codeAppendf("\t%s = %s;\n", vsCoordName, de.inCoord().c_str()); |
// transforms all points so that we can compare them to our test rect |
- GrGLGPFragmentBuilder* fsBuilder = builder->getFragmentShaderBuilder(); |
+ GrGLGPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
fsBuilder->codeAppendf("\t\tfloat xShifted = %s.x - floor(%s.x / %s) * %s;\n", |
fsCoordName, fsCoordName, intervalName, intervalName); |
fsBuilder->codeAppendf("\t\tvec2 fragPosShifted = vec2(xShifted, %s.y);\n", fsCoordName); |
@@ -769,8 +745,8 @@ void GLDashingLineEffect::emitCode(GrGLGPBuilder* builder, |
fsBuilder->codeAppendf("\t\talpha *= (fragPosShifted.x - %s.x) > -0.5 ? 1.0 : 0.0;\n", rectName); |
fsBuilder->codeAppendf("\t\talpha *= (%s.z - fragPosShifted.x) >= -0.5 ? 1.0 : 0.0;\n", rectName); |
} |
- fsBuilder->codeAppendf("\t\t%s = %s;\n", outputColor, |
- (GrGLSLExpr4(inputColor) * GrGLSLExpr1("alpha")).c_str()); |
+ fsBuilder->codeAppendf("\t\t%s = %s;\n", args.fOutput, |
+ (GrGLSLExpr4(args.fInput) * GrGLSLExpr1("alpha")).c_str()); |
} |
void GLDashingLineEffect::setData(const GrGLProgramDataManager& pdman, |