aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/shaders
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2017-07-07 09:23:16 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-07-11 14:45:21 +0000
commit327290fcafab2e702c839da8f3b7b29428294ea2 (patch)
tree822c353942bf6673eea7deb1f9554d04254c3abe /src/shaders
parent012893b4aad813254881fd77f31399cf3d9c965d (diff)
Devolve SkTwoPointConicalGradient to SkRadialGradient when possible
Blink attempts this optimization explicitly, but Skia seems like a better home for it. Change-Id: I2ecd8d0b4e91fbd9be6f89005319b2d9f04836ba Reviewed-on: https://skia-review.googlesource.com/21821 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/shaders')
-rw-r--r--src/shaders/gradients/SkGradientShader.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp
index 6e952ae17f..213db4e4ff 100644
--- a/src/shaders/gradients/SkGradientShader.cpp
+++ b/src/shaders/gradients/SkGradientShader.cpp
@@ -1175,6 +1175,11 @@ sk_sp<SkShader> SkGradientShader::MakeTwoPointConical(const SkPoint& start,
if (startRadius < 0 || endRadius < 0) {
return nullptr;
}
+ if (SkScalarNearlyZero((start - end).length()) && SkScalarNearlyZero(startRadius)) {
+ // We can treat this gradient as radial, which is faster.
+ return MakeRadial(start, endRadius, colors, std::move(colorSpace), pos, colorCount,
+ mode, flags, localMatrix);
+ }
if (!valid_grad(colors, pos, colorCount, mode)) {
return nullptr;
}