diff options
author | msarett <msarett@google.com> | 2016-06-08 14:43:53 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-08 14:43:53 -0700 |
commit | a9e878c836994bce695274b4c28890290139dcdf (patch) | |
tree | 0bb9f71f6606514ae0d291c03f0893682f5bd42e /src/core/SkOpts.cpp | |
parent | dd40483534f57df206020c174cb56e2b2c258015 (diff) |
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
Diffstat (limited to 'src/core/SkOpts.cpp')
-rw-r--r-- | src/core/SkOpts.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/SkOpts.cpp b/src/core/SkOpts.cpp index 6d3e6c9fea..8dec3fad0f 100644 --- a/src/core/SkOpts.cpp +++ b/src/core/SkOpts.cpp @@ -16,6 +16,7 @@ #include "SkBlitRow_opts.h" #include "SkBlurImageFilter_opts.h" #include "SkColorCubeFilter_opts.h" +#include "SkColorXform_opts.h" #include "SkMorphologyImageFilter_opts.h" #include "SkSwizzler_opts.h" #include "SkTextureCompressor_opts.h" @@ -76,6 +77,9 @@ namespace SkOpts { decltype(srcover_srgb_srgb) srcover_srgb_srgb = sk_default::srcover_srgb_srgb; + decltype(color_xform_2Dot2_RGBA_to_8888) color_xform_2Dot2_RGBA_to_8888 = + sk_default::color_xform_2Dot2_RGBA_to_8888; + // Each Init_foo() is defined in src/opts/SkOpts_foo.cpp. void Init_ssse3(); void Init_sse41(); |