History log of /external/skia/src/core/SkColorSpaceXform.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
7b2d1f683f59eb41c3d9c4011a1177489288a749 29-Mar-2017 Matt Sarett <msarett@google.com> Cherry Pick: 565 color xforms: make sure we clamp if necessary

Bug: skia:
Change-Id: I48528a0ff8dd199e0cd1649f973b5722384eacf3
Reviewed-on: https://skia-review.googlesource.com/10581
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
(cherry picked from commit 8f7a9a9bfb51a00082bde7eb6b04515b935a588f)
Reviewed-on: https://skia-review.googlesource.com/11160
/external/skia/src/core/SkColorSpaceXform.cpp
68185be3389102cb8c979a26cbea72a39ac214ca 28-Mar-2017 Matt Sarett <msarett@google.com> Cherry Pick: Add codec and color xform support for 565

Bug: skia:
Change-Id: I23184acc4e17d38861d27ab81172048a24c400d2
Reviewed-on: https://skia-review.googlesource.com/10288
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
(cherry picked from commit 3725f0a7dd2916c10bc6d0059821e19a5b4452c3)
Reviewed-on: https://skia-review.googlesource.com/11134
Reviewed-by: Derek Sollenberger <djsollen@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
f3880933092c3226cd7ffd1690fe72c9c0cc376c 24-Mar-2017 Matt Sarett <msarett@google.com> Delete SkColorSpace::ColorSpaceFlags

BUG=skia:

Change-Id: Ia0688876915cd773614ca0c4ccd467cf6e7c603e
Reviewed-on: https://skia-review.googlesource.com/10105
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
cf3f2347c8933596aeba873d4ece597a9339392f 23-Mar-2017 Matt Sarett <msarett@google.com> Add SkTransferFunctionBehavior flag: Use in codec and encoder

This is a step towards removing the non-linear blending flag from
SkColorSpace. The flag on SkColorSpace used to control the premul
behavior - now it is controlled by this option.

BUG=skia:

Change-Id: Ia29bd8c2b0596a93c6aa14332dcd9bd39e388a90
Reviewed-on: https://skia-review.googlesource.com/10008
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
4c55027dbf57d0701361b123e36b8fad46c341c3 21-Mar-2017 Matt Sarett <msarett@google.com> Add support for F32 sources to SkColorSpaceXform

This also subtlely allows clients to convert between F32 and F16.

BUG=skia:

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: Ied5f2295fce00c69d8cf85730be899f3f8597915
Reviewed-on: https://skia-review.googlesource.com/9914
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
b1168a7c9a360bf80b447e2e399bdc5721d5152e 20-Mar-2017 Brian Osman <brianosman@google.com> Improvements to readpixels GM

We don't support unpremultiplied images. Therefore:
- Don't test unpremul source images.
- After doing an unpremultiplying read, make sure to premul before drawing

For this to work with F16, add support for F16 sources to
SkColorSpaceXform.

Public API change is comments-only.
TBR=reed@google.com

BUG=skia:

Change-Id: Ie05b58231e99ca88cd7792b65ffbb4f390b01726
Reviewed-on: https://skia-review.googlesource.com/9900
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
e522f4c455d0d5dbe813f38d16c0d4cd46fa5dee 22-Feb-2017 Matt Sarett <msarett@google.com> Enable legacy premuls in SkColorSpaceXform

***Will allow for simplified Android framework code, they typically
want a color correct transform followed by a gamma encoded premul.
***Chrome does the same, so this will make it easier to replace their
codecs.
***Will decrease code size. Both types of premuls are moved off the
fast path here - one is essentially unused in production and the
other is not "encouraged".
***Will actually make the common case faster: sRGB->sRGB means no
color xform, just premul in SkSwizzler.

BUG=skia:

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: Ia4ec1d273b6f137151f951d37c0ebf975f6b9a3e
Reviewed-on: https://skia-review.googlesource.com/8848
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
319ba3d3a177498095c31696e0aec8b3af25f663 20-Jan-2017 Mike Klein <mtklein@chromium.org> Move shader register setup to SkRasterPipelineBlitter.

We've been seeding the initial values of our registers to x+0.5,y+0.5,
1,0, 0,0,0,0 (useful values for shaders to start with) in all pipelines.
This CL changes that to do so only when blitting, and only when we have
a shader.

The nicest part of this change is that SkRasterPipeline itself no longer
needs to have a concept of y, or what x means. It just marches x
through [x,x+n), and the blitter handles y and layers the meaning of
"dst x coordinate" onto x.

This ought to make SkSplicer a little easier to work with too.

dm --src gm --config f16 srgb 565 all draws the same.

Change-Id: I69d8c1cc14a06e5dfdd6a7493364f43a18f8dec5
Reviewed-on: https://skia-review.googlesource.com/7353
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
5bee0b6de6b3ad1166d067e6b5046b48b8240a29 19-Jan-2017 Matt Sarett <msarett@google.com> Reland "Respect full precision for RGB16 PNGs" (part 2)

This lands all the new xform hooks but no change to src/codec.
So the new decode features are turned off.

I'm relanding this in pieces to try to bisect a
strange MSAN error.

Original CL:
https://skia-review.googlesource.com/c/7085/

BUG=skia:

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN,Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD,Build-Ubuntu-Clang-x86_64-Release-Fast


Change-Id: I451a2a29c73ca475e9e7a5ded58d4948d6b8be19
Reviewed-on: https://skia-review.googlesource.com/7277
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
dfff166db5d5226dc002a22ab3e3097ef971d615 18-Jan-2017 Matt Sarett <msarett@google.com> Revert "Respect full precision for RGB16 PNGs"

This reverts commit 7a090c403da1dad6a2e19f2011158bd894a62d91.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Respect full precision for RGB16 PNGs
>
> BUG=skia:
>
> CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
>
> Change-Id: If58d201daae97bce2f8efbc453c2ec452e682493
> Reviewed-on: https://skia-review.googlesource.com/7085
> Commit-Queue: Matt Sarett <msarett@google.com>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
>

TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,scroggo@google.com,reed@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: Ibd9879bc4f65ca0c2457dd0bfb5eb008d9a8f672
Reviewed-on: https://skia-review.googlesource.com/7183
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
7a090c403da1dad6a2e19f2011158bd894a62d91 17-Jan-2017 Matt Sarett <msarett@google.com> Respect full precision for RGB16 PNGs

BUG=skia:

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: If58d201daae97bce2f8efbc453c2ec452e682493
Reviewed-on: https://skia-review.googlesource.com/7085
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
379938e47bc9edb6edfd21aabefa01aed71dd135 13-Jan-2017 Matt Sarett <msarett@google.com> Use RasterPipeline to support full precision on 16-bit RGBA pngs

Reland of Original Change:
https://skia-review.googlesource.com/6260

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I809984dd9af225103bfbe83492a17c19da7c5e40
Reviewed-on: https://skia-review.googlesource.com/6980
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
25b60833e7c3dd25f2317b3f0e7af07f04b5beba 12-Jan-2017 Matt Sarett <msarett@google.com> Revert "Use RasterPipeline to support full precision on 16-bit RGBA pngs"

This reverts commit bb2339da39ab3ee59121acd911920dafcd4a2f72.

Reason for revert: Breaks MSAN

Original change's description:
> Use RasterPipeline to support full precision on 16-bit RGBA pngs
>
> TODO: Support more precision on 16-bit RGB pngs
>
> BUG=skia:
>
> CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
>
> Change-Id: I89dfef3b4887b9c4895c17309933883ab90ffa4d
> Reviewed-on: https://skia-review.googlesource.com/6260
> Reviewed-by: Mike Reed <reed@google.com>
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Commit-Queue: Matt Sarett <msarett@google.com>
>

TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,scroggo@google.com,reed@google.com,reviews@skia.org
BUG=skia:
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I47579c20af033a75883e2b35567cb9c690ce54b0
Reviewed-on: https://skia-review.googlesource.com/6975
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
bb2339da39ab3ee59121acd911920dafcd4a2f72 12-Jan-2017 Matt Sarett <msarett@google.com> Use RasterPipeline to support full precision on 16-bit RGBA pngs

TODO: Support more precision on 16-bit RGB pngs

BUG=skia:

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I89dfef3b4887b9c4895c17309933883ab90ffa4d
Reviewed-on: https://skia-review.googlesource.com/6260
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
e980155dd5d0cb6a10c9823c351763d50993a08d 09-Jan-2017 Matt Sarett <msarett@google.com> Fix SkColorSpaceXform F16 behavior

After changing the matrix representation, we are no longer guaranteed
that the "a" in "rgba" is zeroed in store_f16_1() opaque.

This fixed Gold:
https://gold.skia.org/search?blame=26a0543579cf7473de2099ce0d056ac8aba83811&head=true&include=false&limit=50&neg=false&pos=false&query=source_type%3DcolorImage&unt=true

Also tacked on an optimization. No need to load alpha when the image
is opaque.

BUG=skia:

Change-Id: I28d80c486b6644eee4a38a7a70f94eb51474e4b0
Reviewed-on: https://skia-review.googlesource.com/6738
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
26a0543579cf7473de2099ce0d056ac8aba83811 04-Jan-2017 Matt Sarett <msarett@google.com> Merge SkColorSpaceXform_XYZ and SkColorSpaceXform_Pipeline

Use the pipeline implementation to handle F32.

This refactor has been broken away from the following mega-CL.
https://skia-review.googlesource.com/c/6260/

Change-Id: I79d8992f8c4a7e4dbf674a78484057a6b7f4f123
Reviewed-on: https://skia-review.googlesource.com/6585
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
2410717f900c2691db880d84a2e03a6a24905ee2 19-Dec-2016 Matt Sarett <msarett@google.com> Fix swapped interpretation of c and e in SkColorSpace_ICC

The ICC errata supports the opposite of what we do.
http://www.color.org/icc_specs2.xalter

TBR=reed@google.com

BUG=skia:

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I18ace7f312926b264e624c30d8cb983eff5c434b
Reviewed-on: https://skia-review.googlesource.com/6277
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
8b4b56ac2927bbb31c634f840916f4ce948d2f53 04-Dec-2016 Matt Sarett <msarett@google.com> Fix max/min error

BUG=skia:

Change-Id: I6a690e843476e31077a90a8312f6335d8ef230f4
Reviewed-on: https://skia-review.googlesource.com/5544
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
d459f3c15adda1544e64a0d5d15bc7970635debd 02-Dec-2016 Matt Sarett <msarett@google.com> Fix Chrome Linux - temporarily turn off xform pipeline

BUG:670620

Change-Id: Ic481d09a7112ef05f53fa1f94a7c155870c43408
Reviewed-on: https://skia-review.googlesource.com/5501
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Jeremy Roman <jbroman@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
abf8ba34c8038b814e67fe7c4dcf6c9915d81698 01-Dec-2016 Matt Sarett <msarett@google.com> SkColorSpaceXform bug fixes attempt 2

(1) Clamping

If we're going to clamp (8888 outputs), we need to clamp properly
to alpha (not 1) when we premultiply. This fix is made in
SkColorSpaceXform_XYZ.

An alternative fix would move all clamping out of the store
functions, to before the gamma encoding. This generally makes sense,
but the "to 2.2 conversion" may introduce NaNs and always needs a
clamp. So another fix is to just have an extra clamp in the store 2.2
function. Since we have two pipelines, let's try this one in
SkColorSpaceXform_Pipeline :).

(2) Correctly handle the memcpy() case.

This is not changed from a previous (reverted) CL.

Looks like this only ever worked for RGBA inputs,
never got updated when we added BGRA inputs.

This probably flew under the radar because the
clients are smart enough to avoid performing a
color xform altogether when the color spaces
match.

BUG=skia:

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I0b59239d2488ce9fdbe11efbd96567e420bb9813
Reviewed-on: https://skia-review.googlesource.com/5464
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
5e15961fa77281540a80ac0d036fefe071c11574 01-Dec-2016 Mike Klein <mtklein@chromium.org> Skip clamps in color xform pipelines if possible.

This does skip clamp_0 when converting sRGB to your default colorspace.

Each clamp is ~2% of the pipeline runtime, so it's small, but might as well.

Change-Id: I2bb0dadf84759c31cc825f9b6b17680e7aa7d9f3
Reviewed-on: https://skia-review.googlesource.com/5467
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
197e311ac9d15696fae929d8f5fcf9d93ec55e18 01-Dec-2016 raftias <raftias@google.com> Optimized gamma table inversion.

Brought calculation into a central place so the loop did not have to
recalculate everything before the previous entry to find the inverse
index. O(n) vs O(n^2). Assumes an increasing (or at least
non-decreasing) table gamma just as the previous code did.

BUG=skia:

Change-Id: I7ea200c06511b3d74745fe4a6e3dde706bbee02f
Reviewed-on: https://skia-review.googlesource.com/5402
Commit-Queue: Robert Aftias <raftias@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
f6878baba8c7cd347e185361bac2eabaef863bfa 01-Dec-2016 Matt Sarett <msarett@google.com> Reland "Add RasterPipeline implementation for SkColorSpaceXform"

This is initially turned on for Linux debug builds,
which allows us to start testing.

Chrome for Android is a really good candidate for
this (will appreciate the code size savings), but
I'd first like to run some tests to understand the
performance/size tradeoffs a little better.

BUG:660416

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: Ifc80e663767df6bb767abb8b12b1ec5cec644ec5
Reviewed-on: https://skia-review.googlesource.com/5452
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
17e494070ab1c76b2e5e4c0780b7a83c737dd84c 01-Dec-2016 Matt Sarett <msarett@google.com> Revert "SkColorSpaceXform bug fixes"

This reverts commit d0fdc0f234b8b55cf418f4db9466d3883deadfb1.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> SkColorSpaceXform bug fixes
>
> (1) Clamp properly!
>
> Finally came to this realization: clamping in the
> store functions (after gamma encoding) is ridiculous.
> It is impossible to know how to clamp premul values
> to alpha when they are already gamma encoded.
>
> I've moved the clamp out of the store function.
> Whew, this actually makes the code look simpler.
>
> And I expect this to fix some buggy images on Gold!
>
> (2) Correctly handle the memcpy() case.
>
> Looks like this only ever worked for RGBA inputs,
> never got updated when we added BGRA inputs.
>
> This probably flew under the radar because the
> clients are smart enough to avoid performing a
> color xform altogether when the color spaces
> match.
>
> BUG=skia:
>
> Change-Id: I4870048105efcbecc70b4bd5f77c39537006363e
> Reviewed-on: https://skia-review.googlesource.com/5389
> Commit-Queue: Mike Klein <mtklein@chromium.org>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
>

TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Id9e4cfdaa7b30a3841e83c4cde16aa7d33acc0f2
Reviewed-on: https://skia-review.googlesource.com/5457
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
b6d4e139b522821933d356ef7d2472816d25340a 01-Dec-2016 Brian Osman <brianosman@google.com> Revert "Add RasterPipeline implementation for SkColorSpaceXform"

This reverts commit dd19ac7d10c7c00dd6e9b1f4c4c6aae729c7e6d4.

Reason for revert: ASAN

Change-Id: I59aacc092398c4db40696a8343d657a5ad7c0f66
Reviewed-on: https://skia-review.googlesource.com/5448
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
dd19ac7d10c7c00dd6e9b1f4c4c6aae729c7e6d4 01-Dec-2016 Matt Sarett <msarett@google.com> Add RasterPipeline implementation for SkColorSpaceXform

This is initially turned on for Linux debug builds,
which allows us to start testing.

Chrome for Android is a really good candidate for
this (will appreciate the code size savings), but
I'd first like to run some tests to understand the
performance/size tradeoffs a little better.

BUG:660416

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I0fb2512216dfc0bda2e5388f9865318eec22291e
Reviewed-on: https://skia-review.googlesource.com/5348
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
d0fdc0f234b8b55cf418f4db9466d3883deadfb1 01-Dec-2016 Matt Sarett <msarett@google.com> SkColorSpaceXform bug fixes

(1) Clamp properly!

Finally came to this realization: clamping in the
store functions (after gamma encoding) is ridiculous.
It is impossible to know how to clamp premul values
to alpha when they are already gamma encoded.

I've moved the clamp out of the store function.
Whew, this actually makes the code look simpler.

And I expect this to fix some buggy images on Gold!

(2) Correctly handle the memcpy() case.

Looks like this only ever worked for RGBA inputs,
never got updated when we added BGRA inputs.

This probably flew under the radar because the
clients are smart enough to avoid performing a
color xform altogether when the color spaces
match.

BUG=skia:

Change-Id: I4870048105efcbecc70b4bd5f77c39537006363e
Reviewed-on: https://skia-review.googlesource.com/5389
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
2563601fc2b0505619f905f86bd249ae630197cc 12-Nov-2016 raftias <raftias@google.com> Initial implementation of a SkColorSpace_A2B xform

There is support for all features of SkColorSpace_A2B.

Tests for these functionality were adapted from
the XYZ xform, plus a CLUT-specific test was added.

Shared functions used by both SkColorSpaceXform_XYZ and SkColorSpaceXform_A2B
have been moved into a shared header.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2449243003
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2449243003
/external/skia/src/core/SkColorSpaceXform.cpp
aa34f7ea58330cb73ea17f01715cb6c7d439fae9 10-Nov-2016 Matt Sarett <msarett@google.com> Clamp parametric gamma values to 0-1 range

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4641

Change-Id: I1c6963da956500deea559d5ece31529add89980a
Reviewed-on: https://skia-review.googlesource.com/4641
Reviewed-by: Robert Aftias <raftias@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
5934646b4937a05d5e8297448ea6613a89f8903a 24-Oct-2016 Matt Sarett <msarett@google.com> Help msvs compile SkColorSpaceXform faster

Allowing MSVS to choose to not inline color_xform_RGBA
will prevent the complexity from exploding.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3884

Change-Id: I31ab0754c6cc375d6d0e71ceb16afef1927bb4e3
Reviewed-on: https://skia-review.googlesource.com/3884
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
df303a6f59a2121c133738d6304d2476689a4fd9 24-Oct-2016 Matt Sarett <msarett@google.com> Use SK_ALWAYS_INLINE in SkColorSpaceXform

Two reasons for this:
(1) We care about the performance of this code, and Windows isn't
very good at inlining. Let's make sure we isntruct the compiler
to inline.
(2) Since landing uses of this in Chrome, we're seeing flaky
LayoutTests that appear to be timing related. I'm (very
optimistically) hoping that this will help.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3744

Change-Id: Ibb6d9c4252c0b8ce62203fe65c7dd296248982c8
Reviewed-on: https://skia-review.googlesource.com/3744
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
a9f64dec63b6f4169ba16f8b6c63fff5a6494029 21-Oct-2016 Matt Sarett <msarett@google.com> Fix for Chrome MSAN

I believe that the complaints are occurring because the |a| vector
might be uninitialized where it is used here. It doesn't actually
matter because we won't use or store that value - it's just a
placeholder.

But we need to make the bot happy.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3800

Change-Id: I1891da9d1d2708008e4606daebf9bb6f96e92fc0
Reviewed-on: https://skia-review.googlesource.com/3800
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
bbf251bf225489a0939fff6df938035a290f4d16 19-Oct-2016 Brian Osman <brianosman@google.com> Hash the gamut of XYZ color spaces, to speed up comparison

Also going to use this to allow caching of GrColorSpaceXforms

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3670

Change-Id: I56ed2dcbdddc22046263f56d68f2d6aea55547c8
Reviewed-on: https://skia-review.googlesource.com/3670
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
9488833428e83c93a7e6002f4d056084fb57112f 18-Oct-2016 raftias <raftias@google.com> Refactored SkColorSpace and added in a Lab PCS GM

The refactoring breaks off A2B0 tag support into a separate
subclass of SkColorSpace_Base, while keeping the current
(besides CLUT) functionality in a XYZTRC subclass.

ICC profile loading is now aware of this and creates the A2B0
subclass when SkColorSpace::NewICC() is called on a profile
in need of the A2B0 functionality.

The LabPCSDemo GM loads a .icc profile containing a LAB PCS and
then runs a Lab->XYZ conversion on an image using it so we can
display it and test out the A2B0 SkColorSpace functionality,
sans a/b/m-curves, as well as the Lab->XYZ conversion code.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2389983002

Review-Url: https://codereview.chromium.org/2389983002
/external/skia/src/core/SkColorSpaceXform.cpp
f489886915034093278353d06c6f1973b2e8b7d2 16-Oct-2016 Matt Sarett <msarett@google.com> Cache dst LUTs in SkColorSpaceXform

This is only useful in the rare case that the dst does not
fall into one of our main paths.

But it's a good optimization, since this does happen,
and typically, the dst won't change.

ColorCodecBench z620 --nonstd --xform_only
Without Patch 511us
With Patch 348us

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3400

Change-Id: Ibf68d9ce7072680465662922f4aa15630545e3d6
Reviewed-on: https://skia-review.googlesource.com/3400
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
d478a99f5c29f0e8fa64b50831f53232f5577f2d 14-Oct-2016 Matt Sarett <msarett@google.com> Refactor color_xform_RGBA() to improve performance

Now that we've identified this as the "fast path", it has
become (somewhat) stable, and I'm ready to ship it, I feel
comfortable playing games with clang to get the behavior
we want.

toSRGB Performance on HP z620:
Before: 370us or 470us (depending on the mood of my computer)
After: 345us (or better, always)

My guess is that clang optimizers do a better job of interleaving
instructions effectively when we put everything into one function.

Regardless of being silly about performance, I also acutally
prefer how the code reads this way.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3440

Change-Id: Id7a40fb9966341ab184a5331b3e4da19b3af3344
Reviewed-on: https://skia-review.googlesource.com/3440
Commit-Queue: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
df44fc5f2bb282557df291e20dbd26c070533aa6 11-Oct-2016 Matt Sarett <msarett@google.com> Add SkColorSpaceTransferFn to SkColorSpace

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3178

Change-Id: I354342d4469cee0e25a7b0d189e925e431da623c
Reviewed-on: https://skia-review.googlesource.com/3178
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
31d097e865f266c8398f45114e4c75c0dfdef058 11-Oct-2016 msarett <msarett@google.com> Add SkColorSpaceXform to the public API

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2390263002

Review-Url: https://codereview.chromium.org/2390263002
/external/skia/src/core/SkColorSpaceXform.cpp
33cbfd75afdd383770bb6253c06ba819a2481a35 06-Oct-2016 Mike Klein <mtklein@chromium.org> Make load4 and store4 part of SkNx properly.

Every type now nominally has Load4() and Store4() methods.
The ones that we use are implemented.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3046
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Change-Id: I7984f0c2063ef8acbc322bd2e968f8f7eaa0d8fd
Reviewed-on: https://skia-review.googlesource.com/3046
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/src/core/SkColorSpaceXform.cpp
c6cc28c35be30f9ea144f433f3f04273674e29ed 29-Sep-2016 raftias <raftias@google.com> Fixed invalid memory access issue in SkColorSpaceXform::apply()

Passing in a large buffer along with a source colour space that
used a CLUT would cause apply() to read freed heap memory, or
for smaller buffers read possibly re-used stack memory.
The code previously likely lucked out due to optimizations
removing most or all of the subsequent stack allocations.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2759

Change-Id: I39f357bce080c4d737a83dd019f0d1ccbc56f995
Reviewed-on: https://skia-review.googlesource.com/2759
Commit-Queue: Robert Aftias <raftias@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/src/core/SkColorSpaceXform.cpp
7802c3db24effa6f3186bff7490a2a8dd85d2a70 28-Sep-2016 msarett <msarett@google.com> Move toXYZD50() to SkColorSpace_Base

SkColorSpace needs to become more versatile, in order to support
profiles that cannot specified with just a "to XYZ D50" matrix.

This a just first step to clean up the public API.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2381553002

Review-Url: https://codereview.chromium.org/2381553002
/external/skia/src/core/SkColorSpaceXform.cpp
5414be06935ce0f990a2df5dccaf9ddec78ec553 22-Sep-2016 msarett <msarett@google.com> G instead of R, thanks Gold

NOTRY=true
TBR=mtklein@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2362863002

Review-Url: https://codereview.chromium.org/2362863002
/external/skia/src/core/SkColorSpaceXform.cpp
cf7b877d62537672b67449bc96858cc1262be5f8 22-Sep-2016 msarett <msarett@google.com> Add BGRA as input format to SkColorSpaceXform

This is immediately useful for webp and I think it's a fair guess
that BGRA src formats are not uncommon.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2353363008

Review-Url: https://codereview.chromium.org/2353363008
/external/skia/src/core/SkColorSpaceXform.cpp
4be0e7cfe0efceeaf4c7a4d598d77c27cfd3e69b 22-Sep-2016 msarett <msarett@google.com> Make SkColorSpaceXform::New() take bare ptrs

There's no need to take sk_sp if we're not going to
ref the ptr.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2360863003

Review-Url: https://codereview.chromium.org/2360863003
/external/skia/src/core/SkColorSpaceXform.cpp
c0444615ed76360f680619ad4d1f92cda6181a50 16-Sep-2016 msarett <msarett@google.com> Support Float32 output from SkColorSpaceXform

* Adds Float32 support to SkColorSpaceXform
* Changes API to allows clients to ask for F32, updates clients to
new API
* Adds Sk4f_load4 and Sk4f_store4 to SkNx
* Make use of new xform in SkGr.cpp

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Committed: https://skia.googlesource.com/skia/+/43d6651111374b5d1e4ddd9030dcf079b448ec47
Review-Url: https://codereview.chromium.org/2339233003
/external/skia/src/core/SkColorSpaceXform.cpp
c71a9b7f53938b4f33f36f48e867b8b72cc1cc61 16-Sep-2016 msarett <msarett@google.com> Revert of Support Float32 output from SkColorSpaceXform (patchset #7 id:140001 of https://codereview.chromium.org/2339233003/ )

Reason for revert:
Hitting an assert

Original issue's description:
> Support Float32 output from SkColorSpaceXform
>
> * Adds Float32 support to SkColorSpaceXform
> * Changes API to allows clients to ask for F32, updates clients to
> new API
> * Adds Sk4f_load4 and Sk4f_store4 to SkNx
> * Make use of new xform in SkGr.cpp
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003
> CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/43d6651111374b5d1e4ddd9030dcf079b448ec47

TBR=brianosman@google.com,mtklein@google.com,scroggo@google.com,mtklein@chromium.org,bsalomon@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2347473007
/external/skia/src/core/SkColorSpaceXform.cpp
43d6651111374b5d1e4ddd9030dcf079b448ec47 16-Sep-2016 msarett <msarett@google.com> Support Float32 output from SkColorSpaceXform

* Adds Float32 support to SkColorSpaceXform
* Changes API to allows clients to ask for F32, updates clients to
new API
* Adds Sk4f_load4 and Sk4f_store4 to SkNx
* Make use of new xform in SkGr.cpp

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2339233003
/external/skia/src/core/SkColorSpaceXform.cpp
be362774f9b9e8964544a579281603ed995e6e5a 14-Sep-2016 msarett <msarett@google.com> Don't let the compiler complain that |a| is uninit

TBR=mtklein@google.com
NOTRY=true
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339793003

Review-Url: https://codereview.chromium.org/2339793003
/external/skia/src/core/SkColorSpaceXform.cpp
7bbda991af353fbe6b34132132d211d23a3dba8c 14-Sep-2016 msarett <msarett@google.com> Store SkColorSpaceXform gamma LUTs in a malloced field

In order of likelihood:
(1) Tables are never used, since gamma is recognized and named.
(2) Only use one table, since all three gammas are the same.
(3) Actually need three tables.

No reason to waste a bunch of space for these tables on
SkColorSpaceXform, when it will likely be unused.

This will be more efficient in lots of cases, but is particularly
useful when the client really only wants a gamut xform.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2336913005

Review-Url: https://codereview.chromium.org/2336913005
/external/skia/src/core/SkColorSpaceXform.cpp
591971d02a8e22dac0955c0f07b7cf500a89d5cc 14-Sep-2016 msarett <msarett@google.com> Convert back to 0-255 scale before storing linear bytes

TBR=mtklein@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2338203005

Review-Url: https://codereview.chromium.org/2338203005
/external/skia/src/core/SkColorSpaceXform.cpp
8bbcd5aab81dc0742c3367479c0c9d97363b1203 14-Sep-2016 msarett <msarett@google.com> Reduce overhead for linear color xforms

We used to build src and dst transfer fn tables
every time a new xform was created with linear
src and dst. Now we don't compute them because
we don't need them.

This will make SkColorSpaceXform a far better
option for any xforms with float or half-float
inputs or outputs, particularly on a small number
of pixels.

This CL also moves SkColorSpaceXform closer to
what I anticipate will be the eventual 'API design'.
I think apply() will want to take a SrcColorType enum
(not created yet because it's not necessary yet) and
a DstColorType enum (still using SkColorType because
there's not yet a reason not to).

Performance changes:
toSRGB 341us -> 366us
to2Dot2 404us -> 403us
toF16 318us -> 304us

There's no reason for toSRGB or to2Dot2 to change.
The refactor seems to have caused the compiler to
order the instructions a little differently...
This is something to come back to if we need to
squeeze more performance out of sRGB. For now,
let's not be held up by something we don't control.

F16 likely improves because we are no longer
(unnecessarily) building the linear tables.

Code size gets a little bigger. Measuring
SkColorSpaceXform size as a percentage of src/ size,
we go from 0.8% to 1.4%.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2335723002

Review-Url: https://codereview.chromium.org/2335723002
/external/skia/src/core/SkColorSpaceXform.cpp
de68d6c4616d86621373d88100002ddfdb9c08e3 09-Sep-2016 brianosman <brianosman@google.com> Fix storage of gamut transform matrices in SkColorSpace

We were effectively storing the transpose, which made all of our
operations on individual colors, and our concatenation of matrices
awkward and backwards.

I'm planning to push this further into Ganesh, where I had incorrectly
adjusted to the previous layout, treating colors as row vectors in the
shaders.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2324843003

Review-Url: https://codereview.chromium.org/2324843003
/external/skia/src/core/SkColorSpaceXform.cpp
55bcc8e0af3415601b3d62252a0d579fbe87c85a 09-Sep-2016 msarett <msarett@google.com> Delete some LUTs from SkColorSpaceXform

No need to keep these around. In the rare case that these are
needed, we can just go ahead and build them.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2326043002

Review-Url: https://codereview.chromium.org/2326043002
/external/skia/src/core/SkColorSpaceXform.cpp
971cd496b9e25f87f3a75a0015c203322907136a 08-Sep-2016 brianosman <brianosman@google.com> Cache the inverse matrix on SkColorSpace. Rename xyz() to toXYZ().

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2323003002

Review-Url: https://codereview.chromium.org/2323003002
/external/skia/src/core/SkColorSpaceXform.cpp
600c737b64eae2c7379442ae2c852853cce3a278 07-Sep-2016 msarett <msarett@google.com> Delete SkColorSpace::gammaNamed() from public API

Move fGammaNamed to SkColorSpace_Base.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2318663003

Review-Url: https://codereview.chromium.org/2318663003
/external/skia/src/core/SkColorSpaceXform.cpp
9dc6cf6b8833d36c29a23d2519989b069745fcd5 24-Aug-2016 msarett <msarett@google.com> Fix generic color space xform, ColorSpaceXformTest

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275563002

Review-Url: https://codereview.chromium.org/2275563002
/external/skia/src/core/SkColorSpaceXform.cpp
8ae991e433d2c0814ea5579613f00173805ff057 22-Aug-2016 mtklein <mtklein@chromium.org> Flush denorm half floats to zero.

I think we convinced ourselves that denorms, while a good chunk of half floats,
cover a rather small fraction of the representable range, which is always
close enough to zero to flush.

This makes both paths of the conversion to or from float considerably simpler.

These functions now work for zero-or-normal half floats (excluding infinite, NaN).
I'm not aware of a term for this class so I've called them "ordinary".

A handful of GMs and SKPs draw differently in --config f16, but all imperceptibly.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2256023002

Review-Url: https://codereview.chromium.org/2256023002
/external/skia/src/core/SkColorSpaceXform.cpp
200877eecaba782e56a1dd9e13a92f36d7b1ba12 15-Aug-2016 msarett <msarett@google.com> Optimize color xforms when src and dst are matching

Useful when:
(1) Client does not realize src and dst match (calls color
xform anyway).
(2) Client wants half floats, src and dst have matching
gamuts
(3) Client wants premul (done correctly in linear space),
src and dst have matching gamuts.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2206403003

Review-Url: https://codereview.chromium.org/2206403003
/external/skia/src/core/SkColorSpaceXform.cpp
d1ec89b1aca8f37a460a425259a23275f4d9a81d 03-Aug-2016 msarett <msarett@google.com> Perform color correction on png decodes

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184543003
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2184543003
/external/skia/src/core/SkColorSpaceXform.cpp
15ee3deee8aca2bf6e658449f25ee34a8153e6ee 02-Aug-2016 msarett <msarett@google.com> Refactor of SkColorSpaceXformOpts

(1) Performance is better or stays the same.

(2) Code is split into functions (RasterPipeline-ish
design). IMO, it's not really more or less readable.
But I think it's now much easier add capabilities,
apply optimizations, or do more refactors. Or to
actually use RasterPipeline. I help back from trying
any of these to try to keep this CL sane.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2194303002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2194303002
/external/skia/src/core/SkColorSpaceXform.cpp
a714bc39294f19500269c8ec536139f75c4b1f25 29-Jul-2016 msarett <msarett@google.com> Fix various SkColorSpace bugs

(1) Fixes serialization/deserialization of wacky SkColorSpaces
(2) Fix gamma equals checking

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2194903002

Review-Url: https://codereview.chromium.org/2194903002
/external/skia/src/core/SkColorSpaceXform.cpp
50ce1f28ffede3fa3e38d330d4114ee52b387848 29-Jul-2016 msarett <msarett@google.com> Add color space xform support to SkJpegCodec (includes F16!)

Also changes SkColorXform to support:
RGBA->RGBA
RGBA->BGRA

Instead of:
RGBA->SkPMColor

TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Committed: https://skia.googlesource.com/skia/+/73d55332e2846dd05e9efdaa2f017bcc3872884b
Review-Url: https://codereview.chromium.org/2174493002
/external/skia/src/core/SkColorSpaceXform.cpp
39979d8c6b97889f600a212cfc9b063360f3de2f 29-Jul-2016 msarett <msarett@google.com> Revert of Add color space xform support to SkJpegCodec (includes F16!) (patchset #9 id:260001 of https://codereview.chromium.org/2174493002/ )

Reason for revert:
Breaking MSAN

Original issue's description:
> Add color space xform support to SkJpegCodec (includes F16!)
>
> Also changes SkColorXform to support:
> RGBA->RGBA
> RGBA->BGRA
>
> Instead of:
> RGBA->SkPMColor
>
> TBR=reed@google.com
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
> CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/73d55332e2846dd05e9efdaa2f017bcc3872884b

TBR=mtklein@google.com,reed@google.com,herb@google.com,brianosman@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2195523002
/external/skia/src/core/SkColorSpaceXform.cpp
73d55332e2846dd05e9efdaa2f017bcc3872884b 29-Jul-2016 msarett <msarett@google.com> Add color space xform support to SkJpegCodec (includes F16!)

Also changes SkColorXform to support:
RGBA->RGBA
RGBA->BGRA

Instead of:
RGBA->SkPMColor

TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2174493002
/external/skia/src/core/SkColorSpaceXform.cpp
3418c0e797e2ee841d1c031ca9d7a5ba73205f51 26-Jul-2016 msarett <msarett@google.com> Delete SkDefaultXform, handle edge cases in SkColorSpaceXform_Base

"Edge" cases include:
(1) Matrices with translation
(2) colorLUTs

Performance on HP z620:

201295.jpg
to2Dot2: 386us -> 414us
toSRGB: 346us -> 371us
toHalf: 282us -> 302us

strange0-translate.jpg
toSRGB: 1060us -> 244us

strange1-colorLUT.jpg
toSRGB: 2.74ms -> 2.00ms

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2177173003
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2177173003
/external/skia/src/core/SkColorSpaceXform.cpp
959d45b43357a40854938586c303177c6aa53220 21-Jul-2016 msarett <msarett@google.com> Miscellaneous color space refactors

(1) Use float matrix[16] everywhere (enables future code
sharing).
(2) SkColorLookUpTable refactors
*** Store in a single allocation (like SkGammas)
*** Eliminate fOutputChannels (we always require 3,
and probably always will)
(3) Change names of read_big_endian_* helpers

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2166093003
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2166093003
/external/skia/src/core/SkColorSpaceXform.cpp
1b93bd1e6eba3d14593490e4e24a34546638c8da 21-Jul-2016 msarett <msarett@google.com> Refactor parsing and storage of SkGammas

Benefits:
(1) Parses and stores gamma tags in a single allocation.
(2) Recognizes equal gamma tags to skip parsing work and
save memory.

Non-Benefits:
(1) Not less complicated.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2117773002

Committed: https://skia.googlesource.com/skia/+/2ea944c2b710caf29d4795ac953bad14224796f7
Committed: https://skia.googlesource.com/skia/+/959ccc1f3f49e1ddeb51c32c30ac4a2d94653856
Review-Url: https://codereview.chromium.org/2117773002
/external/skia/src/core/SkColorSpaceXform.cpp
456bf30d321292da7f15d1af35fd94fbb6a4bb59 21-Jul-2016 msarett <msarett@google.com> Revert of Refactor parsing and storage of SkGammas (patchset #8 id:280001 of https://codereview.chromium.org/2117773002/ )

Reason for revert:
Tests failing

Original issue's description:
> Refactor parsing and storage of SkGammas
>
> Benefits:
> (1) Parses and stores gamma tags in a single allocation.
> (2) Recognizes equal gamma tags to skip parsing work and
> save memory.
>
> Non-Benefits:
> (1) Not less complicated.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2117773002
>
> Committed: https://skia.googlesource.com/skia/+/2ea944c2b710caf29d4795ac953bad14224796f7
> Committed: https://skia.googlesource.com/skia/+/959ccc1f3f49e1ddeb51c32c30ac4a2d94653856

TBR=reed@google.com,brianosman@google.com,mtklein@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2171623002
/external/skia/src/core/SkColorSpaceXform.cpp
959ccc1f3f49e1ddeb51c32c30ac4a2d94653856 21-Jul-2016 msarett <msarett@google.com> Refactor parsing and storage of SkGammas

Benefits:
(1) Parses and stores gamma tags in a single allocation.
(2) Recognizes equal gamma tags to skip parsing work and
save memory.

Non-Benefits:
(1) Not less complicated.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2117773002

Committed: https://skia.googlesource.com/skia/+/2ea944c2b710caf29d4795ac953bad14224796f7
Review-Url: https://codereview.chromium.org/2117773002
/external/skia/src/core/SkColorSpaceXform.cpp
2aec3ffe32558505d7314f064b88ecb7f13b1c16 20-Jul-2016 msarett <msarett@google.com> Revert of Refactor parsing and storage of SkGammas (patchset #7 id:220001 of https://codereview.chromium.org/2117773002/ )

Reason for revert:
Broken bots.

Original issue's description:
> Refactor parsing and storage of SkGammas
>
> Benefits:
> (1) Parses and stores gamma tags in a single allocation.
> (2) Recognizes equal gamma tags to skip parsing work and
> save memory.
>
> Non-Benefits:
> (1) Not less complicated.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2117773002
>
> Committed: https://skia.googlesource.com/skia/+/2ea944c2b710caf29d4795ac953bad14224796f7

TBR=reed@google.com,brianosman@google.com,mtklein@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2159253005
/external/skia/src/core/SkColorSpaceXform.cpp
2ea944c2b710caf29d4795ac953bad14224796f7 20-Jul-2016 msarett <msarett@google.com> Refactor parsing and storage of SkGammas

Benefits:
(1) Parses and stores gamma tags in a single allocation.
(2) Recognizes equal gamma tags to skip parsing work and
save memory.

Non-Benefits:
(1) Not less complicated.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2117773002

Review-Url: https://codereview.chromium.org/2117773002
/external/skia/src/core/SkColorSpaceXform.cpp
9ce3a543c92a73e6daca420defc042886b3f2019 15-Jul-2016 msarett <msarett@google.com> Add capability for SkColorXform to output half floats

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2147763002
CQ_INCLUDE_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2147763002
/external/skia/src/core/SkColorSpaceXform.cpp
6006f678e78af7b6f67a454cd4bc213048983f9d 11-Jul-2016 msarett <msarett@google.com> Make all color xforms 'fast' (step 1)

This refactors opt code to handle arbitrary src and dst
gammas that are specified by tables.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2130013002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2130013002
/external/skia/src/core/SkColorSpaceXform.cpp
ac41bac40f5a80d2bc5ccec584c23478a6900179 08-Jul-2016 mtklein <mtklein@chromium.org> Move sRGB <-> linear conversion components to their own files.

This makes them a little easier to use outside SkColorXform code.

I've added some notes about how best to use them and their eccentricities, and added a test.

Ultimately any software sRGB <-> linear conversion should funnel somehow through here.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2128893002
CQ_EXTRA_TRYBOTS=client.skia.android:Test-Android-GCC-Nexus5-CPU-NEON-Arm7-Release-Trybot;client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Committed: https://skia.googlesource.com/skia/+/45e58c8807179638980aae8503573b950b844e4c
Review-Url: https://codereview.chromium.org/2128893002
/external/skia/src/core/SkColorSpaceXform.cpp
e930459a18ea099859f7d0076802458be00a6b4c 08-Jul-2016 mtklein <mtklein@google.com> Revert of Move sRGB <-> linear conversion components to their own files. (patchset #5 id:80001 of https://codereview.chromium.org/2128893002/ )

Reason for revert:
Monotonicity assert is failing on ARM. (Different rsqrt() and invert() precision?) Will investigate a bit tomorrow... might reland with the test TODO.

Original issue's description:
> Move sRGB <-> linear conversion components to their own files.
>
> This makes them a little easier to use outside SkColorXform code.
>
> I've added some notes about how best to use them and their eccentricities, and added a test.
>
> Ultimately any software sRGB <-> linear conversion should funnel somehow through here.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2128893002
> CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/45e58c8807179638980aae8503573b950b844e4c

TBR=reed@google.com,msarett@google.com,mtklein@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2131793002
/external/skia/src/core/SkColorSpaceXform.cpp
45e58c8807179638980aae8503573b950b844e4c 07-Jul-2016 mtklein <mtklein@chromium.org> Move sRGB <-> linear conversion components to their own files.

This makes them a little easier to use outside SkColorXform code.

I've added some notes about how best to use them and their eccentricities, and added a test.

Ultimately any software sRGB <-> linear conversion should funnel somehow through here.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2128893002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2128893002
/external/skia/src/core/SkColorSpaceXform.cpp
0f83e0151f757ecd8d55d55ffefef58ecb11a97b 24-Jun-2016 msarett <msarett@google.com> Add support for 3D colorLUTs to SkColorXform

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2097553002

Review-Url: https://codereview.chromium.org/2097553002
/external/skia/src/core/SkColorSpaceXform.cpp
b39067696ad08a26bbe49b71a71f0546dc42a075 22-Jun-2016 msarett <msarett@google.com> Use a table-based implementation of SkDefaultXform

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2084673002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2084673002
/external/skia/src/core/SkColorSpaceXform.cpp
d2809573deb7b99e764f7f71fe34a5b5322df0b2 20-Jun-2016 msarett <msarett@google.com> Support sRGB dsts in opt code

201295.jpg on HP z620 (300x280)

QCMS Xform 0.418 ms
Skia NEW Xform 0.378 ms

Vs QCMS 1.11x

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2078623002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2078623002
/external/skia/src/core/SkColorSpaceXform.cpp
dea0340cadb759932e53416a657f5ea75fee8b5f 16-Jun-2016 msarett <msarett@google.com> Implement fast, correct gamma conversion for color xforms

201295.jpg on HP z620
(300x280, most common form of sRGB profile)

QCMS Xform 0.495 ms
Skia Old Xform 0.235 ms
Skia NEW Xform 0.423 ms

Vs Old Code 0.56x
Vs QCMS 1.17x

So to summarize, we are now much slower than before,
but still a bit faster than QCMS. And now we are also
far more accurate than QCMS :).

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2060823003
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2060823003
/external/skia/src/core/SkColorSpaceXform.cpp
c4ce6b592487305de251bbebaf8eeee38371b877 16-Jun-2016 msarett <msarett@google.com> Differentiate between sRGBGamma and 2Dot2Gamma

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2067833003

Review-Url: https://codereview.chromium.org/2067833003
/external/skia/src/core/SkColorSpaceXform.cpp
a9e878c836994bce695274b4c28890290139dcdf 08-Jun-2016 msarett <msarett@google.com> Optimize color xforms with 2.2 gammas for SSE2

Because we recognize commonly used gamma tables and
parameters as 2.2f, about 98% of jpegs with color profiles
will pass through this xform (assuming the dst is also
2.2f). Sample size is 10,322 jpegs.

I won't go crazy with performance numbers because this is
a work in progress, particularly in terms of correctness.

201295.jpg on HP z620
(300x280, most common form of sRGB profile)

Decode Time + QCMS Xform 1.28 ms
QCMS Xform Only 0.495 ms
Decode Time + Skia Opt Xform 1.01 ms
Skia Opt Xform Only 0.235 ms

Decode Time + Xform Speed-up 1.27x
Xform Only Speed-up 2.11x

FWIW, Skia xform time before these optimizations was
41.1 ms. But we expected that code to be slow.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2046013002
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review-Url: https://codereview.chromium.org/2046013002
/external/skia/src/core/SkColorSpaceXform.cpp
dc27a648d2ff23b2e96232c00c15976c46e1d48d 06-Jun-2016 msarett <msarett@google.com> Add SkDefaultXform as a catch-all to handle color conversions

I'd like to start optimizing the common case for color xforms,
but before doing that, I think it makes sense to have correct
code to support all xforms.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2038823002

Review-Url: https://codereview.chromium.org/2038823002
/external/skia/src/core/SkColorSpaceXform.cpp
9876ac5b3016e5353c072378ac1545a0a2270757 01-Jun-2016 msarett <msarett@google.com> Create SkColorSpaceXform to handle color conversions

Also adds testing of qcms color correction, so we can compare
SkColorSpaceXform outputs to qcms outputs.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002

Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c

Review-Url: https://codereview.chromium.org/1952063002
/external/skia/src/core/SkColorSpaceXform.cpp
4a603fc591dcd36b3cb47344c244ecbbbaf179f4 01-Jun-2016 msarett <msarett@google.com> Revert of Create SkColorSpaceXform to handle color conversions (patchset #10 id:260001 of https://codereview.chromium.org/1952063002/ )

Reason for revert:
Google3 can't find qcms

Original issue's description:
> Create SkColorSpaceXform to handle color conversions
>
> Also adds testing of qcms color correction, so we can compare
> SkColorSpaceXform outputs to qcms outputs.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002
>
> Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c

TBR=reed@google.com,scroggo@google.com,mtklein@google.com,herb@google.com,brianosman@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2023093004
/external/skia/src/core/SkColorSpaceXform.cpp
740cc88ee3d63c75e52d31238f2a32600cc57a8c 01-Jun-2016 msarett <msarett@google.com> Create SkColorSpaceXform to handle color conversions

Also adds testing of qcms color correction, so we can compare
SkColorSpaceXform outputs to qcms outputs.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002

Review-Url: https://codereview.chromium.org/1952063002
/external/skia/src/core/SkColorSpaceXform.cpp