History log of /external/skia/dm/DMSrcSink.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5c7667b89cfb99f442ff64d7b4a5005b3b928e1b 13-Mar-2018 Leon Scroggins III <scroggo@google.com> Remove calls to computeOutputColor- Type and Space

Bug: b/70846442
Test: I5110881203c000474116a94a48f2afc9a9b62001

These methods were already called by the client. The client may have
further overridden the SkColorType (and therefore the SkColorSpace), so
respect their final decision on both.

Change-Id: Iddcf618e474784b0a000fd516250c44285dacc6b
Reviewed-on: https://skia-review.googlesource.com/114062
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
(cherry picked from commit 0118e9756d92d3c56b9e05842d7c828f37f68159)
Reviewed-on: https://skia-review.googlesource.com/114200
Reviewed-by: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
95a7b76a44edd2f25423a4d395df553b80fe06d7 02-Mar-2018 Bryce Thomas <bryct@amazon.com> dm: support printing specific page of mskp to SVG

Currently with dm, it's possible to convert an .mskp to a multi-page PDF as
follows:

out/Release/dm --src mskp --mskps /tmp/filename.mskp -w /tmp \
--config pdf --verbose

The SVG equivalent partially works, although only outputs the first page:

out/Release/dm --src mskp --mskps /tmp/filename.mskp -w /tmp \
--config svg --verbose

This CL adds support for passing extended options to SVG. Specifically, the
'page' option , which now determines which page of the source mskp gets
converted to the SVG output. The new syntax is as follows:

out/Release/dm --src mskp --mskps /tmp/filename.mskp -w /tmp \
--config svg[page=2] --verbose

The `[key=value]` syntax is the same extended options syntax currently used by
dm with --config gpu, e.g. `gpu[api=gl,color=8888]`.

BUG=skia:7601

Change-Id: I3523d79b1cdbbba9e80fd46501331877091bdead
Reviewed-on: https://skia-review.googlesource.com/105404
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
b8b6253df6e60e5cce71ae584921bd9da35c1b93 23-Feb-2018 Yuqian Li <liyuqian@google.com> Add threaded backend sink to DM. Fix a scheduler bug.

The bug is spotted by the new sink. I'd expect more bugs to be revealed
and fixed using the new sink.

Bug: skia:
Change-Id: I6b0c9267079fbd6149004f0ecd55ddb179702588
Reviewed-on: https://skia-review.googlesource.com/109720
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
/external/skia/dm/DMSrcSink.cpp
7fcfb621998648ba018e3b89e2cab3135bd46a1f 09-Feb-2018 Mike Reed <reed@google.com> move a bunch of helpers from SkImageInfo.h into priv

Bug: skia:
Change-Id: I8c91cfdb89e4f22448d1201d391556fe43d86dca
Reviewed-on: https://skia-review.googlesource.com/105289
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Cary Clark <caryclark@google.com>
/external/skia/dm/DMSrcSink.cpp
d3c1b84a6e26d9f6acd09c221048c4f5ddbd9bbb 27-Jan-2018 Florin Malita <fmalita@chromium.org> [skottie] Render DM frames out-of-order

To exercise non-monotonic animator progrssions.

TBR=

Change-Id: I53aead5b11adf59d33c9ca4065976996bd09a1e2
Reviewed-on: https://skia-review.googlesource.com/100900
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
c8f740168ff32222a35ab2a3809c7664d7a2432e 21-Dec-2017 Mike Klein <mtklein@chromium.org> remove obsolete DM test configs

ViaSingletonPictures simulates a load pattern that Blink no longer produces.

I don't even remember what Via2ndPic and ViaTwice are meant to test,
but I imagine they're quite obsolete.

There was a lingering reference to ViaMojo, which otherwise doesn't exist.

Bug: skia:7544

Change-Id: I033fd344314054ad66c363e5dbd0a373be188069
Reviewed-on: https://skia-review.googlesource.com/88780
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
54f65c473fd6bf6919dfcbad22e924dff7586568 16-Jan-2018 Florin Malita <fmalita@chromium.org> Skotty -> Skottie

Change-Id: If8b6516024c69b0fc256208874f6666a4e70e12c
Reviewed-on: https://skia-review.googlesource.com/95241
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
df2713c447755a8b0ec7801d797d5ee9650b4bc2 09-Jan-2018 Florin Malita <fmalita@chromium.org> [skotty] Minor tools tweaks

* fix "show inval" persistency in SkottySlide
* add frame-stamp to DM film strip

TBR=
Change-Id: I965b28fa25b4d6ddfa1ddf80f5f9187dff3f943c
Reviewed-on: https://skia-review.googlesource.com/92941
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
493280782430b76251145cfb7d78d6d33b65c1d1 08-Jan-2018 Florin Malita <fmalita@chromium.org> [skotty,sksg] Initial image support

TBR=
Change-Id: Ib3c918b1d746e4f190ae05708681f2d5519afdb2
Reviewed-on: https://skia-review.googlesource.com/91980
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
124d5afbff0b518ee1b8ffcf80ebcb26bc7d31f5 31-Dec-2017 Florin Malita <fmalita@chromium.org> [skotty] Speculative g3 DM build fix

Disable Skotty support in G3 for now.

TBR=
Change-Id: Ic64f62bc21e9d4a531cdfa2495710edc1ba531f8
Reviewed-on: https://skia-review.googlesource.com/90029
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
fc043dcd552d293fc4d0da61562e3a7b755a640a 31-Dec-2017 Florin Malita <fmalita@chromium.org> [skotty] Add Json DM source

Generates a filmstrip with evenly distributed frames for a Skotty animation.

TBR=
Change-Id: Ia89e0d65d59fd5ab4ef221a231e9b3e0c033828a
Reviewed-on: https://skia-review.googlesource.com/90025
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
e7a58321bbbe094ca0f9b03e25843f7666d5c198 20-Dec-2017 Mike Reed <reed@google.com> make InternalOnly_ functions actually private

Bug: skia:
Change-Id: Id06ad4283a0cd9835b3349c783b705b30435855a
Reviewed-on: https://skia-review.googlesource.com/87980
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
040238bded7b932b916c84912cbaec1207aa29c0 18-Dec-2017 Chris Dalton <csmartdalton@google.com> Add a tools flag to suppress geometry shaders

Bug: skia:
Change-Id: I38736c5d49e3b281c2d23af3908575274ff97b5c
Reviewed-on: https://skia-review.googlesource.com/86282
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
/external/skia/dm/DMSrcSink.cpp
a4daf193196c6da63b1c16e3490cad3c5ca6bf8b 14-Dec-2017 Mike Reed <reed@google.com> Moving extra options/parameters into PDFMetadata

Bug: skia:
Change-Id: I29aa69e5765a7f8ba05b0361912d1f5276d77de3
Reviewed-on: https://skia-review.googlesource.com/84501
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
36703d9d368050a20764b5336534bd718fd00a6e 12-Dec-2017 Brian Osman <brianosman@google.com> Push much of the SkColorSpace_Base interface up to SkColorSpace

Some pieces still remain, but the next step looks less mechanical,
so I wanted to land this piece independently.

Bug: skia:
Change-Id: Ie63afcfa08af2f6e4996911fa2225c43441dbfb2
Reviewed-on: https://skia-review.googlesource.com/84120
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
0933bc9b679457ef9333988fe3a1faae6a0b4126 09-Dec-2017 Mike Reed <reed@google.com> Revert "Revert "resources: remove most uses of GetResourcePath()""

This reverts commit cca230055921d2df8708ed6f9abcc2d43468dc7f.

Reason for revert: think I guessed wrong about g32 -- unreverting

Original change's description:
> Revert "resources: remove most uses of GetResourcePath()"
>
> This reverts commit 5093a539def3ae09df324018f2343827009b2e05.
>
> Reason for revert: google3 seems broken
>
> Original change's description:
> > resources: remove most uses of GetResourcePath()
> >
> > Going forward, we will standardize on GetResourceAsData(), which will
> > make it easier to run tests in environments without access to the
> > filesystem.
> >
> > Also: GetResourceAsData() complains when a resource is missing.
> > This is usually an error.
> >
> > Change-Id: Iaf70b71b0ca5ed8cd1a5538a60ef185ae8736188
> > Reviewed-on: https://skia-review.googlesource.com/82642
> > Reviewed-by: Hal Canary <halcanary@google.com>
> > Commit-Queue: Hal Canary <halcanary@google.com>
>
> TBR=halcanary@google.com,scroggo@google.com
>
> Change-Id: Ic5a7c0167c995a672e6b06dc92abe00564432214
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://skia-review.googlesource.com/83001
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>

TBR=halcanary@google.com,scroggo@google.com,reed@google.com

Change-Id: I5a46e4de61186a8a5eb9cacd3275e24e311d5a07
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/82942
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
cca230055921d2df8708ed6f9abcc2d43468dc7f 08-Dec-2017 Mike Reed <reed@google.com> Revert "resources: remove most uses of GetResourcePath()"

This reverts commit 5093a539def3ae09df324018f2343827009b2e05.

Reason for revert: google3 seems broken

Original change's description:
> resources: remove most uses of GetResourcePath()
>
> Going forward, we will standardize on GetResourceAsData(), which will
> make it easier to run tests in environments without access to the
> filesystem.
>
> Also: GetResourceAsData() complains when a resource is missing.
> This is usually an error.
>
> Change-Id: Iaf70b71b0ca5ed8cd1a5538a60ef185ae8736188
> Reviewed-on: https://skia-review.googlesource.com/82642
> Reviewed-by: Hal Canary <halcanary@google.com>
> Commit-Queue: Hal Canary <halcanary@google.com>

TBR=halcanary@google.com,scroggo@google.com

Change-Id: Ic5a7c0167c995a672e6b06dc92abe00564432214
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/83001
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
5093a539def3ae09df324018f2343827009b2e05 08-Dec-2017 Hal Canary <halcanary@google.com> resources: remove most uses of GetResourcePath()

Going forward, we will standardize on GetResourceAsData(), which will
make it easier to run tests in environments without access to the
filesystem.

Also: GetResourceAsData() complains when a resource is missing.
This is usually an error.

Change-Id: Iaf70b71b0ca5ed8cd1a5538a60ef185ae8736188
Reviewed-on: https://skia-review.googlesource.com/82642
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
aa73b96760c280629b9a765be387087d772fe242 27-Nov-2017 Mike Klein <mtklein@chromium.org> clean up SkDeferredCanvas

To our knowledge it's not used.
Its defer- mode in DM isn't even run on the bots.

Change-Id: Ifebfa2a77bfed8370eb421d379697f04fa2c8608
Reviewed-on: https://skia-review.googlesource.com/76420
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
0cbc10f94e2b350761e64b225c97390269f41479 30-Oct-2017 Leon Scroggins III <scroggo@google.com> Make SkImageGeneratorCG apply encoded origin

SkImageGeneratorCG:
- Detect the origin and apply it to the output
- Deprecate NewFromEncodedCG and add MakeFromEncodedCG

SkCodecImageGenerator:
- Move code elsewhere for sharing
- Apply origin for incomplete decodes

SkPixmap.cpp/SkPixmapPriv.h:
- Now has the shared code for generators to apply origin

DMSrcSink.cpp:
- Call MakeFromEncodedCG

SkCGUtils.h:
- Add a version of SkCopyPixelsFromCGImage that takes an SkPixmap

Bug: skia:7138
Bug: skia:3834
Change-Id: Ic6dbc76360c6a84913b67373582f328d3946d637
Reviewed-on: https://skia-review.googlesource.com/63740
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
5b7e470a5b622f5a9bdd81803a23540b3e4e4cf7 31-Oct-2017 Brian Osman <brianosman@google.com> Use color filter to undo GBR (actually BRG)

This allows the via to work with GPU (where we don't render to N32).

Change-Id: I42e8457731a5ee51d14f7092eebd6efe72decd84
Reviewed-on: https://skia-review.googlesource.com/65822
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
b7ea3da8cf722e017661710f25a83babd745a04d 31-Oct-2017 Mike Klein <mtklein@chromium.org> Revert "gbr- has been brg- this whole time..."

This reverts commit 5b9a037bf41591e0076843f619ee47c9ad30e42d.

Reason for revert:

I got confused in here somewhere and everything is drawing wrong.

Original change's description:
> gbr- has been brg- this whole time...
>
> Rewrite things to make that a little clearer.
>
> A red pixel ends up in channel 2, what would naively draw as blue
> without a rotation. A green pixel ends up in channel 0, which would
> naively draw as red without rotation. A blue pixel ends up in channel
> 1, which would naively draw as green without this rotation.
>
> So this transformation is:
>
> r -> b
> g -> r
> b -> g
>
> i.e. rgb_to_brg
>
> Change-Id: I12331ff2622194e34a44f421f656fbe4db5d3dca
> Reviewed-on: https://skia-review.googlesource.com/65521
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>

TBR=mtklein@chromium.org,brianosman@google.com

Change-Id: Ib29800b242bf736b20d61375d3c437c8f4ffdce0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/65781
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
5b9a037bf41591e0076843f619ee47c9ad30e42d 31-Oct-2017 Mike Klein <mtklein@chromium.org> gbr- has been brg- this whole time...

Rewrite things to make that a little clearer.

A red pixel ends up in channel 2, what would naively draw as blue
without a rotation. A green pixel ends up in channel 0, which would
naively draw as red without rotation. A blue pixel ends up in channel
1, which would naively draw as green without this rotation.

So this transformation is:

r -> b
g -> r
b -> g

i.e. rgb_to_brg

Change-Id: I12331ff2622194e34a44f421f656fbe4db5d3dca
Reviewed-on: https://skia-review.googlesource.com/65521
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
1b361150239a2ae79979a5bab5c35dfa0c5adb9c 30-Oct-2017 Mike Klein <mtklein@chromium.org> make color rotating a little less pointlessly slow

Change-Id: Ic9e6cfe82dd22ac01be7a51724efa4c00399cfef
Reviewed-on: https://skia-review.googlesource.com/65320
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
f0ffb8943b7be477b769db23660a80013f3332eb 03-Oct-2017 Mike Reed <reed@google.com> Revert[4] "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap"

This reverts commit 5a2e50edc51006ce91366e177a9d21a16775d7fd.

Bug: skia:
Change-Id: I8d28b5c07d90130e5a1653923740eaf189ecb954
Reviewed-on: https://skia-review.googlesource.com/53900
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
5a2e50edc51006ce91366e177a9d21a16775d7fd 02-Oct-2017 Mike Reed <reed@google.com> Revert "Revert "Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap"""

This reverts commit cd284c532376d16fcc4ed75baf3da65c3e4a2e95.

Reason for revert:

assert fired in SkMallocPixelRef.cpp:61: fatal error: "assert(info.computeByteSize(rowBytes) == info.getSafeSize(rowBytes))"

google3 thinks it was from surface_rowbytes

Original change's description:
> Revert "Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap""
>
> This reverts commit 809cbedd4b252be221b2ac3b4269d312fd8f53a0.
>
> Bug: skia:
> Change-Id: I680d8daeeeeb15526b44c1305d8fb0c6bfa38e1d
> Reviewed-on: https://skia-review.googlesource.com/52665
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>

TBR=fmalita@chromium.org,reed@google.com

Change-Id: I41e3f7a3f791cc8183291847e783ed8a53bc91d2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/53802
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
cd284c532376d16fcc4ed75baf3da65c3e4a2e95 29-Sep-2017 Mike Reed <reed@google.com> Revert "Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap""

This reverts commit 809cbedd4b252be221b2ac3b4269d312fd8f53a0.

Bug: skia:
Change-Id: I680d8daeeeeb15526b44c1305d8fb0c6bfa38e1d
Reviewed-on: https://skia-review.googlesource.com/52665
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
809cbedd4b252be221b2ac3b4269d312fd8f53a0 28-Sep-2017 Jim Van Verth <jvanverth@google.com> Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap"

This reverts commit 88757dacd4f532a0f647c02ae0ee596d31ab5c68.

Reason for revert: Still seems to be failing Chromium "telemetry_perf_unittests (with patch) on Android" on android_n5x_swarming_rel.

Original change's description:
> guard old apis for querying byte-size of a bitmap/imageinfo/pixmap
>
> Now with legacy behavior for allocpixels
>
> This was reverted, so the current CL is a "fix" on top of ...
> https://skia-review.googlesource.com/c/skia/+/50980
>
> Related update to Chrome (in preparation for this change)
> https://chromium-review.googlesource.com/c/chromium/src/+/685719
>
> Bug: skia:
> Change-Id: I4b370ee7e95083ab27421f008132219c9c7b86e9
> Reviewed-on: https://skia-review.googlesource.com/51341
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Commit-Queue: Mike Reed <reed@google.com>

TBR=fmalita@chromium.org,reed@google.com

Change-Id: I827a0ca1d1e3909e648fde3342cdb8601d34da8d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/52381
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
/external/skia/dm/DMSrcSink.cpp
88757dacd4f532a0f647c02ae0ee596d31ab5c68 26-Sep-2017 Mike Reed <reed@google.com> guard old apis for querying byte-size of a bitmap/imageinfo/pixmap

Now with legacy behavior for allocpixels

This was reverted, so the current CL is a "fix" on top of ...
https://skia-review.googlesource.com/c/skia/+/50980

Related update to Chrome (in preparation for this change)
https://chromium-review.googlesource.com/c/chromium/src/+/685719

Bug: skia:
Change-Id: I4b370ee7e95083ab27421f008132219c9c7b86e9
Reviewed-on: https://skia-review.googlesource.com/51341
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
f46633f8af5296341e33ec4cdb69c71dfa997396 26-Sep-2017 Greg Daniel <egdaniel@google.com> Revert "guard old apis for querying byte-size of a bitmap/imageinfo/pixmap"

This reverts commit 98a6216b18b57c2f7a0d58f542c60503686aed69.

Reason for revert: breaking the chrome roll. Looks like they may be writing data to create an image across all the row bytes and thus writing to unalloced data on the last row. Link to example failing bot:
https://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/539960

Original change's description:
> guard old apis for querying byte-size of a bitmap/imageinfo/pixmap
>
> Previously we had size_t and uint64_t variations.
>
> The new (simpler) API always..
> - returns size_t, or 0 if the calculation overflowed
> - returns the trimmed size (does not include rowBytes padding for the last row)
>
> Bug: skia:
> Change-Id: I05173e877918327c7b207d2f7f1ab0db36892e2e
> Reviewed-on: https://skia-review.googlesource.com/50980
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Leon Scroggins <scroggo@google.com>

TBR=mtklein@google.com,herb@google.com,scroggo@google.com,fmalita@chromium.org,reed@google.com

Change-Id: I726f6ab1b36b14979ba6f37105e0a469b3f0dbc0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/51262
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
/external/skia/dm/DMSrcSink.cpp
98a6216b18b57c2f7a0d58f542c60503686aed69 26-Sep-2017 Mike Reed <reed@google.com> guard old apis for querying byte-size of a bitmap/imageinfo/pixmap

Previously we had size_t and uint64_t variations.

The new (simpler) API always..
- returns size_t, or 0 if the calculation overflowed
- returns the trimmed size (does not include rowBytes padding for the last row)

Bug: skia:
Change-Id: I05173e877918327c7b207d2f7f1ab0db36892e2e
Reviewed-on: https://skia-review.googlesource.com/50980
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
e5756eccc41fabc421a7fe8b00807c3dcd257b9f 06-Sep-2017 Brian Osman <brianosman@google.com> Output encoded PNGs when gltestthreading or serialize fails

For configs that compare results of two drawing methods, it's helpful to
know how the two images differed. This takes both images, PNG encodes them
(at maximum compression settings), then base64 encodes them into data URIs
so they can be viewed directly from the logs.

These kinds of failures are typically very rare, and currently happen
infrequently due to flaky GMs - we don't want to be using this kind of
facility all the time.

Bug: skia:7011
Change-Id: Ib6c271cb8f6cd657cf6ca8ccfee97d0193b4e6ed
Reviewed-on: https://skia-review.googlesource.com/43240
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
022cfa258df280d914cfff4dc1466a3fa909ce9c 01-Sep-2017 Mike Klein <mtklein@chromium.org> Add FIFO thread pool, use it for most things.

We like a LIFO default thread pool in tools like DM for better
memory/time locality... the bots use less memory this way, and
generally run faster.

But most use cases want a FIFO queue, so that they can get going
on the next parts of early work while later work is still running.

This splits the implementation into one using SkTArray and pop_back
for LIFO, and a new one using std::deque and pop_front for FIFO.

Change-Id: Ief203b6869a00f1f8084019431a781d15fc63750
Reviewed-on: https://skia-review.googlesource.com/41849
Commit-Queue: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Yuqian Li <liyuqian@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
195c05b6d5afbd65f803816938e24eebd51292c8 30-Aug-2017 Brian Osman <brianosman@google.com> Move several GrContextOptions fields behind GR_TEST_UTILS

Bug: skia:
Change-Id: I35bc08ad72fb94d8e47fe342d314c4496b954226
Reviewed-on: https://skia-review.googlesource.com/40881
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
ad8a43f7698071f00ce024a935b0bc04a4b19a41 30-Aug-2017 Robert Phillips <robertphillips@google.com> DeferredDisplayList API proposal

Chrome would like to perform cpu-side preprocessing for gpu draws in parallel.
They do not want to go through a picture (since they have their own display list format).


The general idea is that we add a new SkDeferredDisplayListRecorder class to
perform all of Ganesh's cpu-side preprocessing ahead of time and in parallel.

The SkDDLRecorder operates like SkPictureRecorder. The user can get an SkCanvas
from the SkDDLRecorder and feed it draw operations. Once finished, the user
calls 'detach' to get an SkDeferredDisplayList. All the work up to and
including the 'detach' call can be done in parallel and will not touch
the GPU. To actually get pixels the client must call SkSurface::draw(SkDDL)
on an SkSurface that is "compatible" with the surface characterization
initially given to the SkDDLMaker.

The surface characterization contains the minimum amount of information Ganesh needs
to know about the ultimate destination in order to perform its cpu-side work
(i.e., caps, width, height, config).



Change-Id: I75faa483ab5a6b779c8de56ea56b9d90b990f43a
Reviewed-on: https://skia-review.googlesource.com/30140
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
/external/skia/dm/DMSrcSink.cpp
f9810666bd40db8fb1650e6c727c1a83b8090136 30-Aug-2017 Brian Osman <brianosman@google.com> Threaded generation of software paths

Re-land of: https://skia-review.googlesource.com/36560

All information needed by the thread is captured by the prepare
callback object, the lambda captures a pointer to that, and does the
mask render. Once it's done, it signals the semaphore (also owned by the
callback). The callback defers the semaphore wait even longer (into the
ASAP upload), so the odds of waiting for the thread are REALLY low.

Also did a bunch of cleanup along the way, and put in some trace markers
so we can monitor how well this is working.

Traces of a GM that includes GPU and SW path rendering (path-reverse):

Original:
https://screenshot.googleplex.com/f5BG3901tQg.png
Threaded, with wait in the callback (notice pre flush callback blocking):
https://screenshot.googleplex.com/htOSZFE2s04.png
Current version, with wait deferred to ASAP upload function:
https://screenshot.googleplex.com/GHjD0U3C34q.png
Bug: skia:
Change-Id: Idb92f385590749f41328a9aec65b2a93f4775079
Reviewed-on: https://skia-review.googlesource.com/40775
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
a93a14a99816d25b773f0b12868143702baf44bf 28-Aug-2017 Ben Wagner <bungeman@google.com> Convert NULL and 0 to nullptr.

This was created by looking at warnings produced by clang's
-Wzero-as-null-pointer-constant. This updates most issues in
Skia code. However, there are places where GL and Vulkan want
pointer values which are explicitly 0, external headers which
use NULL directly, and possibly more uses in un-compiled
sources (for other platforms).

Change-Id: Id22fbac04d5c53497a53d734f0896b4f06fe8345
Reviewed-on: https://skia-review.googlesource.com/39521
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
/external/skia/dm/DMSrcSink.cpp
87ae9895692e4a97873a510178003d1ba70ab79a 24-Aug-2017 Brian Salomon <bsalomon@google.com> Revert "Threaded generation of software paths"

This reverts commit 76323bc0615044a5921afef0e19a350f3d04ffe0.

Reason for revert: Breaking NUC bots in threaded gm comparison:

https://chromium-swarm.appspot.com/task?id=382e589753187f10&refresh=10



Original change's description:
> Threaded generation of software paths
>
> All information needed by the thread is captured by the prepare
> callback object, the lambda captures a pointer to that, and does the
> mask render. Once it's done, it signals the semaphore (also owned by the
> callback). The callback defers the semaphore wait even longer (into the
> ASAP upload), so the odds of waiting for the thread are REALLY low.
>
> Also did a bunch of cleanup along the way, and put in some trace markers
> so we can monitor how well this is working.
>
> Traces of a GM that includes GPU and SW path rendering (path-reverse):
>
> Original:
> https://screenshot.googleplex.com/f5BG3901tQg.png
> Threaded, with wait in the callback (notice pre flush callback blocking):
> https://screenshot.googleplex.com/htOSZFE2s04.png
> Current version, with wait deferred to ASAP upload function:
> https://screenshot.googleplex.com/GHjD0U3C34q.png
>
> Bug: skia:
> Change-Id: I3d5a230bbd68eb35e1f0574b308485c691435790
> Reviewed-on: https://skia-review.googlesource.com/36560
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>

TBR=egdaniel@google.com,mtklein@google.com,bsalomon@google.com,robertphillips@google.com,brianosman@google.com

Change-Id: Icac0918a3771859f671b69ae07ae0fedd3ebb3db
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/38560
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
/external/skia/dm/DMSrcSink.cpp
76323bc0615044a5921afef0e19a350f3d04ffe0 24-Aug-2017 Brian Osman <brianosman@google.com> Threaded generation of software paths

All information needed by the thread is captured by the prepare
callback object, the lambda captures a pointer to that, and does the
mask render. Once it's done, it signals the semaphore (also owned by the
callback). The callback defers the semaphore wait even longer (into the
ASAP upload), so the odds of waiting for the thread are REALLY low.

Also did a bunch of cleanup along the way, and put in some trace markers
so we can monitor how well this is working.

Traces of a GM that includes GPU and SW path rendering (path-reverse):

Original:
https://screenshot.googleplex.com/f5BG3901tQg.png
Threaded, with wait in the callback (notice pre flush callback blocking):
https://screenshot.googleplex.com/htOSZFE2s04.png
Current version, with wait deferred to ASAP upload function:
https://screenshot.googleplex.com/GHjD0U3C34q.png

Bug: skia:
Change-Id: I3d5a230bbd68eb35e1f0574b308485c691435790
Reviewed-on: https://skia-review.googlesource.com/36560
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
/external/skia/dm/DMSrcSink.cpp
f21aa04dca1ab16e57d9bac3f6a08abb7e107d95 21-Aug-2017 Brian Osman <brianosman@google.com> Plumb GrContextOptions to GPU sinks in DM

We were ignoring the path renderer flag when drawing GMs or SKPs.

Bug: skia:
Change-Id: Iee443fb70f1faec65e46925fa0e3cea3716d448d
Reviewed-on: https://skia-review.googlesource.com/36861
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
1dc8ecbf5fd40ce918dfd958b1eb58b5f640a0d7 17-Aug-2017 Leon Scroggins III <scroggo@google.com> Stop BRD-decoding non-opaque to 565 sink

review.skia.org/34361 accidentally started attempting to decode images
with transparency to a 565 sink. BRD helpfully decodes to N32 instead,
rather than failing. We don't need to test this here, and it draws to a
565 sink, resulting in incorrect images in Gold.

Change-Id: I9585b2c0c4526e5f33667bd8f57003449e735372
Reviewed-on: https://skia-review.googlesource.com/35707
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
0741818e7ab4e9ea8505b8a8687412f0e3804c65 15-Aug-2017 Leon Scroggins III <scroggo@google.com> Move calls to conversion_possible to SkCodec

Move common code into the base class, so subclasses need not call
conversion_possible.

Use SkEncodedInfo rather than SkImageInfo, and use the proper frame.

API Changes:
- SkAndroidCodec:
- Add getEncodedInfo(), for SkBitmapRegionCodec
- SkEncodedInfo:
- Add opaque() helper
- SkBitmapRegionDecoder:
- Remove unused conversionSupported

(Split off from skia-review.googlesource.com/c/25746)

Bug: skia:5601
Change-Id: If4a40d4b98a3dd0afde2b6058f92315a393a5baf
Reviewed-on: https://skia-review.googlesource.com/34361
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
bdc3afa577718c657da6eaffba6ae90ec1c26ca2 08-Aug-2017 Mike Reed <reed@google.com> simplify gm matrices

rm gm that appears to have been there solely for pdf, but we don't use
it for that now.

Bug: skia:
Change-Id: I3cf88db923c2445b7c95dda14da679a594117643
Reviewed-on: https://skia-review.googlesource.com/31760
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
/external/skia/dm/DMSrcSink.cpp
ede7bac43fbc69b9fdf1c178890ba6353f5bb140 23-Jul-2017 Mike Reed <reed@google.com> use unique_ptr for codec factories

Will need guards for android (at least)

Bug: skia:
Change-Id: I2bb8e656997984489ef1f2e41cd3d301c4e7b947
Reviewed-on: https://skia-review.googlesource.com/26040
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
c7d295ecf712dece58ae6654721b3708fd8a40d6 20-Jul-2017 Hal Canary <halcanary@google.com> DM: excercise other SkPDF raster dpis

Change-Id: Ia50661a8391da526d509adbe2d7203866c140b1c
Reviewed-on: https://skia-review.googlesource.com/25321
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
45c16fa82cd2fec010d4cb7763b654a413cabd0c 19-Jul-2017 Mike Klein <mtklein@chromium.org> convert over to 2d-mode

[√] convert all stages to use SkJumper_MemoryCtx / be 2d-compatible
[√] convert compile to 2d also, remove 1d run/compile
[√] convert all call sites
[√] no diffs

Change-Id: I3b806eb8fe0c3ec043359616409f7cd1211a1e43
Reviewed-on: https://skia-review.googlesource.com/24263
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
086a427b0cee3862f25c492fc5082ff24105dc53 18-Jul-2017 Mike Reed <reed@google.com> guard references to SkColorTable

Bug: skia:6828
Change-Id: I0c8c78e70b118f51cb59dc45675e4ddcd4776108
Reviewed-on: https://skia-review.googlesource.com/24260
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
ce5ee602ed19b8493bf4dd1654d29486088bad63 17-Jul-2017 Brian Salomon <bsalomon@google.com> Add support for GL 565 and 4444 configs to test tools

Change-Id: I395e3387df44cf5370fef6ab73db73228225622f
Reviewed-on: https://skia-review.googlesource.com/23946
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
/external/skia/dm/DMSrcSink.cpp
304a07c6c93298c3481bc0d4852d08c22a539504 12-Jul-2017 Mike Reed <reed@google.com> remove references to kIndex_8_SkColorType from our tools/tests

Bug: skia:6828
Change-Id: Ib5049c28c11b7320bece20f5a0a886de8b2a4343
Reviewed-on: https://skia-review.googlesource.com/22728
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
571b30f6117eede6d64cd2b924dc1f6aaa59e70e 11-Jul-2017 Leon Scroggins <scroggo@google.com> Reland "Remove support for decoding to kIndex_8"

Original change's description:
> > Remove support for decoding to kIndex_8
> >
> > Fix up callsites, and remove tests that no longer make sense.
> >
> > Bug: skia:6828
> > Change-Id: I2548c4b7528b7b1be7412563156f27b52c9d4295
> > Reviewed-on: https://skia-review.googlesource.com/21664
> > Reviewed-by: Derek Sollenberger <djsollen@google.com>
> > Commit-Queue: Leon Scroggins <scroggo@google.com>
>
> TBR=djsollen@google.com,scroggo@google.com
>
> Change-Id: I1bc669441f250690884e75a9a61427fdf75c6907
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:6828
> Reviewed-on: https://skia-review.googlesource.com/22120
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Commit-Queue: Leon Scroggins <scroggo@google.com>

TBR=djsollen@google.com,scroggo@google.com

Bug: skia:6828
Change-Id: I36ff5a11c529d29e8adc95f43b8edc6fd1dbf5b8
Reviewed-on: https://skia-review.googlesource.com/22320
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
8321f7585b6aded0c35e50e9af8709b25fdce3f6 10-Jul-2017 Leon Scroggins <scroggo@google.com> Revert "Remove support for decoding to kIndex_8"

This reverts commit 742a3e298fda669006147e4a305bab8452369b1f.

Reason for revert: Breaking Android roll:
frameworks/base/core/jni/android/graphics/BitmapFactory.cpp:453:18: error: no member named 'fColorPtr' in 'SkAndroidCodec::AndroidOptions'
codecOptions.fColorPtr = colorPtr;
~~~~~~~~~~~~ ^
frameworks/base/core/jni/android/graphics/BitmapFactory.cpp:454:18: error: no member named 'fColorCount' in 'SkAndroidCodec::AndroidOptions'
codecOptions.fColorCount = colorCount;
~~~~~~~~~~~~ ^

Original change's description:
> Remove support for decoding to kIndex_8
>
> Fix up callsites, and remove tests that no longer make sense.
>
> Bug: skia:6828
> Change-Id: I2548c4b7528b7b1be7412563156f27b52c9d4295
> Reviewed-on: https://skia-review.googlesource.com/21664
> Reviewed-by: Derek Sollenberger <djsollen@google.com>
> Commit-Queue: Leon Scroggins <scroggo@google.com>

TBR=djsollen@google.com,scroggo@google.com

Change-Id: I1bc669441f250690884e75a9a61427fdf75c6907
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6828
Reviewed-on: https://skia-review.googlesource.com/22120
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
742a3e298fda669006147e4a305bab8452369b1f 10-Jul-2017 Leon Scroggins III <scroggo@google.com> Remove support for decoding to kIndex_8

Fix up callsites, and remove tests that no longer make sense.

Bug: skia:6828
Change-Id: I2548c4b7528b7b1be7412563156f27b52c9d4295
Reviewed-on: https://skia-review.googlesource.com/21664
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
674a1848ae62277ea9a2d022b60aa1f17d306f17 06-Jul-2017 Leon Scroggins III <scroggo@google.com> Add SkCodec::Result indicating error in the data

Previously, SkGifCodec treated an error in the LZW data as incomplete,
since we can still draw the partially decoded image. But a client doing
incremental decodes needs to distinguish this from truly incomplete
data. In the case of an error, the client should not attempt to provide
more data and decode again.

Add kErrorInInput, and return it when SkGifCodec sees a fatal error.
Treat it the same as kIncompleteInput when it comes to filling and DM.

Bug: skia:6825
Change-Id: Ic6ce3a62c0b065ed34dcd8006309e43272a3db9f
Reviewed-on: https://skia-review.googlesource.com/21530
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Chris Blume <cblume@chromium.org>
/external/skia/dm/DMSrcSink.cpp
bace7a940a6d83051eaa98b73dfa8867ed16ac2e 05-Jul-2017 Leon Scroggins III <scroggo@google.com> Remove CodecSrc::kIndex8_Always_DstColorType

We have removed support for drawing Index8, so stop testing it in DM.

Bug: skia: 6828
Change-Id: Ib2c4d3ebd371be704151a9f956c0ca2aaf2926a6
Reviewed-on: https://skia-review.googlesource.com/21525
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
93323eb401dc9003dda881ac83222d115151947f 16-Jun-2017 Florin Malita <fmalita@chromium.org> Enable SVG DM sources for vector sinks

SVG->SKP is a useful/valid case.

Change-Id: I81fd7b8d5e422b4dbf55f59eca9e9471ab578180
Reviewed-on: https://skia-review.googlesource.com/20153
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
8db74f1f1df221978d5edd598804e2ea0f307570 14-Jun-2017 Matt Sarett <msarett@google.com> Revert "Revert "Do not return Index8 from SkAndroidCodec::computeOutputColorType""

This reverts commit 81c83a7db4e524b19d33bf7c8a9b537b9d606c93.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Revert "Do not return Index8 from SkAndroidCodec::computeOutputColorType"
>
> This reverts commit b6f4767294261dca3beef6f280c4bac69df3f930.
>
> Reason for revert: This breaks CTS tests in Android. Doh.
>
> Original change's description:
> > Do not return Index8 from SkAndroidCodec::computeOutputColorType
> >
> > Given that this is the only known use of Index8 color type,
> > this is essentially an experimental delete.
> >
> > Bug: skia:6620
> > Change-Id: Ib363d237e0217f6e7f461a62e54d32892c428095
> > Reviewed-on: https://skia-review.googlesource.com/10586
> > Reviewed-by: Leon Scroggins <scroggo@google.com>
> > Commit-Queue: Matt Sarett <msarett@google.com>
>
> TBR=msarett@google.com,scroggo@google.com,reed@google.com
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: skia:6620
>
> Change-Id: I2b44c695b8b95659520e9532901f636f56e01e2a
> Reviewed-on: https://skia-review.googlesource.com/19084
> Reviewed-by: Matt Sarett <msarett@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>

TBR=msarett@google.com,scroggo@google.com,reviews@skia.org,reed@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: skia:6620
Change-Id: I7e4e3a5ec068102244ad3a0259aa6aded4f12f36
Reviewed-on: https://skia-review.googlesource.com/19802
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
6a0feba05bd57e84103cebc695d4a217ec9e472e 09-Jun-2017 Matt Sarett <msarett@google.com> Add clamp before drawing F16->8888 in DMSrcSink ColorCodecSrc

Verified that this fixes the wrongness of a few of the colorImage
diffs in Gold.

Bug: skia:6738
Change-Id: Icf0b7573ccb87268b480d7cc0a6cfe6fa8ae73f7
Reviewed-on: https://skia-review.googlesource.com/19271
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
81c83a7db4e524b19d33bf7c8a9b537b9d606c93 08-Jun-2017 Matt Sarett <msarett@google.com> Revert "Do not return Index8 from SkAndroidCodec::computeOutputColorType"

This reverts commit b6f4767294261dca3beef6f280c4bac69df3f930.

Reason for revert: This breaks CTS tests in Android. Doh.

Original change's description:
> Do not return Index8 from SkAndroidCodec::computeOutputColorType
>
> Given that this is the only known use of Index8 color type,
> this is essentially an experimental delete.
>
> Bug: skia:6620
> Change-Id: Ib363d237e0217f6e7f461a62e54d32892c428095
> Reviewed-on: https://skia-review.googlesource.com/10586
> Reviewed-by: Leon Scroggins <scroggo@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>

TBR=msarett@google.com,scroggo@google.com,reed@google.com
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:6620

Change-Id: I2b44c695b8b95659520e9532901f636f56e01e2a
Reviewed-on: https://skia-review.googlesource.com/19084
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
b6f4767294261dca3beef6f280c4bac69df3f930 07-Jun-2017 Matt Sarett <msarett@google.com> Do not return Index8 from SkAndroidCodec::computeOutputColorType

Given that this is the only known use of Index8 color type,
this is essentially an experimental delete.

Bug: skia:6620
Change-Id: Ib363d237e0217f6e7f461a62e54d32892c428095
Reviewed-on: https://skia-review.googlesource.com/10586
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
33deb7ed4d583c88187ba240efb749e9a1fd6843 07-Jun-2017 Leon Scroggins III <scroggo@google.com> Make SkCodec more flexible about its required frame

SkCodec sets fRequiredFrame to be the earliest possible frame that a
given frame can depend on. e.g.

- Frame A fills the screen, Keep
- Frame B does not cover A, Keep
- Frame C covers B but not A, and is opaque

Frame C can depend on either A or B. SkCodec already reports that C
depends on A. This CL allows a client of SkCodec to use either A or
B to create C.

Also expose the DisposalMethod. Since any frame between A and C can
be used to create C except for DisposePrevious frames, the client
needs to be able to know the disposal method so they do not try to
use such a frame to create C.

Further, the disposal method can be used to give the client a better
idea whether they will continue to need a frame. (e.g. if frame i is
DisposePrevious and depends on i-1, the client may not want to steal
i-1 to create i, since i+1 may also depend on i-1.)

TODO: Share code for decoding prior frames between GIF and WEBP

Change-Id: I91a5ae22ba3d8dfbe0bde833fa67ae3da0d81ed6
Reviewed-on: https://skia-review.googlesource.com/13722
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Chris Blume <cblume@chromium.org>
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
3ea1798829df1a5d163b1851783046b624c29ea2 02-Jun-2017 Robert Phillips <robertphillips@google.com> Remove ImmediateFlush mode

Change-Id: I7db113e66d81516b2beb5eefeddf488d9bfed2e5
Reviewed-on: https://skia-review.googlesource.com/18488
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
/external/skia/dm/DMSrcSink.cpp
761d27c4d76bbd553c10cfe835d572b6fa33cf26 01-Jun-2017 Mike Klein <mtklein@chromium.org> update SkRasterPipeline::run() to also take y

y isn't used yet. This is just a warmup that updates the callers.

Change-Id: I78f4f44e2b82f72b3a39fa8a8bdadef1d1b8a99e
Reviewed-on: https://skia-review.googlesource.com/18381
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
f485cf9f186f017b2be68fb3c336faa0c9f79b5c 26-May-2017 Matt Sarett <msarett@google.com> Tag CodecSrc bitmaps with standard color spaces

Tests were previously dependent on the fact that drawBitmap calls were
using the legacy sprite blitters. Now these tests are blocking the
change that fixes drawBitmap behavior.
https://skia-review.googlesource.com/c/17923/

Bug: skia:
Change-Id: Ia9e5244243f18680d7593b0fa9de942dbbeeeb1d
Reviewed-on: https://skia-review.googlesource.com/18027
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
b24704d35f67f5b460be9c92794892e06adceb46 24-May-2017 Mike Klein <mtklein@chromium.org> SkRasterPipeline in SkArenaAlloc

Bug: skia:6673

Change-Id: Ia2bae4f6a9039a007a10b6b45bcf2f0854bf6e5c
Reviewed-on: https://skia-review.googlesource.com/17794
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
eceee040d69a2dd07c58c67c0a18b55f088cd35d 23-May-2017 Leon Scroggins III <scroggo@google.com> Premultiply in DM before drawing unpremul f16

We special case N32, but need to also handle f16

Change-Id: I0d6061d55e55c5952c740255e4600366d8d77919
Reviewed-on: https://skia-review.googlesource.com/17786
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
557fbbe05ba48bcc20be684d11fe0edfc24c87ba 23-May-2017 Leon Scroggins III <scroggo@google.com> Add animation support to SkWebpCodec

TBR=reed@google.com
(No change to the public API, but changed a header file)

SkWebpCodec:
- Implement onGetFrameCount, onGetFrameInfo, and onGetRepetitionCount
- Respect the alpha reported by libwebp. Although the spec states that
it is only a hint, the libwebp encoder uses it properly. Respecting
allows us to draw opaque images faster and decode them to 565. This
also matches other SkCodecs (and Chromium).
- onGetPixels:
- Decode the frame requested, recursively decoding required frame if
necessary
- When blending with a prior frame, use SkRasterPipeline

SkCodec:
- Move check for negative index to getFrameInfo
- Reset the colorXform if one is not needed

SkCodecAnimation:
- Add new blend enum, for WebP's (and APNG's) non-blending option

SkFrameHolder:
- New base classes for frames and the owner of the frames, allowing
code sharing between SkWebpCodec and SkGifCodec (particularly for
determining whether a frame has alpha and what frame it depends on)
- When moving items from SkGIFFrameContext, use Skia conventions (i.e.
int instead of unsigned)
- Rename "delay time" to "duration", to match e.g. SkFrameInfo::
fDuration

SkGifImageReader:
- Move pieces to SkFrameHolder, and adapt to changes made in the
process
- Make setAlphaAndRequiredFrame (now on the base class SkFrameHolder)
more general to support webp, and add support for frames that do not
blend
- Change SkGIFFrameContext from a struct to a class, to match how we
use the distinction elsewhere (i.e. struct is a small object with
public fields)
- Rework hasTransparentPixel (now hasTransparency, since it returns true
in some cases where there is not a transparent pixel) to better fit
with the modified setAlphaAndRequiredFrame. Also be more consistent
when there is no transparent pixel but no color map.
- Simplify an if condition that was previously simplified in 2d61e717
but accidentally got reverted in a4db9be6

CodecAnimTest:
- Test new animated webp files
- Rearrange the test to more cleanly print alpha type mismatches for
the first frame

resources:
- webp-animated.webp
- animated webp from Chromium
- blendBG.webp
- new webp file using bits of webp-animated-semitransparent4.webp
from Chromium
- tests required frame and alpha when using the non-blending mode
- frames have the following properties:
- Frame 0: no alpha, fills screen
- Frame 1: alpha, fills screen
- Frame 2: no alpha, fills screen
- Frame 3: alpha, fills screen, blendBG
- Frame 4: no alpha, fills screen, blendBG
- Frame 5: alpha, blendBG
- Frame 6: covers 4, has alpha, blendBG
- also used to test decoding to 565 if the new frame data has alpha
but blends onto an opaque frame

DM.cpp:
- Test animated images to non-native 8888 and unpremul

DMSrcSink.cpp:
- Do not test non-native 8888 decodes to f16 dst
- Test unpremul decodes to f16
- Copy a frame of an animated image prior to drawing, since in unpremul
mode, the DM code will premultiply first.

Bug: skia: 3315
Change-Id: I4e55ae2ee5bc095b37a743bdcfac644be603b980
Reviewed-on: https://skia-review.googlesource.com/16707
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
a40d9c89b7661b8f9997d582ceb44553b95e9671 19-May-2017 Matt Sarett <msarett@google.com> Improve test coverage of image decode modes

Summary of the new world...

--image

CodecSrc and ImageGenSrc tests run on:
(1) 8888 with kIgnore transfer fn behavior
(2) srgb with kRespect transfer fn behavior
(3) f16

AndroidCodecSrc and BRDCodecSrc tests run on:
(1) 8888, since SkAndroidCodec always uses kIgnore
(2) f16, since android uses f16

--colorImage

ColorCodecSrc tests run on:
(1) 8888 in kBaseline mode, so we can see what the raw pixels look like
(2) srgb in color correct modes
(3) f16 in color correct modes

Bug: skia:
Change-Id: I65d1a04051da6f94bf5e48f7bc610f482870dc75
Reviewed-on: https://skia-review.googlesource.com/17396
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
ebb1b5c297e394ab19f99d807095672b7f5d8aef 12-May-2017 Matt Sarett <msarett@google.com> Add new SkImageGenerator::getPixels() API, deprecate the old

This is fairly aggressive in that it will break any client
that is currently using SkImageGenerator with kIndex8.
I'm guessing that we don't have any clients doing that.

Bug: skia:6620
Change-Id: Ifd16f5232bb3a9f759c225315c57492d917ed9ca
Reviewed-on: https://skia-review.googlesource.com/16601
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
8185f59335e8055961ea63502e74c6a186e3a546 26-Apr-2017 Robert Phillips <robertphillips@google.com> Hardwire opList lookAhead & lookBack parameters

If/when we double check these settings we can either re-add these parameters or change the code manually.
The driving goal here is to shrink GrRenderTargetOpList.

Change-Id: I7819de18f97e8282e8754e3438130f797ebb3c37
Reviewed-on: https://skia-review.googlesource.com/14381
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
/external/skia/dm/DMSrcSink.cpp
249b8e3a2b6450be2e2315f8f9496eec03cfd1c1 17-Apr-2017 Leon Scroggins III <scroggo@google.com> Switch SkCodec to int for counts and indices

This matches other Skia APIs. size_t was adopted from blink/
GIFImageReader.

Change-Id: Ic83e59f0942f597c4fb834e623acd9886ad483fe
Reviewed-on: https://skia-review.googlesource.com/13274
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Reviewed-by: Chris Blume <cblume@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
4edb5d219eb99aa1e8fbe5e37260d3b34314e54b 17-Apr-2017 Mike Reed <reed@google.com> hide lockpixels api behind flag

guarded by SK_SUPPORT_OBSOLETE_LOCKPIXELS

needs https://codereview.chromium.org/2820873002/# to land first
Bug: skia:6481
Change-Id: I1c39902cbf6fe99f622adfa8192733b95f7fea09

Change-Id: I1c39902cbf6fe99f622adfa8192733b95f7fea09
Reviewed-on: https://skia-review.googlesource.com/13580
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
12e946b4bfdf598bffb276776ea6e25439e25265 17-Apr-2017 Mike Reed <reed@google.com> deprecate odd variants of SkCanvas::readPixels

Bug: skia:6513
Change-Id: I51179a85f0912d3f899c368c30a943d346dd1d05
Reviewed-on: https://skia-review.googlesource.com/13589
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
fafe135349bd34961a12bfd8185733709cd0e45e 11-Apr-2017 Hal Canary <halcanary@google.com> SkSize can be aggregate-initialized

Previosly, SkSize had a base class, which prevented it.

Also removes unused SkISize::clampNegToZero() and
SkSize::clampNegToZero().

Change-Id: I7b93b42f6f6381c66e294bbedee99ad53c6c3436
Reviewed-on: https://skia-review.googlesource.com/13187
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
68feef423dfa1f3e2e6e9b0f4df1027f6e8645b1 11-Apr-2017 Matt Sarett <msarett@google.com> Allow BF and BRD clients to request an output color space

Bug: skia:
Change-Id: I0f0d3bfdd5c47544ab71167fd7984ee8e8ac5903
Reviewed-on: https://skia-review.googlesource.com/11601
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
45cde31b2e4e192e26984d15ffb2f718ef5f1055 03-Apr-2017 Hal Canary <halcanary@google.com> SkMultiPictureDocument : clean up MultiPictureDocumentReader interface

Motivation: We may want to make SkMultiPictureDocument.h public in the
future.

Change-Id: Ie97b88d51a179c2283155d65bcadee32178115ca
Reviewed-on: https://skia-review.googlesource.com/11402
Commit-Queue: Hal Canary <halcanary@google.com>
Reviewed-by: Herb Derby <herb@google.com>
/external/skia/dm/DMSrcSink.cpp
6b3155c4be0476bc53541b0431c368a44e69f0a7 03-Apr-2017 Mike Reed <reed@google.com> Revert[4] "clean up (partially) colortable api""""

Fixes:
- create temp api for android to pass nullptr
- don't release and access sk_sp<SkData> at the same time in parameters

This reverts commit b14131c1851eea6acbd34cc42a8f860daed36b21.

Bug: skia:
Change-Id: Ic0e4f62520ba9f35455499ed30d306ad19d998a8
Reviewed-on: https://skia-review.googlesource.com/11129
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
b14131c1851eea6acbd34cc42a8f860daed36b21 01-Apr-2017 Mike Reed <reed@google.com> Revert "Revert[2] "clean up (partially) colortable api"""

This reverts commit 9920b10f5292838f00600f676c4578cd11705e60.

Reason for revert: trying to get details on w2k failure

https://chromium-swarm.appspot.com/task?id=354345d34ba3b310&refresh=10

Caught exception 3221225477 EXCEPTION_ACCESS_VIOLATION, was running:
unit test HugeBlurImageFilter
unit test FontNames
unit test Codec_PngRoundTrip
unit test ClampRange
unit test FontHost
unit test ColorMatrixFilter
f16 image scaled_codec_premul abnormal.wbmp
565 image brd_android_codec_divisor_0.167 interlaced3.png_0.167
unit test Codec_png
unit test ImageFilterBlurLargeImage
unit test FontObj
unit test DrawText
unit test GrShape
565 image brd_android_codec_divisor_0.333 interlaced2.png_0.333
unit test PathOpsOpCubicsThreaded
unit test PathOpsOpLoopsThreaded
unit test FontMgr
unit test ColorToHSVRoundTrip
unit test Image_Serialize_Encoding_Failure
Likely culprit:
unit test Image_Serialize_Encoding_Failure
step returned non-zero exit code: -1073741819


Original change's description:
> Revert[2] "clean up (partially) colortable api""
>
> This reverts commit 1d1165ca6575e082b892c5460492c411618783ad.
>
> Bug: skia:
> Change-Id: Idbc0634ae3cec2e79f592d252de8751b077e6408
> Reviewed-on: https://skia-review.googlesource.com/11024
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>

TBR=reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ia4e73434b083224baa36092c69526c2f59bb16aa
Reviewed-on: https://skia-review.googlesource.com/11025
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
9920b10f5292838f00600f676c4578cd11705e60 01-Apr-2017 Mike Reed <reed@google.com> Revert[2] "clean up (partially) colortable api""

This reverts commit 1d1165ca6575e082b892c5460492c411618783ad.

Bug: skia:
Change-Id: Idbc0634ae3cec2e79f592d252de8751b077e6408
Reviewed-on: https://skia-review.googlesource.com/11024
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
1d1165ca6575e082b892c5460492c411618783ad 31-Mar-2017 Mike Klein <mtklein@chromium.org> Revert "clean up (partially) colortable api"

This reverts commit 2e491a6a113c5e16a3b7bede5fa6f588deeb928d.

Reason for revert: Windows unit tests failing?

Original change's description:
> clean up (partially) colortable api
>
> Needs this to land: https://codereview.chromium.org/2789853002/
>
> Bug: skia:
> Change-Id: I38d916a546b7fa64d000d973e695ddda24a589e7
> Reviewed-on: https://skia-review.googlesource.com/10600
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Matt Sarett <msarett@google.com>
>

TBR=msarett@google.com,scroggo@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I626e7edfcea82576a440dcaa851a04cedee6233f
Reviewed-on: https://skia-review.googlesource.com/10966
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
2e491a6a113c5e16a3b7bede5fa6f588deeb928d 31-Mar-2017 Mike Reed <reed@google.com> clean up (partially) colortable api

Needs this to land: https://codereview.chromium.org/2789853002/

Bug: skia:
Change-Id: I38d916a546b7fa64d000d973e695ddda24a589e7
Reviewed-on: https://skia-review.googlesource.com/10600
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
1a3c4b8cce9b6b4024bca8814be61c94cebabc19 17-Mar-2017 Herb Derby <herb@google.com> Eager or Lazy evaluation of sub-drawings for SkDeferredCanvas.

Allow evaluation choice of Lazy or Eager evaluation for SkDeferredCanvas.

Eager is used for drawing to a non-recording canvas to reduce the number of
all operations.

Lazy is used for drawing to a recording canvas to reduce the amount decode/encode
that happens.

R=reed@google.com

Change-Id: I7837c4f6e5911c153e0796162e1170edbc34839e
Reviewed-on: https://skia-review.googlesource.com/9839
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
919cc4562cc615c7f4b4325def1f7454bc8dd724 18-Mar-2017 Mike Klein <mtklein@google.com> Revert "Revert "Add color spin test for SkColorSpaceXformCanvas""

This reverts commit 73e21af21390c2806eb1350253233903808edd6b.

Reason for revert: I will fix the broken bot next week.

Original change's description:
> Revert "Add color spin test for SkColorSpaceXformCanvas"
>
> This reverts commit cb01aec63bcb3dee52afcf3605bcd64166b873c0.
>
> Reason for revert: Breaks Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE
>
> Original change's description:
> > Add color spin test for SkColorSpaceXformCanvas
> >
> > Also changes behavior to treat nullptr srcs as sRGB.
> >
> > Testing locally, it looks like 353 gms have no diffs from 8888.
> > There are 269 diffs - some are fine (gms that do color space stuff)
> > and some are bugs.
> >
> > BUG=skia:
> >
> > Change-Id: I55c2825f4f4b857e0b0a0ec050c6db82ac881492
> > Reviewed-on: https://skia-review.googlesource.com/9738
> > Reviewed-by: Brian Osman <brianosman@google.com>
> > Commit-Queue: Matt Sarett <msarett@google.com>
> >
>
> TBR=mtklein@google.com,msarett@google.com,brianosman@google.com,reviews@skia.org
> # Not skipping CQ checks because original CL landed > 1 day ago.
> BUG=skia:
>
> Change-Id: I70bb69f747b863d267494e37a60888a51ab0184c
> Reviewed-on: https://skia-review.googlesource.com/9823
> Reviewed-by: Eric Boren <borenet@google.com>
> Commit-Queue: Eric Boren <borenet@google.com>
>

TBR=borenet@google.com,mtklein@google.com,msarett@google.com,reviews@skia.org,brianosman@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
BUG=skia:

Change-Id: I766382e6655f614042cded84f547f9fd5b109fca
Reviewed-on: https://skia-review.googlesource.com/9879
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
/external/skia/dm/DMSrcSink.cpp
73e21af21390c2806eb1350253233903808edd6b 17-Mar-2017 Eric Boren <borenet@google.com> Revert "Add color spin test for SkColorSpaceXformCanvas"

This reverts commit cb01aec63bcb3dee52afcf3605bcd64166b873c0.

Reason for revert: Breaks Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-SK_USE_DISCARDABLE_SCALEDIMAGECACHE

Original change's description:
> Add color spin test for SkColorSpaceXformCanvas
>
> Also changes behavior to treat nullptr srcs as sRGB.
>
> Testing locally, it looks like 353 gms have no diffs from 8888.
> There are 269 diffs - some are fine (gms that do color space stuff)
> and some are bugs.
>
> BUG=skia:
>
> Change-Id: I55c2825f4f4b857e0b0a0ec050c6db82ac881492
> Reviewed-on: https://skia-review.googlesource.com/9738
> Reviewed-by: Brian Osman <brianosman@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>
>

TBR=mtklein@google.com,msarett@google.com,brianosman@google.com,reviews@skia.org
# Not skipping CQ checks because original CL landed > 1 day ago.
BUG=skia:

Change-Id: I70bb69f747b863d267494e37a60888a51ab0184c
Reviewed-on: https://skia-review.googlesource.com/9823
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Eric Boren <borenet@google.com>
/external/skia/dm/DMSrcSink.cpp
cb01aec63bcb3dee52afcf3605bcd64166b873c0 15-Mar-2017 Matt Sarett <msarett@google.com> Add color spin test for SkColorSpaceXformCanvas

Also changes behavior to treat nullptr srcs as sRGB.

Testing locally, it looks like 353 gms have no diffs from 8888.
There are 269 diffs - some are fine (gms that do color space stuff)
and some are bugs.

BUG=skia:

Change-Id: I55c2825f4f4b857e0b0a0ec050c6db82ac881492
Reviewed-on: https://skia-review.googlesource.com/9738
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
841101d348bbfae2ca44e0a0f267c974d38c9891 10-Mar-2017 Mike Klein <mtklein@chromium.org> SkColorSpaceXformCanvas

TODO:
images
shaders
color filters
image filters
a couple stray color arrays

Change-Id: Ib91639bb0a6a00af737dd5186180011fe5120860
Reviewed-on: https://skia-review.googlesource.com/9529
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
bd7c551a0f65cb79fe4ed188ce5b594d653bddad 07-Mar-2017 Brian Salomon <bsalomon@google.com> Don't run image tests on msaa configs.

BUG=skia:6331
BUG=skia:4888

Change-Id: I8b66f4662342c2b60ddd2859146839d7cb09bbeb
Reviewed-on: https://skia-review.googlesource.com/9339
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
/external/skia/dm/DMSrcSink.cpp
e370cbe2bf26a785017d0bef3fa3d0c170e5080a 03-Mar-2017 Brian Salomon <bsalomon@google.com> Remove clip to bounds GrContextOption

Change-Id: I02da998640a3dd8848426179a91a9105d1024f0e
Reviewed-on: https://skia-review.googlesource.com/9225
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
/external/skia/dm/DMSrcSink.cpp
05cb4c3e509449b0b7332ad563acfcb194b86a07 02-Mar-2017 Matt Sarett <msarett@google.com> Use non-fatal errors for WIC decoding failures

This should fix flakiness on the Win 2k8 bots.

BUG=skia:

Change-Id: Ibdd33279a092172f0b154493f59790a8db9f58bd
Reviewed-on: https://skia-review.googlesource.com/9142
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
d7875f57bd5f17ac27f1cb2ace25224299ff2389 01-Mar-2017 Derek Sollenberger <djsollen@google.com> Refactor SkLiteDL to no longer extend SkDrawable.

Change-Id: Ieaa849bceba0e98e4c99491c721fe945a0694e68
Reviewed-on: https://skia-review.googlesource.com/9111
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Stan Iliev <stani@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
/external/skia/dm/DMSrcSink.cpp
e812d496aaa5e5e9f2117de8f442c297c9cb1367 21-Feb-2017 csmartdalton <csmartdalton@google.com> Rename GrContextFactory::ContextOptions to ContextOverrides

Also changes the behavior of these flags to only override their
corresponding context options when set, and to leave them unchanged
when not set.

BUG=skia:

Change-Id: I09f6be09997594fa888d9045dd4901354ef3f880
Reviewed-on: https://skia-review.googlesource.com/8780
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
/external/skia/dm/DMSrcSink.cpp
bae888e652dfe5c2ce840eff7760c8ab7317b7d6 18-Feb-2017 Mike Reed <reed@google.com> hide via-svg until I can fix g3

BUG=skia:

Change-Id: I226194a4db5c9618dd312337bf196d8f21825a12
Reviewed-on: https://skia-review.googlesource.com/8720
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
f67c45994dedc96eb979e331ab156649847071a4 17-Feb-2017 Mike Reed <reed@google.com> add ViaSVG to dm

BUG=skia:

Change-Id: I52892a0dd466bee6e3abcaa89a373b93493d201f
Reviewed-on: https://skia-review.googlesource.com/8682
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Florin Malita <fmalita@chromium.org>
/external/skia/dm/DMSrcSink.cpp
185130c643f0f6b20dcf14c200074748be282a7e 15-Feb-2017 Mike Reed <reed@google.com> return and take SkImageGenerator as unique_ptr

BUG=skia:

Change-Id: I4bc11042dd1dbf1eabd40af206027bc65acc3186
Reviewed-on: https://skia-review.googlesource.com/8444
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
77a7a1b57c16c97f056c1e50c03bdc954947778c 07-Feb-2017 Matt Sarett <msarett@google.com> SkColorSpace: remove named API, add gamut API

Reland from: https://skia-review.googlesource.com/c/8021/

BUG=skia:

Change-Id: I18985f130587b15fccbc86b76b2bb5c49ba5ba8a
Reviewed-on: https://skia-review.googlesource.com/8136
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
1f2fff2544a9dc6a0f169a017d374eca9f04c6b5 07-Feb-2017 Matt Sarett <msarett@google.com> Revert "SkColorSpace: remove named API, add gamut API"

This reverts commit ecaaf6f1c156e5690200322fc2636380c1f63dd8.

Reason for revert: Breaks everything

Original change's description:
> SkColorSpace: remove named API, add gamut API
>
> BUG=skia:
>
> Change-Id: I01c5e1874c9a034febc64e25b3aaafb5050393a6
> Reviewed-on: https://skia-review.googlesource.com/8021
> Reviewed-by: Brian Osman <brianosman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Matt Sarett <msarett@google.com>
>

TBR=msarett@google.com,brianosman@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Change-Id: Ief5a0a4eeabe75a21f7512e23fc15309151066c4
Reviewed-on: https://skia-review.googlesource.com/8127
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
ecaaf6f1c156e5690200322fc2636380c1f63dd8 06-Feb-2017 Matt Sarett <msarett@google.com> SkColorSpace: remove named API, add gamut API

BUG=skia:

Change-Id: I01c5e1874c9a034febc64e25b3aaafb5050393a6
Reviewed-on: https://skia-review.googlesource.com/8021
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
5e221e7ca26130393a0527bb9b5155d6685b74ba 06-Feb-2017 Hal Canary <halcanary@google.com> SkXPS: new document API.

Now requires a IXpsOMObjectFactory pointer. This will allow sandboxing
to be used in Chromium. (Chrome will create a IXpsOMObjectFactory, then
go into sandbox mode, then call SkDocumenent::MakeXPS().)

Change-Id: Ic4b48d4b148c44e188d12a9481fb74735546528a
Reviewed-on: https://skia-review.googlesource.com/8052
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
abc88d26365efa14b58d26ca3b8fbfb58a7dcbad 06-Feb-2017 Hal Canary <halcanary@google.com> SkXPS: Begin refactoring SkXPSDevice

A later CL will move all document-level fields and methods into
SkXPSDocument.

* SkXPSDocument cnstructor requires a xps factory ptr.

* All device layers share ownership of a single factory.

* renames SkDocument_XPS to the easier-to-say SkXPSDocument.

* Moves autocoinitialize to DM.

TODO: pipe the IXpsOMObjectFactory* into the SkDocument api.

No change in rendered documents.

Change-Id: I8a4680a3603951b1ce5f6c1de48714d4902061a9
Reviewed-on: https://skia-review.googlesource.com/7998
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
ea518f0a7eaeb3f2efc4c106f75c8a2d4c37f2b9 03-Feb-2017 Matt Sarett <msarett@google.com> Disable unpremul f16 image tests

Testing premul f16 is enough test coverage, and we aren't doing
this correctly right now anyways (the drawing code assumes a
premul bitmap, we would need to premultiply after the unpremul
decode).

BUG=skia:

Change-Id: I798f56db67faadd0348974453a05cd726b9a509c
Reviewed-on: https://skia-review.googlesource.com/8020
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
09a1c088b407b2cb04b7f41d71b227e7da4757a8 02-Feb-2017 Matt Sarett <msarett@google.com> Prepare to test all image decode modes to F16

I've only been running F16 tests in "colorImage" mode.
We really should be running our "image" tests to F16 as well - so
they can be tested with scaling, subsets, etc.

This CL fixes bugs so that we can enable those tests.

BUG=skia:

Change-Id: I8137eb4fce7ea12f2c9d233a029d946d4a63e6b0
Reviewed-on: https://skia-review.googlesource.com/7801
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
95e3c058ef633782f7549e9e1c2727d60dbc8ee5 11-Jan-2017 Hal Canary <halcanary@google.com> SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h

* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).

* SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h

* "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"

Revert "Revert 'SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h'"
This reverts commit c456b73fef9589bbdc5eb83eaa83e53c357bb3da.

Change-Id: Ie2c1a17c20134b8ceab85a68b3ae3e61c24fbaab
Reviewed-on: https://skia-review.googlesource.com/6886
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
c456b73fef9589bbdc5eb83eaa83e53c357bb3da 11-Jan-2017 Kevin Lubick <kjlubick@google.com> Revert "SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h"

This reverts commit a5494f117086d712855e4b6289c58c92d1549bcf.

Reason for revert: Broke Google3

Original change's description:
> SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h
>
> * SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).
>
> * SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h
>
> * "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"
>
> Change-Id: Idacd86ca09e22bf092422228599ae0d9bedded88
> Reviewed-on: https://skia-review.googlesource.com/4543
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Hal Canary <halcanary@google.com>
>

TBR=halcanary@google.com,bungeman@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ie8bd176121c3ee83c110d66c0d0ac65e09bfc9c5
Reviewed-on: https://skia-review.googlesource.com/6884
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
/external/skia/dm/DMSrcSink.cpp
a5494f117086d712855e4b6289c58c92d1549bcf 10-Jan-2017 Hal Canary <halcanary@google.com> SkTypes.h : move SkAutoMalloc into SkAutoMalloc.h

* SkAutoFree moved to SkTemplates.h (now implmented with unique_ptr).

* SkAutoMalloc and SkAutoSMalloc moved to SkAutoMalloc.h

* "SkAutoFree X(sk_malloc_throw(N));" --> "SkAutoMalloc X(N);"

Change-Id: Idacd86ca09e22bf092422228599ae0d9bedded88
Reviewed-on: https://skia-review.googlesource.com/4543
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
09d994ecb30de2e62a31af2c16307af31fe0e0b3 21-Dec-2016 Brian Salomon <bsalomon@google.com> Misc batch->op cleanup Part 1 of 2

Change-Id: I80f951976558a284e55386e0a368f08bd835d8ca
Reviewed-on: https://skia-review.googlesource.com/6359
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
334df3a5627809110e7819346dacdb5233269fdc 16-Dec-2016 Matt Sarett <msarett@google.com> Fix gray png BRD tests

Before my recent CL, these were not run at all (because the decode
color type was gray and the bitmap color type was alpha).
https://skia-review.googlesource.com/c/6088/

Now that these are being run, we should mark the bitmap as
gray so they draw correctly.

BUG=skia:

Change-Id: I9bdfe97671a60da2bcbef55377e1c1b2bd326f8f
Reviewed-on: https://skia-review.googlesource.com/6160
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
25351021a6fddd390273fbc8bbdb84a56865b561 14-Dec-2016 Matt Sarett <msarett@google.com> Reenable 16-bit png brd decode tests

I accidentally turned these off in:
https://skia-review.googlesource.com/c/6023/

Even though the decode color type does not match the canvas,
we still want to run the test.

BUG=skia:

Change-Id: Ia96069a44e20d62a58d37a98bac81cfab5470fc0
Reviewed-on: https://skia-review.googlesource.com/6088
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
3fc97d75ac14b323aa3365039fd35c0c643dd84d 09-Dec-2016 Leon Scroggins III <scroggo@google.com> Fix SkGifCodec bugs around truncated data

Prior to this CL, if a GIF file was truncated before reading the local
color map of a frame, incremental decode would do the wrong thing. In
onStartIncrementalDecode, we would either create a color table based on
the global color map, or we would create a dummy one with only one
color (transparent). The dummy color table is correct if there is
neither a global nor a local color map, and allows us to fill the frame
with transparent. But if more data is provided, and it includes an
actual color map and image data, one of the following can happen:
- If the created color table is smaller than the actual one, the
decoded data may include indices outside of the range of the created
color table, resulting in a crash.
- If we get lucky, and the created color table is large enough, it may
still be the wrong colors (and most likely is).

To solve this, make onStartIncrementalDecode fail if there is a local
color map that has not been read yet. A future call may read more data
and read the correct color map.

This is done by returning kIncompleteInput in
SkGifCodec::prepareToDecode if there is a local color map that has not
yet been read. (It is possible that there is no color map at all, in
which case we still need to support decoding that frame. Skip
attempting to decode in that case.)

In onGetPixels, if prepareToDecode returned kIncompleteInput, return
kInvalidInput. Although the input is technically incomplete, no future
call will provide more data (unlike in incremental decoding), and there
is nothing interesting for the client to draw. This also prevents
SkCodec from attempting to fill the data with an SkSwizzler, which has
not been created. (An alternative solution would be create the dummy
color table and an SkSwizzler, which would keep the current behavior.
But I think the new behavior of returning kInvalidInput makes more
sense.)

Add tests to verify the intended behavior:
- getPixels fails.
- startIncrementalDecode fails, but after providing more data it will
succeed and incremental decoding matches the image decoded from the
full stream.
- Both succeed if there is no color table at all.

Change-Id: Ifb52fe7f723673406a28e80c8805a552f0ac33b6
Reviewed-on: https://skia-review.googlesource.com/5758
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
5476128f0a88217414f05e6a7ee518cdb411d026 01-Dec-2016 raftias <raftias@google.com> Added CMYK support for ICC profiles.

Changed ICC parsing/SkGammas/SkColorLookUpTable to handle non-3-channel
inputs. Parsed CMYK A2B ICC profiles. Integrated this with SkJpegCodec
(the only file that supports CMYK) and SkColorSpaceXform_A2B to allow
parsing and color xforming of ICC CMYK images.

CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD

Change-Id: I11e3d17180244281be3eb43fd608609925a7f71e
Reviewed-on: https://skia-review.googlesource.com/5444
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
62458a6778bc39eea5360301a67d192b3a263df1 01-Dec-2016 Mike Klein <mtklein@chromium.org> Revert "Added CMYK support for ICC profiles."

This reverts commit 51c3fcd376c5c9972d9476b5532f6164375a38d1.

Reason for revert: ASAN, MSAN both take issue with parse_and_load_gamma()

Original change's description:
> Added CMYK support for ICC profiles.
>
> Changed ICC parsing/SkGammas/SkColorLookUpTable to handle non-3-channel
> inputs. Parsed CMYK A2B ICC profiles. Integrated this with SkJpegCodec
> (the only file that supports CMYK) and SkColorSpaceXform_A2B to allow
> parsing and color xforming of ICC CMYK images.
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5197
> CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD
>
>
> Change-Id: Id6619f63f04071f79cd2d84321857dfa269ad3aa
> Reviewed-on: https://skia-review.googlesource.com/5197
> Commit-Queue: Mike Klein <mtklein@chromium.org>
> Reviewed-by: Matt Sarett <msarett@google.com>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
> Reviewed-by: Leon Scroggins <scroggo@google.com>
>

TBR=mtklein@chromium.org,mtklein@google.com,msarett@google.com,scroggo@google.com,brianosman@google.com,raftias@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ib43fef00bc233c0b4fa47ed29040d69601def267
Reviewed-on: https://skia-review.googlesource.com/5423
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
51c3fcd376c5c9972d9476b5532f6164375a38d1 30-Nov-2016 raftias <raftias@google.com> Added CMYK support for ICC profiles.

Changed ICC parsing/SkGammas/SkColorLookUpTable to handle non-3-channel
inputs. Parsed CMYK A2B ICC profiles. Integrated this with SkJpegCodec
(the only file that supports CMYK) and SkColorSpaceXform_A2B to allow
parsing and color xforming of ICC CMYK images.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5197
CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD


Change-Id: Id6619f63f04071f79cd2d84321857dfa269ad3aa
Reviewed-on: https://skia-review.googlesource.com/5197
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Matt Sarett <msarett@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@google.com>
/external/skia/dm/DMSrcSink.cpp
25a880960a9a689a745a01071ecba3fe494b5940 01-Dec-2016 Brian Salomon <bsalomon@google.com> Rename GrBatch to GrOp

Change-Id: I27b6324f8040899fafeda23ca524bc54a4dbf090
Reviewed-on: https://skia-review.googlesource.com/5392
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
/external/skia/dm/DMSrcSink.cpp
5c1c8d15f5f077b3fbec647139b3df31b74a4d95 30-Nov-2016 Brian Salomon <bsalomon@google.com> Remove batch bounds drawing debug option

Change-Id: I6b8ffc81a1255974f8acd1dfc47cfd406fd4b0bf
Reviewed-on: https://skia-review.googlesource.com/5335
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
/external/skia/dm/DMSrcSink.cpp
5df4934b3e40cdc378e225d1dda39f015cae9bae 12-Nov-2016 Mike Reed <reed@google.com> Revert[2] "Change SkCanvas to *not* inherit from SkRefCnt"

Changes over original:
- conditionalize ownership in SkPictureRecorder
- conditionalize ownership in SkCanvasStateUtils

This reverts commit b613c266df48cf45296ecc23d1bd7098c84bb7ba.

BUG=skia:

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

Change-Id: Ib25514d6f546c69b6650b5c957403b04f7380dc2
Reviewed-on: https://skia-review.googlesource.com/4742
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
b613c266df48cf45296ecc23d1bd7098c84bb7ba 10-Nov-2016 Heather Miller <hcm@google.com> Revert "Change SkCanvas to *not* inherit from SkRefCnt"

This reverts commit 824075071885b6b741c141cbe2134d8345d34589.

Reason for revert: Breaking WebView (chromium:663959)

Original change's description:
> Change SkCanvas to *not* inherit from SkRefCnt
>
> Definitely tricky for classes like SkNWayCanvas, where the caller (today)
> need not pay attention to ownership of the canvases it gave the NWay
> (after this CL, the caller *must* managed ownership)
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4441
>
> DOCS_PREVIEW= https://skia.org/?cl=4441
>
> Change-Id: Ib1ac07a3cdf0686d78e7aaa4735d45cc90bea081
> Reviewed-on: https://skia-review.googlesource.com/4441
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
>

TBR=djsollen@google.com,mtklein@google.com,halcanary@google.com,robertphillips@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I5e3b3e876b7d2c09833cf841801321033b6b968b
Reviewed-on: https://skia-review.googlesource.com/4687
Commit-Queue: Heather Miller <hcm@google.com>
Reviewed-by: Heather Miller <hcm@google.com>
/external/skia/dm/DMSrcSink.cpp
824075071885b6b741c141cbe2134d8345d34589 09-Nov-2016 Mike Reed <reed@google.com> Change SkCanvas to *not* inherit from SkRefCnt

Definitely tricky for classes like SkNWayCanvas, where the caller (today)
need not pay attention to ownership of the canvases it gave the NWay
(after this CL, the caller *must* managed ownership)

BUG=skia:

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

DOCS_PREVIEW= https://skia.org/?cl=4441

Change-Id: Ib1ac07a3cdf0686d78e7aaa4735d45cc90bea081
Reviewed-on: https://skia-review.googlesource.com/4441
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>
/external/skia/dm/DMSrcSink.cpp
bf111d7bc9ba3857433e30eae27f0272c34ed0fb 08-Nov-2016 Ben Wagner <bungeman@google.com> Move SkOSPath out of include/core.

It is moved to src/utils. It is almost a tool, but has two uses in
src/ports.

The existing SkOSFile.cpp is left empty for the time being since it is
mentioned in Chromium's BUILD.gn for Skia.

Change-Id: I3bb7f7c4214359eb6ab906bfe76737d20bf1d6c7
Reviewed-on: https://skia-review.googlesource.com/4536
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Ben Wagner <bungeman@google.com>
/external/skia/dm/DMSrcSink.cpp
acd2f5cddc631d5008a04da483d630968df307c9 08-Nov-2016 fmalita <fmalita@chromium.org> Fix DM race in SVGSrc

The SVG source currently attempts to build the DOM lazily, in response
to draw() or size() calls. But apprently DM may call these
concurrently.

Build the DOM in the constructor instead, to avoid races (and the need
for synchronization).

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

Review-Url: https://codereview.chromium.org/2482123003
/external/skia/dm/DMSrcSink.cpp
4b43cc2af9ba32e9420484de2e23bbc821be127a 07-Nov-2016 Hal Canary <halcanary@google.com> fix svg compile

TBR=scroggo@google.com
NOTRY=true

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

Change-Id: I264193474ddd3eb806818ca22fd2bca65ab3b4f1
Reviewed-on: https://skia-review.googlesource.com/4485
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Hal Canary <halcanary@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
2db83612576d64935bd88747cf9855e79cad70d4 04-Nov-2016 Hal Canary <halcanary@google.com> bench, samples, etc: s/SkAutoTUnref/sk_sp/

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

Change-Id: Ice071684ac8a99e4bb405b4b9be8e8f42c7bac42
Reviewed-on: https://skia-review.googlesource.com/4437
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
12e8dc256dc521c3b1f465726b99fbce3b95728c 03-Nov-2016 Ben Wagner <bungeman@google.com> Fix iOS and Angle builds.

"Remove SkAutoTDelete." did not run trybots on these specific bots.

Change-Id: Ibfa731df387a90a78187b88c75483800981a691c
Reviewed-on: https://skia-review.googlesource.com/4387
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
/external/skia/dm/DMSrcSink.cpp
145dbcd165d9d27298eb8888bc240e2d06a95464 03-Nov-2016 Ben Wagner <bungeman@google.com> Remove SkAutoTDelete.

Replace with std::unique_ptr.

Change-Id: I5806cfbb30515fcb20e5e66ce13fb5f3b8728176
Reviewed-on: https://skia-review.googlesource.com/4381
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
a9e9bfc6e40894c0447c044a380c74061cb9e15e 01-Nov-2016 Matt Sarett <msarett@google.com> Delete qcms

This was always intended to be a temporary dependency to use for
testing. It has served its purpose.

Also, this has already been dropped (accidentally, I think) by
the new GN build.

TBR=reed@google.com

BUG=skia:

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

Change-Id: Ic72ee08bbfaf86ed86a4122fd38be2921eb1327e
Reviewed-on: https://skia-review.googlesource.com/4220
Reviewed-by: Matt Sarett <msarett@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
/external/skia/dm/DMSrcSink.cpp
6bd5284415bd983b0628c4941dff5def40018f5a 27-Oct-2016 bungeman <bungeman@google.com> Remove SkAutoTUnref and SkAutoTDelete from public includes.

This also makes the required changed to src, tests, and tools. The few
public APIs modified by this change appear to be unused outside of Skia.

Removing these from the public API makes it easier to ensure users are
no longer using them.

This also updates GrGpu::wrapBackendXXX and the
::onWrapBackendXXX methods to clarify ownership.

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

Review-Url: https://codereview.chromium.org/2448593002
/external/skia/dm/DMSrcSink.cpp
53f63b69e83fd805418d72a6eeb860cf0fcff3c5 27-Oct-2016 scroggo <scroggo@chromium.org> Fix decoding GIF to 565

565 cannot take the !writeTransparentPixels path, so disable it for
cases where we might have to take that path.

This only affects frames beyond the first. If the first frame has
a transparent pixel, it will be marked as non-opaque, so we cannot
decode to 565 anyway.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2441833002

Review-Url: https://codereview.chromium.org/2441833002
/external/skia/dm/DMSrcSink.cpp
85c7fe8d6d87850aed83599864b63dca37af5fcf 25-Oct-2016 Hal Canary <halcanary@google.com> DM: JSON Debug Sink

Currently, the following GMs crash the debug canvas:
~dont_clip_to_layer
~imageblur
~imagefilterscropped
~pictureimagefilter
~savelayer_lcdtext
~textfilter_image
// TODO(halcanary): fix this.

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

Change-Id: Ieed3502119cd639fe345f3a41d436d5e39f3bdf1
Reviewed-on: https://skia-review.googlesource.com/3742
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Hal Canary <halcanary@google.com>
/external/skia/dm/DMSrcSink.cpp
90e971a41b1c190732bef34a79a7bdbdabbf5761 25-Oct-2016 scroggo <scroggo@chromium.org> DM: Draw image frames in a grid

Instead of drawing a large vertical strip for CodecSrc::kAnimated_Mode,
draw a grid of images. Compute the grid based on the square root of the
frame count, so the grid will be roughly square.

BUG=skia:5881

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

Review-Url: https://codereview.chromium.org/2445863002
/external/skia/dm/DMSrcSink.cpp
6e8c68e2423e3042e54d6c215f4c43dbf9916839 24-Oct-2016 scroggo <scroggo@chromium.org> Differentiate animated image results

Prior to this CL, a kAnimated_Mode CodecSrc (which draws a strip of
all frames in an image) has the same name as a non-animated one. This
means that Gold compares the two. Someone triaging will see two very
different images (a strip versus a single image) and think one of them
is wrong.

With this change, the two will have different names so they will not
be compared with one another.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2446543003

Review-Url: https://codereview.chromium.org/2446543003
/external/skia/dm/DMSrcSink.cpp
19b91531e912283d237435d94516575b28713cba 24-Oct-2016 scroggo <scroggo@chromium.org> Add support for multiple frames in SkCodec

Add an interface to decode frames beyond the first in SkCodec, and
add an implementation for SkGifCodec.

Add getFrameData to SkCodec. This method reads ahead in the stream
to return a vector containing meta data about each frame in the image.
This is not required in order to decode frames beyond the first, but
it allows a client to learn extra information:
- how long the frame should be displayed
- whether a frame should be blended with a prior frame, allowing the
client to provide the prior frame to speed up decoding

Add a new fields to SkCodec::Options:
- fFrameIndex
- fHasPriorFrame

The API is designed so that SkCodec never caches frames. If a
client wants a frame beyond the first, they specify the frame in
Options.fFrameIndex. If the client does not have the
frame's required frame (the frame that this frame must be blended on
top of) cached, they pass false for
Options.fHasPriorFrame. Unless the frame is
independent, the codec will then recursively decode all frames
necessary to decode fFrameIndex. If the client has the required frame
cached, they can put it in the dst they pass to the codec, and the
codec will only draw fFrameIndex onto it.

Replace SkGifCodec's scanline decoding support with progressive
decoding, and update the tests accordingly.

Implement new APIs in SkGifCodec. Instead of using gif_lib, use
GIFImageReader, imported from Chromium (along with its copyright
headers) with the following changes:
- SkGifCodec is now the client
- Replace blink types
- Combine GIFColorMap::buildTable and ::getTable into a method that
creates and returns an SkColorTable
- Input comes from an SkStream, instead of a SegmentReader. Add
SkStreamBuffer, which buffers the (potentially partial) stream in
order to decode progressively.
(FIXME: This requires copying data that previously was read directly
from the SegmentReader. Does this hurt performance? If so, can we
fix it?)
- Remove UMA code
- Instead of reporting screen width and height to the client, allow the
client to query for it
- Fail earlier if the first frame AND screen have size of zero
- Compute required previous frame when adding a new one
- Move GIFParseQuery from GIFImageDecoder to GIFImageReader
- Allow parsing up to a specific frame (to skip parsing the rest of the
stream if a client only wants the first frame)
- Compute whether the first frame has alpha and supports index 8, to
create the SkImageInfo. This happens before reporting that the size
has been decoded.

Add GIFImageDecoder::haveDecodedRow to SkGifCodec, imported from
Chromium (along with its copyright header), with the following changes:
- Add support for sampling
- Use the swizzler
- Keep track of the rows decoded
- Do *not* keep track of whether we've seen alpha

Remove SkCodec::kOutOfOrder_SkScanlineOrder, which was only used by GIF
scanline decoding.

Call onRewind even if there is no stream (SkGifCodec needs to clear its
decoded state so it will decode from the beginning).

Add a method to SkSwizzler to access the offset into the dst, taking
subsetting into account.

Add a GM that animates a GIF.
Add tests for the new APIs.

*** Behavior changes:
* Previously, we reported that an image with a subset frame and no transparent
index was opaque and used the background index (if present) to fill the
background. This is necessary in order to support index 8, but it does not
match viewers/browsers I have seen. Examples:
- Chromium and Gimp render the background transparent
- Firefox, Safari, Linux Image Viewer, Safari Preview clip to the frame (for
a single frame image)
This CL matches Chromium's behavior and renders the background transparent.
This allows us to have consistent behavior across products and simplifies
the code (relative to what we would have to do to continue the old behavior
on Android). It also means that we will no longer support index 8 for some
GIFs.
* Stop checking for GIFSTAMP - all GIFs should be either 89a or 87a.
This matches Chromium. I suspect that bugs would have been reported if valid
GIFs started with "GIFVER" instead of "GIF89a" or "GIF87a" (but did not decode
in Chromium).

*** Future work not included in this CL:
* Move some checks out of haveDecodedRow, since they are the same for the
entire frame e.g.
- intersecting the frameRect with the full image size
- whether there is a color table
* Change when we write transparent pixels
- In some cases, Chromium deemed this unnecessary, but I suspect it is slower
than the fallback case. There will continue to be cases where we should
*not* write them, but for e.g. the first pass where we have already
cleared to transparent (which we may also be able to skip) writing the
transparent pixels will not make anything incorrect.
* Report color type and alpha type per frame
- Depending on alpha values, disposal methods, frame rects, etc, subsequent
frames may have different properties than the first.
* Skip copies of the encoded data
- We copy the encoded data in case the stream is one that cannot be rewound,
so we can parse and then decode (possibly not immediately). For some input
streams, this is unnecessary.
- I was concerned this cause a performance regression, but on average the
new code is faster than the old for the images I tested [1].
- It may cause a performance regression for Chromium, though, where we can
always move back in the stream, so this should be addressed.

Design doc:
https://docs.google.com/a/google.com/document/d/12Qhf9T92MWfdWujQwCIjhCO3sw6pTJB5pJBwDM1T7Kc/

[1] https://docs.google.com/a/google.com/spreadsheets/d/19V-t9BfbFw5eiwBTKA1qOBkZbchjlTC5EIz6HFy-6RI/

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

Review-Url: https://codereview.chromium.org/2045293002
/external/skia/dm/DMSrcSink.cpp
526972ecb5411b84ba2f5e20252f178f9ee2151f 24-Oct-2016 Brian Osman <brianosman@google.com> Rename all color space factories from New* to Make*

Matches our naming convention for all other types - factories that
return sk_sp (or any type that intelligently manages its own
lifetime) are named Make.

Previous factories are still around, assuming
SK_SUPPORT_LEGACY_COLOR_SPACE_FACTORIES is defined. Enable that
define for Android, etc.

See also: https://codereview.chromium.org/2442053002/

BUG=skia:

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

Change-Id: Iaea9376490736b494e8ffc820831f052bbe1478d
Reviewed-on: https://skia-review.googlesource.com/3822
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
313c4635e3f1005e6807f5b0ad52805f30902d66 20-Oct-2016 Matt Sarett <msarett@google.com> Safely handle unsupported color xforms in SkCodec

(1) The transformation code *should* support any src SkColorSpace
that we successfully parse. This is agreed upon internally and
by clients. The fact that we currently don't is just a bug...
(2) We cannot and will not support all SkColorSpaces as dsts.

So if we fail to make a SkColorSpaceXform, we should assume that
it was caused by a bad dst color space. The correct response in
this case is to return kInvalidConversion. I've rewritten the CL
to do this.

The fact that weird src spaces will sometimes trigger a
kInvalidConversion is just a bug that is being actively worked on.

TBR=reed@google.com

BUG=skia:

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

Change-Id: Iac2b45120507ec71b1b3d555c61931f7348dad9e
Reviewed-on: https://skia-review.googlesource.com/3661
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Robert Aftias <raftias@google.com>
/external/skia/dm/DMSrcSink.cpp
9488833428e83c93a7e6002f4d056084fb57112f 18-Oct-2016 raftias <raftias@google.com> Refactored SkColorSpace and added in a Lab PCS GM

The refactoring breaks off A2B0 tag support into a separate
subclass of SkColorSpace_Base, while keeping the current
(besides CLUT) functionality in a XYZTRC subclass.

ICC profile loading is now aware of this and creates the A2B0
subclass when SkColorSpace::NewICC() is called on a profile
in need of the A2B0 functionality.

The LabPCSDemo GM loads a .icc profile containing a LAB PCS and
then runs a Lab->XYZ conversion on an image using it so we can
display it and test out the A2B0 SkColorSpace functionality,
sans a/b/m-curves, as well as the Lab->XYZ conversion code.

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

Review-Url: https://codereview.chromium.org/2389983002
/external/skia/dm/DMSrcSink.cpp
e54c75f351c775201049743c506d7a508d0fef91 13-Oct-2016 Mike Klein <mtklein@chromium.org> remove SkError

It has not caught on.

BUG=skia:

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

Change-Id: Ib2ee4ef99bc89c8f4b7504e42a9d7d9dfc483015
Reviewed-on: https://skia-review.googlesource.com/3321
Reviewed-by: Leon Scroggins <scroggo@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
/external/skia/dm/DMSrcSink.cpp
7c602de058c6332dfd92b70a3d05d4a3c401a3ae 13-Oct-2016 raftias <raftias@google.com> Removed makeLinearGamma() from the public API for SkColorSpace

It will now reside in SkColorSpace_Base. Future work for SkColorSpace
will cause this function to not be desirable or sensible to call on
all SkColorSpaces. Call sites were changed to make a kSRGBLinear_Named
instead of kSRGB_Named -> makeLinearGamma() (the majority of cases),
and if that was not possible, SkColorSpace_Base::makeLinearGamma()
was called instead.

TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2412613005

Review-Url: https://codereview.chromium.org/2412613005
/external/skia/dm/DMSrcSink.cpp
374772bd61951f01bf84fe17bf53d8867681c9ae 06-Oct-2016 reed <reed@google.com> Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints"

This reverts commit c245574ba3d0e2ade6c94b2812de3baa383bf4c4.

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

TBR=

Review-Url: https://codereview.chromium.org/2396953002
/external/skia/dm/DMSrcSink.cpp
c245574ba3d0e2ade6c94b2812de3baa383bf4c4 05-Oct-2016 Mike Reed <reed@google.com> Revert[7] "replace SkXfermode obj with SkBlendMode enum in paints"

This reverts commit Ib4a154cdd5f5d1dcac921ef50d53b79a2d6a1be8.

Reason for revert: new assert from 100K bot

Original change's description:
> Revert[6] "replace SkXfermode obj with SkBlendMode enum in paints"
>
> - perform version check in CreateProc for XfermodeImageFilter and ArithmeticImageFilter
> This reverts commit 3ed485f4249e17abb4b11f5018d03175fd1afb44.
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2992
>
> Change-Id: Ib4a154cdd5f5d1dcac921ef50d53b79a2d6a1be8
> Reviewed-on: https://skia-review.googlesource.com/2992
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>

TBR=reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I848e5a69c5cd67f2c14889f4f0a346652578c4ff
Reviewed-on: https://skia-review.googlesource.com/3023
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
2b2fc7db4f8a4a4d4a51d7eb4df6aa62e309928d 05-Oct-2016 Mike Reed <reed@google.com> Revert[6] "replace SkXfermode obj with SkBlendMode enum in paints"

- perform version check in CreateProc for XfermodeImageFilter and ArithmeticImageFilter
This reverts commit 3ed485f4249e17abb4b11f5018d03175fd1afb44.

BUG=skia:

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

Change-Id: Ib4a154cdd5f5d1dcac921ef50d53b79a2d6a1be8
Reviewed-on: https://skia-review.googlesource.com/2992
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
3ed485f4249e17abb4b11f5018d03175fd1afb44 04-Oct-2016 Mike Reed <reed@google.com> Revert[5] "replace SkXfermode obj with SkBlendMode enum in paints"

This reverts commit I0fa5c58af428f3da8565465d1219a34ef8417d9a.

Reason for revert: failing to deserialize some of the 100K

Original change's description:
> Revert[4] "replace SkXfermode obj with SkBlendMode enum in paints"
>
> This reverts commit 2cbcd12281ee807214df094964c584c78932e10b.
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2924
>
> Change-Id: I0fa5c58af428f3da8565465d1219a34ef8417d9a
> Reviewed-on: https://skia-review.googlesource.com/2924
> Reviewed-by: Mike Reed <reed@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>

TBR=reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I1805a57eef5ebcac203da5989c8539345ecf806f
Reviewed-on: https://skia-review.googlesource.com/2962
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
1834242ec6e3cd62669227d394bc79e1cd66dcfb 04-Oct-2016 Mike Reed <reed@google.com> Revert[4] "replace SkXfermode obj with SkBlendMode enum in paints"

This reverts commit 2cbcd12281ee807214df094964c584c78932e10b.

BUG=skia:

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

Change-Id: I0fa5c58af428f3da8565465d1219a34ef8417d9a
Reviewed-on: https://skia-review.googlesource.com/2924
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
2cbcd12281ee807214df094964c584c78932e10b 03-Oct-2016 Mike Reed <reed@google.com> Revert "Revert "Revert "replace SkXfermode obj with SkBlendMode enum in paints"""

This reverts commit I86875511a13497112827cbaed1dbd7639e9e3d10.

legacy (100K) skp failure

Original change's description:
> Revert "Revert "replace SkXfermode obj with SkBlendMode enum in paints""
>
> This reverts commit ce02e7175872abde3721df9e5d3ec0ab8384cd8e.
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2878
>
> Change-Id: I86875511a13497112827cbaed1dbd7639e9e3d10
> Reviewed-on: https://skia-review.googlesource.com/2878
> Reviewed-by: Matt Sarett <msarett@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>

TBR=msarett@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ife6f0cf3a22b3e8cf885a188f7f44e1ff62e06a5
Reviewed-on: https://skia-review.googlesource.com/2881
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
70cdb396eb5ffbbed128b902532e9292b5ec0e9d 03-Oct-2016 Mike Reed <reed@google.com> Revert "Revert "replace SkXfermode obj with SkBlendMode enum in paints""

This reverts commit ce02e7175872abde3721df9e5d3ec0ab8384cd8e.

BUG=skia:

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

Change-Id: I86875511a13497112827cbaed1dbd7639e9e3d10
Reviewed-on: https://skia-review.googlesource.com/2878
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
ce02e7175872abde3721df9e5d3ec0ab8384cd8e 03-Oct-2016 Mike Reed <reed@google.com> Revert "replace SkXfermode obj with SkBlendMode enum in paints"

This reverts commit I4fb489ba6b3f77b458f7e4a99f79c7ad10859135.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> replace SkXfermode obj with SkBlendMode enum in paints
>
> BUG=skia:5814
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2714
>
> Change-Id: I4fb489ba6b3f77b458f7e4a99f79c7ad10859135
> Reviewed-on: https://skia-review.googlesource.com/2714
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Mike Reed <reed@google.com>
>

TBR=bsalomon@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: I3e43f79ef5c1709929663fe63cc1f67cd78270b7
Reviewed-on: https://skia-review.googlesource.com/2871
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
0591897548c8fcb7d53cc94053e01702e58f1ac5 03-Oct-2016 Mike Reed <reed@google.com> replace SkXfermode obj with SkBlendMode enum in paints

BUG=skia:5814

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

Change-Id: I4fb489ba6b3f77b458f7e4a99f79c7ad10859135
Reviewed-on: https://skia-review.googlesource.com/2714
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Reed <reed@google.com>
/external/skia/dm/DMSrcSink.cpp
d14df7c700bf77c8c42c791ca7a865c1bbc96679 22-Sep-2016 reed <reed@google.com> document.close from bool to void

Nothing meaningful is returned, it is inconsistent with the bulk of the rest of skia's api. The C api is waiting on this change as well.

Required chrome CL: https://codereview.chromium.org/2355343003/

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

Review-Url: https://codereview.chromium.org/2354403002
/external/skia/dm/DMSrcSink.cpp
bdf3e5c0341884ead2c1fd97084637b37249418a 17-Sep-2016 fmalita <fmalita@chromium.org> [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
/external/skia/dm/DMSrcSink.cpp
8e6c7ada5a4c5a950cded765d14d3e6906acdc79 16-Sep-2016 scroggo <scroggo@chromium.org> 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
/external/skia/dm/DMSrcSink.cpp
f93d71122e4fcfcdc674a0163455990b13855f2f 16-Sep-2016 bungeman <bungeman@google.com> SkFontData to use smart pointers.

The SkFontData type is not exposed externally, so any method which uses
it can be updated to use smart pointers without affecting external
users. Updating this first will make updating the public API much
easier.

This also updates SkStreamAsset* SkStream::NewFromFile(const char*) to
std::unique_ptr<SkStreamAsset> SkStream::MakeFromFile(const char*). It
appears that no one outside Skia is currently using SkStream::NewfromFile
so this is a good time to update it as well.

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

Committed: https://skia.googlesource.com/skia/+/d8c2476a8b1e1e1a1771b17e8dd4db8645914f8c
Review-Url: https://codereview.chromium.org/2339273002
/external/skia/dm/DMSrcSink.cpp
606add3dfb2f6d1dc3ee4921876e7c9fa01643f9 15-Sep-2016 bungeman <bungeman@google.com> Revert of SkFontData to use smart pointers. (patchset #3 id:40001 of https://codereview.chromium.org/2339273002/ )

Reason for revert:
Killing Mac

Original issue's description:
> SkFontData to use smart pointers.
>
> The SkFontData type is not exposed externally, so any method which uses
> it can be updated to use smart pointers without affecting external
> users. Updating this first will make updating the public API much
> easier.
>
> This also updates SkStreamAsset* SkStream::NewFromFile(const char*) to
> std::unique_ptr<SkStreamAsset> SkStream::MakeFromFile(const char*). It
> appears that no one outside Skia is currently using SkStream::NewfromFile
> so this is a good time to update it as well.
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339273002
>
> Committed: https://skia.googlesource.com/skia/+/d8c2476a8b1e1e1a1771b17e8dd4db8645914f8c

TBR=mtklein@chromium.org,halcanary@google.com,mtklein@google.com,reed@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/2343933002
/external/skia/dm/DMSrcSink.cpp
d8c2476a8b1e1e1a1771b17e8dd4db8645914f8c 15-Sep-2016 bungeman <bungeman@google.com> SkFontData to use smart pointers.

The SkFontData type is not exposed externally, so any method which uses
it can be updated to use smart pointers without affecting external
users. Updating this first will make updating the public API much
easier.

This also updates SkStreamAsset* SkStream::NewFromFile(const char*) to
std::unique_ptr<SkStreamAsset> SkStream::MakeFromFile(const char*). It
appears that no one outside Skia is currently using SkStream::NewfromFile
so this is a good time to update it as well.

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

Review-Url: https://codereview.chromium.org/2339273002
/external/skia/dm/DMSrcSink.cpp
39eaf5f9fd71183da5c3531cf4ce27b3161fcd60 15-Sep-2016 reed <reed@google.com> add helpers for using SkData with picture serialization

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

TBR=

Review-Url: https://codereview.chromium.org/2341693004
/external/skia/dm/DMSrcSink.cpp
e1baa7c105dad0f301ce34e5d6d1aa329334ef8c 14-Sep-2016 fmalita <fmalita@chromium.org> [SVGDom] Expose intrinsic size info

* expose intrinsic size info on <svg> nodes.

* tweak the SkSVGDOM constructor to no longer take an container size
param, but instead default to intrinsic size
* update clients to call SkSVGDOM::setContainerSize() explicitly, when
needed

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

Review-Url: https://codereview.chromium.org/2345533002
/external/skia/dm/DMSrcSink.cpp
f7eb6fc71abd7649d65a877e7a10d1060afc0c88 13-Sep-2016 msarett <msarett@google.com> Implement Fill() for incomplete decodes to RGBA_F16

Before this patch, we would hit an SkASSERT(false).

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

Review-Url: https://codereview.chromium.org/2335203002
/external/skia/dm/DMSrcSink.cpp
54dc4878b02765efea39e68b218df1e4bfff4b88 13-Sep-2016 reed <reed@google.com> add pipecanvas

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

Review-Url: https://codereview.chromium.org/2201323003
/external/skia/dm/DMSrcSink.cpp
42943c8aa9c611c18ad0f1a30a27669f3d82239c 12-Sep-2016 reed <reed@google.com> change SkStreams to work with sk_sp<SkData> instead of SkData*

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

Review-Url: https://codereview.chromium.org/2333713002
/external/skia/dm/DMSrcSink.cpp
2ecc35ffa5feb56cd088478589ba1e48382b2e1f 08-Sep-2016 msarett <msarett@google.com> Checking for valid colorType, alphaType, colorSpace in SkCodec

* Refactor to share code between SkPngCodec and SkWebpCodec
* Didn't end up sharing with SkJpegCodec but did refactor
that code a bit
* Disallow conversions to F16 with non-linear color spaces
* Fail to decode if we fail to create a SkColorSpaceXform
(should be an assert soon). We used to fallback on a
legacy decode if we failed to create the transform.
* A bunch of name changes

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

Committed: https://skia.googlesource.com/skia/+/7a9900d6d34e437bb24beb5524a1f6488ae138c9
Review-Url: https://codereview.chromium.org/2319293003
/external/skia/dm/DMSrcSink.cpp
85c922acec37726ac64e9be9a79de697c677f35d 08-Sep-2016 msarett <msarett@google.com> Revert of Checking for valid colorType, alphaType, colorSpace in SkCodec (patchset #2 id:100001 of https://codereview.chromium.org/2319293003/ )

Reason for revert:
Broken perf bots

Original issue's description:
> Checking for valid colorType, alphaType, colorSpace in SkCodec
>
> * Refactor to share code between SkPngCodec and SkWebpCodec
> * Didn't end up sharing with SkJpegCodec but did refactor
> that code a bit
> * Disallow conversions to F16 with non-linear color spaces
> * Fail to decode if we fail to create a SkColorSpaceXform
> (should be an assert soon). We used to fallback on a
> legacy decode if we failed to create the transform.
> * A bunch of name changes
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2319293003
>
> Committed: https://skia.googlesource.com/skia/+/7a9900d6d34e437bb24beb5524a1f6488ae138c9

TBR=scroggo@google.com,brianosman@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/2328663002
/external/skia/dm/DMSrcSink.cpp
7a9900d6d34e437bb24beb5524a1f6488ae138c9 08-Sep-2016 msarett <msarett@google.com> Checking for valid colorType, alphaType, colorSpace in SkCodec

* Refactor to share code between SkPngCodec and SkWebpCodec
* Didn't end up sharing with SkJpegCodec but did refactor
that code a bit
* Disallow conversions to F16 with non-linear color spaces
* Fail to decode if we fail to create a SkColorSpaceXform
(should be an assert soon). We used to fallback on a
legacy decode if we failed to create the transform.
* A bunch of name changes

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

Review-Url: https://codereview.chromium.org/2319293003
/external/skia/dm/DMSrcSink.cpp
179d88522c3cdd49480e34482c29a8afb027a6ad 16-Aug-2016 fmalita <fmalita@chromium.org> Only test SVG DM sources against direct raster/gpu sinks.

There isn't much value in testing against indirect or vector sinks.

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

Review-Url: https://codereview.chromium.org/2252443002
/external/skia/dm/DMSrcSink.cpp
8bbbb696cdc1351f615bc52ee119cfa384f77f30 15-Aug-2016 mtklein <mtklein@google.com> Revert of add parallel public API for recording SkLiteDL. (patchset #1 id:1 of https://codereview.chromium.org/2246893002/ )

Reason for revert:
looking like we won't need this

Original issue's description:
> add parallel public API for recording SkLiteDL.
>
> The API is restricted to pretty much just what Derek calls,
> but it's enough that we can switch testing over to use it.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2246893002
>
> Committed: https://skia.googlesource.com/skia/+/ced26a3d6b77d3a6744a8ccb8eff23eda45fc867

TBR=djsollen@google.com,reed@google.com,mtklein@chromium.org
# 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/2243393002
/external/skia/dm/DMSrcSink.cpp
ced26a3d6b77d3a6744a8ccb8eff23eda45fc867 15-Aug-2016 mtklein <mtklein@chromium.org> add parallel public API for recording SkLiteDL.

The API is restricted to pretty much just what Derek calls,
but it's enough that we can switch testing over to use it.

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

Review-Url: https://codereview.chromium.org/2246893002
/external/skia/dm/DMSrcSink.cpp
03591a762c0e3f541141d570625c2dab16deacba 07-Aug-2016 mtklein <mtklein@chromium.org> finish SkLiteDL

- makeThreadsafe()
- fix up some alignment problems
- drawVertices / drawPatch
- work around drawPicture() + default paint bugs?
- turn on tests.

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

Review-Url: https://codereview.chromium.org/2219343002
/external/skia/dm/DMSrcSink.cpp
9c5052f16b249d2b7674ea86bd24ed0038ccc61f 06-Aug-2016 mtklein <mtklein@chromium.org> SkLite*

SkLiteRecorder, a new SkCanvas, fills out SkLiteDL, a new SkDrawable.

This SkDrawable is a display list similar to SkRecord and SkBigPicture / SkRecordedDrawable, but with a few new design points inspired by Android and slimming paint:

1) SkLiteDL is structured as one big contiguous array rather than the two layer structure of SkRecord. This trades away flexibility and large-op-count performance for better data locality for small to medium size pictures.

2) We keep a global freelist of SkLiteDLs, both reusing the SkLiteDL struct itself and its contiguous byte array. This keeps the expected number of mallocs per display list allocation <1 (really, ~0) for cyclical use cases.

These two together mean recording is faster. Measuring against the code we use at head, SkLiteRecorder trends about ~3x faster across various size pictures, matching speed at 0 draws and beating the special-case 1-draw pictures we have today. (I.e. we won't need those special case implementations anymore, because they're slower than this new generic code.) This new strategy records 10 drawRects() in about the same time the old strategy took for 2.

This strategy stays the winner until at least 500 drawRect()s on my laptop, where I stopped checking.

A simpler alternative to freelisting is also possible (but not implemented here), where we allow the client to manually reset() an SkLiteDL for reuse when its refcnt is 1. That's essentially what we're doing with the freelist, except tracking what's available for reuse globally instead of making the client do it.

This code is not fully capable yet, but most of the key design points are there. The internal structure of SkLiteDL is the area I expect to be most volatile (anything involving Op), but its interface and the whole of SkLiteRecorder ought to be just about done.

You can run nanobench --match picture_overhead as a demo. Everything it exercises is fully fleshed out, so what it tests is an apples-to-apples comparison as far as recording costs go. I have not yet compared playback performance.

It should be simple to wrap this into an SkPicture subclass if we want.

I won't start proposing we replace anything old with anything new quite yet until I have more ducks in a row, but this does look pretty promising (similar to the SkRecord over old SkPicture change a couple years ago) and I'd like to land, experiment, iterate, especially with an eye toward Android.

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

Review-Url: https://codereview.chromium.org/2213333002
/external/skia/dm/DMSrcSink.cpp
a48f0e302c822c2d7b137d85d7345df6cd3bc259 04-Aug-2016 fmalita <fmalita@chromium.org> Speculative fix for internal builds

Guard the DMSrcSink SkSVGDOM.h include.

TBR=dogben@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2210583003

Review-Url: https://codereview.chromium.org/2210583003
/external/skia/dm/DMSrcSink.cpp
a2b9fdfe0b2dd3408064b7cfd1bf8677eaf06491 04-Aug-2016 fmalita <fmalita@chromium.org> Add an SVG DM source

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

Review-Url: https://codereview.chromium.org/2209593004
/external/skia/dm/DMSrcSink.cpp
d1ec89b1aca8f37a460a425259a23275f4d9a81d 03-Aug-2016 msarett <msarett@google.com> Perform color correction on png decodes

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184543003
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/2184543003
/external/skia/dm/DMSrcSink.cpp
38d909ec2875f79952de08f36adfaac5680d2c53 02-Aug-2016 bungeman <bungeman@google.com> Move off SK_SUPPORT_LEGACY_DATA_FACTORIES.

This moves Skia code off of SK_SUPPORT_LEGACY_DATA_FACTORIES.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2206633004

Review-Url: https://codereview.chromium.org/2206633004
/external/skia/dm/DMSrcSink.cpp
a714bc39294f19500269c8ec536139f75c4b1f25 29-Jul-2016 msarett <msarett@google.com> Fix various SkColorSpace bugs

(1) Fixes serialization/deserialization of wacky SkColorSpaces
(2) Fix gamma equals checking

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

Review-Url: https://codereview.chromium.org/2194903002
/external/skia/dm/DMSrcSink.cpp
50ce1f28ffede3fa3e38d330d4114ee52b387848 29-Jul-2016 msarett <msarett@google.com> Add color space xform support to SkJpegCodec (includes F16!)

Also changes SkColorXform to support:
RGBA->RGBA
RGBA->BGRA

Instead of:
RGBA->SkPMColor

TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
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/+/73d55332e2846dd05e9efdaa2f017bcc3872884b
Review-Url: https://codereview.chromium.org/2174493002
/external/skia/dm/DMSrcSink.cpp
39979d8c6b97889f600a212cfc9b063360f3de2f 29-Jul-2016 msarett <msarett@google.com> Revert of Add color space xform support to SkJpegCodec (includes F16!) (patchset #9 id:260001 of https://codereview.chromium.org/2174493002/ )

Reason for revert:
Breaking MSAN

Original issue's description:
> Add color space xform support to SkJpegCodec (includes F16!)
>
> Also changes SkColorXform to support:
> RGBA->RGBA
> RGBA->BGRA
>
> Instead of:
> RGBA->SkPMColor
>
> TBR=reed@google.com
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
> 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/+/73d55332e2846dd05e9efdaa2f017bcc3872884b

TBR=mtklein@google.com,reed@google.com,herb@google.com,brianosman@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/2195523002
/external/skia/dm/DMSrcSink.cpp
73d55332e2846dd05e9efdaa2f017bcc3872884b 29-Jul-2016 msarett <msarett@google.com> Add color space xform support to SkJpegCodec (includes F16!)

Also changes SkColorXform to support:
RGBA->RGBA
RGBA->BGRA

Instead of:
RGBA->SkPMColor

TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
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/2174493002
/external/skia/dm/DMSrcSink.cpp
530c844d25340eb2f2a4500c99c3f9d04a95b66e 21-Jul-2016 msarett <msarett@google.com> Remove unnecessary getColorSpace() API from SkCodec

Not needed since now we can get it from the SkImageInfo.

TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2170793004

Review-Url: https://codereview.chromium.org/2170793004
/external/skia/dm/DMSrcSink.cpp
9ce3a543c92a73e6daca420defc042886b3f2019 15-Jul-2016 msarett <msarett@google.com> Add capability for SkColorXform to output half floats

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

Review-Url: https://codereview.chromium.org/2147763002
/external/skia/dm/DMSrcSink.cpp
718df0ae3c9ea824eef3b80984550beb5ef2e1f2 15-Jul-2016 fmalita <fmalita@chromium.org> Make XML compilation conditional.

Only enabled for gyp-based builds at this time.

R=dogben@google.com,mtklein@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2150353002

Review-Url: https://codereview.chromium.org/2150353002
/external/skia/dm/DMSrcSink.cpp
babc3de2ce7c2f7b32b1b6b9f36d2ac4a4d8dee1 08-Jul-2016 reed <reed@google.com> deferred canvas

tries to eliminate unneeded clipRects and concats (and their associated save/restores).

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

Review-Url: https://codereview.chromium.org/2120333002
/external/skia/dm/DMSrcSink.cpp
0f83e0151f757ecd8d55d55ffefef58ecb11a97b 24-Jun-2016 msarett <msarett@google.com> Add support for 3D colorLUTs to SkColorXform

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

Review-Url: https://codereview.chromium.org/2097553002
/external/skia/dm/DMSrcSink.cpp
d2809573deb7b99e764f7f71fe34a5b5322df0b2 20-Jun-2016 msarett <msarett@google.com> Support sRGB dsts in opt code

201295.jpg on HP z620 (300x280)

QCMS Xform 0.418 ms
Skia NEW Xform 0.378 ms

Vs QCMS 1.11x

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

Review-Url: https://codereview.chromium.org/2078623002
/external/skia/dm/DMSrcSink.cpp
b109b8c5ec40a7dd85a0a2951a1f98fa63b805aa 16-Jun-2016 brianosman <brianosman@google.com> Lots of progress on switching to SkColorSpace rather than SkColorProfileType

Fixed a bunch of code in Ganesh, as well as usage of SkColorProfileType in most of our tools (DM, SampleApp, Viewer, nanobench, skiaserve, HelloWorld).

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

Committed: https://skia.googlesource.com/skia/+/6a61a875467646f8dbc37cfecf49e12d1f475170
Review-Url: https://codereview.chromium.org/2069173002
/external/skia/dm/DMSrcSink.cpp
ab8241880d09eb1774b4993ca6df048a27b7020c 16-Jun-2016 brianosman <brianosman@google.com> Revert of Lots of progress switching to SkColorSpace rather than SkColorProfileType (patchset #10 id:180001 of https://codereview.chromium.org/2069173002/ )

Reason for revert:
Mac crashes in GrUploadPixmapToTexture

Original issue's description:
> Lots of progress on switching to SkColorSpace rather than SkColorProfileType
>
> Fixed a bunch of code in Ganesh, as well as usage of SkColorProfileType in most of our tools (DM, SampleApp, Viewer, nanobench, skiaserve, HelloWorld).
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2069173002
>
> Committed: https://skia.googlesource.com/skia/+/6a61a875467646f8dbc37cfecf49e12d1f475170

TBR=reed@google.com,herb@google.com,msarett@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/2072813002
/external/skia/dm/DMSrcSink.cpp
6a61a875467646f8dbc37cfecf49e12d1f475170 16-Jun-2016 brianosman <brianosman@google.com> Lots of progress on switching to SkColorSpace rather than SkColorProfileType

Fixed a bunch of code in Ganesh, as well as usage of SkColorProfileType in most of our tools (DM, SampleApp, Viewer, nanobench, skiaserve, HelloWorld).

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

Review-Url: https://codereview.chromium.org/2069173002
/external/skia/dm/DMSrcSink.cpp
dea0340cadb759932e53416a657f5ea75fee8b5f 16-Jun-2016 msarett <msarett@google.com> Implement fast, correct gamma conversion for color xforms

201295.jpg on HP z620
(300x280, most common form of sRGB profile)

QCMS Xform 0.495 ms
Skia Old Xform 0.235 ms
Skia NEW Xform 0.423 ms

Vs Old Code 0.56x
Vs QCMS 1.17x

So to summarize, we are now much slower than before,
but still a bit faster than QCMS. And now we are also
far more accurate than QCMS :).

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

Review-Url: https://codereview.chromium.org/2060823003
/external/skia/dm/DMSrcSink.cpp
e8bd9abe3334b1e22d46d28e7c5d5c6495c99fda 08-Jun-2016 msarett <msarett@google.com> Modify QCMS test to match use by Chrome

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

Review-Url: https://codereview.chromium.org/2049813002
/external/skia/dm/DMSrcSink.cpp
d8d6855345b486d2ec03047497da2036ccea3eb7 06-Jun-2016 scroggo <scroggo@google.com> Revert of Make SkPngCodec decode progressively. (patchset #26 id:520001 of https://codereview.chromium.org/1997703003/ )

Reason for revert:
Still causing problems in Google3, e.g.

https://test.corp.google.com/ui#cl=124138817&flags=CAMQBQ==&id=OCL:124138817:BASE:124139560:1465227435491:219ffbdb&t=//third_party/skia/HEAD:dm

Original issue's description:
> 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()
>
> 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
> - Make initializeSwizzler return a bool instead of an SkCodec::Result
> (It only returned kSuccess or kInvalidInput anyway)
>
> 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
>
> Committed: https://skia.googlesource.com/skia/+/a4b09a117d4d1ba5dda372e6a2323e653766539e
>
> Committed: https://skia.googlesource.com/skia/+/30e78c9737ff4861dc4e3fa1e4cd010680ed6965
>
> Committed: https://skia.googlesource.com/skia/+/6fb2391b2cc83ee2160b4e994faa8128975acc1f

TBR=reed@google.com,msarett@google.com,scroggo@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=skia:4211
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2044573002

Review-Url: https://codereview.chromium.org/2044573002
/external/skia/dm/DMSrcSink.cpp
469f1c503d52e47322d4b83683d0d8a5d98380c4 06-Jun-2016 msarett <msarett@google.com> Use SK_TEST_QCMS to mark qcms test code

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

Review-Url: https://codereview.chromium.org/2031053005
/external/skia/dm/DMSrcSink.cpp
6fb2391b2cc83ee2160b4e994faa8128975acc1f 02-Jun-2016 scroggo <scroggo@chromium.org> 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()

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
- Make initializeSwizzler return a bool instead of an SkCodec::Result
(It only returned kSuccess or kInvalidInput anyway)

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

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

Committed: https://skia.googlesource.com/skia/+/30e78c9737ff4861dc4e3fa1e4cd010680ed6965

Review-Url: https://codereview.chromium.org/1997703003
/external/skia/dm/DMSrcSink.cpp
45420a945cfce1b83da954ab5fcb63516f646c0f 02-Jun-2016 halcanary <halcanary@google.com> SkMultiPictureDocument & SkMultiPictureDocumentReader

also, a new DM::Src.

motivation: To be used to test the printing pipeline in Chromium.

BUG=skia:5370

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

Review-Url: https://codereview.chromium.org/2023593002
/external/skia/dm/DMSrcSink.cpp
9876ac5b3016e5353c072378ac1545a0a2270757 01-Jun-2016 msarett <msarett@google.com> Create SkColorSpaceXform to handle color conversions

Also adds testing of qcms color correction, so we can compare
SkColorSpaceXform outputs to qcms outputs.

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

Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c

Review-Url: https://codereview.chromium.org/1952063002
/external/skia/dm/DMSrcSink.cpp
26694c32d2a7a511bb2832204bb7759219b9d7bc 01-Jun-2016 scroggo <scroggo@google.com> Revert of Make SkPngCodec decode progressively. (patchset #24 id:480001 of https://codereview.chromium.org/1997703003/ )

Reason for revert:
Still breaking Google3 e.g.:

https://sponge.corp.google.com/target?id=9261d31b-34fc-4f0f-981e-f92f7c5cea2c&target=//third_party/skia/HEAD:dm#shard=1|run=1|attempt=1|page=-1

https://test.corp.google.com/ui#cl=123773095&flags=CAMQBQ==&id=OCL:123773095:BASE:123773415:1464804876959:b0ea9b1c&t=//third_party/skia/HEAD:dm

Original issue's description:
> 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()
>
> 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
> - Make initializeSwizzler return a bool instead of an SkCodec::Result
> (It only returned kSuccess or kInvalidInput anyway)
>
> 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
>
> Committed: https://skia.googlesource.com/skia/+/a4b09a117d4d1ba5dda372e6a2323e653766539e
>
> Committed: https://skia.googlesource.com/skia/+/30e78c9737ff4861dc4e3fa1e4cd010680ed6965

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

Review-Url: https://codereview.chromium.org/2026383002
/external/skia/dm/DMSrcSink.cpp
4a603fc591dcd36b3cb47344c244ecbbbaf179f4 01-Jun-2016 msarett <msarett@google.com> Revert of Create SkColorSpaceXform to handle color conversions (patchset #10 id:260001 of https://codereview.chromium.org/1952063002/ )

Reason for revert:
Google3 can't find qcms

Original issue's description:
> Create SkColorSpaceXform to handle color conversions
>
> Also adds testing of qcms color correction, so we can compare
> SkColorSpaceXform outputs to qcms outputs.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002
>
> Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c

TBR=reed@google.com,scroggo@google.com,mtklein@google.com,herb@google.com,brianosman@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/2023093004
/external/skia/dm/DMSrcSink.cpp
740cc88ee3d63c75e52d31238f2a32600cc57a8c 01-Jun-2016 msarett <msarett@google.com> Create SkColorSpaceXform to handle color conversions

Also adds testing of qcms color correction, so we can compare
SkColorSpaceXform outputs to qcms outputs.

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

Review-Url: https://codereview.chromium.org/1952063002
/external/skia/dm/DMSrcSink.cpp
30e78c9737ff4861dc4e3fa1e4cd010680ed6965 01-Jun-2016 scroggo <scroggo@chromium.org> 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()

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
- Make initializeSwizzler return a bool instead of an SkCodec::Result
(It only returned kSuccess or kInvalidInput anyway)

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

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

Review-Url: https://codereview.chromium.org/1997703003
/external/skia/dm/DMSrcSink.cpp
9a89a0966bba433a109f2b1275aaaeb630321bae 31-May-2016 scroggo <scroggo@google.com> Revert of Make SkPngCodec decode progressively. (patchset #18 id:340001 of https://codereview.chromium.org/1997703003/ )

Reason for revert:
This is failing tests and then crashing on Google3 [1]. The crashes are fixed by crrev.com/2026873002, but to fix the builder we'll need to upgrade its version of libpng.

[1] https://sponge.corp.google.com/target?id=e545ef55-4da4-4931-9524-1ac92acb61b1&target=//third_party/skia/HEAD:dm#shard=1|run=1|attempt=1|page=-1

Original issue's description:
> 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()
>
> 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
> - Make initializeSwizzler return a bool instead of an SkCodec::Result
> (It only returned kSuccess or kInvalidInput anyway)
>
> 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
>
> Committed: https://skia.googlesource.com/skia/+/a4b09a117d4d1ba5dda372e6a2323e653766539e

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

Review-Url: https://codereview.chromium.org/2023103002
/external/skia/dm/DMSrcSink.cpp
a4b09a117d4d1ba5dda372e6a2323e653766539e 31-May-2016 scroggo <scroggo@chromium.org> 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()

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
- Make initializeSwizzler return a bool instead of an SkCodec::Result
(It only returned kSuccess or kInvalidInput anyway)

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
/external/skia/dm/DMSrcSink.cpp
888dc16684da2158702639be2023f998b7c27f66 23-May-2016 msarett <msarett@google.com> Test color correction in DM

This will allow me to test and visualize some assumptions
on parsing and applying color profiles. Also, it should
help me find and fix bugs.

This is certainly not an optimized implementation, and, as
far as I know, it doesn't take any shortcuts to improve
performance. We'll probably want to do both of these
once we know where it fits in the pipeline.

Right now this test is only run on an arbitrary set of ~100
images from the top 10k skps. I'll continue to add more
"interesting" images and probably tweak the code as
necessary.

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

Review-Url: https://codereview.chromium.org/1995233003
/external/skia/dm/DMSrcSink.cpp
1a3619236b5363821b58698a8731168803bd29fe 20-May-2016 scroggo <scroggo@chromium.org> Remove unnecessary check

Follow-on from crrev.com/1996993003

No need to check the alpha type. If the color type is gray, the
source alpha type will be opaque.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2002723002

Review-Url: https://codereview.chromium.org/2002723002
/external/skia/dm/DMSrcSink.cpp
ba5848953e00685f9a57343aef94372c5803130a 20-May-2016 scroggo <scroggo@chromium.org> Finish supporting decoding opaque to non-opaque

When decoding to 565 or Gray, allow the client to incorrectly ask for premul.

When checking whether it's possible to decode to 565, return whether the
source is opaque.

In DM, allow decoding to 565 or Gray, even if the client also asked for premul.

This fixes a bug introduced in crrev.com/1999593003 when we stopped ever
requesting Opaque, resulting in us not testing 565 or Gray.

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

Review-Url: https://codereview.chromium.org/1996993003
/external/skia/dm/DMSrcSink.cpp
d1227a7417922ce26252d55815d0d1e98f0eb070 18-May-2016 msarett <msarett@google.com> Delete SkBitmapRegionCanvas

This was an approach we considered for implementing Android's
BitmapRegionDecoder.

It was useful for testing and comparison, but now is no longer worth
maintaining and testing.

The approach to subset/scaled decodes (clipped decode, then scale)
may be worth reconsidering at some point.

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

Review-Url: https://codereview.chromium.org/1990543002
/external/skia/dm/DMSrcSink.cpp
b1be46b1d938c21eafa7ded5560bcc10b71cd471 17-May-2016 msarett <msarett@google.com> Ensure that SkColorTable->fCount is set properly after decodes

We now have some blits that will process the color table.

If we erroneously report that the size of the color table is 256,
we will do extra work and annoy MSAN.

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

Review-Url: https://codereview.chromium.org/1982753002
/external/skia/dm/DMSrcSink.cpp
12e2f505696f283cc07ce8242e814263dd9e0950 16-May-2016 scroggo <scroggo@chromium.org> Only run kStripe_Mode on JPEGs

It was designed to test code in libjpeg-turbo. Skipping scanlines is
tested more generally in other tests.

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

Review-Url: https://codereview.chromium.org/1978013002
/external/skia/dm/DMSrcSink.cpp
f8dc9df9ab0a90b74d56df9583752a1c38ee20f4 16-May-2016 scroggo <scroggo@chromium.org> Drop AndroidCodecSrc::kDivisor_Mode

This is redundant with BRD tests.

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

Review-Url: https://codereview.chromium.org/1976303002
/external/skia/dm/DMSrcSink.cpp
8b7451aaf6b1c71e9d343a4df107893db277b6aa 11-May-2016 bsalomon <bsalomon@google.com> Turn ContextInfos returned by GrContextFactory into structs.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1966013002

Review-Url: https://codereview.chromium.org/1966013002
/external/skia/dm/DMSrcSink.cpp
69deca8d1e57daec540f8a7f10d9c660b640b9a9 29-Apr-2016 msarett <msarett@google.com> Add ColorCodecSrc for testing/comparison on color corrected decodes

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

Review-Url: https://codereview.chromium.org/1933753002
/external/skia/dm/DMSrcSink.cpp
4b6566644f704cf9e30c71fa547c9b5915752792 27-Apr-2016 halcanary <halcanary@google.com> SkDocument/PDF: new API

has a pdf/a switch.
sets metadata in factory.

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

Review URL: https://codereview.chromium.org/1916093002
/external/skia/dm/DMSrcSink.cpp
c7eb4905c4629eba44e76d98ce5e32546f739974 25-Apr-2016 msarett <msarett@google.com> Fix kSubset_Mode tests on non-native swizzles

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

Review URL: https://codereview.chromium.org/1918813002
/external/skia/dm/DMSrcSink.cpp
34e0ec40b10320765d4a4432f56e090556f9c75e 23-Apr-2016 msarett <msarett@google.com> Support the non-native (RGBA/BGRA) swizzle

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

Review URL: https://codereview.chromium.org/1907593004
/external/skia/dm/DMSrcSink.cpp
fbcfd6d060f4d42e6b9de70f676564fcf1d97eb5 14-Apr-2016 mtklein <mtklein@chromium.org> mojo -> nojo

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

Review URL: https://codereview.chromium.org/1889543003
/external/skia/dm/DMSrcSink.cpp
11064dfeb49daa64bd4e539284b9a6d1b78d6e5e 07-Apr-2016 mtklein <mtklein@chromium.org> Fix lazy coding in ViaSingletonPictures.

I was using SkRect::MakeLargest() as bounds, which is sort of nutso,
as that clearly is way out of bounds for how big a picture can feasibly
be, i.e. something closer to SkIRect::MakeLargest().

This was causing spurious quick rejects in drawPatch(). I didn't really
look much deeper to figure out why. It's easy enough to just feed it the
proper bounds of the entire content.

This means patch_primitive draws correctly in sp-8888 mode.
I also noticed the GM was too small... it clipped off most of its content.
So I've made it larger.

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

Review URL: https://codereview.chromium.org/1865143002
/external/skia/dm/DMSrcSink.cpp
85b4b53e78dcdeae2a51935ca5e214b0f1a06492 05-Apr-2016 bsalomon <bsalomon@google.com> Rename enums in GrContextFactory to remove "GL"

Also, remove kNative as a separate context type and instead make it an alias for kGL or kGLES based on OS.

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

Committed: https://skia.googlesource.com/skia/+/2d9c6f81353597aebf5934547e5cba7a872196fb

Review URL: https://codereview.chromium.org/1845923004
/external/skia/dm/DMSrcSink.cpp
94b87bd404d7007ce92672cc1853309df907e12a 04-Apr-2016 halcanary <halcanary@google.com> DM/PDF: stop adding unused rasterizer keywords

We can always add it back if we need it in the future.

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

Review URL: https://codereview.chromium.org/1852713002
/external/skia/dm/DMSrcSink.cpp
b4b4cf36c66900fdfaf63106d54a8fac786a3313 04-Apr-2016 bsalomon <bsalomon@google.com> Revert of Rename enums in GrContextFactory to remove "GL" (patchset #4 id:60001 of https://codereview.chromium.org/1845923004/ )

Reason for revert:
Many GM images unexpectedly changed with this CL.

Original issue's description:
> Rename enums in GrContextFactory to remove "GL"
>
> Also, remove kNative as a separate context type and instead make it an alias for kGL or kGLES based on OS.
>
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1845923004
>
> Committed: https://skia.googlesource.com/skia/+/2d9c6f81353597aebf5934547e5cba7a872196fb

TBR=egdaniel@google.com,jvanverth@google.com
# Not skipping CQ checks because original CL landed more than 1 days ago.

Review URL: https://codereview.chromium.org/1856703002
/external/skia/dm/DMSrcSink.cpp
2d9c6f81353597aebf5934547e5cba7a872196fb 01-Apr-2016 bsalomon <bsalomon@google.com> Rename enums in GrContextFactory to remove "GL"

Also, remove kNative as a separate context type and instead make it an alias for kGL or kGLES based on OS.

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

Review URL: https://codereview.chromium.org/1845923004
/external/skia/dm/DMSrcSink.cpp
6e2aad4e9f6280aa2b710e7324458fdc6d699ec5 01-Apr-2016 bsalomon <bsalomon@google.com> Add GrContext::releaseAndAbandonContext()

Like abandonContext() this disconnects the GrContext from the underlying 3D API. However, unlike abandonContext it first frees all allocated GPU resources.

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

Review URL: https://codereview.chromium.org/1852733002
/external/skia/dm/DMSrcSink.cpp
3724e574a744491b7cfb8187ac865a70ef3d4528 31-Mar-2016 bsalomon <bsalomon@google.com> Move SkGLContext and some GrGLInterface implementations to skgputest module

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1815823002
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac-Clang-x86_64-Release-CMake-Trybot

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

Review URL: https://codereview.chromium.org/1815823002
/external/skia/dm/DMSrcSink.cpp
6f70d43719d0583d486a000f66e915c10a6b83a2 30-Mar-2016 robertphillips <robertphillips@google.com> Revert of Move SkGLContext and some GrGLInterface implementations to skgputest module (patchset #13 id:240001 of https://codereview.chromium.org/1815823002/ )

Reason for revert:
red bots

Original issue's description:
> Move SkGLContext and some GrGLInterface implementations to skgputest module
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1815823002
> CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac-Clang-x86_64-Release-CMake-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/fe3456cb006110d045b26ff3f8681b893a757b58

TBR=jvanverth@google.com,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/1845473004
/external/skia/dm/DMSrcSink.cpp
fe3456cb006110d045b26ff3f8681b893a757b58 30-Mar-2016 bsalomon <bsalomon@google.com> Move SkGLContext and some GrGLInterface implementations to skgputest module

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1815823002
CQ_EXTRA_TRYBOTS=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/1815823002
/external/skia/dm/DMSrcSink.cpp
b4a7f144b41dbe8341d26abb71d87b13d072a5cf 30-Mar-2016 halcanary <halcanary@google.com> DM: allow vias to work with PDF backend

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

Review URL: https://codereview.chromium.org/1837263007
/external/skia/dm/DMSrcSink.cpp
c9ced392132711205af9011b1112cac3137daf09 24-Mar-2016 brianosman <brianosman@google.com> https://codereview.chromium.org/1830973002 fixed this bug. Re-enable the
tests and remove comments referencing it.

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

Review URL: https://codereview.chromium.org/1830163002
/external/skia/dm/DMSrcSink.cpp
e8f3062a36d3682f4019309a32b5b84dc9eddf8c 24-Mar-2016 reed <reed@google.com> switch surface to sk_sp

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1817383002
CQ_EXTRA_TRYBOTS=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/1817383002
/external/skia/dm/DMSrcSink.cpp
343a63d082bda969d7e8a4e09ba850e931185269 22-Mar-2016 mtklein <mtklein@chromium.org> SkRecord: infer return type for visit() and mutate().

Review URL: https://codereview.chromium.org/1824983003
/external/skia/dm/DMSrcSink.cpp
ca2622ba051829fed5f30facd74c5b41cd4b931c 18-Mar-2016 reed <reed@google.com> return pictures as sk_sp

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

Review URL: https://codereview.chromium.org/1811703002
/external/skia/dm/DMSrcSink.cpp
fc0b6d1053bb56698f2844bd5ca30bced7bb389d 17-Mar-2016 msarett <msarett@google.com> Add SkImageGeneratorWIC

This will be a replacement for SkImageDecoder_WIC.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1785613010
CQ_EXTRA_TRYBOTS=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/1785613010
/external/skia/dm/DMSrcSink.cpp
852f15da7ceb53cfb49b9f728baa6dbc53b27694 17-Mar-2016 mtklein <mtklein@chromium.org> free -> reset

The C++ standard library uses ".reset()" where we sometimes write ".free()".
We also use ".reset()" quite a lot. This standardizes on ".reset()".

This is one more step towards dropping SkAutoTDelete in favor of the standard
std::unique_ptr.

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

Committed: https://skia.googlesource.com/skia/+/0e3738db89e86035ed5d4f629bf58b817b1e5274

Review URL: https://codereview.chromium.org/1811723002
/external/skia/dm/DMSrcSink.cpp
9ce9d6772df650ceb0511f275e1a83dffa78ff72 17-Mar-2016 reed <reed@google.com> update callsites for Make image factories

not forced yet, as we still have the build-guard. waiting on chrome CL

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

TBR=

Review URL: https://codereview.chromium.org/1810813003
/external/skia/dm/DMSrcSink.cpp
43812e24cbb97208d149f419f0c3f61181ba4126 17-Mar-2016 bungeman <bungeman@google.com> Revert of free -> reset (patchset #3 id:40001 of https://codereview.chromium.org/1811723002/ )

Reason for revert:
Suspect for Win10 failures.

Original issue's description:
> free -> reset
>
> The C++ standard library uses ".reset()" where we sometimes write ".free()".
> We also use ".reset()" quite a lot. This standardizes on ".reset()".
>
> This is one more step towards dropping SkAutoTDelete in favor of the standard
> std::unique_ptr.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1811723002
>
> Committed: https://skia.googlesource.com/skia/+/0e3738db89e86035ed5d4f629bf58b817b1e5274

TBR=reed@google.com,mtklein@google.com,mtklein@chromium.org
# 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/1813843002
/external/skia/dm/DMSrcSink.cpp
0e3738db89e86035ed5d4f629bf58b817b1e5274 17-Mar-2016 mtklein <mtklein@chromium.org> free -> reset

The C++ standard library uses ".reset()" where we sometimes write ".free()".
We also use ".reset()" quite a lot. This standardizes on ".reset()".

This is one more step towards dropping SkAutoTDelete in favor of the standard
std::unique_ptr.

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

Review URL: https://codereview.chromium.org/1811723002
/external/skia/dm/DMSrcSink.cpp
18300a3aa7cb6eb55d21bb0450dffa58b6fc062c 16-Mar-2016 mtklein <mtklein@chromium.org> detach -> release

The C++ standard library uses the name "release" for the operation we call "detach".

Rewriting each "detach(" to "release(" brings us a step closer to using standard library types directly (e.g. std::unique_ptr instead of SkAutoTDelete).

This was a fairly blind transformation. There may have been unintentional conversions in here, but it's probably for the best to have everything uniformly say "release".

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

Review URL: https://codereview.chromium.org/1809733002
/external/skia/dm/DMSrcSink.cpp
4ba051cbcfbd379714250b1fe463c1610e7df04c 10-Mar-2016 halcanary <halcanary@google.com> DM: better SkDocument error message.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1780253002

Review URL: https://codereview.chromium.org/1780253002
/external/skia/dm/DMSrcSink.cpp
d93c1208520376ec062c8e9b6b7e6d0eac6c6faf 10-Mar-2016 brianosman <brianosman@google.com> Added (color=8888|f16|srgb) option to gpu configurations, along with gpuf16 and gpusrgb predefined configs. Runs the gpu backend in gamma-correct mode (with either FP16 linear or sRGB 8888 frambuffers).

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

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

Review URL: https://codereview.chromium.org/1750383002
/external/skia/dm/DMSrcSink.cpp
1897631ebe417631ea7a046a2eb0995ab9d04539 09-Mar-2016 msarett <msarett@google.com> Add an SkImageGeneratorCG

This will serve as a replacement for SkImageDecoder_CG.

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

Review URL: https://codereview.chromium.org/1718273004
/external/skia/dm/DMSrcSink.cpp
46752200009f70d708e37b413a2144b7aaa09ce1 08-Mar-2016 mtklein <mtklein@chromium.org> Archive SkRemote-related code. I want to start fresh.

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

Review URL: https://codereview.chromium.org/1774013002
/external/skia/dm/DMSrcSink.cpp
aecc018f86d911198b7c7775cee04f61bd10b430 07-Mar-2016 bsalomon <bsalomon@google.com> Attempt to combine batches in forward direction before flush
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1763883005

Review URL: https://codereview.chromium.org/1763883005
/external/skia/dm/DMSrcSink.cpp
744898aa48e055401e5ef203d5f633e69825bf20 01-Mar-2016 brianosman <brianosman@google.com> Revert of Progress on gamma-correctness in the GPU backend. Fixed conversion of color and profile type to pix… (patchset #1 id:1 of https://codereview.chromium.org/1750383002/ )

Reason for revert:
GM breakage. Changes to SkGr.cpp appear to be altering behavior on a variety of tests. Debugging...

Original issue's description:
> Progress on gamma-correctness in the GPU backend. Fixed conversion of color and profile type to pixel config, which makes many things "just work".
>
> Added (color=8888|f16|srgb) option to gpu configurations, along with gpuf16, gpusrgb, and anglesrgb predefined configs. Runs the gpu backend in gamma-correct mode (with either FP16 linear or sRGB 8888 frambuffers).
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1750383002
>
> Committed: https://skia.googlesource.com/skia/+/a6f58194733c1c50e4fe5f98585e42344f29b6f0

TBR=mtklein@google.com,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/1755553003
/external/skia/dm/DMSrcSink.cpp
a6f58194733c1c50e4fe5f98585e42344f29b6f0 01-Mar-2016 brianosman <brianosman@google.com> Progress on gamma-correctness in the GPU backend. Fixed conversion of color and profile type to pixel config, which makes many things "just work".

Added (color=8888|f16|srgb) option to gpu configurations, along with gpuf16, gpusrgb, and anglesrgb predefined configs. Runs the gpu backend in gamma-correct mode (with either FP16 linear or sRGB 8888 frambuffers).

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

Review URL: https://codereview.chromium.org/1750383002
/external/skia/dm/DMSrcSink.cpp
e9c8442bfc3a44b00cd64529882d7a8bd4bc6030 29-Feb-2016 brianosman <brianosman@google.com> Revert of Progress on gamma-correctness in the GPU backend. Fixed conversion of color and profile type to pix… (patchset #3 id:40001 of https://codereview.chromium.org/1746253002/ )

Reason for revert:
Fixing the build.

Original issue's description:
> Progress on gamma-correctness in the GPU backend. Fixed conversion of color and profile type to pixel config, which makes many things "just work".
>
> Added (color=8888|f16|srgb) option to gpu configurations, along with gpuf16, gpusrgb, and anglesrgb predefined configs. Runs the gpu backend in gamma-correct mode (with either FP16 linear or sRGB 8888 frambuffers).
>
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1746253002
>
> Committed: https://skia.googlesource.com/skia/+/eef980270d3385fee340eb1633962fe3ba8b7132

TBR=mtklein@google.com,egdaniel@google.com,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/1748823002
/external/skia/dm/DMSrcSink.cpp
eef980270d3385fee340eb1633962fe3ba8b7132 29-Feb-2016 brianosman <brianosman@google.com> Progress on gamma-correctness in the GPU backend. Fixed conversion of color and profile type to pixel config, which makes many things "just work".

Added (color=8888|f16|srgb) option to gpu configurations, along with gpuf16, gpusrgb, and anglesrgb predefined configs. Runs the gpu backend in gamma-correct mode (with either FP16 linear or sRGB 8888 frambuffers).

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

Review URL: https://codereview.chromium.org/1746253002
/external/skia/dm/DMSrcSink.cpp
27c3fddaac722086b80a7725f42c14fb694ec4a6 26-Feb-2016 mtklein <mtklein@chromium.org> DM: support --config {f16,srgb}

Will need to follow up with enabling f16 and srgb configs.
They're still assert-y.

The GMs 'gamma' and 'gradients' look reassuringly good on f16 and srgb backends.

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

Review URL: https://codereview.chromium.org/1711143002
/external/skia/dm/DMSrcSink.cpp
b65e604f1083e1d0cd85a0635ff4742d95a0837b 23-Feb-2016 msarett <msarett@google.com> Make DM failures fatal

We should now only be pushing Srcs for tests that we expect
to succeed. So any failures should be treated as errors.

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

Review URL: https://codereview.chromium.org/1719293002
/external/skia/dm/DMSrcSink.cpp
91c22b2ea6bd13a31321ead01645467f21858cd0 22-Feb-2016 msarett <msarett@google.com> Use new jpeg_crop_scanlines() API to optimize jpeg subset decodes

This was adapted from:
https://codereview.chromium.org/1530933003

Subset Decode Runtime (Original / Optimized) on Nexus 6P
TopLeft 0.51x
TopRight 0.56x
Middle 0.71x
BottomLeft 0.79x
BottomRight 0.79x

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

Review URL: https://codereview.chromium.org/1719073002
/external/skia/dm/DMSrcSink.cpp
cbf897802b41d61dc35d6db0552d8d9604945fdc 19-Feb-2016 mtklein <mtklein@chromium.org> DM: remove unnecessary use of std::function

This draw_to_canvas() function doesn't need the power of std::function.

This skips a copy or two, which is nice, and seems to clear
up most of my MSAN problems. Why? I do not know.

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

CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN-Trybot

Review URL: https://codereview.chromium.org/1718633002
/external/skia/dm/DMSrcSink.cpp
8715d47e247bf890ee78af0774ae7e8698146b67 17-Feb-2016 msarett <msarett@google.com> Make SkPicture/SkImageGenerator default to SkCodec

Remove reference to SkImageDecoder from SkPicture. Make the default
InstallPixelRefProc passed to CreateFromStream use
SkImageGenerator::NewFromEncoded instead.

Make SkImageGenerator::NewFromEncoded create an SkCodecImageGenerator.
Remove the old version that used SkImageDecoder.

Remove all versions of lazy_decode_bitmap/LazyDecodeBitmap. The default
now behaves lazily.

Update all clients to use the default.

Move SkImageDecoderGenerator into KtxTest.cpp, and use it directly.

This is a rebased version of:
https://codereview.chromium.org/1671193002/

TBR=reed@google.com

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

Review URL: https://codereview.chromium.org/1699183004
/external/skia/dm/DMSrcSink.cpp
55f7bdd956bf73dd2501a35a646870c1aebb34b7 16-Feb-2016 msarett <msarett@google.com> Make kInvalidConversion a fatal failure in DMSrcSink

We just need to abort early on tests that we know
are invalid conversions.

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

Review URL: https://codereview.chromium.org/1704433003
/external/skia/dm/DMSrcSink.cpp
7001576c7160e20c9c9db2fbe947408989027d66 11-Feb-2016 halcanary <halcanary@google.com> SkDocument: remove use of SkTArray (part 1/3).

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

Review URL: https://codereview.chromium.org/1689683002
/external/skia/dm/DMSrcSink.cpp
1de415f2c33febbac668500afbbb0c9b120c125f 10-Feb-2016 kjlubick <kjlubick@google.com> Revert of Make SkPicture/SkImageGenerator default to SkCodec (patchset #7 id:120001 of https://codereview.chromium.org/1671193002/ )

Reason for revert:
Breaks Ubuntu and Mac CMAKE

Original issue's description:
> Make SkPicture/SkImageGenerator default to SkCodec
>
> Remove reference to SkImageDecoder from SkPicture. Make the default
> InstallPixelRefProc passed to CreateFromStream use
> SkImageGenerator::NewFromEncoded instead.
>
> Make SkImageGenerator::NewFromEncoded create an SkCodecImageGenerator.
> Remove the old version that used SkImageDecoder.
>
> Remove all versions of lazy_decode_bitmap/LazyDecodeBitmap. The default
> now behaves lazily.
>
> Update all clients to use the default.
>
> Move SkImageDecoderGenerator into KtxTest.cpp, and use it directly.
>
> BUG=skia:4691
> BUG=skia:4290
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1671193002
>
> Committed: https://skia.googlesource.com/skia/+/026388a01864c74208ad57d1ba4f711602d101c6

TBR=msarett@google.com,reed@google.com,scroggo@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:4691

Review URL: https://codereview.chromium.org/1685963004
/external/skia/dm/DMSrcSink.cpp
026388a01864c74208ad57d1ba4f711602d101c6 10-Feb-2016 scroggo <scroggo@google.com> Make SkPicture/SkImageGenerator default to SkCodec

Remove reference to SkImageDecoder from SkPicture. Make the default
InstallPixelRefProc passed to CreateFromStream use
SkImageGenerator::NewFromEncoded instead.

Make SkImageGenerator::NewFromEncoded create an SkCodecImageGenerator.
Remove the old version that used SkImageDecoder.

Remove all versions of lazy_decode_bitmap/LazyDecodeBitmap. The default
now behaves lazily.

Update all clients to use the default.

Move SkImageDecoderGenerator into KtxTest.cpp, and use it directly.

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

Review URL: https://codereview.chromium.org/1671193002
/external/skia/dm/DMSrcSink.cpp
36c070d82856bd79eaa13bd058af45e19f302b53 10-Feb-2016 msarett <msarett@google.com> Enable ImageGenerator tests on direct raster and direct gpu backends

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

Review URL: https://codereview.chromium.org/1682973004
/external/skia/dm/DMSrcSink.cpp
a23659fcee922be39d64ac3abff2cf9a4f97921b 09-Feb-2016 msarett <msarett@google.com> Disable indirect backends for image decode tests

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

Review URL: https://codereview.chromium.org/1684713002
/external/skia/dm/DMSrcSink.cpp
3ac66e98f8701b8105a4c6ae85de61a9e8e5343a 09-Feb-2016 scroggo <scroggo@google.com> Optionally run RAW images serially

RAW images use a lot of memory. Add a new FLAG to run one at a time so
we have less risk of running out of memory.

Isolate RAW images to their own thread on particular devices where our
images cause OOM errors.

Locally, this drops the max memory use from 3945 MB to 1664 MB (running only --image --images <RAW images we test>)

BUG=skia:4912
BUG=skia:4878
BUG=b/27035849
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1681553003

Review URL: https://codereview.chromium.org/1681553003
/external/skia/dm/DMSrcSink.cpp
21eaf3b00aa23ec352b595d5c54dd2c0faa0b0c6 08-Feb-2016 mtklein <mtklein@chromium.org> dm: simplify parallel/serial decisions

- instead of complicated enclaves, just allow parallel or main thread serial
- either the Src or the Sink can force the task to go serial

ALSO,
- simpler file extension parsing

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

Review URL: https://codereview.chromium.org/1675423002
/external/skia/dm/DMSrcSink.cpp
13a036b7ebfd1faeef168979cd6dbb09d0868619 08-Feb-2016 msarett <msarett@google.com> Test CodecImageGenerator on GPU bots

In crrev.com/1549473003, CodecImageGenerator implemented getYUV8Planes,
so that we can test on a GPU bot. Update the arguments to DM so that
we run CodecImageGenerator on GPU bots.

This is adapted from:
https://codereview.chromium.org/1663453002/

This will cause many untriaged images on Gold.
The GPU converts YUV->RGBA differently than we
do in software.

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

Review URL: https://codereview.chromium.org/1676663002
/external/skia/dm/DMSrcSink.cpp
e1daa48b9a5f1724cbfa6b00ba964f7fdfe0c3d0 04-Feb-2016 msarett <msarett@google.com> Fix Unpremul Index8 tests

TBR=scroggo@google.com

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

Review URL: https://codereview.chromium.org/1663323002
/external/skia/dm/DMSrcSink.cpp
9e9444cad8a9df626eff49ea271ebb4e3a603a20 03-Feb-2016 msarett <msarett@google.com> Test unpremul decodes

This is a workaround until SkCanvas supports drawing kUnpremul sources.

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

Review URL: https://codereview.chromium.org/1661913005
/external/skia/dm/DMSrcSink.cpp
7a76f9c8f4de11e51b3495eec0d76be88a12adfa 03-Feb-2016 halcanary <halcanary@google.com> SkMojo: test linking Skia against the Mojo SDK

TODO: build on systems other than Linux.

Add mojo_skd to the DEPS.

Add a DM::Via called `mojo-`.

everything is hidden behind the gyp variable `skia_mojo`.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1644043003

Review URL: https://codereview.chromium.org/1644043003
/external/skia/dm/DMSrcSink.cpp
c5560bef14149f4c945a4536988aeba1a16adedc 03-Feb-2016 scroggo <scroggo@google.com> Support decoding opaque to *premul

If a client requests unpremul or premul from an opaque SkCodec,
support it. The opaque image can be treated as any of them, though
it will be less efficient to draw than if the client had used
opaque.

Change the filling code (i.e. for incomplete images) to base its color on
the source alpha type. Prior to adding the support to decode opaque to
any, it was fine to use either source or dest (which would have yielded
the same result). If the client requests non-opaque, we do not want this
to switch the fill value from black to transparent. This also allows
simplifying the signatures for getFillValue and onGetFillValue.

In CodexTest, expect the same result when decoding opaque to *premul,
and compare to the opaque version.

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

Review URL: https://codereview.chromium.org/1641273003
/external/skia/dm/DMSrcSink.cpp
0edf1693dfd8360f5b8256e0700c2240854c010f 27-Jan-2016 scroggo <scroggo@google.com> Stop testing SkImageDecoder in DM/nanobench

We have already used it for comparison, and are switching forward
to using SkCodec. This also allows us to simplify the code for checking
the extensions we support for images.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1641663002

Review URL: https://codereview.chromium.org/1641663002
/external/skia/dm/DMSrcSink.cpp
01813e880a32920e17057ce2b4784f10382ff4f0 25-Jan-2016 msarett <msarett@google.com> Fix leak of SkImageGenerator

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

Review URL: https://codereview.chromium.org/1638463002
/external/skia/dm/DMSrcSink.cpp
d03b7ae1e273e871d951c94fd9626d62acee9379 25-Jan-2016 msarett <msarett@google.com> Do not test images with alpha to 565

This should handle the untriaged images in Gold.

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

Review URL: https://codereview.chromium.org/1635453002
/external/skia/dm/DMSrcSink.cpp
b714fb0199e8727ef2b6cddbee7eba6046f01554 22-Jan-2016 msarett <msarett@google.com> Add getYUV8Planes() API to SkCodec

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

Review URL: https://codereview.chromium.org/1549473003
/external/skia/dm/DMSrcSink.cpp
bb25b5324965d53253fc3ad9f43b7d6faa2f9100 13-Jan-2016 msarett <msarett@google.com> Add CodecZeroInit test to DMSrcSink

This should not cause any diffs on Gold.

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

Review URL: https://codereview.chromium.org/1577853004
/external/skia/dm/DMSrcSink.cpp
4a34ecbe352114bd8403b134eb72f6e63bec0b11 08-Jan-2016 mtklein <mtklein@chromium.org> DM: more invariants

- add ViaPicture
- run ViaPicture on most bots
- run ViaSecondPicture (tests SkPictureRecorder reuse) and ViaTwice (tests caching) on some bots
- extend ViaSerialization reference checking to ViaPicture, ViaSecondPicture,
ViaSingletonPictures, and ViaTwice
- suppress current reference check failures with --blacklist

I'm open to following up on changing how those suppressions work.

Passing --nocheck turns off these invariant checks, letting us debug failures with normal image diff tools.

CQ_EXTRA_TRYBOTS=client.skia:Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot

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

Review URL: https://codereview.chromium.org/1569823006
/external/skia/dm/DMSrcSink.cpp
7c554222ddd03d3817ab197a0bd92badc6f1f7c9 08-Jan-2016 reed <reed@google.com> remove SkGPipe

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

Review URL: https://codereview.chromium.org/1568883003
/external/skia/dm/DMSrcSink.cpp
5820fe846fc699b4623c09ed4e24f44122e00c40 07-Jan-2016 mtklein <mtklein@chromium.org> DM: add a pixel check to serialize

If we're running through serialize and then drawing into some raster target (e.g. serialize-8888 like we run on the bots), make sure the serialized version is identical to what we'd get if we just drew into the rest of the pipeline (i.e. 8888).

Start by blacklisting all current failures. This at least prevents further regression.

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

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

CQ_EXTRA_TRYBOTS=client.skia:Test-Win8-MSVC-ShuttleB-CPU-AVX2-x86_64-Release-Trybot

Review URL: https://codereview.chromium.org/1561993003
/external/skia/dm/DMSrcSink.cpp
60c0a76738f21bc856d2e35367fc703845b728af 07-Jan-2016 caryclark <caryclark@google.com> Revert of DM: add a pixel check to serialize (patchset #4 id:60001 of https://codereview.chromium.org/1561993003/ )

Reason for revert:
breaks windows bots; additional windows specific failures need to be blacklisted

Original issue's description:
> DM: add a pixel check to serialize
>
> If we're running through serialize and then drawing into some raster target (e.g. serialize-8888 like we run on the bots), make sure the serialized version is identical to what we'd get if we just drew into the rest of the pipeline (i.e. 8888).
>
> Start by blacklisting all current failures. This at least prevents further regression.
>
> BUG=skia:4095
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1561993003
>
> Committed: https://skia.googlesource.com/skia/+/6eb4e36a93ea695e7adb771ea9ac3326680a8e98

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

Review URL: https://codereview.chromium.org/1563923003
/external/skia/dm/DMSrcSink.cpp
6eb4e36a93ea695e7adb771ea9ac3326680a8e98 06-Jan-2016 mtklein <mtklein@chromium.org> DM: add a pixel check to serialize

If we're running through serialize and then drawing into some raster target (e.g. serialize-8888 like we run on the bots), make sure the serialized version is identical to what we'd get if we just drew into the rest of the pipeline (i.e. 8888).

Start by blacklisting all current failures. This at least prevents further regression.

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

Review URL: https://codereview.chromium.org/1561993003
/external/skia/dm/DMSrcSink.cpp
c8be09aaf2bbfa004c574553fc9d194ac7f1ce1a 05-Jan-2016 mtklein <mtklein@chromium.org> Two malloc+bzero -> calloc.

I was profiling DM and noticed a couple spots where we malloc then bzero.
These might as well call calloc instead:
- any time DM itself allocates bitmaps for raster drawing;
- any time Skia allocates memory for a raster SkSurface.

We could use malloc for opaque surfaces, but it seems simpler to always calloc.

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

Review URL: https://codereview.chromium.org/1557713003
/external/skia/dm/DMSrcSink.cpp
3e980c3d88fbc509b79e7ccef16ca38f5bbfb180 23-Dec-2015 kkinnunen <kkinnunen@nvidia.com> Add config options to run different GPU APIs to dm and nanobench

Add extended config specification form that can be used to run different
gpu backend with different APIs.

The configs can be specified with the form:
gpu(api=string,dit=bool,nvpr=bool,samples=int)

This replaces and removes the --gpuAPI flag.

All existing configs should still work.

Adds following documentation:

out/Debug/dm --help config

Flags:
--config: type: string default: 565 8888 gpu nonrendering
Options: 565 8888 debug gpu gpudebug gpudft gpunull msaa16 msaa4
nonrendering null nullgpu nvprmsaa16 nvprmsaa4 pdf pdf_poppler skp svg
xps or use extended form 'backend(option=value,...)'.

Extended form: 'backend(option=value,...)'

Possible backends and options:

gpu(api=string,dit=bool,nvpr=bool,samples=int) GPU backend
api type: string default: native.
Select graphics API to use with gpu backend.
Options:
native Use platform default OpenGL or OpenGL ES backend.
gl Use OpenGL.
gles Use OpenGL ES.
debug Use debug OpenGL.
null Use null OpenGL.
dit type: bool default: false.
Use device independent text.
nvpr type: bool default: false.
Use NV_path_rendering OpenGL and OpenGL ES extension.
samples type: int default: 0.
Use multisampling with N samples.

Predefined configs:

gpu = gpu()
msaa4 = gpu(samples=4)
msaa16 = gpu(samples=16)
nvprmsaa4 = gpu(nvpr=true,samples=4)
nvprmsaa16 = gpu(nvpr=true,samples=16)
gpudft = gpu(dit=true)
gpudebug = gpu(api=debug)
gpunull = gpu(api=null)
debug = gpu(api=debug)
nullgpu = gpu(api=null)

BUG=skia:2992

Committed: https://skia.googlesource.com/skia/+/e13ca329fca4c28cf4e078561f591ab27b743d23
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1490113005

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

Committed: https://skia.googlesource.com/skia/+/9ebc3f0ee6db215dde461dc4777d85988cf272dd

Review URL: https://codereview.chromium.org/1490113005
/external/skia/dm/DMSrcSink.cpp
0f515bd4284ee6e88cd04c62cb6c67e1f23db616 22-Dec-2015 rmistry <rmistry@google.com> Revert of Add config options to run different GPU APIs to dm and nanobench (patchset #21 id:400001 of https://codereview.chromium.org/1490113005/ )

Reason for revert:
The Test-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Debug builder fails after this CL.

Links to specific builds:
http://build.chromium.org/p/client.skia/builders/Test-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Debug/builds/1689
http://build.chromium.org/p/client.skia/builders/Test-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Debug/builds/1690
http://build.chromium.org/p/client.skia/builders/Test-Win8-MSVC-ShuttleB-GPU-HD4600-x86_64-Debug/builds/1691

Original issue's description:
> Add config options to run different GPU APIs to dm and nanobench
>
> Add extended config specification form that can be used to run different
> gpu backend with different APIs.
>
> The configs can be specified with the form:
> gpu(api=string,dit=bool,nvpr=bool,samples=int)
>
> This replaces and removes the --gpuAPI flag.
>
> All existing configs should still work.
>
> Adds following documentation:
>
> out/Debug/dm --help config
>
> Flags:
> --config: type: string default: 565 8888 gpu nonrendering
> Options: 565 8888 debug gpu gpudebug gpudft gpunull msaa16 msaa4
> nonrendering null nullgpu nvprmsaa16 nvprmsaa4 pdf pdf_poppler skp svg
> xps or use extended form 'backend(option=value,...)'.
>
> Extended form: 'backend(option=value,...)'
>
> Possible backends and options:
>
> gpu(api=string,dit=bool,nvpr=bool,samples=int) GPU backend
> api type: string default: native.
> Select graphics API to use with gpu backend.
> Options:
> native Use platform default OpenGL or OpenGL ES backend.
> gl Use OpenGL.
> gles Use OpenGL ES.
> debug Use debug OpenGL.
> null Use null OpenGL.
> dit type: bool default: false.
> Use device independent text.
> nvpr type: bool default: false.
> Use NV_path_rendering OpenGL and OpenGL ES extension.
> samples type: int default: 0.
> Use multisampling with N samples.
>
> Predefined configs:
>
> gpu = gpu()
> msaa4 = gpu(samples=4)
> msaa16 = gpu(samples=16)
> nvprmsaa4 = gpu(nvpr=true,samples=4)
> nvprmsaa16 = gpu(nvpr=true,samples=16)
> gpudft = gpu(dit=true)
> gpudebug = gpu(api=debug)
> gpunull = gpu(api=null)
> debug = gpu(api=debug)
> nullgpu = gpu(api=null)
>
> BUG=skia:2992
>
> Committed: https://skia.googlesource.com/skia/+/e13ca329fca4c28cf4e078561f591ab27b743d23
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1490113005
>
> Committed: https://skia.googlesource.com/skia/+/c8b4336444e7b90382e04e33665fb3b8490b825b
>
> Committed: https://skia.googlesource.com/skia/+/9ebc3f0ee6db215dde461dc4777d85988cf272dd

TBR=mtklein@google.com,bsalomon@google.com,joshualitt@google.com,scroggo@google.com,kkinnunen@nvidia.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:2992

Review URL: https://codereview.chromium.org/1548683002
/external/skia/dm/DMSrcSink.cpp
9ebc3f0ee6db215dde461dc4777d85988cf272dd 22-Dec-2015 kkinnunen <kkinnunen@nvidia.com> Add config options to run different GPU APIs to dm and nanobench

Add extended config specification form that can be used to run different
gpu backend with different APIs.

The configs can be specified with the form:
gpu(api=string,dit=bool,nvpr=bool,samples=int)

This replaces and removes the --gpuAPI flag.

All existing configs should still work.

Adds following documentation:

out/Debug/dm --help config

Flags:
--config: type: string default: 565 8888 gpu nonrendering
Options: 565 8888 debug gpu gpudebug gpudft gpunull msaa16 msaa4
nonrendering null nullgpu nvprmsaa16 nvprmsaa4 pdf pdf_poppler skp svg
xps or use extended form 'backend(option=value,...)'.

Extended form: 'backend(option=value,...)'

Possible backends and options:

gpu(api=string,dit=bool,nvpr=bool,samples=int) GPU backend
api type: string default: native.
Select graphics API to use with gpu backend.
Options:
native Use platform default OpenGL or OpenGL ES backend.
gl Use OpenGL.
gles Use OpenGL ES.
debug Use debug OpenGL.
null Use null OpenGL.
dit type: bool default: false.
Use device independent text.
nvpr type: bool default: false.
Use NV_path_rendering OpenGL and OpenGL ES extension.
samples type: int default: 0.
Use multisampling with N samples.

Predefined configs:

gpu = gpu()
msaa4 = gpu(samples=4)
msaa16 = gpu(samples=16)
nvprmsaa4 = gpu(nvpr=true,samples=4)
nvprmsaa16 = gpu(nvpr=true,samples=16)
gpudft = gpu(dit=true)
gpudebug = gpu(api=debug)
gpunull = gpu(api=null)
debug = gpu(api=debug)
nullgpu = gpu(api=null)

BUG=skia:2992

Committed: https://skia.googlesource.com/skia/+/e13ca329fca4c28cf4e078561f591ab27b743d23
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1490113005

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

Review URL: https://codereview.chromium.org/1490113005
/external/skia/dm/DMSrcSink.cpp
4dabf83cbe3096eaa7b80c101ba0e9c277b560d2 18-Dec-2015 joshualitt <joshualitt@google.com> Revert of Add config options to run different GPU APIs to dm and nanobench (patchset #18 id:340001 of https://codereview.chromium.org/1490113005/ )

Reason for revert:
This CL changed 1200 images on gold, when I wouldn't expect any diffs from the description.

Original issue's description:
> Add config options to run different GPU APIs to dm and nanobench
>
> Add extended config specification form that can be used to run different
> gpu backend with different APIs.
>
> The configs can be specified with the form:
> gpu(api=string,dit=bool,nvpr=bool,samples=int)
>
> This replaces and removes the --gpuAPI flag.
>
> All existing configs should still work.
>
> Adds following documentation:
>
> out/Debug/dm --help config
>
> Flags:
> --config: type: string default: 565 8888 gpu nonrendering
> Options: 565 8888 debug gpu gpudebug gpudft gpunull msaa16 msaa4
> nonrendering null nullgpu nvprmsaa16 nvprmsaa4 pdf pdf_poppler skp svg
> xps or use extended form 'backend(option=value,...)'.
>
> Extended form: 'backend(option=value,...)'
>
> Possible backends and options:
>
> gpu(api=string,dit=bool,nvpr=bool,samples=int) GPU backend
> api type: string default: native.
> Select graphics API to use with gpu backend.
> Options:
> native Use platform default OpenGL or OpenGL ES backend.
> gl Use OpenGL.
> gles Use OpenGL ES.
> debug Use debug OpenGL.
> null Use null OpenGL.
> dit type: bool default: false.
> Use device independent text.
> nvpr type: bool default: false.
> Use NV_path_rendering OpenGL and OpenGL ES extension.
> samples type: int default: 0.
> Use multisampling with N samples.
>
> Predefined configs:
>
> gpu = gpu()
> msaa4 = gpu(samples=4)
> msaa16 = gpu(samples=16)
> nvprmsaa4 = gpu(nvpr=true,samples=4)
> nvprmsaa16 = gpu(nvpr=true,samples=16)
> gpudft = gpu(dit=true)
> gpudebug = gpu(api=debug)
> gpunull = gpu(api=null)
> debug = gpu(api=debug)
> nullgpu = gpu(api=null)
>
> BUG=skia:2992
>
> Committed: https://skia.googlesource.com/skia/+/e13ca329fca4c28cf4e078561f591ab27b743d23
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1490113005
>
> Committed: https://skia.googlesource.com/skia/+/c8b4336444e7b90382e04e33665fb3b8490b825b

TBR=mtklein@google.com,bsalomon@google.com,scroggo@google.com,kkinnunen@nvidia.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:2992

Review URL: https://codereview.chromium.org/1536963002
/external/skia/dm/DMSrcSink.cpp
c8b4336444e7b90382e04e33665fb3b8490b825b 18-Dec-2015 kkinnunen <kkinnunen@nvidia.com> Add config options to run different GPU APIs to dm and nanobench

Add extended config specification form that can be used to run different
gpu backend with different APIs.

The configs can be specified with the form:
gpu(api=string,dit=bool,nvpr=bool,samples=int)

This replaces and removes the --gpuAPI flag.

All existing configs should still work.

Adds following documentation:

out/Debug/dm --help config

Flags:
--config: type: string default: 565 8888 gpu nonrendering
Options: 565 8888 debug gpu gpudebug gpudft gpunull msaa16 msaa4
nonrendering null nullgpu nvprmsaa16 nvprmsaa4 pdf pdf_poppler skp svg
xps or use extended form 'backend(option=value,...)'.

Extended form: 'backend(option=value,...)'

Possible backends and options:

gpu(api=string,dit=bool,nvpr=bool,samples=int) GPU backend
api type: string default: native.
Select graphics API to use with gpu backend.
Options:
native Use platform default OpenGL or OpenGL ES backend.
gl Use OpenGL.
gles Use OpenGL ES.
debug Use debug OpenGL.
null Use null OpenGL.
dit type: bool default: false.
Use device independent text.
nvpr type: bool default: false.
Use NV_path_rendering OpenGL and OpenGL ES extension.
samples type: int default: 0.
Use multisampling with N samples.

Predefined configs:

gpu = gpu()
msaa4 = gpu(samples=4)
msaa16 = gpu(samples=16)
nvprmsaa4 = gpu(nvpr=true,samples=4)
nvprmsaa16 = gpu(nvpr=true,samples=16)
gpudft = gpu(dit=true)
gpudebug = gpu(api=debug)
gpunull = gpu(api=null)
debug = gpu(api=debug)
nullgpu = gpu(api=null)

BUG=skia:2992

Committed: https://skia.googlesource.com/skia/+/e13ca329fca4c28cf4e078561f591ab27b743d23
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1490113005

Review URL: https://codereview.chromium.org/1490113005
/external/skia/dm/DMSrcSink.cpp
489147c78b2091b87a80dac50a3e8f0f8eb42124 14-Dec-2015 bsalomon <bsalomon@google.com> Add option to control maximum GrBatch lookback

Review URL: https://codereview.chromium.org/1498653002
/external/skia/dm/DMSrcSink.cpp
4ff653cab2e1e3cfb02c91df9c9013fc927aa1ee 14-Dec-2015 reed <reed@google.com> Revert of Add config options to run different GPU APIs to dm and nanobench (patchset #12 id:220001 of https://codereview.chromium.org/1490113005/ )

Reason for revert:
speculative revert to see if it unblocks the DEPS roll

https://codereview.chromium.org/1529443002

Original issue's description:
> Add config options to run different GPU APIs to dm and nanobench
>
> Add extended config specification form that can be used to run different
> gpu backend with different APIs.
>
> The configs can be specified with the form:
> gpu(api=string,dit=bool,nvpr=bool,samples=int)
>
> This replaces and removes the --gpuAPI flag.
>
> All existing configs should still work.
>
> Adds following documentation:
>
> out/Debug/dm --help config
>
> Flags:
> --config: type: string default: 565 8888 gpu nonrendering
> Options: 565 8888 debug gpu gpudebug gpudft gpunull msaa16 msaa4
> nonrendering null nullgpu nvprmsaa16 nvprmsaa4 pdf pdf_poppler skp svg
> xps or use extended form 'backend(option=value,...)'.
>
> Extended form: 'backend(option=value,...)'
>
> Possible backends and options:
>
> gpu(api=string,dit=bool,nvpr=bool,samples=int) GPU backend
> api type: string default: native.
> Select graphics API to use with gpu backend.
> Options:
> native Use platform default OpenGL or OpenGL ES backend.
> gl Use OpenGL.
> gles Use OpenGL ES.
> debug Use debug OpenGL.
> null Use null OpenGL.
> dit type: bool default: false.
> Use device independent text.
> nvpr type: bool default: false.
> Use NV_path_rendering OpenGL and OpenGL ES extension.
> samples type: int default: 0.
> Use multisampling with N samples.
>
> Predefined configs:
>
> gpu = gpu()
> msaa4 = gpu(samples=4)
> msaa16 = gpu(samples=16)
> nvprmsaa4 = gpu(nvpr=true,samples=4)
> nvprmsaa16 = gpu(nvpr=true,samples=16)
> gpudft = gpu(dit=true)
> gpudebug = gpu(api=debug)
> gpunull = gpu(api=null)
> debug = gpu(api=debug)
> nullgpu = gpu(api=null)
>
> BUG=skia:2992
>
> Committed: https://skia.googlesource.com/skia/+/e13ca329fca4c28cf4e078561f591ab27b743d23

TBR=bsalomon@google.com,scroggo@google.com,joshualitt@google.com,kkinnunen@nvidia.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:2992

Review URL: https://codereview.chromium.org/1528473002
/external/skia/dm/DMSrcSink.cpp
e13ca329fca4c28cf4e078561f591ab27b743d23 14-Dec-2015 kkinnunen <kkinnunen@nvidia.com> Add config options to run different GPU APIs to dm and nanobench

Add extended config specification form that can be used to run different
gpu backend with different APIs.

The configs can be specified with the form:
gpu(api=string,dit=bool,nvpr=bool,samples=int)

This replaces and removes the --gpuAPI flag.

All existing configs should still work.

Adds following documentation:

out/Debug/dm --help config

Flags:
--config: type: string default: 565 8888 gpu nonrendering
Options: 565 8888 debug gpu gpudebug gpudft gpunull msaa16 msaa4
nonrendering null nullgpu nvprmsaa16 nvprmsaa4 pdf pdf_poppler skp svg
xps or use extended form 'backend(option=value,...)'.

Extended form: 'backend(option=value,...)'

Possible backends and options:

gpu(api=string,dit=bool,nvpr=bool,samples=int) GPU backend
api type: string default: native.
Select graphics API to use with gpu backend.
Options:
native Use platform default OpenGL or OpenGL ES backend.
gl Use OpenGL.
gles Use OpenGL ES.
debug Use debug OpenGL.
null Use null OpenGL.
dit type: bool default: false.
Use device independent text.
nvpr type: bool default: false.
Use NV_path_rendering OpenGL and OpenGL ES extension.
samples type: int default: 0.
Use multisampling with N samples.

Predefined configs:

gpu = gpu()
msaa4 = gpu(samples=4)
msaa16 = gpu(samples=16)
nvprmsaa4 = gpu(nvpr=true,samples=4)
nvprmsaa16 = gpu(nvpr=true,samples=16)
gpudft = gpu(dit=true)
gpudebug = gpu(api=debug)
gpunull = gpu(api=null)
debug = gpu(api=debug)
nullgpu = gpu(api=null)

BUG=skia:2992

Review URL: https://codereview.chromium.org/1490113005
/external/skia/dm/DMSrcSink.cpp
62d3b101106602d87cad91b0ac97c10003ca33a5 11-Dec-2015 msarett <msarett@google.com> Revert of DM: fix `--config $VIA-pdf` to not crash (patchset #3 id:40001 of https://codereview.chromium.org/1513323002/ )

Reason for revert:
I believe that this is breaking master-skia in Android.

Original issue's description:
> DM: fix `--config $VIA-pdf` to not crash
>
> Committed: https://skia.googlesource.com/skia/+/6bce4177cb72faac9c10d01d57e17168ae7ecadf

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

Review URL: https://codereview.chromium.org/1513053004
/external/skia/dm/DMSrcSink.cpp
6bce4177cb72faac9c10d01d57e17168ae7ecadf 10-Dec-2015 halcanary <halcanary@google.com> DM: fix `--config $VIA-pdf` to not crash

Review URL: https://codereview.chromium.org/1513323002
/external/skia/dm/DMSrcSink.cpp
5219fd9ff7aa6ebf64c905ad40f5e0027a39962b 10-Dec-2015 kkinnunen <kkinnunen@nvidia.com> Make NVPR a GL context option instead of a GL context

Make NVPR a GL context option instead of a GL context.
This may enable NVPR to be run with command buffer
interface.

No functionality change in DM or nanobench. NVPR can
only be run with normal GL APIs.

BUG=skia:2992

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

Committed: https://skia.googlesource.com/skia/+/64492c43c3faee7ab0f69b1c84e0267616f85e52

Review URL: https://codereview.chromium.org/1448883002
/external/skia/dm/DMSrcSink.cpp
9b439153fc2a2ddca25de96fe2883cf67aebe3e0 09-Dec-2015 mtklein <mtklein@chromium.org> no need for newlines in DM Errors

This should fix some odd formatting problems in the logs, e.g.

Note tally:
583x (skipped: Cannot convert to requested color type.
)
4x (--blacklist _ image decode 4bpp-pixeldata-cropped.bmp)

~~~>

Note tally:
583x (skipped: Cannot convert to requested color type.)
4x (--blacklist _ image decode 4bpp-pixeldata-cropped.bmp)

BUG=skia:

Review URL: https://codereview.chromium.org/1508223006
/external/skia/dm/DMSrcSink.cpp
9d66696f6b1651b52adad1b0202aca013ef7da58 09-Dec-2015 borenet <borenet@google.com> Revert of Make NVPR a GL context option instead of a GL context (patchset #9 id:160001 of https://codereview.chromium.org/1448883002/ )

Reason for revert:
"Could not create surface" on Linux GTX660 bots

Original issue's description:
> Make NVPR a GL context option instead of a GL context
>
> Make NVPR a GL context option instead of a GL context.
> This may enable NVPR to be run with command buffer
> interface.
>
> No functionality change in DM or nanobench. NVPR can
> only be run with normal GL APIs.
>
> BUG=skia:2992
>
> Committed: https://skia.googlesource.com/skia/+/eeebdb538d476c1bfc8b63a946094ca1b505ecd1
>
> Committed: https://skia.googlesource.com/skia/+/64492c43c3faee7ab0f69b1c84e0267616f85e52

TBR=mtklein@google.com,bsalomon@google.com,jvanverth@google.com,scroggo@google.com,kkinnunen@nvidia.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:2992

Review URL: https://codereview.chromium.org/1513703002
/external/skia/dm/DMSrcSink.cpp
64492c43c3faee7ab0f69b1c84e0267616f85e52 08-Dec-2015 kkinnunen <kkinnunen@nvidia.com> Make NVPR a GL context option instead of a GL context

Make NVPR a GL context option instead of a GL context.
This may enable NVPR to be run with command buffer
interface.

No functionality change in DM or nanobench. NVPR can
only be run with normal GL APIs.

BUG=skia:2992

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

Review URL: https://codereview.chromium.org/1448883002
/external/skia/dm/DMSrcSink.cpp
6dea83f244cfdea52901eef6b31cee60b07a8ea0 03-Dec-2015 bsalomon <bsalomon@google.com> Add option to draw wireframe batch bounds

Committed: https://skia.googlesource.com/skia/+/26489ef21ff5df33b8cb5943fddfd4604e203960

Review URL: https://codereview.chromium.org/1494473005
/external/skia/dm/DMSrcSink.cpp
e2725f584095cd0a2cc5100fb6f1dc6a1740284e 03-Dec-2015 scroggo <scroggo@google.com> Revert of Add option to draw wireframe batch bounds (patchset #6 id:100001 of https://codereview.chromium.org/1494473005/ )

Reason for revert:
Looks to be responsible for breaking builds e.g. https://uberchromegw.corp.google.com/i/client.skia/builders/Test-Mac10.9-Clang-MacMini6.2-GPU-HD4000-x86_64-Debug/builds/3030/steps/dm/logs/stdio

Original issue's description:
> Add option to draw wireframe batch bounds
>
> Committed: https://skia.googlesource.com/skia/+/26489ef21ff5df33b8cb5943fddfd4604e203960

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

Review URL: https://codereview.chromium.org/1492633007
/external/skia/dm/DMSrcSink.cpp
26489ef21ff5df33b8cb5943fddfd4604e203960 03-Dec-2015 bsalomon <bsalomon@google.com> Add option to draw wireframe batch bounds

Review URL: https://codereview.chromium.org/1494473005
/external/skia/dm/DMSrcSink.cpp
a0a024e323ebf73ea4559d4b29f937902703828b 01-Dec-2015 bsalomon <bsalomon@google.com> Revert of Make NVPR a GL context option instead of a GL context (patchset #2 id:20001 of https://codereview.chromium.org/1448883002/ )

Reason for revert:
BUG=skia:4609

skbug.com/4609

Seems like GrContextFactory needs to fail when the NVPR option is requested but the driver version isn't sufficiently high.

Original issue's description:
> Make NVPR a GL context option instead of a GL context
>
> Make NVPR a GL context option instead of a GL context.
> This may enable NVPR to be run with command buffer
> interface.
>
> No functionality change in DM or nanobench. NVPR can
> only be run with normal GL APIs.
>
> BUG=skia:2992
>
> Committed: https://skia.googlesource.com/skia/+/eeebdb538d476c1bfc8b63a946094ca1b505ecd1

TBR=mtklein@google.com,jvanverth@google.com,kkinnunen@nvidia.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:2992

Review URL: https://codereview.chromium.org/1486153002
/external/skia/dm/DMSrcSink.cpp
eeebdb538d476c1bfc8b63a946094ca1b505ecd1 01-Dec-2015 kkinnunen <kkinnunen@nvidia.com> Make NVPR a GL context option instead of a GL context

Make NVPR a GL context option instead of a GL context.
This may enable NVPR to be run with command buffer
interface.

No functionality change in DM or nanobench. NVPR can
only be run with normal GL APIs.

BUG=skia:2992

Review URL: https://codereview.chromium.org/1448883002
/external/skia/dm/DMSrcSink.cpp
69cfe95b7be386cf7d349b61388e93ea7c3cd386 30-Nov-2015 bsalomon <bsalomon@google.com> Add debug option to clip each GrBatch to its device bounds

Review URL: https://codereview.chromium.org/1471083002
/external/skia/dm/DMSrcSink.cpp
5af4e0bc8fd17944f3c0527462aeba367f6d590a 17-Nov-2015 msarett <msarett@google.com> Make SkAndroidCodec support gif

Involves a few bug fixes in SkCodec_libgif and a bit more
complexity in SkSwizzler.

BUG=skia:4405

Review URL: https://codereview.chromium.org/1445313002
/external/skia/dm/DMSrcSink.cpp
4b0778ec491513d1dab752fddb7520aac19ad47b 13-Nov-2015 msarett <msarett@google.com> Remove dependency on src/android from dm and nanobench

BUG=skia:

Review URL: https://codereview.chromium.org/1443033002
/external/skia/dm/DMSrcSink.cpp
64593525debc63339e1bf9ddb8a0e998f7d976a3 12-Nov-2015 mtklein <mtklein@chromium.org> Replace SkFunction with std::function

TBR=reed@google.com
No public API changes.

Review URL: https://codereview.chromium.org/1441753002
/external/skia/dm/DMSrcSink.cpp
84a80652752976c9abe42d28e467c362baff3e39 11-Nov-2015 msarett <msarett@google.com> Reorganize BRD code in new tools directory

Rename SkCodecTools.h to SkBitmapRegionDecoderPriv.h

Move BRD code to its own directory in tools. This
allows us to not need to expose the entire tools
directory in Android.

BUG=skia:

Review URL: https://codereview.chromium.org/1417393004
/external/skia/dm/DMSrcSink.cpp
164d302ebf182a2db0044ba46126f9ed1e6cf138 11-Nov-2015 msarett <msarett@google.com> Delete dead subset test code from dm

This approach to subset decoding is no longer supported.
We have replaced it with an implementation that does not
depend on forked libraries.
https://codereview.chromium.org/1406153015/

BUG=skia:

Review URL: https://codereview.chromium.org/1416673010
/external/skia/dm/DMSrcSink.cpp
5cb4885b4cd1ac5eb3fc92dac5f5509d7c810464 06-Nov-2015 msarett <msarett@google.com> Rename SkBitmapRegionDecoder and Create function

We no longer need to worry about namespace
conflicts SkBitmapRegionDecoder in Android (which
we are replacing).

Additionally, the static Create() function does not
need to repeat the name BitmapRegionDecoder.

BUG=skia:

Review URL: https://codereview.chromium.org/1415243007
/external/skia/dm/DMSrcSink.cpp
6bd9c2101973f260c98e1cb7f2afa5bd2332133e 04-Nov-2015 scroggo <scroggo@chromium.org> Fix an error message

Remove double negative.
Also, change another error message to be slightly (meaningfully)
different so I can find the right one based on the log.

Review URL: https://codereview.chromium.org/1424083004
/external/skia/dm/DMSrcSink.cpp
c37799282ff7dc8cbec7e2b7ed2f6df6cdddf6a6 27-Oct-2015 msarett <msarett@google.com> Make DMSrcSink fail fatally when decodeRegion() fails for BRDSrcs

This involves disabling webps for kCanvas_Strategy.
We have not yet implemented webp subset decodes for this
strategy.

BUG=skia:4521

Review URL: https://codereview.chromium.org/1405273004
/external/skia/dm/DMSrcSink.cpp
35e5d1b4495478ca3bede66914ae07f50a447c4d 27-Oct-2015 msarett <msarett@google.com> Refactor SkBitmapRegionDecoderInterface for Android

The result SkBitmap, the pixel allocator, and the alpha
preference need to be communicated from the client to
the region decoder.

BUG=skia:

Review URL: https://codereview.chromium.org/1418093006
/external/skia/dm/DMSrcSink.cpp
90978148e71e525c887c389b2bec6c4cbbd1dee1 27-Oct-2015 msarett <msarett@google.com> Fix DMSrcSink bug

We want to request premultiplied decodes.

BUG=skia:

Review URL: https://codereview.chromium.org/1419403003
/external/skia/dm/DMSrcSink.cpp
648c696438410fe0f0f5db9bb7935006fecf9cad 23-Oct-2015 bsalomon <bsalomon@google.com> Add immediate mode option for gpu configs in dm

Review URL: https://codereview.chromium.org/1421853002
/external/skia/dm/DMSrcSink.cpp
26ad17b8f872fc8bc18df7f49067edbd8b9799e8 22-Oct-2015 msarett <msarett@google.com> Implementation of SkBitmapRegionDecoder using SkAndroidCodec

Includes testing in DM and nanobench

BUG=skia:

Review URL: https://codereview.chromium.org/1402863002
/external/skia/dm/DMSrcSink.cpp
fa23a9ec4e7540f4e6222f6efadd29c1e711178f 21-Oct-2015 msarett <msarett@google.com> Fix uninitialized memory on kIndex8 divisor tests in Gold

Turns out bitmap.eraseColor() does nothing if the bitmap
is kIndex8. We need a more reliable way to initialize
all of the pixels that we look at in Gold.

The input SkCanvas* is always zero initialized, so let's
only draw pixels to the canvas if we have initialized them.

BUG=skia:

Review URL: https://codereview.chromium.org/1418913002
/external/skia/dm/DMSrcSink.cpp
479fe776a0c31e038aec01dcf913092c5dc39596 21-Oct-2015 mtklein <mtklein@chromium.org> SkRemote: more refactoring

- move Client / Server definitions to .cpp
- rename Client / Server to Canvas / Decoder

No diffs:
https://gold.skia.org/search2?issue=1409113005&unt=true&query=source_type%3Dgm&master=false&include=true

BUG=skia:

Review URL: https://codereview.chromium.org/1409113005
/external/skia/dm/DMSrcSink.cpp
b6b8f2727f6b08bbc307aeebac23beeba1e4984f 21-Oct-2015 mtklein <mtklein@chromium.org> SkRemote: refactoring

- Cache becomes CachingEncoder that wraps another Encoder
- Encoders provide IDs
- syntaxy improvements to Client
- ID isn't really protocol sensitive.
- I don't think we need Type::kNone.

No diffs.
https://gold.skia.org/search2?issue=1418863002&unt=true&query=source_type%3Dgm&master=false&include=true

BUG=skia:

Review URL: https://codereview.chromium.org/1418863002
/external/skia/dm/DMSrcSink.cpp
3d9d7a7213748761d46ade183e11aa7cb55313c1 21-Oct-2015 msarett <msarett@google.com> Create an SkAndroidCodec API separate from SkCodec

We will implement this API using SkCodecs.

SkAndroidCodecs will be used to implement the
BitmapRegionDecoder Java API (and possibly
BitmapFactory).

BUG=skia:

Review URL: https://codereview.chromium.org/1406223002
/external/skia/dm/DMSrcSink.cpp
2e2ea38bb77d42bab292919de5d80286cc354782 16-Oct-2015 mtklein <mtklein@chromium.org> SkRemote

BUG=skia:

Review URL: https://codereview.chromium.org/1391023005
/external/skia/dm/DMSrcSink.cpp
fdb47571a3b5e72469b67de44e32ac14d9352ab4 13-Oct-2015 msarett <msarett@google.com> Add subsetting to SkScanlineDecoder

This CL allows the SkScanlineDecoder to decode partial
scanlines.

This is a first step in efficiently implementing subsetting
in SkScaledCodec.

BUG=skia:4209

Review URL: https://codereview.chromium.org/1390213002
/external/skia/dm/DMSrcSink.cpp
04965c6f112565c02926bc9a230e6da5f400d07a 12-Oct-2015 msarett <msarett@google.com> SkBitmapRegionDecoder clean-up

Use SkCodecPrintf instead of SkDebugf.

Check if the conversion is possible rather than starting many decodes
that will certainly fail.

Small refactor to code that deals with subsets that fall outside
of the image.

BUG=skia:

Review URL: https://codereview.chromium.org/1395383002
/external/skia/dm/DMSrcSink.cpp
e6dd004c1b8a81dc37a370570877b8b7d6dbe308 09-Oct-2015 msarett <msarett@google.com> Fill incomplete images in SkCodec parent class

Rather than implementing some sort of "fill" in every
SkCodec subclass for incomplete images, let's make the
parent class handle this situation.

This includes an API change to SkCodec.h

SkCodec::getScanlines() now returns the number of lines it
read successfully, rather than an SkCodec::Result enum.
getScanlines() most often fails on an incomplete input, in
which case it is useful to know how many lines were
successfully decoded - this provides more information than
kIncomplete vs kSuccess. We do lose information when the
API is used improperly, as we are no longer able to return
kInvalidParameter or kScanlineNotStarted.

Known Issues:
Does not work for incomplete fFrameIsSubset gifs.
Does not work for incomplete icos.

BUG=skia:

Review URL: https://codereview.chromium.org/1332053002
/external/skia/dm/DMSrcSink.cpp
6634cbb427d97f88b6f719fc34ff9b8dbcf8a1f4 30-Sep-2015 scroggo <scroggo@google.com> Small DM cleanup

We set a value to bounds, and then immediately replace it. Skip the
first one.

Review URL: https://codereview.chromium.org/1378923002
/external/skia/dm/DMSrcSink.cpp
7fac5af5e9310826721ff416bdbe71294d607b2a 30-Sep-2015 scroggo <scroggo@google.com> Fix bug testing SkCodec for ICO

Looking in Gold, I see some ICO images that only show the upper left
corner of the originals. It is happening because we use different ways
of deciding what the dimensions are:

In CodecSrc::size(), we use an SkScaledCodec to get the dimensions,
even when fMode is not kScaledCodec_Mode.

In CodecSrc::draw(), we only use SkScaledCodec in kScaledCodec_Mode.

My recent CL to combine SkScanlineDecoder with SkCodec revealed this
bug, because now SkScaledCodec::NewFromStream will succeed on ICO.
(Previously, it failed because we do not yet have a scanline decoder
for ICO (skbug.com/4404). Now that they are combined, we would need
to specially flag ICO to stop returning an SkScaledCodec.)

Switch size() to use the correct type of codec.

Review URL: https://codereview.chromium.org/1373253004
/external/skia/dm/DMSrcSink.cpp
46c574725676b26ada63ac15e42cda309dcd5090 30-Sep-2015 scroggo <scroggo@google.com> Merge SkCodec with SkScanlineDecoder

Benefits:
- This mimics other decoding APIs (including the ones SkCodec relies
on, e.g. a png_struct, which can be used to decode an entire image or
one line at a time).

- It allows a client to ask us to do what we can do efficiently - i.e.
start from encoded data and either decode the whole thing or scanlines.

- It removes the duplicate methods which appeared in both SkCodec and
SkScanlineDecoder (some of which, e.g. in SkJpegScanlineDecoder, just
call fCodec->sameMethod()).

- It simplifies moving more checks into the base class (e.g. the
examples in skbug.com/4284).

BUG=skia:4175
BUG=skia:4284

=====================================================================

SkScanlineDecoder.h/.cpp:
Removed.

SkCodec.h/.cpp:
Add methods, enums, and variables which were previously in
SkScanlineDecoder.
Default fCurrScanline to -1, as a sentinel that start has not been
called.

General changes:
Convert SkScanlineDecoders to SkCodecs.

General changes in SkCodec subclasses:
Merge SkScanlineDecoder implementation into SkCodec. Most (all?) owned
an SkCodec, so they now call this-> instead of fCodec->.

SkBmpCodec.h/.cpp:
Replace the unused rowOrder method with an override for
onGetScanlineOrder.
Make getDstRow const, since it is called by onGetY, which is const.

SkCodec_libpng.h/.cpp:
Make SkPngCodec an abstract class, with two subclasses which handle
scanline decoding separately (they share code for decoding the entire
image). Reimplement onReallyHasAlpha so that it can return the most
recent result (e.g. after a scanline decode which only decoded part
of the image) or a better answer (e.g. if the whole image is known to
be opaque).
Compute fNumberPasses early, so we know which subclass to instantiate.
Make SkPngInterlaceScanlineDecoder use the base class' fCurrScanline
rather than a separate variable.

CodexTest.cpp:
Add tests for the state changes in SkCodec (need to call start before
decoding scanlines; calling getPixels means that start will need to
be called again before decoding more scanlines).
Add a test which decodes in stripes, currently only used for an
interlaced PNG.

TODO: Add tests for onReallyHasAlpha.

Review URL: https://codereview.chromium.org/1365313002
/external/skia/dm/DMSrcSink.cpp
c11c62f4a235677f3921bceed331db91ca98aaaf 28-Sep-2015 halcanary <halcanary@google.com> DM: PDFSink sets rasterizer keyword

Review URL: https://codereview.chromium.org/1376573002
/external/skia/dm/DMSrcSink.cpp
449d9b7e2d1b2e20963f18639c6e541ef953f069 28-Sep-2015 mtklein <mtklein@chromium.org> simplify code in SkRecords.h

- use C++11 features ({} init, move constructors) to eliminate the need
for explicit constructors
- collapse RECORD0...RECORD8 into just one RECORD macro
- explicitly tag record types instead of using member detectors.

Removing member detectors makes this code significantly less fragile.

This exposes a few places where we didn't really think through what to do
with SkDrawable. I've marked them TODO for now.

BUG=skia:

Review URL: https://codereview.chromium.org/1360943003
/external/skia/dm/DMSrcSink.cpp
d114645d931d4e95a938597a45a270f211273c17 25-Sep-2015 reed <reed@google.com> SkInstallDiscardablePixelRef is deprecated, enforce that

No functionality change, just a renaming.

BUG=skia:
TBR=

Review URL: https://codereview.chromium.org/1372593002
/external/skia/dm/DMSrcSink.cpp
f12a1673f024d30d30f06b9f88b5cc072b8a2d1e 23-Sep-2015 halcanary <halcanary@google.com> SkPDF: add basic metadata support

Motivation: I want too finalize this API before working on the more
complex problem of adding XMP metadata for PDF/A.

BUG=skia:3110

Review URL: https://codereview.chromium.org/1359943003
/external/skia/dm/DMSrcSink.cpp
7f69144aaabbedf51ad2a1feddc9e0689f2c5ee9 22-Sep-2015 msarett <msarett@google.com> Add nanobench tests for BitmapRegionDecoder

SkBitmapRegionDecoderInterface provides an interface
for multiple implementations of Android's
BitmapRegionDecoder.

We already have correctness tests in DM that will enable us
to compare the quality of our various BRD implementations.

We also need these performance tests to compare the speed
of our various implementations.

BUG=skia:4357

Review URL: https://codereview.chromium.org/1344993003
/external/skia/dm/DMSrcSink.cpp
a5783aeff042ccaf517e50dee3660a4925f5f694 09-Sep-2015 msarett <msarett@google.com> Provides various implementations of Android's SkBitmapRegionDecoder.

Implements testing in DM for these implementations.

nanobench testing will follow after this.

TBR=scroggo
BUG=skia:

Committed: https://skia.googlesource.com/skia/+/76f755e6d54a32f9887ad254ce59a3a62f28bde4

Review URL: https://codereview.chromium.org/1288963002
/external/skia/dm/DMSrcSink.cpp
8fd97eab1d9c17c662e08f6b3dbd7be49ec0a838 08-Sep-2015 msarett <msarett@google.com> Revert of Provides multiple implementations of Android's SkBitmapRegionDecoder (patchset #16 id:360001 of https://codereview.chromium.org/1288963002/ )

Reason for revert:
Breaking Android bots
Bad use of the utils folder

Original issue's description:
> Provides various implementations of Android's SkBitmapRegionDecoder.
>
> Implements testing in DM for these implementations.
>
> nanobench testing will follow after this.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/76f755e6d54a32f9887ad254ce59a3a62f28bde4

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

Review URL: https://codereview.chromium.org/1322773004
/external/skia/dm/DMSrcSink.cpp
10522ff4cfa3cba45881354768f6185fc1109119 07-Sep-2015 msarett <msarett@google.com> Scanline decoding for gifs

BUG=skia:

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

Review URL: https://codereview.chromium.org/1305123002
/external/skia/dm/DMSrcSink.cpp
e3330cf2cf361c146af7009301612b4010f82195 05-Sep-2015 jcgregorio <jcgregorio@google.com> Revert of Scanline decoding for gifs (patchset #15 id:380001 of https://codereview.chromium.org/1305123002/ )

Reason for revert:
Breaks the build with SkScanlineDecoder.h not found:

http://build.chromium.org/p/client.skia/builders/Linux%20Builder/builds/3722/steps/compile/logs/stdio

../../third_party/skia/src/utils/SkBitmapRegionCanvas.h:10:10: fatal error: 'SkScanlineDecoder.h' file not found
#include "SkScanlineDecoder.h"

Original issue's description:
> Scanline decoding for gifs
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/e9c10b9121887e8c300bd41357461418e061984d

TBR=scroggo@google.com,djsollen@google.com,msarett@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1320273004
/external/skia/dm/DMSrcSink.cpp
e9c10b9121887e8c300bd41357461418e061984d 04-Sep-2015 msarett <msarett@google.com> Scanline decoding for gifs

BUG=skia:

Review URL: https://codereview.chromium.org/1305123002
/external/skia/dm/DMSrcSink.cpp
76f755e6d54a32f9887ad254ce59a3a62f28bde4 04-Sep-2015 msarett <msarett@google.com> Provides various implementations of Android's SkBitmapRegionDecoder.

Implements testing in DM for these implementations.

nanobench testing will follow after this.

BUG=skia:

Review URL: https://codereview.chromium.org/1288963002
/external/skia/dm/DMSrcSink.cpp
9e707a04127f35b199bb943b6f50ff4cf60506f8 01-Sep-2015 msarett <msarett@google.com> Various improvements to CodecSrc testing in dm

*** Add CodecMode and ScaledCodecMode (in place of
NormalMode), so now we test SkCodec's getPixels() and
SkScaledCodec's getPixels()

*** Don't attempt to test scanline and codec modes using
the dimensions that were recommended for SkScaledCodec.

*** Change tags so that each scale gets its own output
folder.

TODO: Make ScanlineMode and ScanlineSubsetMode support
kOutOfOrder etc. I think this belongs with the gif CL -
I don't want to add test modes that we don't run yet.

BUG=skia:4202
BUG=skia:4238

Review URL: https://codereview.chromium.org/1327433003
/external/skia/dm/DMSrcSink.cpp
afcd7cd32497cc79035e61fd64b0baa03ed04bcc 31-Aug-2015 bsalomon <bsalomon@google.com> Rename flag from "distance field" to "device independent."

Review URL: https://codereview.chromium.org/1322433006
/external/skia/dm/DMSrcSink.cpp
5406d6f39ad042e7a0a0d4ea16beca4fe2b66492 31-Aug-2015 msarett <msarett@google.com> Scanline decoding for bmp

Redesigns SkScanlineDecoder.h to indicate the ordering
in which the scanlines are provided

Refactors SkSwizzler::Fill() to include the zeroInit check
and to actually be correct.

BUG=skia:3257
BUG=skia:4198

Review URL: https://codereview.chromium.org/1287423002
/external/skia/dm/DMSrcSink.cpp
96fcdcc219d2a0d3579719b84b28bede76efba64 27-Aug-2015 halcanary <halcanary@google.com> Style Change: NULL->nullptr
DOCS_PREVIEW= https://skia.org/?cl=1316233002

Review URL: https://codereview.chromium.org/1316233002
/external/skia/dm/DMSrcSink.cpp
385fe4d4b62d7d1dd76116dd570df3290a2f487b 26-Aug-2015 halcanary <halcanary@google.com> Style Change: SkNEW->new; SkDELETE->delete
DOCS_PREVIEW= https://skia.org/?cl=1316123003

Review URL: https://codereview.chromium.org/1316123003
/external/skia/dm/DMSrcSink.cpp
c6ad06acefa096716f8dabed5342f9b89dc43dfe 19-Aug-2015 mtklein <mtklein@chromium.org> unsigned -> int for counts and indices in picture-related code

also, (C)

BUG=skia:

Review URL: https://codereview.chromium.org/1300163002
/external/skia/dm/DMSrcSink.cpp
451af5062e6bf9c665126d84516e0baafa27ecc4 19-Aug-2015 reed <reed@google.com> remove SkDeferredCanvas

Waiting a day or so to see if the blink-removal of SkDeferredCanvas sticks

BUG=skia:

Review URL: https://codereview.chromium.org/1269093002
/external/skia/dm/DMSrcSink.cpp
b32758a72fa582a5e40623ffe145727820343909 18-Aug-2015 msarett <msarett@google.com> Test scaling for small images

We don't want to test small images on Gold because they are
not interested to look at. Instead, I wrote a unit test to
verify that scaling small images does not cause crashes.

BUG=skia:

Review URL: https://codereview.chromium.org/1287863004
/external/skia/dm/DMSrcSink.cpp
8f4ba76742c329bc4d5e1b8ca376d27922bd00b1 14-Aug-2015 emmaleer <emmaleer@google.com> SkScaledCodec class

This class does scaling by using a scanlineDecoder.
getScanlines and skipScanlines are used for y sampling,
the swizzler is used for x sampling

this class is currently only working for png and jpeg images
I will update other Codec types to work soon

For SkJpegCodec to implement width wise swizzling it now
uses a swizzler. I ran performance tests on this change.
Here are the performance test results:
https://docs.google.com/a/google.com/spreadsheets/d/1D7-Q_GXD_dI68LZO005NNvb8Wq2Ee0wEBEPG72671yw/edit?usp=sharing

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/0944100ac89f797714eeae0cf2875e2335ff52ee

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

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

Review URL: https://codereview.chromium.org/1260673002
/external/skia/dm/DMSrcSink.cpp
b0a32cc38fcd8f37a23dfa19e928aeca529eaf14 14-Aug-2015 egdaniel <egdaniel@google.com> Revert of SkScaledCodec class (patchset #35 id:680001 of https://codereview.chromium.org/1260673002/ )

Reason for revert:
breaking ubuntu bots

Original issue's description:
> SkScaledCodec class
>
> This class does scaling by using a scanlineDecoder.
> getScanlines and skipScanlines are used for y sampling,
> the swizzler is used for x sampling
>
> this class is currently only working for png and jpeg images
> I will update other Codec types to work soon
>
> For SkJpegCodec to implement width wise swizzling it now
> uses a swizzler. I ran performance tests on this change.
> Here are the performance test results:
> https://docs.google.com/a/google.com/spreadsheets/d/1D7-Q_GXD_dI68LZO005NNvb8Wq2Ee0wEBEPG72671yw/edit?usp=sharing
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/0944100ac89f797714eeae0cf2875e2335ff52ee
>
> Committed: https://skia.googlesource.com/skia/+/d518ea7927f9f4e0ed5b4134d1b4f48243855a47
>
> Committed: https://skia.googlesource.com/skia/+/b157917507d4f7d2651f0aeb566d31603cc02240

TBR=scroggo@google.com,msarett@google.com,djsollen@google.com,mtklein@google.com,emmaleer@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1285173003
/external/skia/dm/DMSrcSink.cpp
b157917507d4f7d2651f0aeb566d31603cc02240 14-Aug-2015 emmaleer <emmaleer@google.com> SkScaledCodec class

This class does scaling by using a scanlineDecoder.
getScanlines and skipScanlines are used for y sampling,
the swizzler is used for x sampling

this class is currently only working for png and jpeg images
I will update other Codec types to work soon

For SkJpegCodec to implement width wise swizzling it now
uses a swizzler. I ran performance tests on this change.
Here are the performance test results:
https://docs.google.com/a/google.com/spreadsheets/d/1D7-Q_GXD_dI68LZO005NNvb8Wq2Ee0wEBEPG72671yw/edit?usp=sharing

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/0944100ac89f797714eeae0cf2875e2335ff52ee

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

Review URL: https://codereview.chromium.org/1260673002
/external/skia/dm/DMSrcSink.cpp
c7993d747fff40328b6666845761efbbbfe720b7 13-Aug-2015 emmaleer <emmaleer@google.com> Revert of SkScaledCodec class (patchset #34 id:660001 of https://codereview.chromium.org/1260673002/ )

Reason for revert:
Seg-faulting:
http://build.chromium.org/p/client.skia/builders/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Release/builds/1608/steps/dm/logs/stdio

Original issue's description:
> SkScaledCodec class
>
> This class does scaling by using a scanlineDecoder.
> getScanlines and skipScanlines are used for y sampling,
> the swizzler is used for x sampling
>
> this class is currently only working for png and jpeg images
> I will update other Codec types to work soon
>
> For SkJpegCodec to implement width wise swizzling it now
> uses a swizzler. I ran performance tests on this change.
> Here are the performance test results:
> https://docs.google.com/a/google.com/spreadsheets/d/1D7-Q_GXD_dI68LZO005NNvb8Wq2Ee0wEBEPG72671yw/edit?usp=sharing
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/0944100ac89f797714eeae0cf2875e2335ff52ee
>
> Committed: https://skia.googlesource.com/skia/+/d518ea7927f9f4e0ed5b4134d1b4f48243855a47

TBR=scroggo@google.com,msarett@google.com,djsollen@google.com,mtklein@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1294613002
/external/skia/dm/DMSrcSink.cpp
d518ea7927f9f4e0ed5b4134d1b4f48243855a47 13-Aug-2015 emmaleer <emmaleer@google.com> SkScaledCodec class

This class does scaling by using a scanlineDecoder.
getScanlines and skipScanlines are used for y sampling,
the swizzler is used for x sampling

this class is currently only working for png and jpeg images
I will update other Codec types to work soon

For SkJpegCodec to implement width wise swizzling it now
uses a swizzler. I ran performance tests on this change.
Here are the performance test results:
https://docs.google.com/a/google.com/spreadsheets/d/1D7-Q_GXD_dI68LZO005NNvb8Wq2Ee0wEBEPG72671yw/edit?usp=sharing

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/0944100ac89f797714eeae0cf2875e2335ff52ee

Review URL: https://codereview.chromium.org/1260673002
/external/skia/dm/DMSrcSink.cpp
e5aaa07c351815f023a0842820eb769c6d4b4ed3 13-Aug-2015 emmaleer <emmaleer@google.com> Revert of SkScaledCodec class (patchset #32 id:620001 of https://codereview.chromium.org/1260673002/ )

Reason for revert:
Segfaulting:
http://build.chromium.org/p/client.skia/builders/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Release/builds/1605/steps/dm/logs/stdio

Original issue's description:
> SkScaledCodec class
>
> This class does scaling by using a scanlineDecoder.
> getScanlines and skipScanlines are used for y sampling,
> the swizzler is used for x sampling
>
> this class is currently only working for png and jpeg images
> I will update other Codec types to work soon
>
> For SkJpegCodec to implement width wise swizzling it now
> uses a swizzler. I ran performance tests on this change.
> Here are the performance test results:
> https://docs.google.com/a/google.com/spreadsheets/d/1D7-Q_GXD_dI68LZO005NNvb8Wq2Ee0wEBEPG72671yw/edit?usp=sharing
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/0944100ac89f797714eeae0cf2875e2335ff52ee

TBR=scroggo@google.com,msarett@google.com,djsollen@google.com,mtklein@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1294593002
/external/skia/dm/DMSrcSink.cpp
0944100ac89f797714eeae0cf2875e2335ff52ee 13-Aug-2015 emmaleer <emmaleer@google.com> SkScaledCodec class

This class does scaling by using a scanlineDecoder.
getScanlines and skipScanlines are used for y sampling,
the swizzler is used for x sampling

this class is currently only working for png and jpeg images
I will update other Codec types to work soon

For SkJpegCodec to implement width wise swizzling it now
uses a swizzler. I ran performance tests on this change.
Here are the performance test results:
https://docs.google.com/a/google.com/spreadsheets/d/1D7-Q_GXD_dI68LZO005NNvb8Wq2Ee0wEBEPG72671yw/edit?usp=sharing

BUG=skia:

Review URL: https://codereview.chromium.org/1260673002
/external/skia/dm/DMSrcSink.cpp
1c005e4a38e29d648ecebada25d3a718155043a3 04-Aug-2015 scroggo <scroggo@chromium.org> Create a scanline decoder without creating a codec

Prior to this CL, if a client wanted to decode scanlines, they had to
create an SkCodec in order to get an SkScanlineDecoder. This introduces
complications if input data is not easily shared between the two
objects.

Instead, add methods to SkScanlineDecoder for creating a new one from
input data, and remove the creation functions from SkCodec.

Update DM and tests.

Review URL: https://codereview.chromium.org/1267583002
/external/skia/dm/DMSrcSink.cpp
99cab4e3081e7e0ae8a72eb53cb42b1bef3719a3 31-Jul-2015 mtklein <mtklein@chromium.org> DM: track a direct/indirect bit for each Sink too.

The decoding tests can now veto indirect sinks like pipe-8888.

This moves Sink type detection from automatic to explicit; I can't think of any
way to automatically differentiate pipe-8888 from 8888 based only on the
output. (They should ideally be identical, after all.)

BUG=skia:4138

Review URL: https://codereview.chromium.org/1263113002
/external/skia/dm/DMSrcSink.cpp
4358f13ac614d572c137e95748c6dc2ca0d66784 30-Jul-2015 scroggo <scroggo@chromium.org> Call notifyPixelsChanged after modifying bitmap

In CodecSrc's scanline_subset test, we decode a subset of an image to a
bitmap, draw it to the canvas, and then repeat. This is fine for most
backends, but not for pipe. Pipe sees the same generation ID, so it
assumes it is the same bitmap it saw before, and just draws the
original one.

Call notifyPixelsChanged, so the bitmap will get a new generation ID,
fixing pipe.

BUG=skia:4138

Review URL: https://codereview.chromium.org/1265983004
/external/skia/dm/DMSrcSink.cpp
e0effd60800bd7c07667e31a6a66e3def8de70c8 29-Jul-2015 mtklein <mtklein@chromium.org> Allow Srcs to veto Sinks based on their broad type.

This breaks Sinks down into three auto-detected types:
- GPU: anything that requests to be run in the GPU enclave
- Vector: anything that writes to the stream instead of the bitmap
- Raster: everything else

Some examples: gpu -> GPU, msaa16 -> GPU, 8888 -> raster, pdf -> vector,
svg -> vector, pipe-8888 -> raster, tiles_rt-gpu -> GPU

This lets image decoding sinks veto non-raster backends explicitly,
and can let particular GMs veto GPU or non-GPU sinks as they like.

BUG=skia:

Review URL: https://codereview.chromium.org/1239953004
/external/skia/dm/DMSrcSink.cpp
b636b45971bc5e64e3b103169577cbc874bc064d 22-Jul-2015 scroggo <scroggo@chromium.org> Add the ability to decode a subset to SkCodec

This allows codecs that support subsets natively (i.e. WEBP) to do so.

Add a field on SkCodec::Options representing the subset.

Add a method on SkCodec to find a valid subset which approximately
matches a desired subset.

Implement subset decodes in SkWebpCodec.

Add a test in DM for decoding subsets.
Notice that we only start on even boundaries. This is due to the
way libwebp's API works. SkWEBPImageDecoder does not take this into
account, which results in visual artifacts.

FIXME: Subsets with scaling are not pixel identical, but close. (This
may be fine, though - they are not perceptually different. We'll just
need to mark another set of images in gold as valid, once
https://skbug.com/4038 is fixed, so we can tests scaled webp without
generating new images on each run.)

Review URL: https://codereview.chromium.org/1240143002
/external/skia/dm/DMSrcSink.cpp
9b2cdbf4811477487f107a78edc130c733b309ea 10-Jul-2015 scroggo <scroggo@chromium.org> Allow creating multiple scanline decoders.

Make getScanlineDecoder return a new object each time, which is
owned by the caller, and independent from any existing scanline
decoders and the SkCodec itself.

Since the SkCodec already contains the entire state machine, and it
is used by the scanline decoders, simply create a new SkCodec which
is now owned by the scanline decoder.

Move code that cleans up after using a scanline decoder into its
destructor

One side effect is that creating the first scanline decoder requires
a duplication of the stream and re-reading the header. (With some
more complexity/changes, we could pass the state machine to the
scanline decoder and make the SkCodec recreate its own state machine
instead.) The typical client of the scanline decoder (region decoder)
uses an SkMemoryStream, so the duplication is cheap, although we
should consider the extra time to reread the header/recreate the state
machine. (If/when we use the scanline decoder for other purposes,
where the stream may not be cheaply duplicated, we should consider
passing the state machine.)

One (intended) result of this change is that a client can create a
new scanline decoder in a new thread, and decode different pieces of
the image simultaneously.

In SkPngCodec::decodePalette, use fBitDepth rather than a parameter.

Review URL: https://codereview.chromium.org/1230033004
/external/skia/dm/DMSrcSink.cpp
eb602a5c94078fb2956c9bdc64bbf47a31b9c0e5 09-Jul-2015 scroggo <scroggo@chromium.org> SkCodec no longer inherits from SkImageGenerator.

SkImageGenerator makes some assumptions that are not necessarily valid
for SkCodec. For example, SkCodec does not assume that it can always be
rewound.

We also have an ongoing question of what an SkCodec should report as
its default settings (i.e. the return from getInfo). It makes sense for
an SkCodec to report that its pixels are unpremultiplied, if that is
the case for the underlying data, but if a client of SkImageGenerator
uses the default settings (as many do), they will receive
unpremultiplied pixels which cannot (currently) be drawn with Skia. We
may ultimately decide to revisit SkCodec reporting an SkImageInfo, but
I have left it unchanged for now.

Import features of SkImageGenerator used by SkCodec into SkCodec.

I have left SkImageGenerator unchanged for now, but it no longer needs
Result or Options. This will require changes to Chromium.

Manually handle the lifetime of fScanlineDecoder, so SkScanlineDecoder.h
can include SkCodec.h (where Result is), and SkCodec.h does not need
to include it (to delete fScanlineDecoder).

In many places, make the following simple changes:
- Now include SkScanlineDecoder.h, which is no longer included by
SkCodec.h
- Use the enums in SkCodec, rather than SkImageGenerator
- Stop including SkImageGenerator.h where no longer needed

Review URL: https://codereview.chromium.org/1220733013
/external/skia/dm/DMSrcSink.cpp
d2baa9093876357c8fbf4bc74d10d68b4c026c6f 07-Jul-2015 mtklein <mtklein@chromium.org> Make sp- via support SkDrawables; add a GM to test it.

BUG=skia:

Review URL: https://codereview.chromium.org/1212363005
/external/skia/dm/DMSrcSink.cpp
0a4c3cbfd77e11901c66ac29bf1417a42b87fd31 22-Jun-2015 emmaleer <emmaleer@google.com> Implemented onGetScanlines and onSkipScanlines for interlaced pngs

Modified DM tests to be faster when decoding interlaced pngs

BUG=skia:

Review URL: https://codereview.chromium.org/1194703002
/external/skia/dm/DMSrcSink.cpp
7054257de9ab53a9daf97e51d5e20178c9604e67 19-Jun-2015 msarett <msarett@google.com> Do not fail on images that are too small to subset decode.

Specifically (0x0) images being produced by webp scaled
decodes are causing problems.

BUG=skia:

Review URL: https://codereview.chromium.org/1192373003
/external/skia/dm/DMSrcSink.cpp
f6db27e58e65a4c9680fdf00e41047578b6ac9f9 12-Jun-2015 msarett <msarett@google.com> Fixing stripe test

I originally thought that there was no harm in reading or skipping
zero lines after we have already reached the end of the image.

However, once we reach the end of the image, onFinish() is
automatically called. Performing a read or a skip after
the call to onFinish() is invalid and will cause onFinish()
to be called a second time (which is also invalid).

Seems like the code requires good behavior and the test is
wrong.

BUG=skia:

Review URL: https://codereview.chromium.org/1179213002
/external/skia/dm/DMSrcSink.cpp
0a24297be4737f5fe23b3b918b193260e64ab32d 11-Jun-2015 msarett <msarett@google.com> DM testing for skipping and scaling

BUG=skia:

Review URL: https://codereview.chromium.org/1175993005
/external/skia/dm/DMSrcSink.cpp
4ee6bd86c500d9b464e2f8cb3565544b8c97c0a9 27-May-2015 bsalomon <bsalomon@google.com> Add caps overrides to GMs

Review URL: https://codereview.chromium.org/1158963002
/external/skia/dm/DMSrcSink.cpp
9700206b67ef2a0aab9a8211c8a901d5123afa9f 27-May-2015 emmaleer <emmaleer@google.com> New CodeSrc* draw mode kScanline_Subset_Mode

kScanline_Subset_Mode decodes the image in subsets using a
scanline decoder.
The number of subsets can be specified by changing the constant divisor.
The number of subsets is equal to divisor*divisor.

Review URL: https://codereview.chromium.org/1157153003
/external/skia/dm/DMSrcSink.cpp
e44b5084d86772727826e65b8e95e17dc53ee977 07-May-2015 mtklein <mtklein@chromium.org> DM: use SkFunction to make required argument type clearer.

Previously it was hard to tell that DrawFn took an SkCanvas* and returned an Error. Now it's clear from the type.

BUG=skia:

Review URL: https://codereview.chromium.org/1125233002
/external/skia/dm/DMSrcSink.cpp
6fbf4b3a7f0a3304649c482ab0a911dc147a6825 06-May-2015 mtklein <mtklein@chromium.org> Do we still need this DOUBLE_LOOP feature?

If so, let's do it this way so it works for all source types and doesn't need
to be chosen at compile time.

BUG=skia:

Review URL: https://codereview.chromium.org/1129693003
/external/skia/dm/DMSrcSink.cpp
7882924c10fadaed427b6aa65dc7aa6577b94f32 06-May-2015 mtklein <mtklein@chromium.org> DM: add Via abstract class

BUG=skia:

Review URL: https://codereview.chromium.org/1117183007
/external/skia/dm/DMSrcSink.cpp
d31c13d0441aecc8b2a4fa4f45fd5e59584cb3ea 05-May-2015 mtklein <mtklein@chromium.org> DM: add a Via to simulate SP pictures.

Will use this to test the other CL that adds small SkPicture implementations.

Not quite sure why patch_primitive doesn't draw the same in 8888 and sp-8888, but everything else does, so I'm not going to let that hold me back for now.

BUG=skia:

Review URL: https://codereview.chromium.org/1126613005
/external/skia/dm/DMSrcSink.cpp
a16e69ec6ccbaf81671f66ee77ca3b0c07100041 05-May-2015 mtklein <mtklein@chromium.org> DM: add draw_to_canvas() to trim some boilerplate for Vias.

BUG=skia:

Review URL: https://codereview.chromium.org/1123743007
/external/skia/dm/DMSrcSink.cpp
06a22f618cd2adbbd33634a701b5cf8353886d63 05-May-2015 reed <reed@google.com> add deferred config to DM

BUG=skia:

Review URL: https://codereview.chromium.org/1113273006
/external/skia/dm/DMSrcSink.cpp
9e43cabaa1ff26167e990f0bcb9a5c20d662d52c 29-Apr-2015 msarett <msarett@google.com> Requires a minor API change to pass the color table to getScanlineDecoder, as we do with getPixels().

BUG=skia:3722

Review URL: https://codereview.chromium.org/1061713007
/external/skia/dm/DMSrcSink.cpp
e16b04aa6041efb6507546547737e9603fa1606e 15-Apr-2015 msarett <msarett@google.com> SkJpegCodec

Enables basic decoding for jpegs

Includes rewinding

565, YUV, and Jpeg encoding are not yet implemented

BUG=skia:3257

Review URL: https://codereview.chromium.org/1076923002
/external/skia/dm/DMSrcSink.cpp
7e79818137f2173302d6476a6127525b11684ec2 14-Apr-2015 halcanary <halcanary@google.com> DM: add --multiPage option

Motivation: I want to switch back to single-page output by default for
direct comparison to raster backends in Gold.

I can still test the multi-page option via a command-line switch.

BUG=skia:3721

Review URL: https://codereview.chromium.org/1063873004
/external/skia/dm/DMSrcSink.cpp
438b2adefb9e9213e0ddaf0609405d3087a1cf0a 09-Apr-2015 msarett <msarett@google.com> ***Disables swizzles to 565.
We may want to enable swizzles to 565
for images that are encoded in a format
similar to 565, however, we do not want
to take images that decode naturally to
kN32 and then convert them to 565.

***Enable swizzles to kIndex_8. For images
encoded in a color table format, we suggest
that they be decoded to kIndex_8. When we
decode, we only allow conversion to kIndex_8
if it matches the suggested color type (except
wbmp which seems good as is).

***Modify dm to test images that decode to
kIndex_8.

BUG=skia:3257
BUG=skia:3440

Review URL: https://codereview.chromium.org/1055743003
/external/skia/dm/DMSrcSink.cpp
b7e8d69fc21a3043348fd9b76876471e0a6ae7fe 07-Apr-2015 mtklein <mtklein@chromium.org> Add a Via to DM that records into two pictures and draws using the second.

I'm going to start hacking on SkCanvas a bit to allow a fast reset method,
and I want to have some testing checking me.

BUG=skia:

Review URL: https://codereview.chromium.org/1062043004
/external/skia/dm/DMSrcSink.cpp
2ab9000b3fa1a61ec9213408af9c800f70eb0657 03-Apr-2015 djsollen <djsollen@google.com> Prevent DM crash in the PDF sink when src width/height are zero.

Review URL: https://codereview.chromium.org/1061493002
/external/skia/dm/DMSrcSink.cpp
7c3a2f834e0ba3f11a3129d5348b393efcc9b0e1 31-Mar-2015 joshualitt <joshualitt@chromium.org> BitmapTextBatch and BitmapTextBlob

BUG=skia:

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

Review URL: https://codereview.chromium.org/1011403004
/external/skia/dm/DMSrcSink.cpp
c03391e792a55219ddcb033475dc6b80e6a3e2f9 31-Mar-2015 joshualitt <joshualitt@google.com> Revert of BitmapTextBatch and BitmapTextBlob (patchset #18 id:360001 of https://codereview.chromium.org/1011403004/)

Reason for revert:
Breaks a unit test on mac

Original issue's description:
> BitmapTextBatch and BitmapTextBlob
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/eed1dae04932483579b02c10f0706127d3f5d984

TBR=fmalita@chromium.org,reed@google.com,jvanverth@google.com,robertphillips@google.com,bsalomon@google.com,jvanverth@chromium.org,joshualitt@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review URL: https://codereview.chromium.org/1050633002
/external/skia/dm/DMSrcSink.cpp
eed1dae04932483579b02c10f0706127d3f5d984 31-Mar-2015 joshualitt <joshualitt@chromium.org> BitmapTextBatch and BitmapTextBlob

BUG=skia:

Review URL: https://codereview.chromium.org/1011403004
/external/skia/dm/DMSrcSink.cpp
36352bf5e38f45a70ee4f4fc132a38048d38206d 26-Mar-2015 mtklein <mtklein@chromium.org> C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla}

NOPRESUBMIT=true

BUG=skia:
DOCS_PREVIEW= https://skia.org/?cl=1037793002

Review URL: https://codereview.chromium.org/1037793002
/external/skia/dm/DMSrcSink.cpp
9c59ebc0db7cade1537591813430f7be47123e76 25-Mar-2015 scroggo <scroggo@google.com> Test scanline decoding in DM.

BUG=skia:3475

Review URL: https://codereview.chromium.org/999173010
/external/skia/dm/DMSrcSink.cpp
b3e5e4d314301617d2d48b7589dfd426bd68a671 25-Mar-2015 mtklein <mtklein@chromium.org> Lazy SKP image decoding in DM.

@sugoi:
Early out to avoid some segfaults in SkImageDecoder_libjpeg.cpp.
I am just flailing here... things seem to work, but I have no idea why.
This prints out a lot:
libjpeg error 85 <End Of Image> from output_raw_data [0 0]

@halcanary:
I'm skipping on ImageSrc for now. Leon's refactoring that quite a lot.

This causes minor diffs for the GPU backend, given that we're now
going through the YUV path. It also reduced peak RAM usage on
my desktop from 1.26GB to 1.08GB.

BUG=skia:

Review URL: https://codereview.chromium.org/1010983004
/external/skia/dm/DMSrcSink.cpp
478652e918d73a4c0330e27e03eaa9564138c0f7 25-Mar-2015 scroggo <scroggo@google.com> Add copyright headers DM.

Review URL: https://codereview.chromium.org/1037713003
/external/skia/dm/DMSrcSink.cpp
9bde918754bc292469d801f156f3b626eb3db780 25-Mar-2015 msarett <msarett@google.com> Enabling ico decoding with use of png and bmp decoders

BUG=skia:3257

NOPRESUBMIT=true

Review URL: https://codereview.chromium.org/1011343003
/external/skia/dm/DMSrcSink.cpp
7aa846c6837f527067e7ab5fdeacdbd502696382 24-Mar-2015 tomhudson <tomhudson@google.com> Revert of Enabling ico decoding with use of png and bmp decoders (patchset #10 id:280001 of https://codereview.chromium.org/1011343003/)

Reason for revert:
Reverting on suspicion of massive bot failures - possible command line too long?

Original issue's description:
> Enabling ico decoding with use of png and bmp decoders
>
> BUG=skia:3257
>
> Committed: https://skia.googlesource.com/skia/+/15bfd075d38e4422a477e22940d06a137f66cc97

TBR=scroggo@google.com,reed@google.com,djsollen@google.com,msarett@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3257

Review URL: https://codereview.chromium.org/1022843005
/external/skia/dm/DMSrcSink.cpp
15bfd075d38e4422a477e22940d06a137f66cc97 24-Mar-2015 msarett <msarett@google.com> Enabling ico decoding with use of png and bmp decoders

BUG=skia:3257

Review URL: https://codereview.chromium.org/1011343003
/external/skia/dm/DMSrcSink.cpp
3ef71e343bf075888fb50892350390b4dd47de24 19-Mar-2015 reed <reed@google.com> guarded change to SkImageGenerator to make getInfo() const

BUG=skia:

Review URL: https://codereview.chromium.org/1017293002
/external/skia/dm/DMSrcSink.cpp
9b77ddde08efe702256355a333cf31ade8f15bb0 19-Mar-2015 scroggo <scroggo@google.com> Run CodecSrc DM.

Rather than making SkCodec an option instead of SkImageDecoder,
create a separate CodecSrc. This allows us to compare the two.

For both CodecSrc and ImageSrc, do not decode to a gpu backend.

BUG=skia:3475

Review URL: https://codereview.chromium.org/978823002
/external/skia/dm/DMSrcSink.cpp
741143878b23d22cd9cb7b9cba8055179115ce17 16-Mar-2015 msarett <msarett@google.com> Revert "Revert of fix for invalid for loop syntax broke build (patchset #1 id:1 of https://codereview.chromium.org/1007373003/)"

This reverts commit d18475854ce232de71c5463e0654f459d4abfd43.

Revert "Revert "Implementation of image decoding for bmp files, in accordance with the new API.""

This reverts commit dfdec78a5d02e8690998741a9fe5b71a08ca3232.

BUG=skia:

TBR=

Review URL: https://codereview.chromium.org/1016443003
/external/skia/dm/DMSrcSink.cpp
dfdec78a5d02e8690998741a9fe5b71a08ca3232 16-Mar-2015 msarett <msarett@google.com> Revert "Implementation of image decoding for bmp files, in accordance with the new API."

This reverts commit 3675874468de7228944ce21922e6ec863f5f2310.

BUG=skia:
NOTREECHECKS=true
NOTRY=true
TBR=

Review URL: https://codereview.chromium.org/1012873002
/external/skia/dm/DMSrcSink.cpp
ffa901aa7e360ed5115a0955221f4c2d2632d418 16-Mar-2015 mtklein <mtklein@chromium.org> DM: allow SKPs to be smaller than 1000x1000

This sniffs the .skp dimensions and intersects them with our 1000x1000 viewport.

This fixes things like desk_carsvg.skp, which is only 902 pixels tall. In 565 now,
the remaining 98 pixels draw as black, which looks funny and is confusing to triage.

No apparent affect on DM memory usage. (We're about to map the file anyway.)

BUG=skia:

Review URL: https://codereview.chromium.org/986103002
/external/skia/dm/DMSrcSink.cpp
3675874468de7228944ce21922e6ec863f5f2310 16-Mar-2015 msarett <msarett@google.com> Implementation of image decoding for bmp files, in accordance with the new API.

Currently decodes to opaque and unpremul.

Tested on local test suite.

BUG=skia:3257

Review URL: https://codereview.chromium.org/947283002
/external/skia/dm/DMSrcSink.cpp
56e25ddf6e2c1f85c5addbe498a082268ebee6ea 05-Mar-2015 scroggo <scroggo@google.com> DM: Use the new non-fatal errors for invalid color conversions.

Also allow incomplete to be considered successful.

Do not attempt to draw transparent images on 565.

BUG=skia:3475

Review URL: https://codereview.chromium.org/978413002
/external/skia/dm/DMSrcSink.cpp
4089ef7c982592fadeec441438c551ffb4c746be 05-Mar-2015 mtklein <mtklein@chromium.org> DM: support non-fatal errors

Tasks that produce a non-fatal error will bail out before writing their output to
disk and hash to dm.json, but not count as failures.

This also makes true failures bail out before writing their results. If the DM
program failed, we probably don't want to triage that image result.

We use this new feature first to skip image subset decoding when we detect it's
not supported. Here's a snippet of an example run, where in this case only
.webp are subset decodable:

...
( 15MB 12) 172µs 8888 subset color_wheel.jpg (skipped: Subset decoding not supported.)
( 15MB 11) 9.05ms 8888 subset randPixels.webp
( 16MB 10) 863µs 8888 subset baby_tux.png (skipped: Subset decoding not supported.)
...

Only outputs corresponding to the .webp show up, both on disk and in the .json.

BUG=skia:

Review URL: https://codereview.chromium.org/980333002
/external/skia/dm/DMSrcSink.cpp
47ef4d5d934bba86848aa238efab21f54a160c1a 03-Mar-2015 halcanary <halcanary@google.com> XPS, DM: add SkDocument::CreateXPS

- SkDocument::CreateXPS() function added, returns NULL on non-Windows OS.

- DM: (Windows only) an XPSSink is added, fails on non-Windows OS

- DM: Common code for PDFSink::draw and XPSSink::draw are factored into
draw_skdocument static function.

- SkDocument_XPS (Windows only) implementation of SkDocument via
SkXPSDevice.

- SkDocument_XPS_None (non-Windows) returns NULL for
SkDocument::CreateXPS().

- gyp/xps.gyp refactored.

- SkXPSDevice::drawTextOnPath removed (see http://crrev.com/925343003 )

- SkXPSDevice::drawPath supports conics via SkAutoConicToQuads.

Review URL: https://codereview.chromium.org/963953002
/external/skia/dm/DMSrcSink.cpp
f24f2247c25b842327e12c70e44efe4cc1b28dfa 03-Mar-2015 scroggo <scroggo@google.com> Add SkCodec, including PNG implementation.

DM:
Add a flag to use SkCodec instead of SkImageDecoder.

SkCodec:
Base class for codecs, allowing creation from an SkStream or an SkData.
An SkCodec, on creation, knows properties of the data like its width and height. Further calls can be used to generate the image.
TODO: Add scanline iterator

SkPngCodec:
New decoder for png. Wraps libpng. The code has been repurposed from SkImageDecoder_libpng.
TODO: Handle other destination colortypes
TODO: Substitute the transpose color
TODO: Allow silencing warnings
TODO: Use RGB instead of filler?
TODO: sRGB

SkSwizzler:
Simplified version of SkScaledSampler. Unlike the sampler, this object does no sampling.
TODO: Implement other swizzles.

Requires a gclient sync to pull down libpng.

BUG=skia:3257

Committed: https://skia.googlesource.com/skia/+/ca358852b4fed656d11107b2aaf28318a4518b49
(and then reverted)

Review URL: https://codereview.chromium.org/930283002
/external/skia/dm/DMSrcSink.cpp
c2574f3657b1359496a4eba5b191961974b3a64f 03-Mar-2015 halcanary <halcanary@google.com> Revert of XPS, DM: add SkDocument::CreateXPS (patchset #8 id:310001 of https://codereview.chromium.org/963953002/)

Reason for revert:
breaking iOS build.

Original issue's description:
> XPS, DM: add SkDocument::CreateXPS
>
> - SkDocument::CreateXPS() function added, returns NULL on non-Windows OS.
>
> - DM: (Windows only) an XPSSink is added, fails on non-Windows OS
>
> - DM: Common code for PDFSink::draw and XPSSink::draw are factored into
> draw_skdocument static function.
>
> - SkDocument_XPS (Windows only) implementation of SkDocument via
> SkXPSDevice.
>
> - SkDocument_XPS_None (non-Windows) returns NULL for
> SkDocument::CreateXPS().
>
> - gyp/xps.gyp refactored.
>
> - SkXPSDevice::drawTextOnPath removed (see http://crrev.com/925343003 )
>
> - SkXPSDevice::drawPath supports conics via SkAutoConicToQuads.
>
> NOPRESUBMIT=true
>
> Committed: https://skia.googlesource.com/skia/+/00d39bcbfc8394a9b48b86b04ab06ec19091fa43

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

Review URL: https://codereview.chromium.org/978443002
/external/skia/dm/DMSrcSink.cpp
00d39bcbfc8394a9b48b86b04ab06ec19091fa43 03-Mar-2015 halcanary <halcanary@google.com> XPS, DM: add SkDocument::CreateXPS

- SkDocument::CreateXPS() function added, returns NULL on non-Windows OS.

- DM: (Windows only) an XPSSink is added, fails on non-Windows OS

- DM: Common code for PDFSink::draw and XPSSink::draw are factored into
draw_skdocument static function.

- SkDocument_XPS (Windows only) implementation of SkDocument via
SkXPSDevice.

- SkDocument_XPS_None (non-Windows) returns NULL for
SkDocument::CreateXPS().

- gyp/xps.gyp refactored.

- SkXPSDevice::drawTextOnPath removed (see http://crrev.com/925343003 )

- SkXPSDevice::drawPath supports conics via SkAutoConicToQuads.

NOPRESUBMIT=true

Review URL: https://codereview.chromium.org/963953002
/external/skia/dm/DMSrcSink.cpp
ee1a726aed980016a9371ffa4768e0844c360eb2 02-Mar-2015 scroggo <scroggo@google.com> Revert of Add SkCodec, including PNG implementation. (patchset #24 id:460001 of https://codereview.chromium.org/930283002/)

Reason for revert:
Breaking windows bots all over the place :(

Original issue's description:
> Add SkCodec, including PNG implementation.
>
> DM:
> Add a flag to use SkCodec instead of SkImageDecoder.
>
> SkCodec:
> Base class for codecs, allowing creation from an SkStream or an SkData.
> An SkCodec, on creation, knows properties of the data like its width and height. Further calls can be used to generate the image.
> TODO: Add scanline iterator
>
> SkPngCodec:
> New decoder for png. Wraps libpng. The code has been repurposed from SkImageDecoder_libpng.
> TODO: Handle other destination colortypes
> TODO: Substitute the transpose color
> TODO: Allow silencing warnings
> TODO: Use RGB instead of filler?
> TODO: sRGB
>
> SkSwizzler:
> Simplified version of SkScaledSampler. Unlike the sampler, this object does no sampling.
> TODO: Implement other swizzles.
>
> BUG=skia:3257
>
> Committed: https://skia.googlesource.com/skia/+/ca358852b4fed656d11107b2aaf28318a4518b49

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

Review URL: https://codereview.chromium.org/972743003
/external/skia/dm/DMSrcSink.cpp
ca358852b4fed656d11107b2aaf28318a4518b49 02-Mar-2015 scroggo <scroggo@google.com> Add SkCodec, including PNG implementation.

DM:
Add a flag to use SkCodec instead of SkImageDecoder.

SkCodec:
Base class for codecs, allowing creation from an SkStream or an SkData.
An SkCodec, on creation, knows properties of the data like its width and height. Further calls can be used to generate the image.
TODO: Add scanline iterator

SkPngCodec:
New decoder for png. Wraps libpng. The code has been repurposed from SkImageDecoder_libpng.
TODO: Handle other destination colortypes
TODO: Substitute the transpose color
TODO: Allow silencing warnings
TODO: Use RGB instead of filler?
TODO: sRGB

SkSwizzler:
Simplified version of SkScaledSampler. Unlike the sampler, this object does no sampling.
TODO: Implement other swizzles.

BUG=skia:3257

Review URL: https://codereview.chromium.org/930283002
/external/skia/dm/DMSrcSink.cpp
5f5a8d7599b8e248633ac122294b7a01401fedcb 25-Feb-2015 joshualitt <joshualitt@chromium.org> adding preabandon flag to DM

BUG=skia:

Review URL: https://codereview.chromium.org/929243004
/external/skia/dm/DMSrcSink.cpp
44906c66285b81d641e692bde6ec5c8f010e30b6 23-Feb-2015 halcanary <halcanary@google.com> Revert of DM: lazy decoding on SKP playback (patchset #4 id:60001 of https://codereview.chromium.org/943383002/)

Reason for revert:
crashing dm

Test-Mac10.9-MacMini6.2-HD4000-x86_64-Debug

u gm addarc
(1431MB 932) 169ms gpu gm aarectmodes
(1431MB 931) 38.6ms gpu gm aaclip
(1431MB 930) 474ms gpu skp desk_amazon.skp
(1431MB 929) 615ms gpu skp desk_baidu.skp
(1431MB 928) 600ms gpu skp desk_blogger.skp
Signal 11:
_sigtramp (+0x1a)
compute_yuv_size(jpeg_decompress_struct const&, int, SizeType) (+0x30)
update_components_sizes(jpeg_decompress_struct const&, SkTSize<int>*, SizeType) (+0x46)
SkJPEGImageDecoder::onDecodeYUV8Planes(SkStream*, SkTSize<int>*, void**, unsigned long*, SkYUVColorSpace*) (+0x239)
SkImageDecoder::decodeYUV8Planes(SkStream*, SkTSize<int>*, void**, unsigned long*, SkYUVColorSpace*) (+0x64)
SkImageDecoderGenerator::onGetYUV8Planes(SkTSize<int>*, void**, unsigned long*, SkYUVColorSpace*) (+0x9f)
SkImageGenerator::getYUV8Planes(SkTSize<int>*, void**, unsigned long*, SkYUVColorSpace*) (+0x3b7)
SkDiscardablePixelRef::onGetYUV8Planes(SkTSize<int>*, void**, unsigned long*, SkYUVColorSpace*) (+0x3c)
SkPixelRef::getYUV8Planes(SkTSize<int>*, void**, unsigned long*, SkYUVColorSpace*) (+0x55)
load_yuv_texture(GrContext*, GrUniqueKey const&, SkBitmap const&, GrSurfaceDesc const&) (+0x24b)
create_unstretched_bitmap_texture(GrContext*, SkBitmap const&, GrUniqueKey const&) (+0x3df)
create_bitmap_texture(GrContext*, SkBitmap const&, Stretch, GrUniqueKey const&, GrUniqueKey const&) (+0x1ca)
GrRefCachedBitmapTexture(GrContext*, SkBitmap const&, GrTextureParams const*) (+0x368)
AutoBitmapTexture::set(GrContext*, SkBitmap const&, GrTextureParams const*) (+0x87)
AutoBitmapTexture::AutoBitmapTexture(GrContext*, SkBitmap const&, GrTextureParams const*, GrTexture**) (+0xe0)
AutoBitmapTexture::AutoBitmapTexture(GrContext*, SkBitmap const&, GrTextureParams const*, GrTexture**) (+0x35)
SkGpuDevice::internalDrawBitmap(SkBitmap const&, SkMatrix const&, SkRect const&, GrTextureParams const&, SkPaint const&, SkCanvas::DrawBitmapRectFlags, bool, bool) (+0x118)
SkGpuDevice::drawBitmapCommon(SkDraw const&, SkBitmap const&, SkRect const*, SkSize const*, SkPaint const&, SkCanvas::DrawBitmapRectFlags) (+0xa84)
SkGpuDevice::drawBitmapRect(SkDraw const&, SkBitmap const&, SkRect const*, SkRect const&, SkPaint const&, SkCanvas::DrawBitmapRectFlags) (+0x2bb)
SkCanvas::internalDrawBitmapRect(SkBitmap const&, SkRect const*, SkRect const&, SkPaint const*, SkCanvas::DrawBitmapRectFlags) (+0x2a9)
SkCanvas::onDrawBitmapRect(SkBitmap const&, SkRect const*, SkRect const&, SkPaint const*, SkCanvas::DrawBitmapRectFlags) (+0x118)
SkCanvas::drawBitmapRectToRect(SkBitmap const&, SkRect const*, SkRect const&, SkPaint const*, SkCanvas::DrawBitmapRectFlags) (+0x60)
void SkRecords::Draw::draw<SkRecords::DrawBitmapRectToRect>(SkRecords::DrawBitmapRectToRect const&) (+0x8a)
void SkRecords::Draw::operator()<SkRecords::DrawBitmapRectToRect>(SkRecords::DrawBitmapRectToRect const&) (+0x1d)
void SkRecord::Record::visit<void, SkRecords::Draw>(SkRecord::Type8, SkRecords::Draw&) const (+0x298)
void SkRecord::visit<void, SkRecords::Draw>(unsigned int, SkRecords::Draw&) const (+0xbc)
SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) (+0x2eb)
SkPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const (+0x186)
SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) (+0xe0)
SkCanvas::drawPicture(SkPicture const*) (+0x11b)
DM::SKPSrc::draw(SkCanvas*) const (+0x25b)
DM::GPUSink::draw(DM::Src const&, SkBitmap*, SkWStream*, SkString*) const (+0x21d)
Task::Run(Task*) (+0x1de)
run_enclave(SkTArray<Task, false>*) (+0x49)
run_enclave_and_gpu_tests(SkTArray<Task, false>*) (+0x15)
(anonymous namespace)::ThreadPool::Wait(int*) (+0x14b)
SkTaskGroup::wait() (+0x15)
dm_main() (+0x624)
main (+0x27)

Original issue's description:
> DM: lazy decoding on SKP playback
>
> Command `out/Release/dm --config pdf --src gm skp`, uses 27% less RAM.
>
> Committed: https://skia.googlesource.com/skia/+/77d366d72a6ae83fb0abcb2ec7e2d692fef2e923

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

Review URL: https://codereview.chromium.org/947103005
/external/skia/dm/DMSrcSink.cpp
77d366d72a6ae83fb0abcb2ec7e2d692fef2e923 23-Feb-2015 halcanary <halcanary@google.com> DM: lazy decoding on SKP playback

Command `out/Release/dm --config pdf --src gm skp`, uses 27% less RAM.

Review URL: https://codereview.chromium.org/943383002
/external/skia/dm/DMSrcSink.cpp
d603b22903bf7c023226bf52bd7c1f49a9bee1bf 17-Feb-2015 mtklein <mtklein@chromium.org> Suggested version with 'undo'.

BUG=skia:

Review URL: https://codereview.chromium.org/931483002
/external/skia/dm/DMSrcSink.cpp
ad66f9b15fd44468b5f013534ee333dc68d6bed6 14-Feb-2015 mtklein <mtklein@chromium.org> DM: don't leak the null canvas in NullSink.

Also make NullSink a real boy: declared among the other Sinks, impl in .cpp.

BUG=skia:

Review URL: https://codereview.chromium.org/922293003
/external/skia/dm/DMSrcSink.cpp
2aafe6f427f6d98aa4d173efc6195fe245add91d 06-Feb-2015 fmalita <fmalita@chromium.org> Add SkSVGCanvas

Add a public SVG canvas factory + move the SVG files from
experimental -> src/svg/.

Update current clients to the new API.

R=reed@google.com, mtklein@google.com, halcanary@google.com

Review URL: https://codereview.chromium.org/902583006
/external/skia/dm/DMSrcSink.cpp
b9eb4ac0f1c29d6fe10ad7ff81ed8326ac1ea043 03-Feb-2015 mtklein <mtklein@chromium.org> patch from issue 886233004 at patchset 40001 (http://crrev.com/886233004#ps40001)

... with changes proposed in the review.

BUG=skia:

Review URL: https://codereview.chromium.org/894013002
/external/skia/dm/DMSrcSink.cpp
8a4527e98a57b1d2dd248a635f0c4fa227be2089 01-Feb-2015 mtklein <mtklein@chromium.org> SVG backend in DM

Not enabled by default, but this should get you SKPs, GMs etc for free to play with.

$ out/Debug/dm -w svgs --src gm skp --config svg

BUG=skia:

Review URL: https://codereview.chromium.org/892693002
/external/skia/dm/DMSrcSink.cpp
edc93bc74003e2c19219ba0b30383868b5371a96 30-Jan-2015 mtklein <mtklein@chromium.org> Suggestions and merge in the other CL.

I had some suggestions on the subset CL, and took the opportunity to rebase it
against head and merge in the other color type CL.

BUG=skia:

Review URL: https://codereview.chromium.org/893703002
/external/skia/dm/DMSrcSink.cpp
8d17a13a71edb0d8412e4354c428582b74587b79 30-Jan-2015 mtklein <mtklein@chromium.org> DM: paths as implict strings too.

BUG=skia:

Review URL: https://codereview.chromium.org/891823002
/external/skia/dm/DMSrcSink.cpp
f4ba3219c2d46f41f26876a14c484c4fc581286a 29-Jan-2015 mtklein <mtklein@google.com> Revert of DM::SKPSrc::size() reports correct size. (patchset #3 id:40001 of https://codereview.chromium.org/863243005/)

Reason for revert:
Still no good on Chrome OS bot:

http://build.chromium.org/p/client.skia/builders/Test-ChromeOS-Alex-GMA3150-x86-Release/builds/628/steps/dm/logs/stdio

Original issue's description:
> DM::SKPSrc::size() reports correct size.
>
> Also, DM::GPUSink and DM::RasterSink crop DM::Src::size() to 2048x2048.
>
> Motivation:
> Improve PDF testing by printing the entire SKP.
>
> Source: http://crrev.com/863243004
>
> BUG=skia:3365
>
> Committed: https://skia.googlesource.com/skia/+/441b10eac09a1f44983e35da827a6b438a409e63
>
> CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu12-ShuttleA-GTX660-x86-Release-Trybot,Test-ChromeOS-Alex-GMA3150-x86-Release-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/d4dd58e43ca4551531ad6a9f54bfc5632ea45a80

TBR=halcanary@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3365

Review URL: https://codereview.chromium.org/886543005
/external/skia/dm/DMSrcSink.cpp
d4dd58e43ca4551531ad6a9f54bfc5632ea45a80 28-Jan-2015 mtklein <mtklein@chromium.org> DM::SKPSrc::size() reports correct size.

Also, DM::GPUSink and DM::RasterSink crop DM::Src::size() to 2048x2048.

Motivation:
Improve PDF testing by printing the entire SKP.

Source: http://crrev.com/863243004

BUG=skia:3365

Committed: https://skia.googlesource.com/skia/+/441b10eac09a1f44983e35da827a6b438a409e63

CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu12-ShuttleA-GTX660-x86-Release-Trybot

Review URL: https://codereview.chromium.org/863243005
/external/skia/dm/DMSrcSink.cpp
52f401ee7bdb39f7c9ba6cca4ee1db9b93d5cb45 28-Jan-2015 mtklein <mtklein@google.com> Revert of DM::SKPSrc::size() reports correct size. (patchset #1 id:1 of https://codereview.chromium.org/863243005/)

Reason for revert:
OOM on 32-bit machines.

Original issue's description:
> DM::SKPSrc::size() reports correct size.
>
> Also, DM::GPUSink and DM::RasterSink crop DM::Src::size() to 2048x2048.
>
> Motivation:
> Improve PDF testing by printing the entire SKP.
>
> Source: http://crrev.com/863243004
>
> BUG=skia:3365
>
> Committed: https://skia.googlesource.com/skia/+/441b10eac09a1f44983e35da827a6b438a409e63

TBR=halcanary@google.com,mtklein@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:3365

Review URL: https://codereview.chromium.org/884743003
/external/skia/dm/DMSrcSink.cpp
fd4a993f8b162f6ca541514234a81759b67dc64d 28-Jan-2015 halcanary <halcanary@google.com> DM::PDFSink::draw excercises multi-page pdf

BUG=skia:3365

Review URL: https://codereview.chromium.org/881343002
/external/skia/dm/DMSrcSink.cpp
9c3f17d6e859a11535f40497cb9f6e777d15f62e 28-Jan-2015 mtklein <mtklein@chromium.org> Fold gmtoskp into DM, as --src gm --config skp.

BUG=skia:

Review URL: https://codereview.chromium.org/885733002
/external/skia/dm/DMSrcSink.cpp
441b10eac09a1f44983e35da827a6b438a409e63 28-Jan-2015 mtklein <mtklein@chromium.org> DM::SKPSrc::size() reports correct size.

Also, DM::GPUSink and DM::RasterSink crop DM::Src::size() to 2048x2048.

Motivation:
Improve PDF testing by printing the entire SKP.

Source: http://crrev.com/863243004

BUG=skia:3365

Review URL: https://codereview.chromium.org/863243005
/external/skia/dm/DMSrcSink.cpp
55e88b226ccb85d2c712a9e3e9e1f5bdcaac05ac 22-Jan-2015 mtklein <mtklein@chromium.org> More natural way to serialize GPU tasks and tests.

This basically takes out the Windows-only hacks and promotes them to
cross-platform behavior driven by --gpu_threading.
- When --gpu_threading is false (the default), this puts GPU tasks and tests
together in the same GPU enclave. They all run serially.
- When --gpu_threading is true, both the tests and the tasks run totally
independently, just like the thread-safe CPU-bound work.

BUG=skia:3255

Review URL: https://codereview.chromium.org/847273005
/external/skia/dm/DMSrcSink.cpp
968f18cba539301b912ad1481784dc0216b7bbe1 21-Jan-2015 mtklein <mtklein@chromium.org> Easy DM TODO: LazyDecodeBitmap does not help (or hinder).

BUG=skia:3255

Review URL: https://codereview.chromium.org/859303003
/external/skia/dm/DMSrcSink.cpp
7edca21226017e6b87a0c95fa571d34c36ceca04 21-Jan-2015 mtklein <mtklein@chromium.org> Don't test pipe modes nobody uses.

SkDeferredCanvas uses a simple pipe: no cross-process, no shared-address, etc.
(see src/utils/SkDeferredCanvas.cpp:306).

We could just remove these modes from the bot configs, but I'd like to take the
opportunity to simplify the DM code too. I'll happily volunteer to put things
back should we decide we want to test these modes.

BUG=skia:

Review URL: https://codereview.chromium.org/861303003
/external/skia/dm/DMSrcSink.cpp
a1193e4b0e34a7e4e1bd33e9708d7341679f8321 21-Jan-2015 scroggo <scroggo@google.com> Make SkStream *not* ref counted.

SkStream is a stateful object, so it does not make sense for it to have
multiple owners. Make SkStream inherit directly from SkNoncopyable.

Update methods which previously called SkStream::ref() (e.g.
SkImageDecoder::buildTileIndex() and SkFrontBufferedStream::Create(),
which required the existing owners to call SkStream::unref()) to take
ownership of their SkStream parameters and delete when done (including
on failure).

Switch all SkAutoTUnref<SkStream>s to SkAutoTDelete<SkStream>s. In some
cases this means heap allocating streams that were previously stack
allocated.

Respect ownership rules of SkTypeface::CreateFromStream() and
SkImageDecoder::buildTileIndex().

Update the comments for exceptional methods which do not affect the
ownership of their SkStream parameters (e.g.
SkPicture::CreateFromStream() and SkTypeface::Deserialize()) to be
explicit about ownership.

Remove test_stream_life, which tested that buildTileIndex() behaved
correctly when SkStream was a ref counted object. The test does not
make sense now that it is not.

In SkPDFStream, remove the SkMemoryStream member. Instead of using it,
create a new SkMemoryStream to pass to fDataStream (which is now an
SkAutoTDelete).

Make other pdf rasterizers behave like SkPDFDocumentToBitmap.

SkPDFDocumentToBitmap delete the SkStream, so do the same in the
following pdf rasterizers:

SkPopplerRasterizePDF
SkNativeRasterizePDF
SkNoRasterizePDF

Requires a change to Android, which currently treats SkStreams as ref
counted objects.

Review URL: https://codereview.chromium.org/849103004
/external/skia/dm/DMSrcSink.cpp
9264a95608c08623f2955823703e5c77558cafa8 20-Jan-2015 mtklein <mtklein@chromium.org> Image subsets as part of the name instead of a separate source type.

This will hold us closer to the principle that the test name (and only the test
name) should correspond to expected output. By the same reasoning, mix in the
number of subsets: if that changes, the expected output also changes.

BUG=skia:3255

Review URL: https://codereview.chromium.org/863723002
/external/skia/dm/DMSrcSink.cpp
75d98fd6f23fc73aad3ce87d6c4b6c41c2d1536e 18-Jan-2015 mtklein <mtklein@chromium.org> DM: Don't hold onto data longer than needed.

On my laptop, this cuts peak memory usage by more than half.

BUG=skia:3255

Review URL: https://codereview.chromium.org/859623002
/external/skia/dm/DMSrcSink.cpp
82d2843cc59dc048b7d8d1d928dab743d8e85a3b 15-Jan-2015 mtklein <mtklein@chromium.org> turn back on gpu tests

NOTREECHECKS=true

BUG=skia:3255

Review URL: https://codereview.chromium.org/817573004
/external/skia/dm/DMSrcSink.cpp
748ca3bf2d170708f263693e8579e6722389d0ef 15-Jan-2015 mtklein <mtklein@chromium.org> Sketch DM refactor.

BUG=skia:3255

I think this supports everything DM used to, but has completely refactored how
it works to fit the design in the bug.

Configs like "tiles-gpu" are automatically wired up.

I wouldn't suggest looking at this as a diff. There's just a bunch of deleted
files, a few new files, and one new file that shares a name with a deleted file
(DM.cpp).

NOTREECHECKS=true

Committed: https://skia.googlesource.com/skia/+/709d2c3e5062c5b57f91273bfc11a751f5b2bb88

Review URL: https://codereview.chromium.org/788243008
/external/skia/dm/DMSrcSink.cpp
114c3cd0543d77aa0ac08d8af436ac7f9d32714d 15-Jan-2015 mtklein <mtklein@google.com> Revert of Sketch DM refactor. (patchset #45 id:850001 of https://codereview.chromium.org/788243008/)

Reason for revert:
plenty of data

Original issue's description:
> Sketch DM refactor.
>
> BUG=skia:3255
>
>
> I think this supports everything DM used to, but has completely refactored how
> it works to fit the design in the bug.
>
> Configs like "tiles-gpu" are automatically wired up.
>
> I wouldn't suggest looking at this as a diff. There's just a bunch of deleted
> files, a few new files, and one new file that shares a name with a deleted file
> (DM.cpp).
>
> NOTREECHECKS=true
>
> Committed: https://skia.googlesource.com/skia/+/709d2c3e5062c5b57f91273bfc11a751f5b2bb88

TBR=bsalomon@google.com,mtklein@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=skia:3255

Review URL: https://codereview.chromium.org/853883004
/external/skia/dm/DMSrcSink.cpp
709d2c3e5062c5b57f91273bfc11a751f5b2bb88 15-Jan-2015 mtklein <mtklein@chromium.org> Sketch DM refactor.

BUG=skia:3255

I think this supports everything DM used to, but has completely refactored how
it works to fit the design in the bug.

Configs like "tiles-gpu" are automatically wired up.

I wouldn't suggest looking at this as a diff. There's just a bunch of deleted
files, a few new files, and one new file that shares a name with a deleted file
(DM.cpp).

NOTREECHECKS=true

Review URL: https://codereview.chromium.org/788243008
/external/skia/dm/DMSrcSink.cpp