Index: src/effects/SkArithmeticMode_gpu.cpp |
diff --git a/src/effects/SkArithmeticMode_gpu.cpp b/src/effects/SkArithmeticMode_gpu.cpp |
index 48b7bcd61026fbd68d6f22bf1473d7ff68df4035..8022d668b4a616c70fd7ab85be29df90245c3b08 100644 |
--- a/src/effects/SkArithmeticMode_gpu.cpp |
+++ b/src/effects/SkArithmeticMode_gpu.cpp |
@@ -166,31 +166,6 @@ |
~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>(); |
@@ -199,6 +174,31 @@ |
} |
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,17 +207,18 @@ |
/////////////////////////////////////////////////////////////////////////////// |
-GrArithmeticXP::GrArithmeticXP(float k1, float k2, float k3, float k4, bool enforcePMColor) |
- : fK1(k1) |
+GrArithmeticXP::GrArithmeticXP(float k1, float k2, float k3, float k4, bool enforcePMColor, |
+ const GrDeviceCoordTexture* dstCopy, bool willReadDstColor) |
+ : INHERITED(dstCopy, willReadDstColor) |
+ , fK1(k1) |
, fK2(k2) |
, fK3(k3) |
, fK4(k4) |
, fEnforcePMColor(enforcePMColor) { |
this->initClassID<GrPorterDuffXferProcessor>(); |
- this->setWillReadDstColor(); |
-} |
- |
-void GrArithmeticXP::getGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const { |
+} |
+ |
+void GrArithmeticXP::onGetGLProcessorKey(const GrGLCaps& caps, GrProcessorKeyBuilder* b) const { |
GLArithmeticXP::GenKey(*this, caps, b); |
} |