History log of /external/skia/tests/RecordOptsTest.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
dc0f408a961b6ce4e7631e06031bbfe1d8d7bcec 26-Jan-2015 kkinnunen <kkinnunen@nvidia.com> Fold alpha to the inner savelayer in savelayer-savelayer-restore patterns

Fold alpha to the inner savelayer in savelayer-savelayer-restore
patterns such as this:

SaveLayer (non-opaque)
Save
ClipRect
SaveLayer
Restore
Restore
Restore

Current blink generates these for example for SVG content such as this:

<path style="opacity:0.5 filter:url(#blur_filter)"/>

The outer save layer is due to the opacity and the inner one is due to
blur filter being implemented with picture image filter.

Reduces layers in desk_carsvg.skp testcase from 115 to 78.

BUG=skia:3119

Review URL: https://codereview.chromium.org/835973005
/external/skia/tests/RecordOptsTest.cpp
678c1b019ac98bc7d94841132c8105a77490bc64 16-Jan-2015 kkinnunen <kkinnunen@nvidia.com> Fold alpha to the draw in savelayer-draw-restore patterns with non-opaque draw

Fold alpha of a save layer call to the subsequent draw call paint, even when
the draw call paint color is already non-opaque.

Comparing the difference of the unoptimized and the optimized call pattern
with all (layer alpha, draw alpha) combinations, this produces
off-by-one pixels ~50% of the time.

Reduces layers of current desk_carsvg.skp (recorded with cross-process
picture image filters allowed) from 122 to 115.

BUG=skia:3119

Review URL: https://codereview.chromium.org/840483005
/external/skia/tests/RecordOptsTest.cpp
0c278972d06882f21dda07e17d6e7457f590ea69 15-Jan-2015 mtklein <mtklein@chromium.org> Why are we afraid of saveLayer() bounds?

They're only hints. We can ignore them in this optimization.
My only hesitation is that this pattern doesn't seem to happen in our .skps.

BUG=skia:

Review URL: https://codereview.chromium.org/849243002
/external/skia/tests/RecordOptsTest.cpp
d990e2f14f14c36c3d0beb303dd0953c7aa1fcfa 22-Dec-2014 reed <reed@google.com> add testing flag to ignore saveLayer bounds

BUG=skia:

Review URL: https://codereview.chromium.org/819123003
/external/skia/tests/RecordOptsTest.cpp
2ff1fcede1e9525285c5de1f35fb2dcb0fab32bd 11-Dec-2014 reed <reed@google.com> Defer saves() until they're needed

patch from issue 759443006 at patchset 40001 (http://crrev.com/759443006#ps40001)

BUG=skia:

Review URL: https://codereview.chromium.org/767333002
/external/skia/tests/RecordOptsTest.cpp
1e78fc4ed2a1ef9f049311696ebd0a26e1c3782d 16-Sep-2014 mtklein <mtklein@chromium.org> Turn disable or delete optimizations that don't have any effect.

Recording gets a ~5% speedup.

BUG=skia:
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/577673003
/external/skia/tests/RecordOptsTest.cpp
99d6a9ee8b3516de892d118c71aa5e6e5c865efd 11-Sep-2014 mtklein <mtklein@chromium.org> Fix a bug in Save-Restore no-op optimization.

We optimize
Save
SaveLayer
Restore
Restore
into
NoOp
NoOp
NoOp
Restore

I'm considering skipping the call to SkRecordOptimize again just to eliminate
this extra variable from landing SkRecord. Thoughts?

BUG=skia:
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/560163002
/external/skia/tests/RecordOptsTest.cpp
f4078ad1ec42f549369ac4f639aab18d00afae95 08-Aug-2014 mtklein <mtklein@chromium.org> SkRecord: Strip out cull-skipping and y-only drawPosTextH skipping.

These optimizations are outclassed by a general bounding-box hierarchy,
and are just going to make plugging that into SkRecordDraw more complicated.

BUG=skia:
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/452983002
/external/skia/tests/RecordOptsTest.cpp
a095041f5148dd1e71f38d0546335ed94199104b 29-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Remove SkRecorder's kWriteOnly mode.

I'm soon going to have SkRecorder start calling getTotalMatrix(), which
would be broken in write-only mode. That change is big and nebulous,
but it's clear kWriteOnly needs to go, so we might as well kill it now.

My notes in bench_playback about kWriteOnly mode being important were
probably overly cautious. I now think this is a fair enough comparison
even re-recording into a read-write canvas.

BUG=skia:2378
R=fmalita@chromium.org, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/290653004

git-svn-id: http://skia.googlecode.com/svn/trunk@14963 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp
0a98d870448f66ea0df7c37a47b38cf2d3b734e5 19-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Don't clobber initial transform with SetMatrix.

BUG=skia:2378
R=reed@google.com, mtklein@google.com, robertphillips@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/290883004

git-svn-id: http://skia.googlecode.com/svn/trunk@14778 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp
1e44730ade943bba928f289ce9f59430c50c71e5 08-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Noop away PushCull/PopCull pairs with nothing between them.

BUG=skia:2378
R=fmalita@chromium.org, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/277613002

git-svn-id: http://skia.googlecode.com/svn/trunk@14653 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp
c71da1f6ed3a5e1a3eb2dd860b8129e1b423f9f4 07-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Convert all SkRecordPattern matchers into SkRecord mutators.

- Allow any return type from SkRecord mutators and visitors;
- update existing calls to mutate and visit;
- convert match to operator() in SkRecordPattern;
- tidy up a few inelegant bits of old code in tests.

The net result is that the generated code is much clearer. All the mutate() calls
inline as you'd hope, and you can now actually follow along with the disassembly.

BUG=skia:2378
R=fmalita@chromium.org, bungeman@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/273643007

git-svn-id: http://skia.googlecode.com/svn/trunk@14631 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp
467705adf05ba99bbd9ccdf6a40eb463484a6fbf 07-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> save-draw*-restore -> noop-draw*-noop

save-drawA-drawB-drawC-restore always means drawA-drawB-drawC,
no matter what flags we use for save().

This one triggers all over the silk SKPs and in several of the bot SKPs, typically as save-drawBitmap-restore.

BUG=skia:2378
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/267793006

git-svn-id: http://skia.googlecode.com/svn/trunk@14618 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp
f5bf3cf0257dc3d18932bde51f8eae33442e071f 07-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Add SaveLayer-Draw-Restore optimization.

This is like SkPictureRecord's remove_save_layer1 but works with all draw calls.

Interesting patterns removed:
SaveLayer-DrawRect-Restore: Silk SKPs, desk_weather
SaveLayer-DrawPath-Restore: desk_carsvg, desk_wowwiki, tabl_androidpolice
SaveLayer-DrawPosTextH-Restore: tabl_android_police
There may be others, but I stopped looking.


BUG=skia:2378
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/269813010

git-svn-id: http://skia.googlecode.com/svn/trunk@14610 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp
7066bf3fbff7a54d3692414ec11ca419f3fd0ad5 05-May-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Update tests/RecordOptsTest.cpp
- use REPORTER_ASSERT;
- assert the type first, then the pointer != NULL. This helps explain why ptr == NULL;
- add a simpler NoopSaveRestore test case, which can help debugging failures of the larger test case.

BUG=skia:2378
R=fmalita@chromium.org, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/264043012

git-svn-id: http://skia.googlecode.com/svn/trunk@14570 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp
8dac8b18eea8a729062440b85285d19fc890bb1a 30-Apr-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Backfill unit tests for SkRecord

BUG=skia:2378
R=fmalita@chromium.org, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/251133008

git-svn-id: http://skia.googlecode.com/svn/trunk@14455 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/tests/RecordOptsTest.cpp