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>
diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp
index 6e952ae..213db4e 100644
--- a/src/shaders/gradients/SkGradientShader.cpp
+++ b/src/shaders/gradients/SkGradientShader.cpp
@@ -1175,6 +1175,11 @@
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;
}