Improve naive SkColorXform to half floats
authormsarett <msarett@google.com>
Tue, 19 Jul 2016 16:07:55 +0000 (09:07 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 19 Jul 2016 16:07:55 +0000 (09:07 -0700)
commit6bdbf4412bd1a6fe26be1042ccf080174b13021f
treeb25a250336c9de632cfc40a2e6204626620f099d
parent9061aa4217cabc75aca24f929f370c9a82208e73
Improve naive SkColorXform to half floats

This should give us a good baseline to explore using SkRasterPipeline.

A particular colorxform to half float drops from 425us to 282us on my desktop.

Color Xform to Half Float (HP z620)
Original                              425us
Trans16 (not 32)                      355us
Vector Trans16                        378us
Trans16 + Keep Halfs in Vector        335us
Vector Trans16 + Keep Halfs in Vector 282us
Final                                 282us

Color Xform to Half Float (Nexus 5X)
Original                              556us
Final                                 472us

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2159993003
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/2159993003
bench/ColorCodecBench.cpp
bench/ColorCodecBench.h
src/core/SkHalf.h
src/core/SkMipMap.cpp
src/core/SkNx.h
src/core/SkXfermodeF16.cpp
src/effects/gradients/Sk4fGradientPriv.h
src/opts/SkColorXform_opts.h
src/opts/SkNx_neon.h
src/opts/SkNx_sse.h
tests/Float16Test.cpp