Index: src/core/SkXfermode.cpp |
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp |
index 929bdc746d5ed0157d1691c39b63ea6c52bf0b02..db83b5c48f4ba40db0dc6e7f9b7a19bf0c175e1e 100644 |
--- a/src/core/SkXfermode.cpp |
+++ b/src/core/SkXfermode.cpp |
@@ -691,10 +691,17 @@ bool SkXfermode::AsFragmentProcessorOrXPFactory(SkXfermode* xfermode, |
GrFragmentProcessor** fp, |
GrXPFactory** xpf, |
Coeff* src, Coeff* dst) { |
+ Mode mode; |
if (NULL == xfermode) { |
SkAssertResult(ModeAsCoeff(kSrcOver_Mode, src, dst)); |
*xpf = GrPorterDuffXPFactory::Create(*src, *dst); |
return true; |
+ } else if (xfermode->asMode(&mode) && mode <= kLastCoeffMode) { |
+ *xpf = GrPorterDuffXPFactory::Create(mode); |
+ // TODO: This Line will be removed in follow up cl that handles blending and thus we won't |
+ // have to set coeffs here. |
+ SkAssertResult(ModeAsCoeff(mode, src, dst)); |
+ return true; |
} else if (xfermode->asCoeff(src, dst)) { |
*xpf = GrPorterDuffXPFactory::Create(*src, *dst); |
return true; |