Commit Graph

24319 Commits

Author SHA1 Message Date
egdaniel
12c7563d7e Create GrVkCopyPipeline class
This creates a special subclass of GrVkPipeline that we can use for doing
copies on draws. Currently this is not hooked into the system.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2353563003

Review-Url: https://codereview.chromium.org/2353563003
2016-09-19 13:39:34 -07:00
reed
0955b341ae remove dead code around SK_ENABLE_CLIP_QUICKREJECT
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2349383002

TBR=

Review-Url: https://codereview.chromium.org/2349383002
2016-09-19 13:33:43 -07:00
mtklein
d5724b0356 Add FrameworkDefs bot to the CQ.
Word is that this bot only exists so it can be on the CQ...
but we forgot to actually put it on the CQ until last week.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2352703002

Review-Url: https://codereview.chromium.org/2352703002
2016-09-19 12:34:14 -07:00
hinoka
f15590f803 Skia recipe: Use [depot_tools]/gsutil.py instead of [depot_tools]/third_party/gsutil/gsutil
The latter is being removed in https://codereview.chromium.org/2280023003/
Is also pinned to 3.25, whereas the former is updated more often.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2298293002

Review-Url: https://codereview.chromium.org/2298293002
2016-09-19 12:18:55 -07:00
bungeman
1ae0e01acc Split SkFontConfigInterface globals and factory.
Chromium needs to be able to set up their build such that the globals
continue existing but the SkFontMgr::Factory can be defined separately.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2346333002
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac-Clang-x86_64-Release-CMake-Trybot

Review-Url: https://codereview.chromium.org/2346333002
2016-09-19 12:13:16 -07:00
csmartdalton
0262b5c1a0 Add adb support to skpbench
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2350003002

Review-Url: https://codereview.chromium.org/2350003002
2016-09-19 12:04:56 -07:00
jvanverth
613664b1bc Remove unnecessary assert in GrBatchAtlas.
BUG=skia:5770
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2354653002

Review-Url: https://codereview.chromium.org/2354653002
2016-09-19 11:25:57 -07:00
csmartdalton
4b5179b74c skpbench
skpbench is a benchmarking suite for skps that aims to generate 100%
repeatable results. The initial commit consists of three parts:

skpbench

A minimalist program whose sole purpose is to open an skp file,
benchmark it on a single config, and exit. No tiling, looping, or
other fanciness is used; it just draws the skp whole into a size-
matched render target and syncs the GPU after each draw.

Limiting the entire process to a single config/skp pair helps to keep
the results repeatable.

skpbench.py

A wrapper to execute the skpbench binary with various configs and skps.
It also monitors the output in order to filter out and re-run results
with an unacceptable stddev.

In the future this script will lock down and monitor clocks and
temperatures.

parseskpbench.py

A utility for parsing skpbench output into a spreadsheet.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2341823002

Review-Url: https://codereview.chromium.org/2341823002
2016-09-19 11:03:58 -07:00
halcanary
e202bd8b71 SkPDF: SkBitSet gets reset() to make drop() better.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2354583002

Review-Url: https://codereview.chromium.org/2354583002
2016-09-19 10:27:03 -07:00
egdaniel
88987d83d7 Move vulkan spir-v compile call to GrVkUtil
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2355493002

Review-Url: https://codereview.chromium.org/2355493002
2016-09-19 10:17:34 -07:00
egdaniel
927ac9c532 Refactor vulkan buffer mapping and unmapping
A lot of this is so we don't have duplicated code in both the map/unmap and
updateData functions of GrVkBuffer. Also there were slightly differences in
how we handled various things in the two cases that this now unifies.

Also I added a barrier after the vkUpdateBuffer call which I believe was
missing.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2344323002

Review-Url: https://codereview.chromium.org/2344323002
2016-09-19 09:32:09 -07:00
bsalomon
56b7dc476b Revert of Stop flattening GrCoordTransforms in parent GrFragmentProcessors. (patchset #3 id:40001 of https://codereview.chromium.org/2339203002/ )
Reason for revert:
Crashing blink
 https://codereview.chromium.org/2351743002/

Original issue's description:
> Stop flattening GrCoordTransforms in parent GrFragmentProcessors.
>
> This changes moves to a model that iterates over GrCTs in a GrFP hierarchy when inserting transformations by GrGLSLPrimitiveProcessors.
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339203002
>
> Committed: https://skia.googlesource.com/skia/+/d91237ee051523f439238042674ade99207fe4a6

TBR=egdaniel@google.com,robertphillips@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.chromium.org/2351753002
2016-09-19 09:26:40 -07:00
mtklein
9f262811b7 To prep for removing CMake bots, take them off the CQ and presubmit.
GN is now far more capable than our CMake builds.
Time to officially end that experiment.

Reminder how this lands:
  1) this CL
  2) remove the bots from the masters
  3) remove the CMake recipe files
  4) remove the CMake files

I'm willing to wait on 4) until we can do GN -> CMake generation, but I don't want the bots to hold us back.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2350073002

Review-Url: https://codereview.chromium.org/2350073002
2016-09-19 09:08:07 -07:00
bsalomon
d91237ee05 Stop flattening GrCoordTransforms in parent GrFragmentProcessors.
This changes moves to a model that iterates over GrCTs in a GrFP hierarchy when inserting transformations by GrGLSLPrimitiveProcessors.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339203002

Review-Url: https://codereview.chromium.org/2339203002
2016-09-19 08:36:58 -07:00
mtklein
122fac3061 GN: remove old Android recipe code.
All the Android builders, testers, and perfers are on gn_android_flavor now.

Not as scary as it looks... all the big line count changes are deletes.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2352653002

Review-Url: https://codereview.chromium.org/2352653002
2016-09-19 07:26:42 -07:00
reed
8716a8ae94 add 'g' to fatbits
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2350613002

TBR=

Review-Url: https://codereview.chromium.org/2350613002
2016-09-19 07:10:36 -07:00
mtklein
cfea18abe2 Delete unused coverage recipe code.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2353483003

Review-Url: https://codereview.chromium.org/2353483003
2016-09-19 07:04:37 -07:00
brianosman
950fc6c636 Add F16 to the list of allowed formats in GaussianBlur
Fixes asserts that fire in some GMs for gpuf16 config

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2350723002

Review-Url: https://codereview.chromium.org/2350723002
2016-09-19 06:59:28 -07:00
fmalita
7cf4ae7122 [SVGDom] Only apply opacity when needed
Opacity: 1 is a no-op, but it shows up quite a bit in existing documents.

R=robertphillips@google.com,stephana@google.com,reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2349143002

Review-Url: https://codereview.chromium.org/2349143002
2016-09-19 06:42:39 -07:00
cblume
12f752723b Remove release asserts.
A handful of changes were added to investigate a bug occurring rarely.
The bug has been found and those changes can be reverted.

BUG=643845
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347423002

Review-Url: https://codereview.chromium.org/2347423002
2016-09-19 06:18:03 -07:00
caryclark
bbfe92bc1d fix fuzzer bugs
Add a couple more cases where Op() fails and
returns false when the out of range input
values make the internal numeric unstable.

TBR=reed@google.com
BUG=647834, 648068
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2348263002

Review-Url: https://codereview.chromium.org/2348263002
2016-09-19 06:00:35 -07:00
rmistry
e7a7812744 Whitespace change
TBR=
NOTRY=true
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347393002

Review-Url: https://codereview.chromium.org/2347393002
2016-09-18 11:37:26 -07:00
update-skps
5d1110ed46 Update SKP version
Automatic commit by the RecreateSKPs bot.

TBR=
NO_MERGE_BUILDS
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2349953002

Review-Url: https://codereview.chromium.org/2349953002
2016-09-18 02:34:52 -07:00
fmalita
bdf3e5c034 [SVGDom] Improved DM sizing
Rather than always using a 1000x1000 canvas, observe the SVG intrinsic
size when available.

If the intrinsic size is < 128x128, scale uniformly.

R=robertphillips@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2342313003

Review-Url: https://codereview.chromium.org/2342313003
2016-09-17 07:26:26 -07:00
bungeman
67ac33e1f1 Remove SK_DECLARE_LEGACY_CREATE_FROM_FONTDATA.
This is no longer defined by any users, so remove it.

TBR=reed
This just removes no longer used API.

Review-Url: https://codereview.chromium.org/2345353002
2016-09-16 14:54:16 -07:00
msarett
c6c81e1ff8 Fix filling of incomplete images in SkSampledCodec
The bug occurs when filling after an incomplete sampled/subset
incremental decode.

I'm also adding many truncated test pngs.

BUG=skia:5769
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343153003

Review-Url: https://codereview.chromium.org/2343153003
2016-09-16 14:52:07 -07:00
halcanary
f59d18a4ea SkPDF: Implement /ActualText to make text extraction correct.
For old API: no change.

For new API: LTR text is perfectly extracted, RTL needs better testing.

CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN-Trybot,Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN-Trybot

BUG=skia:5434
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2322403002

Review-Url: https://codereview.chromium.org/2322403002
2016-09-16 14:44:57 -07:00
mtklein
b9be979eae format GN files, and invert if->config to config->if
Both if (...) { config ... } else { config ... } and config { if (...) { ...}
else { ... } } work.  We just happen to do the if inside the config more often
than the other way around.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347953002

Review-Url: https://codereview.chromium.org/2347953002
2016-09-16 14:44:18 -07:00
tomhudson
54d9b6688d Improve ColorStopOptimizer safety
Could potentially access uninitialized memory.

BUG=647481
R=brianosman@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2345343002

Review-Url: https://codereview.chromium.org/2345343002
2016-09-16 14:22:49 -07:00
herb
b6318bf44d Compile the skia library for windows using gn.
TBR=mtklein@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347443002

Review-Url: https://codereview.chromium.org/2347443002
2016-09-16 13:29:57 -07:00
halcanary
3b294d5ba9 Revert of SkPDF: Implement /ActualText to make text extraction correct. (patchset #11 id:220001 of https://codereview.chromium.org/2322403002/ )
Reason for revert:
MSAN, ASAN errors

Original issue's description:
> SkPDF:  Implement /ActualText to make text extraction correct.
>
> For old API: no change.
>
> For new API: LTR text is perfectly extracted, RTL needs better testing.
>
> BUG=skia:5434
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2322403002
>
> Committed: https://skia.googlesource.com/skia/+/dbd16345a5b2b824f2696af791bb0f01304cf549

TBR=tomhudson@google.com,bungeman@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:5434

Review-Url: https://codereview.chromium.org/2338213008
2016-09-16 13:21:08 -07:00
bungeman
875b8f6d35 Sane use of FcPatternGetXXX in SkFontConfigInterface.
This renames get_name to get_string to better reflect what it does, uses
get_int where appropriate, and removes the no longer used code that uses
FcPatternGetBool.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2345053005

Review-Url: https://codereview.chromium.org/2345053005
2016-09-16 13:19:49 -07:00
mtklein
e7904f3979 Flesh out GN/Android run docs.
The process is simple enough that it's clearer to see all the steps laid out.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343263002
NOTRY=true
DOCS_PREVIEW= https://skia.org/?cl=2343263002

Review-Url: https://codereview.chromium.org/2343263002
2016-09-16 12:40:18 -07:00
halcanary
dbd16345a5 SkPDF: Implement /ActualText to make text extraction correct.
For old API: no change.

For new API: LTR text is perfectly extracted, RTL needs better testing.

BUG=skia:5434
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2322403002

Review-Url: https://codereview.chromium.org/2322403002
2016-09-16 12:09:01 -07:00
rmistry
be7e3c0db3 Revert of Run SVGs through nanobench on all Perf bots (patchset #5 id:120001 of https://codereview.chromium.org/2343903002/ )
Reason for revert:
Causing failures:
https://uberchromegw.corp.google.com/i/client.skia/builders/Perf-Mac-Clang-MacMini4.1-GPU-GeForce320M-x86_64-Debug-GN/builds/812

Original issue's description:
> Run SVGs through nanobench on all Perf bots.
>
> Tested with:
> python infra/bots/recipes.py run --workdir=../ swarm_trigger path_config=kitchen buildername=Perf-Ubuntu-GCC-ShuttleA-GPU-GTX660-x86_64-Release-GN-Trybot mastername=client.skia slavename=skiabot-linux-swarm-010 buildnumber=1 revision=d8c2476a8b1e1e1a1771b17e8dd4db8645914f8c issue=2343903002 rietveld=https://codereview.chromium.org patchset=80001
>
> Example output is here:
> https://luci-milo.appspot.com/swarming/task/3147c9789b2d0410
> Nanobench did run on SVGs.
>
> BUG=skia:5757
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343903002
>
> Committed: https://skia.googlesource.com/skia/+/1c58dcb909642454d91ba36f71e55597511b5d52

TBR=jcgregorio@google.com,fmalita@chromium.org,mtklein@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:5757

Review-Url: https://codereview.chromium.org/2348563003
2016-09-16 12:06:56 -07:00
mtklein
fcee51038a Is it just me or is this logging just noise?
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343233002

Review-Url: https://codereview.chromium.org/2343233002
2016-09-16 11:50:13 -07:00
msarett
c0444615ed Support Float32 output from SkColorSpaceXform
* Adds Float32 support to SkColorSpaceXform
* Changes API to allows clients to ask for F32, updates clients to
  new API
* Adds Sk4f_load4 and Sk4f_store4 to SkNx
* Make use of new xform in SkGr.cpp

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Committed: https://skia.googlesource.com/skia/+/43d6651111374b5d1e4ddd9030dcf079b448ec47
Review-Url: https://codereview.chromium.org/2339233003
2016-09-16 11:45:59 -07:00
mtklein
bfef32ff0a Build with GN on CT bots.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347203002

Review-Url: https://codereview.chromium.org/2347203002
2016-09-16 11:39:14 -07:00
robertphillips
7a12b4fd8e Improve join between the two RRects in SkRRectsGaussianEdgeShader
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2345203003

Review-Url: https://codereview.chromium.org/2345203003
2016-09-16 11:37:37 -07:00
mtklein
9b6c58cf67 Promote the N5 to the CQ for real.
The experiment was a great success.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2345263002

Review-Url: https://codereview.chromium.org/2345263002
2016-09-16 11:34:08 -07:00
rmistry
1c58dcb909 Run SVGs through nanobench on all Perf bots.
Tested with:
python infra/bots/recipes.py run --workdir=../ swarm_trigger path_config=kitchen buildername=Perf-Ubuntu-GCC-ShuttleA-GPU-GTX660-x86_64-Release-GN-Trybot mastername=client.skia slavename=skiabot-linux-swarm-010 buildnumber=1 revision=d8c2476a8b1e1e1a1771b17e8dd4db8645914f8c issue=2343903002 rietveld=https://codereview.chromium.org patchset=80001

Example output is here:
https://luci-milo.appspot.com/swarming/task/3147c9789b2d0410
Nanobench did run on SVGs.

BUG=skia:5757
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343903002

Review-Url: https://codereview.chromium.org/2343903002
2016-09-16 11:32:34 -07:00
stani
c326a383e1 Clear stencil buffer before using it for drawing
Clear stencil buffer before using it for drawing. This is
resolving an issue with a failing android CTS test in drawArc.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2342873004

Review-Url: https://codereview.chromium.org/2342873004
2016-09-16 11:03:44 -07:00
msarett
c71a9b7f53 Revert of Support Float32 output from SkColorSpaceXform (patchset #7 id:140001 of https://codereview.chromium.org/2339233003/ )
Reason for revert:
Hitting an assert

Original issue's description:
> Support Float32 output from SkColorSpaceXform
>
> * Adds Float32 support to SkColorSpaceXform
> * Changes API to allows clients to ask for F32, updates clients to
>   new API
> * Adds Sk4f_load4 and Sk4f_store4 to SkNx
> * Make use of new xform in SkGr.cpp
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003
> CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/43d6651111374b5d1e4ddd9030dcf079b448ec47

TBR=brianosman@google.com,mtklein@google.com,scroggo@google.com,mtklein@chromium.org,bsalomon@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2347473007
2016-09-16 11:01:27 -07:00
mtklein
046cb56c6c GN: build get_images_from_skps.
This also splits :common_flags off of :flags.
get_images_from_skps wants :flags but not :common_flags.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2338173006

Review-Url: https://codereview.chromium.org/2338173006
2016-09-16 10:23:12 -07:00
cblume
94ddf54a6d Keeping asserts in release.
We have a bug that is showing up occasionally in Canary.
I want to see if these asserts could provide insight into why the bug
happens.

BUG=643845
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2342903003

Review-Url: https://codereview.chromium.org/2342903003
2016-09-16 10:07:32 -07:00
bsalomon
faf8203ea7 Allow GrCaps access from GrDrawContext
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2348923002

Review-Url: https://codereview.chromium.org/2348923002
2016-09-16 09:53:28 -07:00
msarett
43d6651111 Support Float32 output from SkColorSpaceXform
* Adds Float32 support to SkColorSpaceXform
* Changes API to allows clients to ask for F32, updates clients to
  new API
* Adds Sk4f_load4 and Sk4f_store4 to SkNx
* Make use of new xform in SkGr.cpp

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003
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/2339233003
2016-09-16 09:51:12 -07:00
jvanverth
a8370b2c56 Remove old SkGaussianEdgeShader code
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2345673003
TBR=bsalomon@google.com

Review-Url: https://codereview.chromium.org/2345673003
2016-09-16 09:13:15 -07:00
rmistry
3d5541dc3d Fix Seal_of_Mississippi URL and update version of SVG asset.
BUG=skia:5757
BUG=skia:5767

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2342323002

Review-Url: https://codereview.chromium.org/2342323002
2016-09-16 08:26:35 -07:00
scroggo
8e6c7ada5a Make SkPngCodec decode progressively.
This is a step towards using SkCodec in Chromium, where progressive
decoding is necessary.

Switch from using png_read_row (which expects all the data to be
available) to png_process_data, which uses callbacks when rows are
available.

Create a new API for SkCodec, which supports progressive decoding and
scanline decoding. Future changes will switch the other clients off of
startScanlineDecode and get/skip-Scanlines to the new API.

Remove SkCodec::kNone_ScanlineOrder, which was only used for interlaced
PNG images. In the new API, interlaced PNG fits kTopDown. Also remove
updateCurrScanline(), which was only used by the old implementation for
interlaced PNG.

DMSrcSink:
- In CodecSrc::kScanline_Mode, use the new method for scanline decoding
for the supported formats (just PNG and PNG-in-ICO for now).

fuzz.cpp:
- Remove reference to kNone_ScanlineOrder

SkCodec:
- Add new APIs:
    - startIncrementalDecode
    - incrementalDecode
- Remove kNone_SkScanlineOrder and updateCurrScanline()
- Set fDstInfo and fOptions in getPixels(). This may not be necessary
  for all implementations, but it simplifies things for SkPngCodec.

SkPngCodec:
- Implement new APIs
- Switch from sk_read_fn/png_read_row etc to png_process_data
- Expand AutoCleanPng's role to decode the header and create the
  SkPngCodec
- Make the interlaced PNG decoder report how many lines were
  initialized during an incomplete decode

SkIcoCodec:
- Implement the new APIs; supported for PNG in ICO

SkSampledCodec:
- Call the new method for decoding scanlines, and fall back to the old
  method if the new version is unimplemented
- Remove references to kNone_SkScanlineOrder

tests/CodecPartial:
- Add a test which decodes part of an image, then finishes the decode,
  and compares it to the straightforward method

tests/CodecTest:
- Add a test which decodes all scanlines using the new method
- Repurpose the Codec_stripes test to decode using the new method in
  sections rather than all at once
- In the method check(), add a parameter for whether the image supports
  the new method of scanline decoding, and be explicit about whether an
  image supports incomplete
- Test incomplete PNG decodes. We should have been doing it anyway for
  non-interlaced (except for an image that is too small - one row), but
  the new method supports interlaced incomplete as well
- Make test_invalid_parameters test the new method
- Add a test to ensure that it's safe to fall back to scanline decoding without
  rewinding

BUG=skia:4211

The new version was generally faster than the old version (but not significantly so).

Some raw performance differences can be found at https://docs.google.com/a/google.com/spreadsheets/d/1Gis3aRCEa72qBNDRMgGDg3jD-pMgO-FXldlNF9ejo4o/

Design doc can be found at https://docs.google.com/a/google.com/document/d/11Mn8-ePDKwVEMCjs3nWwSjxcSpJ_Cu8DF57KNtUmgLM/

GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1997703003

Review-Url: https://codereview.chromium.org/1997703003
2016-09-16 08:20:38 -07:00