History log of /external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
e3429e62b0d020b27de3daa55893953eff581c4f 19-Jan-2018 Mike Reed <reed@google.com> rename inner AsFPArgs to stand-alone GrFPArgs

This prepares us to share this with other effects (most notably maskfilters)

Bug: skia:
Change-Id: I12530fdf10c4e5f2a9ab6d394bf9e87c54ea60c4
Reviewed-on: https://skia-review.googlesource.com/97062
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
d3b743a4517c83cef6c1c83667373e0d09133b07 09-Jan-2018 Yuqian Li <liyuqian@google.com> Remove legacy 2pt conical gradient

Bug: skia:7459
Change-Id: Iccc2588f80e22b13ed5d23656b8c75d7b7058a36
Reviewed-on: https://skia-review.googlesource.com/92700
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Yuqian Li <liyuqian@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
d208a8847777d4643188813f03a15dfed4887365 04-Jan-2018 Yuqian Li <liyuqian@google.com> Update 2pt conical gradient in raster pipeline

The updated algorithm matches our new GPU algorithm
(https://skia.org/dev/design/conical) and it brings
about 7%-26% speedup. In the next CL, I'll simplify
the GPU code by reusing the CPU code in this CL.

7.20% faster in gradient_conical_clamp_hicolor
8.94% faster in gradient_conicalZero_clamp_hicolor
10.00% faster in gradient_conicalOut_clamp_hicolor
11.72% faster in gradient_conicalOutZero_clamp_hicolor
13.62% faster in gradient_conical_clamp_3color
16.52% faster in gradient_conicalZero_clamp_3color
17.48% faster in gradient_conical_clamp
17.70% faster in gradient_conical_clamp_shallow
20.60% faster in gradient_conicalOut_clamp_3color
20.98% faster in gradient_conicalOutZero_clamp_3color
21.79% faster in gradient_conicalZero_clamp
22.48% faster in gradient_conicalOut_clamp
26.13% faster in gradient_conicalOutZero_clamp

Bug: skia:
Change-Id: Ia159495e1c77658cb28e48c9edf84938464e501c
Reviewed-on: https://skia-review.googlesource.com/90262
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
7741c75152658d0297eafd0a8bb8aa36dce26d4d 11-Dec-2017 Yuqian Li <liyuqian@google.com> Use first/second instead of min/max in 2pt conical gradient

Here's the tiny performance gain:

$python tools/calmbench/calmbench.py firstsecond --extraarg "-m conic"

firstsecond (compared to master) is likely
4.23% faster in gradient_conicalOut_clamp_3color
4.23% faster in gradient_conicalOutZero_clamp_3color
4.79% faster in gradient_conical_clamp_shallow_dither
6.04% faster in gradient_conical_clamp_3color
6.04% faster in gradient_conicalZero_clamp_3color
6.42% faster in gradient_conicalOut_clamp
6.43% faster in gradient_conicalOutZero_clamp
6.74% faster in gradient_conical_clamp
6.98% faster in gradient_conical_clamp_shallow
6.98% faster in gradient_conicalZero_clamp

Bug: skia:
Change-Id: Id74866908b99753ed8b16a657d3f67c9255d0043
Reviewed-on: https://skia-review.googlesource.com/76561
Commit-Queue: Yuqian Li <liyuqian@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
39d71dec606781037839faf49a9be25be7560bf1 31-Oct-2017 Florin Malita <fmalita@chromium.org> Don't store legacy colors in gradient shaders

We only pass linear/4f colors to the ctor, and then derive the legacy
colors from them.

Might as well just derive when needed.

Change-Id: I82b3d159da91f6faa4a3e7d681763c0ec1cdab07
Reviewed-on: https://skia-review.googlesource.com/65680
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
d4e9ec86cf934107cc441f651ee2429078188d02 26-Oct-2017 Florin Malita <fmalita@chromium.org> Delete GradientShaderCache

Dead code.

Change-Id: If415e603b8e898da72ad95f32596445900794d23
Reviewed-on: https://skia-review.googlesource.com/63562
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
4cbb6e6d551e8bea2c040b1aa9dce253cffb9af0 25-Oct-2017 Brian Salomon <bsalomon@google.com> Pass GrRenderTargetContext's GrColorSpaceInfo to SkShader and SkColorFilter.

Also to SkColorTo(Premul|Unpremul)GrColor4f.

This can avoid cache lookups to find GrColorSpaceXforms as the xform pointer is stored in GrColorSpaceInfo after the first lookup.

Also uses GrColorSpaceInfo to construct GrTextUtils::Paint.

Bug: skia:
Change-Id: Idf19d512a60d2269e6921c7fb54d93aee499a70d
Reviewed-on: https://skia-review.googlesource.com/63660
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
5911a7cf214ccd824a8c7830f8e29f218c8fe422 25-Oct-2017 Brian Osman <brianosman@google.com> Remove GrColorSpaceXform from GrGradientEffect

Use a local xform to convert color stops for analytic gradients.
For texture-based gradients, wrap the FP with an xform effect.
To simplify this code, add a new AdjustFP helper to do the color
xform, and also add the MulOutputByInputAlpha stage.

Bug: skia:
Change-Id: Icde19b5ec1c66aae76f894e9978c90a5f00c852e
Reviewed-on: https://skia-review.googlesource.com/62500
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
5f379a8b117f68b2087ab4b400b7d2f110f5600c 18-Oct-2017 Florin Malita <fmalita@chromium.org> Avoid 2PtConical gradient flipping

Currently, when startRadius > endRadius conical gradients are inverting their data
(start/end points and radii, colors and positions) to guarantee r0 < r1 at raster time.

But the radii ordering is only mildly interesting to the impl: it controls which of the
two quadratic solutions we select for the inside case, but doesn't fundamentally change
the algorithm.

Furthermore, for the "outside" case, inverting the order is already inconvenient and
needs to be taken into account (both CPU/GPU impls are already tracking this bit of
info).

Instead of transforming the gradient definition, we can detect the inverted case and
adjust the quadratic solution selector.

In practice this means:

* |edge| case - no change, the equation is linear
* |inside| case - select the smaller root instead of largest
* |outside| case - [gpu-only] invert the clamp/limiting function

Change-Id: Ie3106464e39a4dd3848dc43671d973f7e1958e63
Reviewed-on: https://skia-review.googlesource.com/61660
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
aff329b8e9b239bca1d93b13a914fbef45ccf7fe 11-Aug-2017 Brian Salomon <bsalomon@google.com> Make GrFragmentProcessor be non-refcounted and use std::unique_ptr.

Change-Id: I985e54a071338e99292a5aa2f42c92bc115b4008
Reviewed-on: https://skia-review.googlesource.com/32760
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
50b2084bd15e7aea416dc8c6fd2373864c50f023 30-Jul-2017 Florin Malita <fmalita@chromium.org> Gradient stages cleanup

Hoist the matrix setup into SkGradientShaderBase.

Drop the bool return for adjustMatrixAndAppendStages(), and rename to
appendGradientStages().

Change-Id: Iad412f638f86223e5af46a7d3dea6f768f52bcad
Reviewed-on: https://skia-review.googlesource.com/26427
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
77c6866668ac74c8c22fcf0c1442aed5749af76f 30-Jul-2017 Florin Malita <fmalita@chromium.org> Remove stale SkTwoPointConicalGradient assert

Change-Id: If46426393e5151dad4f66ee5a54341024701e87e
TBR=
NOTRY=true
Reviewed-on: https://skia-review.googlesource.com/28500
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
9c2212fa79e03ea7f3527bf4c30b3e6bbd560932 30-Jul-2017 Florin Malita <fmalita@chromium.org> Don't instantiate degenerate 2pt gradients

We can catch the condition at construction time, no need to defer.

Change-Id: I973b9e1b79998e2b334e3a91694c793882dfd65a
Reviewed-on: https://skia-review.googlesource.com/26564
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
28a586966d5862312ed9e1b8d7de25b25b0f1b48 29-Jul-2017 Florin Malita <fmalita@chromium.org> Remove now-dead SK_SUPPORT_LEGACY_GRADIENT_MATRIX_MATH code

Change-Id: I080942c44d2ce1a018ba127944c0a477af876158
TBR=
Reviewed-on: https://skia-review.googlesource.com/28480
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
5127fcba572bb93684b394a129e23d06bed281a1 25-Jul-2017 Florin Malita <fmalita@chromium.org> Always postConcat() pipeline gradient matrices

In order to unblock https://skia-review.googlesource.com/c/26564 &
https://skia-review.googlesource.com/c/26427, switch all impls to use a
single/atomic postConcat for the gradient matrix.

This is much easier to guard than the changes above.

Change-Id: Ib72dbc7b5a56a96390f4468fd12caf8b6a0e46ef
Reviewed-on: https://skia-review.googlesource.com/26620
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
6b59bf424c9d9d8a72d3c002871f143e6aff623e 04-Jul-2017 Mike Reed <reed@google.com> consolidate logic for matrix stage

Bug: skia:
Change-Id: Id1559b31692a1aed9aa4d15620b2019ae9c7c22b
Reviewed-on: https://skia-review.googlesource.com/21404
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
974aad487a81e507ca9e953e0b7e016a42ba3c39 04-Jul-2017 Florin Malita <fmalita@chromium.org> Handle degenerate 2pt conical center values gracefully

SkMatrix::setPolyToPoly() may fail to map degenerate values. Handle
this case explicitly, instead of assuming it never fails.

BUG=chromium:738746
TBR=

Change-Id: Ie1049b98f7e07ae5d6bdb706ba7b4a399388e5d8
Reviewed-on: https://skia-review.googlesource.com/21375
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
981deec8b2928f07e3899849bed31bfbb8c19b9b 29-Jun-2017 Florin Malita <fmalita@chromium.org> Delete non-raster-pipeline SkTwoPointConicalGradient impl

Change-Id: If39a2b01d6099fef14695a4ce05b57a3d5c3d99c
Reviewed-on: https://skia-review.googlesource.com/21320
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
3d96f06d9f9171797d0af23d471432d42290a59c 29-Jun-2017 Florin Malita <fmalita@chromium.org> Always use raster pipeline for SkTwoPointConicalGradient

Change-Id: I14fc27c5ba8d6fd58df193a172148b7f5aca20bf
Reviewed-on: https://skia-review.googlesource.com/21262
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
9026fe13a751582e58e98f9bf735c18b4719d7fe 29-Jun-2017 Florin Malita <fmalita@chromium.org> 2pt conical stage for focal-point-outside case

A couple of annoyances here:

1) the prev vector_scale stage is not usable for masking, as NaN values can propagate through
=> switch to actual masking

2) for the outside case, we must select the min root when the gradient is flipped
=> split into two templated stages (_min, _max)

(I'm not convinced that we need to flip the gradient for RP at all; we can investigate later)

Change-Id: I0283812d613a53124f2987d1aea1f26e4533655e
Reviewed-on: https://skia-review.googlesource.com/21162
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
2e409009fb715400a0d64612c57187465c12790c 28-Jun-2017 Florin Malita <fmalita@chromium.org> 2pt conical stage for focal-pt-on-edge case

When the focal point is on the edge of the end circle, the quadratic
equation devolves to linear. Add a stage to handle this case.

As a complication, this case can produce "degenerate" values:

1) t == NaN
2) R(t) < 0

For these, we're supposed to draw transparent black - which means
overwriting the color from the gradient stage. To support this, build
a 0/1 vector mask in the context, and apply it post-gradient-stage.

Change-Id: Ice4e3243abfd8c784bb810f6c310aed7a4ac7dc8
Reviewed-on: https://skia-review.googlesource.com/21111
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
a66ef2d1063c9005611890613a7c27bede6ec5cb 28-Jun-2017 Florin Malita <fmalita@chromium.org> 2ptconical stage

Initial impl, for the well-behaved case (focal point inside).

MBP numbers -

Before:

3365.87 ! gradient_conical_clamp_shallow srgb
3590.88 ! gradient_conical_clamp_shallow_dither srgb
3376.91 ! gradient_conical_clamp_3color srgb
3351.64 ! gradient_conical_clamp_hicolor srgb
3379.35 ! gradient_conical_clamp srgb

After:

648.93 ! gradient_conical_clamp_shallow srgb
665.12 ! gradient_conical_clamp_shallow_dither srgb
773.98 ! gradient_conical_clamp_3color srgb
1175.35 ! gradient_conical_clamp_hicolor srgb
619.17 ! gradient_conical_clamp srgb

Change-Id: I07b22a758363e1f340a6041bca53bdef74229eb9
Reviewed-on: https://skia-review.googlesource.com/20906
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
0bb0411f59aff6362cedcd90b6ca272c53e19c4c 27-Jun-2017 Florin Malita <fmalita@chromium.org> 2pt conical stage for concentric case

If the circles are concentric, we can use the radial stage and
post-massage t with a 2x3 stage.

Change-Id: I744bc889d509d5f9ff162c179e8ec7ca35410e3c
Reviewed-on: https://skia-review.googlesource.com/20972
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
6af270116dcf0bc123ce5ca22c319e087cd21f2f 09-Jun-2017 Brian Salomon <bsalomon@google.com> Make gradient effect creation fail if texture LUT creation fails

Bug: skia:6198
Change-Id: Ib8fb273564ca54ee9e6e045ac67e191af705a37a
Reviewed-on: https://skia-review.googlesource.com/19260
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
5edba45dca995baed5e66dfaaa7859132e716314 30-May-2017 Florin Malita <fmalita@chromium.org> [Reland] Relocate shaders to own dir

Consolidate all shader impls under src/shaders/.

(reland of https://skia-review.googlesource.com/c/17927/)

Change-Id: I7918bdc1aafe842ed194412ba95b9ae53a2ec1d7
Reviewed-on: https://skia-review.googlesource.com/18146
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
d8872be505c5c9c48072fe62c244e53e9b7334f1 26-May-2017 Stan Iliev <stani@google.com> Revert "Relocate shaders to own dir"

This reverts commit fabe0b26d05624ce7374f6ca89bd66df6142534e.

Reason for revert: Last android roll failed with "external/skia/src/effects/SkGaussianEdgeShader.h:11:10: fatal error: 'SkShaderBase.h' file not found"

Original change's description:
> Relocate shaders to own dir
>
> Consolidate all shader impls under src/shaders/.
>
> Change-Id: I450e37541214704c1ad9e379d9d753b7cc62fac3
> Reviewed-on: https://skia-review.googlesource.com/17927
> Commit-Queue: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Herb Derby <herb@google.com>
>

TBR=mtklein@google.com,herb@google.com,fmalita@chromium.org,reed@google.com
No-Presubmit: true
No-Tree-Checks: true
No-Try: true

Change-Id: Idbb2b75053969df1dad9d8ce0217cd39189b9ddb
Reviewed-on: https://skia-review.googlesource.com/18020
Reviewed-by: Stan Iliev <stani@google.com>
Commit-Queue: Stan Iliev <stani@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp
fabe0b26d05624ce7374f6ca89bd66df6142534e 25-May-2017 Florin Malita <fmalita@chromium.org> Relocate shaders to own dir

Consolidate all shader impls under src/shaders/.

Change-Id: I450e37541214704c1ad9e379d9d753b7cc62fac3
Reviewed-on: https://skia-review.googlesource.com/17927
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
/external/skia/src/shaders/gradients/SkTwoPointConicalGradient.cpp