From 327290fcafab2e702c839da8f3b7b29428294ea2 Mon Sep 17 00:00:00 2001 From: Florin Malita Date: Fri, 7 Jul 2017 09:23:16 -0400 Subject: 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 Commit-Queue: Florin Malita --- src/shaders/gradients/SkGradientShader.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/shaders') 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 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; } -- cgit v1.2.3