aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkXfermode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkXfermode.cpp')
-rw-r--r--src/core/SkXfermode.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
index ef44b1e747..83503659bd 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;