Index: src/core/SkXfermode.cpp |
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp |
index 77c668457b9d4e4b524b94c4909607354ce883fc..5fae9f12564d959cf8b939b31aeb4d97ac4efb23 100644 |
--- a/src/core/SkXfermode.cpp |
+++ b/src/core/SkXfermode.cpp |
@@ -6,7 +6,7 @@ |
* found in the LICENSE file. |
*/ |
- |
+#include "GrXferProcessor.h" |
#include "SkXfermode.h" |
#include "SkXfermode_opts_SSE2.h" |
#include "SkXfermode_proccoeff.h" |
@@ -680,12 +680,21 @@ bool SkXfermode::asFragmentProcessor(GrFragmentProcessor**, GrTexture*) const { |
return false; |
} |
-bool SkXfermode::asFragmentProcessorOrCoeff(SkXfermode* xfermode, GrFragmentProcessor** fp, |
- Coeff* src, Coeff* dst, GrTexture* background) { |
+bool SkXfermode::asXPFactory(GrXPFactory**) const { |
+ return false; |
+} |
+ |
+bool SkXfermode::asFragmentProcessorOrXPFactoryOrCoeff(SkXfermode* xfermode, |
+ GrFragmentProcessor** fp, |
+ GrXPFactory** xpf, |
+ Coeff* src, Coeff* dst, |
+ GrTexture* background) { |
if (NULL == xfermode) { |
return ModeAsCoeff(kSrcOver_Mode, src, dst); |
} else if (xfermode->asCoeff(src, dst)) { |
return true; |
+ } else if (NULL == background && xfermode->asXPFactory(xpf)) { |
+ return true; |
} else { |
return xfermode->asFragmentProcessor(fp, background); |
} |