commit | eadf3cf899d87b9c96fb7ede5c8eb54f63900193 | [log] [tgz] |
---|---|---|
author | fmalita <fmalita@chromium.org> | Thu Apr 07 13:16:13 2016 -0700 |
committer | Commit bot <commit-bot@chromium.org> | Thu Apr 07 13:16:13 2016 -0700 |
tree | e1b4a1156974648c8b867e02c7cb378e9bb86655 | |
parent | 78daeff1f9c1639d4921abb7acd9b76b77660802 [diff] [blame] |
[4fGradient] Veto blitters for non-opaque paints The current blitters don't support SrcOver, so we must ensure the colors are opaque. Checking shader.colorsAreOpaque() is not enough as it doesn't reflect the paint alpha. Instead we should check for context flags & kOpaqueAlpha_Flag, which is only set when both the color stops AND the paint are opaque. R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1870773002 Review URL: https://codereview.chromium.org/1870773002
diff --git a/src/effects/gradients/Sk4fLinearGradient.cpp b/src/effects/gradients/Sk4fLinearGradient.cpp index 4ea025d..090bdaa 100644 --- a/src/effects/gradients/Sk4fLinearGradient.cpp +++ b/src/effects/gradients/Sk4fLinearGradient.cpp
@@ -419,9 +419,8 @@ return false; } - const SkGradientShaderBase& shader = static_cast<const SkGradientShaderBase&>(fShader); if (mode != SkXfermode::kSrc_Mode && - !(mode == SkXfermode::kSrcOver_Mode && shader.colorsAreOpaque())) { + !(mode == SkXfermode::kSrcOver_Mode && (fFlags & kOpaqueAlpha_Flag))) { return false; }