Commit Graph

17440 Commits

Author SHA1 Message Date
halcanary
7be0ce0ab1 SkPDF: Add Sfntly to DEPS, gyp
Note: this can be disabled via:
    GYP_DEFINES='skia_pdf_use_sfntly=0

Warning: dm is 34% slower and uses 9% more memory.  This is
okay.

Motivation: We want to test this code path in DM, since it is
always used by Chromium and Android.

BUG=skia:3563

Committed: https://skia.googlesource.com/skia/+/6a53b04e26749ea61f690ece408f2a1c0a5ad5bb

Review URL: https://codereview.chromium.org/1134683006
2015-05-18 13:15:56 -07:00
djsollen
38fd5fe289 Prevent integer wrap around for malloc size when creating a SkRegion
BUG=484998

Review URL: https://codereview.chromium.org/1143603003
2015-05-18 13:05:11 -07:00
egdaniel
9250d24de6 Don't do discards when on Adreno4xx due to driver bug.
BUG=skia:

Review URL: https://codereview.chromium.org/1126423006
2015-05-18 13:04:26 -07:00
reed
2ba21a08d4 add GM to test extractAlpha
BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/1142123003
2015-05-18 12:57:56 -07:00
caryclark
4e1a4c9399 fix builder winding again
Record the nesting level when finding the edge winding contribution
so that inner edges can be reversed as needed.

R=fmalita@chromium.org
BUG=skia:3838

Review URL: https://codereview.chromium.org/1140383002
2015-05-18 12:56:58 -07:00
Florin Malita
4e149c09bc Remove SK_LEGACY_DRAWPICTURECALLBACK from skia_for_chromium_defines.gypi
The flag now lives in Chromium's SkUserConfig.h.

R=reed@google.com

Review URL: https://codereview.chromium.org/1133243009
2015-05-18 15:14:08 -04:00
halcanary
9bedfc23fe Revert of SkPDF: Add Sfntly to DEPS, gyp, SkUserConfig (patchset #7 id:570001 of https://codereview.chromium.org/1134683006/)
Reason for revert:
break cros build

Original issue's description:
> SkPDF: Add Sfntly to DEPS, gyp
>
> Note: this can be disabled via:
>     GYP_DEFINES='skia_pdf_use_sfntly=0
>
> Warning: dm is 34% slower and uses 9% more memory.  This is
> okay.
>
> Motivation: We want to test this code path in DM, since it is
> always used by Chromium and Android.
>
> BUG=skia:3563
>
> Committed: https://skia.googlesource.com/skia/+/6a53b04e26749ea61f690ece408f2a1c0a5ad5bb

TBR=reed@google.com,mtklein@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3563

Review URL: https://codereview.chromium.org/1128353004
2015-05-18 10:27:16 -07:00
halcanary
6a53b04e26 SkPDF: Add Sfntly to DEPS, gyp
Note: this can be disabled via:
    GYP_DEFINES='skia_pdf_use_sfntly=0

Warning: dm is 34% slower and uses 9% more memory.  This is
okay.

Motivation: We want to test this code path in DM, since it is
always used by Chromium and Android.

BUG=skia:3563

Review URL: https://codereview.chromium.org/1134683006
2015-05-18 10:18:58 -07:00
mtklein
404b3b264b Revert of Move copy-surface-as-draw fallback to GrGLGpu. (patchset #12 id:220001 of https://codereview.chromium.org/1144433002/)
Reason for revert:
Many GMs changed, some totally busted.

Original issue's description:
> Move copy-surface-as-draw fallback to GrGLGpu.
>
> Committed: https://skia.googlesource.com/skia/+/5df6fee929823f50c55cc50f7c882a309c1b1de9

TBR=joshualitt@google.com,egdaniel@google.com,bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1142003003
2015-05-18 09:29:10 -07:00
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
scroggo
d8b544cd04 Set OpenGLRenderer light center separately from initial setup
Cherry-pick from Android.

Fixes master-skia build.

BUG=b/16523629

Review URL: https://codereview.chromium.org/1134403003
2015-05-18 06:41:35 -07:00
bsalomon
5df6fee929 Move copy-surface-as-draw fallback to GrGLGpu.
Review URL: https://codereview.chromium.org/1144433002
2015-05-18 06:26:15 -07:00
caryclark
5b5ddd73b4 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.
Cheap (one contour) paths can be evaluated and reversed as needed with a minimum of checking, but multi-contour paths invoke the regular path ops machinery to determine who is contained by whom.

More tests need to be added to verify that all corner cases are considered, but this fixes the cases in the bug thus far.

R=fmalita@chromium.org
TBR=reed@google.com
BUG=skia:3838

Review URL: https://codereview.chromium.org/1129193006
2015-05-18 05:12:56 -07:00
halcanary
2e0303f91b Gyp: Sanity Part II (GM+Tests)
DOCS_PREVIEW= https://skia.org/dev/testing/tests?cl=1133343006

Review URL: https://codereview.chromium.org/1133343006
2015-05-17 06:47:49 -07:00
skia.buildbots
fec0211be4 Update SKP version
Automatic commit by the RecreateSKPs bot.

TBR=
NO_MERGE_BUILDS

Review URL: https://codereview.chromium.org/1128353003
2015-05-17 01:14:01 -07:00
mtklein
b91f7562c4 Experiment with find as a road to Gyp sanity.
BUG=skia:

Review URL: https://codereview.chromium.org/1123173005
2015-05-16 15:47:10 -07:00
nednguyen
6bad28de52 Replace self.NavigateToPage with self.Navigate(self.url) for skia page sets
BUG=487800

Review URL: https://codereview.chromium.org/1131113005
2015-05-16 15:47:02 -07:00
robertphillips
465706820d Revert of Font variations. (patchset #26 id:500001 of https://codereview.chromium.org/1027373002/)
Reason for revert:
Appears to be breaking  Linux ARM bots:

FAILED:
/usr/local/google/home/mosaic-role/slave/repo_clients/chromium_tot/chromium/src/../../prebuilt/toolchain/armv7a/bin/armv7a-cros-linux-gnueabi-g++
... -o obj/third_party/skia/src/ports/skia_library.SkFontHost_FreeType.o
../../third_party/skia/src/ports/SkFontHost_FreeType.cpp:37:31: fatal error:
freetype/ftmm.h: No such file or directory
 #include FT_MULTIPLE_MASTERS_H
                               ^
compilation terminated.

Original issue's description:
> Font variations.
>
> Multiple Master and TrueType fonts support variation axes.
> This implements back-end support for axes on platforms which
> support it.
>
> Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97
>
> Committed: https://skia.googlesource.com/skia/+/3489ee0f4fa34f124f9de090d12bdc2107d52aa9

TBR=reed@google.com,mtklein@google.com,djsollen@google.com,halcanary@google.com,bungeman@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1139123008
2015-05-15 11:30:41 -07:00
reed
daa57bfd42 Revert of antialias matrix-image-filter to get smooth diagonals (patchset #6 id:80002 of https://codereview.chromium.org/1134743003/)
Reason for revert:
likely affect layouttests, so need to add a guard

Original issue's description:
> antialias matrix-image-filter to get smooth diagonals
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/fa33f5a6b770130acdc55f2ffe19dd545665726a

TBR=senorblanco@google.com,robertphillips@google.com,bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1128823010
2015-05-15 10:39:17 -07:00
mtklein
0135a41e09 Sk4px: Difference and Exclusion
This will cause minor (off-by-one) diffs due to a little lost precision:
	colortype_xfermodes
	mixed_xfermodes
	xfermodes2
	xfermodeimagefilter
	xfermodes3
	xfermodes

Desktop:
Xfermode_Difference_aa	9.77ms -> 7.32ms	0.75x
 Xfermode_Exclusion_aa	8.49ms -> 6.21ms	0.73x
   Xfermode_Difference	  17ms -> 7.54ms	0.44x
    Xfermode_Exclusion	13.5ms -> 5.09ms	0.38x

N7:
Xfermode_Difference_aa	32.2ms -> 27.6ms	0.86x
   Xfermode_Difference	43.9ms ->   32ms	0.73x
 Xfermode_Exclusion_aa	40.5ms -> 26.7ms	0.66x
    Xfermode_Exclusion	71.5ms -> 23.9ms	0.33x

This wraps up the xfermodes implemented in Sk4f.

BUG=skia:

Review URL: https://codereview.chromium.org/1141213002
2015-05-15 10:36:21 -07:00
reed
fa33f5a6b7 antialias matrix-image-filter to get smooth diagonals
BUG=skia:

Review URL: https://codereview.chromium.org/1134743003
2015-05-15 10:33:31 -07:00
reed
5f68c34840 Update SVGDevice for RRect and drawPoints
BUG=skia:

Review URL: https://codereview.chromium.org/1127933003
2015-05-15 10:11:11 -07:00
joshualitt
e3ababe443 remove localmatrix from GrGeometryProcessor base class
BUG=skia:

Review URL: https://codereview.chromium.org/1131513005
2015-05-15 07:56:07 -07:00
kkinnunen
c77f6af7c3 Make the c and ac scripts work with sh and without bin in PATH
Make the bin/c and bin/ac scripts work with sh. The scripts are run with
/bin/sh shebang, which fails atleast on ubuntu 12.04 /bin/sh. The sh in
Ubuntu 12.04 is dash.

The fixes are according to the suggestions in http://mywiki.wooledge.org/Bashism

Also run "compare" script with explicit ./bin/ path to support people
who do not have skia/bin in PATH.

Review URL: https://codereview.chromium.org/1139033005
2015-05-15 05:35:50 -07:00
mtklein
27e517ae53 add Min to SkNi, specialized for u8 and u16 on SSE and NEON
0x8001 / 0x7fff don't seem to work, but we were close: 0x8000 does.

I plan to use this to implement the Difference xfermode,
and it seems generally handy.

BUG=skia:

Review URL: https://codereview.chromium.org/1133933004
2015-05-14 17:53:04 -07:00
scroggo
9d214295e4 Add a test for decoding a gif with sampleSize 4.
Prior to https://codereview.chromium.org/1085253002/, this would crash.

Only happens with interlaced gif images with an odd height. (Maybe
there are more restrictions?)

Test image provided by zoran.jovanovic@sonymobile.com for checking in.

Add include before includes.

Review URL: https://codereview.chromium.org/1091053002
2015-05-14 14:44:14 -07:00
bsalomon
87a773c5b1 Remove high ref count tracker from GrFakeRefObj
TBR=robertphillips@google.com

Review URL: https://codereview.chromium.org/1139803003
2015-05-14 14:23:11 -07:00
caryclark
fba9da78ac fix path op builder
The rewrite of path ops caused the inner contour direction to be reversed.
This exposed an existing bug in path ops builder, namely that the implicit
winding of the internal sum path could hide inner contours if they ended
up in the wrong direction.

Setting the sum path's fill type to even-odd ensures that the inner
contours aren't discarded.

R=fmalita@chromium.org
BUG=skia:3838

Review URL: https://codereview.chromium.org/1126193004
2015-05-14 14:18:13 -07:00
bungeman
3489ee0f4f Font variations.
Multiple Master and TrueType fonts support variation axes.
This implements back-end support for axes on platforms which
support it.

Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97

Review URL: https://codereview.chromium.org/1027373002
2015-05-14 14:18:03 -07:00
reed
86a17e7716 Revert of Implement support for non-scale/translate CTM in image filters. (patchset #4 id:60001 of https://codereview.chromium.org/1140943004/)
Reason for revert:
matriximagefilter needs to antialias its draw, so we get smooth diagonals...

Original issue's description:
> Implement support for non-scale/translate CTM in image filters.
>
> Clone with tweaks of https://codereview.chromium.org/986623003/
>
> pre-cl to guard chrome here: https://codereview.chromium.org/1133403003/
>
> BUG=skia:3288
>
> Committed: https://skia.googlesource.com/skia/+/35786b176c159d2e7a816e9da9b051ef3129d5cb

TBR=robertphillips@google.com,senorblanco@google.com,senorblanco@chromium.org,reed@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3288

Review URL: https://codereview.chromium.org/1139173002
2015-05-14 12:25:22 -07:00
mtklein
ec1f77d097 Revert of Temporarily revert just Multiply to see if that's the source of NEON diffs. (patchset #2 id:20001 of https://codereview.chromium.org/1129293005/)
Reason for revert:
Undo Xor revert.  Getting too confusing now.

Original issue's description:
> Temporarily revert just Multiply to see if that's the source of NEON diffs.
>
> Local testing is confusing and inconclusive.  Pulling out the big guns.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/5b9f352ff1e245dd48e200f8f8b683f4569547d3
>
> Committed: https://skia.googlesource.com/skia/+/6095260e55ac5f263df26cdde427531a0e7da8dd

TBR=mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1138073005
2015-05-14 11:49:01 -07:00
mtklein
6095260e55 Temporarily revert just Multiply to see if that's the source of NEON diffs.
Local testing is confusing and inconclusive.  Pulling out the big guns.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/5b9f352ff1e245dd48e200f8f8b683f4569547d3

Review URL: https://codereview.chromium.org/1129293005
2015-05-14 10:35:33 -07:00
mtklein
af953bbdfb Revert of Temporarily revert just Multiply to see if that's the source of NEON diffs. (patchset #1 id:1 of https://codereview.chromium.org/1129293005/)
Reason for revert:
Diff's still there.  Multiply is not the culprit.

Original issue's description:
> Temporarily revert just Multiply to see if that's the source of NEON diffs.
>
> Local testing is confusing and inconclusive.  Pulling out the big guns.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/5b9f352ff1e245dd48e200f8f8b683f4569547d3

TBR=mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1143553004
2015-05-14 10:18:14 -07:00
joshualitt
e578a95d3a Remove viewmatrix from GrGeometryProcessor base class
BUG=skia:

Review URL: https://codereview.chromium.org/1127953003
2015-05-14 10:09:14 -07:00
mtklein
5b9f352ff1 Temporarily revert just Multiply to see if that's the source of NEON diffs.
Local testing is confusing and inconclusive.  Pulling out the big guns.

BUG=skia:

Review URL: https://codereview.chromium.org/1129293005
2015-05-14 09:17:09 -07:00
senorblanco
d4d83eb032 Tesellating path renderer: typecast cleanup; logging build fix.
Use SkPoint* for all vertex data. (It was void* to support two different
vertex data formats, which we no longer need.)
Assert that vertex stride == sizeof(SkPoint).
Fix build when LOGGING_ENABLED=1.

BUG=skia:

Review URL: https://codereview.chromium.org/1128083004
2015-05-14 09:08:14 -07:00
robertphillips
7156b09c4b Revert of Defer glClear to just before draw call (patchset #2 id:20001 of https://codereview.chromium.org/1113003005/)
Reason for revert:
This CL seems to be triggering the assert:
src/gpu/SkGpuDevice.cpp:319: failed assertion "!fNeedClear"
on, at least, Mac & Ubuntu.

Original issue's description:
> Defer glClear to just before draw call
>
> Remove some DO_DEFERRED_CLEAR call to avoid call glClear separately, like this:
> glBindFramebuffer(1)
> glClear
> glBindFramebuffer(2)
> glClear
> glBindFramebuffer(1)
> glDrawXXX
> glBindFramebuffer(2)
> glDrawXXX
>
> These call sequences may need read and write memory back and forth.
>
> If we call DO_DEFERRED_CLEAR just before draw call, we can bind, clear and draw in one go.
> e.g.
> glBindFramebuffer(1)
> glClear
> glDrawXXX
> glBindFramebuffer(2)
> glClear
> glDrawXXX
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/c3c06a13e69b90d4cc1d543853504072d363ae8b

TBR=bsalomon@google.com,joel.liang@arm.com,wasim.abbas@arm.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1136393005
2015-05-14 08:54:12 -07:00
wasim.abbas
c3c06a13e6 Defer glClear to just before draw call
Remove some DO_DEFERRED_CLEAR call to avoid call glClear separately, like this:
glBindFramebuffer(1)
glClear
glBindFramebuffer(2)
glClear
glBindFramebuffer(1)
glDrawXXX
glBindFramebuffer(2)
glDrawXXX

These call sequences may need read and write memory back and forth.

If we call DO_DEFERRED_CLEAR just before draw call, we can bind, clear and draw in one go.
e.g.
glBindFramebuffer(1)
glClear
glDrawXXX
glBindFramebuffer(2)
glClear
glDrawXXX

BUG=skia:

Review URL: https://codereview.chromium.org/1113003005
2015-05-14 08:24:52 -07:00
borenet
7ae68a8f8d Android scripts: add --verbose, fix missing 'source android_setup'
BUG=skia:3836
TBR=djsollen

Review URL: https://codereview.chromium.org/1145473002
2015-05-14 06:37:23 -07:00
reed
35786b176c Implement support for non-scale/translate CTM in image filters.
Clone with tweaks of https://codereview.chromium.org/986623003/

pre-cl to guard chrome here: https://codereview.chromium.org/1133403003/

BUG=skia:3288

Review URL: https://codereview.chromium.org/1140943004
2015-05-14 06:36:53 -07:00
caryclark
182b499cd7 look for deleted pts when detecting line/curve coincident edges
TBR=reed@google.com
BUG=skia:3651

Review URL: https://codereview.chromium.org/1129863007
2015-05-14 05:45:54 -07:00
robertphillips
eea2ff7201 Revert of Refactor GrBufferAllocPools to use resource cache (patchset #9 id:160001 of https://codereview.chromium.org/1139753002/)
Reason for revert:
Perf Regression for some bot/skp combinations

Original issue's description:
> Refactor GrBufferAllocPools to use resource cache
>
> Committed: https://skia.googlesource.com/skia/+/c5f1c5414fc8f73cbefadcc1b24ec794056fa203

TBR=bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/1129863008
2015-05-14 05:24:53 -07:00
mtklein
c30806f9f1 Perform SkPicture analysis lazily.
I realized when writing the comment on https://crrev.com/1135363002/
that I'd really just sketched out the entire thing, so I couldn't help
but actually write up a working CL.  How does this do for your benchmark?

BUG=chromium:487075

Review URL: https://codereview.chromium.org/1130123006
2015-05-13 19:26:14 -07:00
joshualitt
88c23fc6e8 remove color from GrGeometryProcessor
BUG=skia:

Review URL: https://codereview.chromium.org/1140983002
2015-05-13 14:18:07 -07:00
mtklein
2d8d33e9e8 Sk4px: SrcATop, DstATop, Xor, Multiply
SSE runs 2-3x faster (than 4f), NEON runs 1.2-1.4x faster (than existing NEON).

Small diffs on {aarectmodes, imagefilters_xfermodes, hairmodes, mixed_xfermodes} only on AA edges due to precision drop.

BUG=skia:

Review URL: https://codereview.chromium.org/1132853005
2015-05-13 14:08:45 -07:00
reed
177cb84986 Revert of Implement support for non-scale/translate CTM in image filters. (patchset #4 id:60001 of https://codereview.chromium.org/1120043002/)
Reason for revert:
don't reference layer after its deleted

Original issue's description:
> Implement support for non-scale/translate CTM in image filters.
>
> Implemented by extracting out the non-scale/translate components
> and applying that post-filter as an SkMatrixImageFilter.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/4f12b8bd2cb43daeffa4d1c53120ae94c5ccf486

TBR=robertphillips@google.com,senorblanco@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1128133005
2015-05-13 14:00:00 -07:00
reed
4f12b8bd2c Implement support for non-scale/translate CTM in image filters.
Implemented by extracting out the non-scale/translate components
and applying that post-filter as an SkMatrixImageFilter.

BUG=skia:

Review URL: https://codereview.chromium.org/1120043002
2015-05-13 13:34:57 -07:00
cdalton
231c5fd590 Don't issue texture barriers for RT's with separate storage
BUG=skia:

Review URL: https://codereview.chromium.org/1137663004
2015-05-13 12:35:36 -07:00
joshualitt
1ba8cc9193 removing equality / compute invariant loops from GrGeometryProcessors
BUG=skia:

Committed: https://skia.googlesource.com/skia/+/ef292a0901205b9785a30daae2c036aa34a970ca

Review URL: https://codereview.chromium.org/1111603004
2015-05-13 12:24:23 -07:00
mtklein
8a90edc2a5 Sk4px: alphas() and Load[24]Alphas()
alphas() extracts the 4 alphas from an existing Sk4px as another Sk4px.
LoadNAlphas() constructs an Sk4px from N packed alphas.

In both cases, we end up with 4x repeated alphas aligned with their pixels.

alphas()
  A0 R0 G0 B0  A1 R1 G1 B1  A2 R2 G2 B2  A3 R3 G3 B3
  ->
  A0 A0 A0 A0  A1 A1 A1 A1  A2 A2 A2 A2  A3 A3 A3 A3

Load4Alphas()
  A0 A1 A2 A3
  ->
  A0 A0 A0 A0  A1 A1 A1 A1  A2 A2 A2 A2  A3 A3 A3 A3

Load2Alphas()
  A0 A1
  ->
  A0 A0 A0 A0  A1 A1 A1 A1  0 0 0 0  0 0 0 0

This is a 5-10% speedup for AA on Intel, and wash on ARM.
AA is still mostly dominated by the final lerp.

alphas() isn't used yet, but it's similar enough to Load[24]Alphas()
that it was easier to write all at once.

BUG=skia:

Review URL: https://codereview.chromium.org/1138333003
2015-05-13 12:19:42 -07:00