Go to file
mtklein d58f840650 arithmetic mode with Sk4f
After reading the SSE version, I figured I'd show off the new hotness a little.  This'll get us SSE, NEON and portable implementations all in one easy to read package.

Since we've been talking about it, it's worth noting the several ways this implementation is still not constant time:
  - short circuits on 0x00 and 0xff coverage;
  - floating point multiplication with untrusted k1-k4; if someone figures out a clever way to sometimes create denorm floats and sometimes not, there's a gigantic performance difference.

I would hazard the pin is constant time now though.

I've also fixed the lerp to lerp between dst and r instead of src and r.  That can't have been right.

curr/maxrss	loops	min	median	mean	max	stddev	samples   	config	bench
   9/9   MB	1	25.5ms	25.5ms	25.5ms	25.5ms	0%	▃▁▁▃▂▇▅▆▇█	8888	Xfermode_arithmetic_enforce_pm_aa
   9/9   MB	1	24.1ms	24.2ms	24.2ms	24.3ms	0%	▄▃▁▄█▆▆█▃█	8888	Xfermode_arithmetic_aa
   9/9   MB	1	102ms	102ms	102ms	103ms	0%	▁▅▂▆▂█▂█▁▂	8888	Xfermode_arithmetic_enforce_pm
   9/9   MB	1	94.8ms	95.4ms	95.2ms	95.8ms	0%	▅▅▁▁▁▁▄▇█▇	8888	Xfermode_arithmetic

~~~~>

curr/maxrss	loops	min	median	mean	max	stddev	samples   	config	bench
   9/9   MB	1	9.71ms	9.74ms	9.73ms	9.78ms	0%	█▅▄▄▁▂▂▂▄▄	8888	Xfermode_arithmetic_enforce_pm_aa
   9/9   MB	1	9.5ms	9.57ms	9.58ms	9.7ms	1%	▂▁█▅▂▂▆▃▄▄	8888	Xfermode_arithmetic_aa
   9/9   MB	1	21.8ms	21.8ms	21.8ms	21.9ms	0%	█▂▂▂▂▂▂▁▄▂	8888	Xfermode_arithmetic_enforce_pm
   9/9   MB	1	16.5ms	16.6ms	16.6ms	16.6ms	0%	▃█▁▁▄▄▁▁▆▅	8888	Xfermode_arithmetic

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1873963003
CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Review URL: https://codereview.chromium.org/1873963003
2016-04-10 06:23:28 -07:00
animations
bench Update LightingImageFilter to sk_sp 2016-04-08 16:28:09 -07:00
bin Fix gyp-and-sync for windows 2016-02-22 12:59:53 -08:00
cmake Move SkGLContext and some GrGLInterface implementations to skgputest module 2016-03-30 18:56:20 -07:00
debugger Fix old debugger for sk_sp changes 2016-03-25 07:04:35 -07:00
dm Fix lazy coding in ViaSingletonPictures. 2016-04-06 15:01:57 -07:00
example switch surface to sk_sp 2016-03-23 18:59:25 -07:00
experimental change flattenable factory to return sk_sp 2016-04-03 09:11:13 -07:00
fuzz Update LightingImageFilter to sk_sp 2016-04-08 16:28:09 -07:00
gm Update LightingImageFilter to sk_sp 2016-04-08 16:28:09 -07:00
gyp remove unused BML (binary xml) code 2016-04-09 11:09:49 -07:00
include remove unused BML (binary xml) code 2016-04-09 11:09:49 -07:00
infra More iOS swarming bot fixes 2016-04-06 11:38:55 -07:00
platform_tools Add support for pyadb to setup_adb.sh 2016-04-07 10:57:27 -07:00
resources Parse icc profiles and exif orientation from jpeg markers 2016-03-21 08:04:40 -07:00
samplecode Update LightingImageFilter to sk_sp 2016-04-08 16:28:09 -07:00
site Add note about Chromium's use of old libstdc++ to docs. 2016-03-21 07:46:28 -07:00
src arithmetic mode with Sk4f 2016-04-10 06:23:28 -07:00
tests Update LightingImageFilter to sk_sp 2016-04-08 16:28:09 -07:00
third_party Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
tools More cleanup in the Vulkan viewer 2016-04-08 12:51:45 -07:00
.gitignore Ignore sampleapp_prefs.txt in git. 2016-03-24 12:20:02 -07:00
AUTHORS Add AVX/AVX2 support for runtime check 2016-04-08 15:31:45 -07:00
codereview.settings Automatically add a docs preview link and NOTRY=true when there are only docs changes. 2015-02-26 10:16:13 -08:00
CONTRIBUTING Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
CQ_COMMITTERS Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
DEPS Enable RAW codec for Windows 2016-04-06 06:47:15 -07:00
Doxyfile Documentation: SkCanvas API 2015-05-19 10:21:29 -07:00
gyp_skia Make Win runtime DLLs writeable before overwriting 2016-03-18 08:33:38 -07:00
gyp_skia.py Roll gyp deps from 1765 to 1796. 2013-11-21 18:11:14 +00:00
LICENSE Include resources directory in google3 sync. 2015-10-20 13:00:48 -07:00
make.bat Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
make.py GYP: remove stale skia_scalar gyp variable 2015-11-10 13:25:12 -05:00
Makefile Add visualbench as valid target to Makefile 2015-12-18 08:05:06 -08:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py 10.9 is no more 2016-02-25 06:52:18 -08:00
public.bzl switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium Update README.chromium. 2015-06-11 13:19:24 -07:00
SK_IMAGE_VERSION Update SK_IMAGE_VERSION to 3 2016-02-23 08:14:19 -08:00
skia.gyp Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
SKP_VERSION Update SKP version 2016-04-10 00:30:13 -07:00
whitespace.txt Reland of Whitespace change to test Bugdroid+AutoRoll (patchset #1 id:1 of https://codereview.chromium.org/1861713002/ ) 2016-04-05 10:12:56 -07:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.