Commit Graph

20 Commits

Author SHA1 Message Date
tfarina
a8e2e1504b Cleanup: Rename SkOSPath functions.
Mostly for brevity and matches better with Python:

Python           | Old C++                 | New C++
os.path.join     | SkOSPath::SkPathJoin    | SkOSPath::Join
os.path.basename | SkOSPath::SkBasename    | SkOSPath::Basename

BUG=None
TEST=make all
R=mtklein@google.com, bsalomon@google.com

Author: tfarina@chromium.org

Review URL: https://codereview.chromium.org/428443002
2014-07-28 19:26:58 -07:00
Mike Klein
744fb7313f Enable basic drawing with SkRecord-based pictures.
I've tagged all the functions in SkPicture.cpp is // fRecord TODO or // fRecord
OK, depending on whether or not they're totally broken when used from an
SkRecord-based picture.  Obviously next steps are to eliminate all the TODOs,
then clean up the notes.

I converted SkPicture over to smart pointers too.  It's particularly helpful
that the smart pointers initialize to NULL by default.

For now I've got all the SkRecord-based code jammed in at the bottom of the file.  I figure it'll help me keep things straight for a bit, then we can rearrange later.

BUG=skia:
R=robertphillips@google.com

Review URL: https://codereview.chromium.org/333823007
2014-06-23 15:13:26 -04:00
mtklein
9ac68ee259 Move BenchTimer to tools as Timer
This breaks a bunch of circular dependencies between tools and gm and bench.

BUG=skia:

Committed: https://skia.googlesource.com/skia/+/4ed75287aed6371c6e4a41ffcc78c8a49c9810ed

CQ_EXTRA_TRYBOTS=tryserver.skia:Build-Mac10.7-Clang-Arm7-Debug-iOS-Trybot,Test-Ubuntu12-ShuttleA-GTX660-x86-Debug-Trybot
R=tfarina@chromium.org, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/344213003
2014-06-20 11:29:21 -07:00
mtklein
9e64b78ff6 Revert of Move BenchTimer to tools as Timer (https://codereview.chromium.org/344213003/)
Reason for revert:
GpuTimer broken

Original issue's description:
> Move BenchTimer to tools as Timer
>
> This breaks a bunch of circular dependencies between tools and gm and bench.
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/4ed75287aed6371c6e4a41ffcc78c8a49c9810ed

R=tfarina@chromium.org, mtklein@chromium.org
TBR=mtklein@chromium.org, tfarina@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Author: mtklein@google.com

Review URL: https://codereview.chromium.org/346753003
2014-06-20 10:43:07 -07:00
mtklein
4ed75287ae Move BenchTimer to tools as Timer
This breaks a bunch of circular dependencies between tools and gm and bench.

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

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/344213003
2014-06-20 10:31:49 -07:00
mtklein
887f3979f0 Add EXPERIMENTAL_beginRecording() for SkRecord-based recording.
The interesting stuff is in SkPictureRecorder.{h,cpp}.  The rest is mostly moving SkRecord from its own directories into core to avoid circular dependencies in GYP.

After plumbing SkRecord all the way through in Picture, I'll delete its old entry point include/record/SkRecording.h.  For now it and record.gypi need to stay where they are to keep Chrome building.

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

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/331573004
2014-06-17 12:08:16 -07:00
mtklein
90c471e73f Refine bench_record and bench_playback:
- use high-precision wall timer only
  - warm caches once before measuring
  - measure independent samples, calculating statistics
  - add --verbose to control how much data we output

Also removed some unloved features from bench_record.

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

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/338203002
2014-06-16 14:04:34 -07:00
robertphillips
9f1c241e0d Remove SkPicture::kUsePathBoundsForClip_RecordingFlag
The real question is whether we ever want to record a picture without using the path bounds for a conservative (but faster) clip answer?

R=reed@google.com, mtklein@google.com, djsollen@google.com, scroggo@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/316143003
2014-06-09 06:25:34 -07:00
commit-bot@chromium.org
a095041f51 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
2014-05-29 16:52:40 +00:00
commit-bot@chromium.org
8fe89d3124 Use a tilegrid for bench_playback.
Using --tile wasn't a fair comparison: SkPicture didn't get to optimize its
playback, but SkRecord did.  Numbers here are starting to agree with what I saw
in telemetry: SkRecord with culling is on average at 0.8-0.9 of the speed of
SkPicture (10-30% slower) than SkPicture SkPicture with a tile grid, but some
in some cases it's down at 0.3, taking almost 4x as long to draw a 256x256 tile.

0.4x tabl_mercurynews.skp 0.109889 0.252483
0.5x tabl_cnet.skp 0.250367 0.527789
1.0x desk_mapsvg.skp 1.48698 1.49939
1.2x desk_yahoogames.skp 0.07745 0.065343
0.9x tabl_mlb.skp 0.294509 0.312505
0.8x tabl_hsfi.skp 0.250678 0.316337
0.6x tabl_worldjournal.skp 0.510204 0.828798
0.7x desk_facebook.skp 0.318981 0.483744
0.9x desk_googlehome.skp 0.06983 0.078964
0.9x desk_tigersvg.skp 0.019232 0.022611
1.0x desk_youtubetvvideo.skp 0.401614 0.401862
1.1x desk_amazon.skp 0.415552 0.362111
0.7x desk_yahooanswers.skp 0.237995 0.358659
0.7x desk_twitter.skp 0.323466 0.439772
1.2x desk_fontwipe.skp 0.121577 0.097845
1.1x desk_css3gradients.skp 0.395335 0.362087
0.9x desk_googlespreadsheet.skp 0.362056 0.406688
1.0x tabl_frantzen.skp 15.2475 14.8521
0.6x desk_forecastio.skp 0.154236 0.276881
0.7x desk_pinterest.skp 0.077433 0.11324
0.5x tabl_cuteoverload.skp 0.173014 0.361815
0.5x tabl_androidpolice.skp 0.225903 0.465608
0.6x tabl_vnexpress.skp 0.151075 0.241104
0.6x tabl_nytimes.skp 0.06515 0.117229
0.8x desk_ebay.skp 0.353437 0.422586
0.8x tabl_deviantart.skp 0.223103 0.295496
1.1x tabl_culturalsolutions.skp 0.551348 0.506104
0.9x mobi_wikipedia.skp 0.302603 0.337292
0.6x desk_linkedin.skp 0.165102 0.276149
0.6x tabl_digg.skp 0.159074 0.281529
1.2x desk_oldinboxapp.skp 0.019815 0.017146
1.0x tabl_nofolo.skp 5.18914 5.42784
0.6x desk_jsfiddlehumperclip.skp 0.076869 0.133665
1.0x desk_blogger.skp 0.206702 0.19688
0.8x desk_espn.skp 0.346386 0.451871
1.0x desk_samoasvg.skp 3.60037 3.43147
0.8x desk_booking.skp 0.338818 0.438267
1.3x desk_yahoosports.skp 0.603811 0.470052
0.6x tabl_engadget.skp 0.248995 0.404372
0.7x desk_wowwiki.skp 0.325801 0.479559
0.8x tabl_ukwsj.skp 0.326985 0.405971
0.9x tabl_gmail.skp 0.2604 0.276744
0.9x desk_googleplus.skp 8.08874 8.71105
1.1x tabl_slashdot.skp 0.559332 0.524313
0.9x desk_gmailthread.skp 0.671569 0.74134
0.8x desk_weather.skp 0.194162 0.247681
1.3x desk_rectangletransition.skp 0.218372 0.173685
0.6x tabl_gamedeksiam.skp 0.243374 0.4134
0.9x desk_jsfiddlebigcar.skp 0.162282 0.186035
0.3x desk_pokemonwiki.skp 0.202878 0.778934
0.7x tabl_googleblog.skp 0.141203 0.209971
0.8x desk_sfgate.skp 0.229078 0.275248
1.0x desk_chalkboard.skp 2.28916 2.20101
0.9x tabl_googlecalendar.skp 0.687155 0.75413
1.1x tabl_gspro.skp 0.186399 0.169522
0.5x desk_googlespreadsheetdashed.skp 0.512622 1.02815
0.6x desk_mobilenews.skp 0.183506 0.293929
0.8x tabl_techmeme.skp 0.193074 0.229106
1.2x desk_carsvg.skp 5.33047 4.34058
0.5x desk_youtube.skp 0.132663 0.248236
0.7x tabl_pravda.skp 0.21644 0.308788
1.1x desk_gws.skp 0.698107 0.625371
0.5x tabl_mozilla.skp 0.189638 0.386801
1.0x desk_baidu.skp 0.353438 0.355965
1.1x tabl_sahadan.skp 0.476226 0.416737
summary: ≥0.3x (A 0.9x, G 0.8x) ≤1.3x

Whole SKP playback speed is fine of course.

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

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14673 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-05-09 15:00:10 +00:00
commit-bot@chromium.org
172eb1baaf Add --timescale to bench_record and bench_playback.
Default bench_record to report us, bench_playback ms.

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

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14417 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 19:41:17 +00:00
commit-bot@chromium.org
8400b23ce6 use BenchTimer, print in µs
BUG=skia:2378
R=bungeman@google.com, mtklein@google.com

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14405 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-28 15:30:02 +00:00
commit-bot@chromium.org
d0306a1593 Revert of Add nanosecond timer. (https://codereview.chromium.org/250243002/)
Reason for revert:
breaks EVERYTHING

Original issue's description:
> Add nanosecond timer.
>
> I've been finding it hard to get enough resolution out of our existing timers when measuring really tiny pictures.
>
> BUG=skia:2378
>
> Committed: http://code.google.com/p/skia/source/detail?r=14362

R=bsalomon@google.com, bungeman@google.com, mtklein@chromium.org
TBR=bsalomon@google.com, bungeman@google.com, mtklein@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=skia:2378

Author: mtklein@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14364 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-24 20:17:24 +00:00
commit-bot@chromium.org
74b43a9d4c Add nanosecond timer.
I've been finding it hard to get enough resolution out of our existing timers when measuring really tiny pictures.

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

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14362 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-24 20:04:20 +00:00
commit-bot@chromium.org
ad8ce572f6 anticipate more optimizations by renaming some files and methods
also, call the new SkRecordOptimize in bench_playback

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

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14277 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-21 15:03:36 +00:00
commit-bot@chromium.org
5da5b59764 Add --match to bench tools, extra decimal to bench_pictures.
BUG=skia:2378
R=fmalita@chromium.org, mtklein@google.com

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14276 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-21 14:59:59 +00:00
commit-bot@chromium.org
b17a24fedb SkRecord: turn on cull annotation pass in public API.
Also, switch Skia internal tools over to use the public headers where
possible.  Where it's not, the tools -Isrc/record explicitly now, and
if it's not obvious, note why they don't use SkRecording.h.

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

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14191 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-14 20:33:05 +00:00
commit-bot@chromium.org
d6489c957f use the correct rowBytes so Debug build doesn't assert
BUG=skia:2378
R=reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14163 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-11 19:06:46 +00:00
commit-bot@chromium.org
4bffdf2a10 use SkIntToScalar, fix windows build
NOTRY=true
NOTREECHECKS=true
BUG=skia:
R=mtklein@google.com

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14155 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-11 16:13:54 +00:00
commit-bot@chromium.org
ba73d28bef Add bench_playback, for quick profiling of SKR playback.
It is not completely fair to compare --skr and --noskr numbers.  SKR looks
unfairly good because some optimizations are baked into our SKPs at record
time.  But, at least, by using a kWriteOnly_Mode SkRecorder, we prevent
SkPicturePlayback from compounding that unfairness.  SkRecordDraw must handle
its own playback-time optimizations (quickrejects) on its own.

This code should look suspiciously similar to bench_record.

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

Author: mtklein@chromium.org

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

git-svn-id: http://skia.googlecode.com/svn/trunk@14151 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-11 15:53:39 +00:00