Index: src/effects/SkArithmeticMode_gpu.cpp |
diff --git a/src/effects/SkArithmeticMode_gpu.cpp b/src/effects/SkArithmeticMode_gpu.cpp |
index 8022d668b4a616c70fd7ab85be29df90245c3b08..48b7bcd61026fbd68d6f22bf1473d7ff68df4035 100644 |
--- a/src/effects/SkArithmeticMode_gpu.cpp |
+++ b/src/effects/SkArithmeticMode_gpu.cpp |
@@ -166,6 +166,31 @@ |
~GLArithmeticXP() SK_OVERRIDE {} |
+ void emitCode(const EmitArgs& args) SK_OVERRIDE { |
+ GrGLFPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
+ |
+ const char* dstColor = fsBuilder->dstColor(); |
+ |
+ fKUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
+ kVec4f_GrSLType, kDefault_GrSLPrecision, |
+ "k"); |
+ const char* kUni = args.fPB->getUniformCStr(fKUni); |
+ |
+ add_arithmetic_code(fsBuilder, args.fInputColor, dstColor, args.fOutputPrimary, kUni, |
+ fEnforcePMColor); |
+ |
+ fsBuilder->codeAppendf("%s = %s * %s + (vec4(1.0) - %s) * %s;", |
+ args.fOutputPrimary, args.fOutputPrimary, args.fInputCoverage, |
+ args.fInputCoverage, dstColor); |
+ } |
+ |
+ void setData(const GrGLProgramDataManager& pdman, |
+ const GrXferProcessor& processor) SK_OVERRIDE { |
+ const GrArithmeticXP& arith = processor.cast<GrArithmeticXP>(); |
+ pdman.set4f(fKUni, arith.k1(), arith.k2(), arith.k3(), arith.k4()); |
+ fEnforcePMColor = arith.enforcePMColor(); |
+ }; |
+ |
static void GenKey(const GrProcessor& processor, const GrGLCaps& caps, |
GrProcessorKeyBuilder* b) { |
const GrArithmeticXP& arith = processor.cast<GrArithmeticXP>(); |
@@ -174,31 +199,6 @@ |
} |
private: |
- void onEmitCode(const EmitArgs& args) SK_OVERRIDE { |
- GrGLFPFragmentBuilder* fsBuilder = args.fPB->getFragmentShaderBuilder(); |
- |
- const char* dstColor = fsBuilder->dstColor(); |
- |
- fKUni = args.fPB->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
- kVec4f_GrSLType, kDefault_GrSLPrecision, |
- "k"); |
- const char* kUni = args.fPB->getUniformCStr(fKUni); |
- |
- add_arithmetic_code(fsBuilder, args.fInputColor, dstColor, args.fOutputPrimary, kUni, |
- fEnforcePMColor); |
- |
- fsBuilder->codeAppendf("%s = %s * %s + (vec4(1.0) - %s) * %s;", |
- args.fOutputPrimary, args.fOutputPrimary, args.fInputCoverage, |
- args.fInputCoverage, dstColor); |
- } |
- |
- void onSetData(const GrGLProgramDataManager& pdman, |
- const GrXferProcessor& processor) SK_OVERRIDE { |
- const GrArithmeticXP& arith = processor.cast<GrArithmeticXP>(); |
- pdman.set4f(fKUni, arith.k1(), arith.k2(), arith.k3(), arith.k4()); |
- fEnforcePMColor = arith.enforcePMColor(); |
- }; |
- |
GrGLProgramDataManager::UniformHandle fKUni; |
bool fEnforcePMColor; |
@@ -207,18 +207,17 @@ |
/////////////////////////////////////////////////////////////////////////////// |
-GrArithmeticXP::GrArithmeticXP(float k1, float k2, float k3, float k4, bool enforcePMColor, |
- const GrDeviceCoordTexture* dstCopy, bool willReadDstColor) |
- : INHERITED(dstCopy, willReadDstColor) |
- , fK1(k1) |
+GrArithmeticXP::GrArithmeticXP(float k1, float k2, float k3, float k4, bool enforcePMColor) |
+ : fK1(k1) |
, fK2(k2) |
, fK3(k3) |
, fK4(k4) |
, fEnforcePMColor(enforcePMColor) { |
this->initClassID<GrPorterDuffXferProcessor>(); |
-} |
- |
-void GrArithmeticXP::onGetGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const { |
+ this->setWillReadDstColor(); |
+} |
+ |
+void GrArithmeticXP::getGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const { |
GLArithmeticXP::GenKey(*this, caps, b); |
} |