Go to file
mtklein 9b777967b1 sk4px the rest of the easy xfermodes.
Adds and uses fastMulDiv255Round() where possible,
which approximates x*y/255 as (x*y+x)/256.  Seems like a sizeable
speedup, as seen below on Exclusion, Screen, and Modulate.  The
existing NEON code uses this approximation for
{Src,Dst}x{In,Out,Over}, and without it we'd regress speed there.

This will require rebaselines whether or not we use this
approximation: the x86 bots change if we do, the ARM bots change
if we don't.  None of the diffs are significant.

Desktop:
   Xfermode_Screen_aa	5.82ms -> 5.54ms	0.95x
 Xfermode_Modulate_aa	5.67ms -> 5.36ms	0.95x
Xfermode_Exclusion_aa	6.18ms -> 5.81ms	0.94x
   Xfermode_Exclusion	5.03ms -> 4.24ms	0.84x
      Xfermode_Screen	4.51ms -> 3.59ms	0.8x
    Xfermode_Modulate	 4.2ms -> 3.19ms	0.76x
     Xfermode_DstOver	6.73ms -> 3.88ms	0.58x
      Xfermode_SrcOut	6.47ms -> 3.48ms	0.54x
       Xfermode_SrcIn	6.46ms -> 3.46ms	0.54x
      Xfermode_DstOut	6.49ms -> 3.41ms	0.52x
       Xfermode_DstIn	 6.5ms -> 3.32ms	0.51x
      Xfermode_Src_aa	9.53ms -> 4.75ms	0.5x
    Xfermode_Clear_aa	9.65ms ->  4.8ms	0.5x
    Xfermode_DstIn_aa	11.5ms -> 5.57ms	0.49x
  Xfermode_DstOver_aa	11.6ms -> 5.63ms	0.49x
   Xfermode_SrcOut_aa	11.6ms ->  5.5ms	0.47x
    Xfermode_SrcIn_aa	11.7ms -> 5.51ms	0.47x
   Xfermode_DstOut_aa	11.7ms ->  5.4ms	0.46x

N7 performance is close enough to 1x that I'm not sure whether
this is a net win, net loss, or truly neutral.  I figure the bots will
show that.

I experimented with another approximation,
(x*(255-y))/255 ≈ (x*(256-y))/256.  This was inconclusive, so I'm
leaving it out for now.

The remaining modes are the complicated conditional ones.

BUG=skia:

Review URL: https://codereview.chromium.org/1141953004
2015-05-18 07:03:01 -07:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Add _aa variants of Xfermode benches. 2015-05-13 11:54:00 -07:00
bin Make the c and ac scripts work with sh and without bin in PATH 2015-05-15 05:35:50 -07:00
debugger Get debugger compiling again 2015-05-04 10:42:05 -07:00
dm DM: use SkFunction to make required argument type clearer. 2015-05-07 10:53:34 -07:00
example C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
experimental Revert of Revert of stop calling SkScalarDiv (patchset #1 id:1 of https://codereview.chromium.org/1138263002/) 2015-05-12 10:37:34 -07:00
forth Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gm Revert of Font variations. (patchset #26 id:500001 of https://codereview.chromium.org/1027373002/) 2015-05-15 11:30:41 -07:00
gyp Gyp: Sanity Part II (GM+Tests) 2015-05-17 06:47:49 -07:00
include Revert of Font variations. (patchset #26 id:500001 of https://codereview.chromium.org/1027373002/) 2015-05-15 11:30:41 -07:00
platform_tools Android scripts: add --verbose, fix missing 'source android_setup' 2015-05-14 06:37:23 -07:00
resources Revert of Font variations. (patchset #26 id:500001 of https://codereview.chromium.org/1027373002/) 2015-05-15 11:30:41 -07:00
samplecode Revert of Revert of stop calling SkScalarDiv (patchset #1 id:1 of https://codereview.chromium.org/1138263002/) 2015-05-12 10:37:34 -07:00
site Gyp: Sanity Part II (GM+Tests) 2015-05-17 06:47:49 -07:00
src sk4px the rest of the easy xfermodes. 2015-05-18 07:03:01 -07:00
tests The path ops builder code needs to determine the winding of each contour added, and reverse windings if the contours are nested in other contours. 2015-05-18 05:12:56 -07:00
third_party Enable both static and dynamically linked libpng 2015-04-03 12:35:27 -07:00
tools Replace self.NavigateToPage with self.Navigate(self.url) for skia page sets 2015-05-16 15:47:02 -07:00
.gitignore git: add skps to .gitignore 2015-02-13 18:57:33 -08:00
AUTHORS Return cropBitmap 2015-04-15 05:48:54 -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 add new Skia team member to committers list 2015-02-03 11:10:57 -08:00
DEPS Update our libjpeg to the version used by Chromium. 2015-04-20 06:58:49 -07:00
Doxyfile C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla} 2015-03-25 18:17:32 -07:00
gyp_skia Support SKIA_OUT on Mac and ChromeOS 2015-05-04 08:04:28 -07:00
gyp_skia.py Roll gyp deps from 1765 to 1796. 2013-11-21 18:11:14 +00:00
HASHTAGS Fix cr SKPs naming 2015-03-31 08:03:02 -07:00
LICENSE Manually update copyright notices in files that defied the automated process 2011-07-28 14:24:55 +00:00
make.bat Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
make.py Run gyp on Win with --no-parallel -G config=$(BUILDTYPE), fix pylint 2015-03-03 13:15:38 -05:00
Makefile Run gyp with --no-parallel -G config=$(BUILDTYPE) 2015-03-03 06:05:56 -08:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py Add presubmit to run {dm,nanobench}_flags.py test when changed. 2015-05-05 10:28:44 -07:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium add root files from chrome 2013-08-13 19:11:15 +00: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 2015-05-17 01:14:01 -07:00
whitespace.txt whitespace change (testing flaky bots) 2015-05-08 11:39:26 -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.