rmistry [Wed, 10 Aug 2016 23:36:15 +0000 (16:36 -0700)]
Update VERSION of "svg" asset.
Removing the SVG due to the reason in https://docs.google.com/document/d/1kYRvUxZTnm1tI_0bTU0BX9jqSSTqPUhGXJVcD3Rcg2c/edit?disco=AAAAAqQSPSc
BUG=skia:5628
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2232003002
Review-Url: https://codereview.chromium.org/
2232003002
hstern [Wed, 10 Aug 2016 23:36:11 +0000 (16:36 -0700)]
Add constructor to DashInfo to enable initializer lists
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2230143003
Review-Url: https://codereview.chromium.org/
2230143003
hstern [Wed, 10 Aug 2016 23:31:10 +0000 (16:31 -0700)]
Add better bounds checks for getTime to fix perf debug assert below
Due to rounding, we request a length slightly larger than the total
length in MeasureBench. This will be fixed in a following CL and there
will be another CL adding unit tests for bounds checking and other
problems.
Revert "Revert 386ba54 and 4ab47e0 : perf debug assert."
This reverts commit
69aaa5a49a10454d573cbd8c5d980029d78ae459.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2233983003
Review-Url: https://codereview.chromium.org/
2233983003
bsalomon [Wed, 10 Aug 2016 23:31:05 +0000 (16:31 -0700)]
Add a full clear method to GrDrawTarget.
This will allow us to avoid ClearBatch creation for successive clears.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2233043002
Review-Url: https://codereview.chromium.org/
2233043002
fmalita [Wed, 10 Aug 2016 23:30:37 +0000 (16:30 -0700)]
Add a SkTLazy copy assignment operator
Also scrub for NULL, etc.
R=mtklein@google.com,reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2232913003
Review-Url: https://codereview.chromium.org/
2232913003
mtklein [Wed, 10 Aug 2016 23:30:33 +0000 (16:30 -0700)]
SkLiteDL: turn vtable sideways
Instead of using virtuals for polymorphism, store each polymorphic operation
in its own array of function pointers. This removes an indirection when calling
the function, and lets us use nullptr as a signal to skip the call entirely.
Unfortunately (as the old code is rather simpler) this makes an unambiguous speed improvement.
Before:
curr/maxrss loops min median mean max stddev samples config bench
21/26 MB 2 44.6µs 46.4µs 48.3µs 274µs 13% 51724 nonrendering desk_nytimes.skp
23/26 MB 11 11.4µs 11.9µs 12.4µs 75.1µs 15% 36716 nonrendering keymobi_nytimes_com_.skp
After:
19/26 MB 4 40.4µs 41.6µs 42.5µs 197µs 10% 29379 nonrendering desk_nytimes.skp
20/26 MB 14 10.5µs 10.7µs 11.2µs 59.5µs 13% 31971 nonrendering keymobi_nytimes_com_.skp
Broader comparison:
keymobi_linkedin.skp 1.76us -> 1.77us 1x
keymobi_bing_com_search_q_sloth.skp 5.09us -> 5.05us 0.99x
keymobi_digg_com.skp 17.4us -> 17.3us 0.99x
keymobi_theverge_com.skp 3.37us -> 3.34us 0.99x
top25desk_mail_google_com_mail_.skp 30.8us -> 30.4us 0.99x
tabl_gmail.skp 3.44us -> 3.38us 0.98x
top25desk_wikipedia__1_tab_.skp 100us -> 97.7us 0.98x
keymobi_cnn_com_2012_10_03_poli.skp 52.9us -> 51.7us 0.98x
desk_chalkboard.skp 107us -> 104us 0.97x
desk_css3gradients.skp 17.8us -> 17.3us 0.97x
keymobi_androidpolice_com_2012_.skp 42.3us -> 41.1us 0.97x
desk_googlehome.skp 1.94us -> 1.88us 0.97x
keymobi_mlb_com_.skp 5.38us -> 5.18us 0.96x
top25desk_pinterest.skp 92.1us -> 88.5us 0.96x
keymobi_iphone_capitolvolkswage.skp 15.1us -> 14.5us 0.96x
keymobi_techcrunch_com.skp 9.45us -> 9.05us 0.96x
desk_espn.skp 31.3us -> 30us 0.96x
keymobi_slashdot_org_.skp 8.72us -> 8.34us 0.96x
desk_tiger8svg.skp 30.6us -> 29.2us 0.96x
keymobi_blogger.skp 4.09us -> 3.91us 0.95x
keymobi_baidu_com_s_wd_barack_o.skp 11.9us -> 11.3us 0.95x
keymobi_cuteoverload_com.skp 54.2us -> 51.6us 0.95x
keymobi_deviantart_com_.skp 17.2us -> 16.4us 0.95x
desk_mapsvg.skp 163ns -> 155ns 0.95x
keymobi_pinterest.skp 6.97us -> 6.62us 0.95x
top25desk_games_yahoo_com.skp 94.1us -> 89.3us 0.95x
top25desk_google_com_calendar_.skp 18us -> 17us 0.95x
keymobi_google_co_uk_search_hl_.skp 11.4us -> 10.8us 0.95x
tabl_pravda.skp 38.5us -> 36.4us 0.94x
desk_gmailthread.skp 19us -> 17.9us 0.94x
keymobi_reddit_com_r_programmin.skp 76.1us -> 71.7us 0.94x
top25desk_linkedin.skp 20us -> 18.8us 0.94x
tabl_gamedeksiam.skp 118us -> 112us 0.94x
keymobi_boingboing_net.skp 20.4us -> 19.1us 0.93x
top25desk_google_com__hl_en_q_b.skp 17.6us -> 16.4us 0.93x
keymobi_amazon_com_gp_aw_s_ref_.skp 12.5us -> 11.6us 0.93x
keymobi_sfgate_com_.skp 16.6us -> 15.5us 0.93x
keymobi_booking_com_searchresul.skp 16.2us -> 15.1us 0.93x
tabl_digg.skp 28.8us -> 26.8us 0.93x
tabl_mozilla.skp 80.4us -> 74.6us 0.93x
desk_wowwiki.skp 39.2us -> 36.4us 0.93x
top25desk_youtube_com.skp 42us -> 38.9us 0.93x
top25desk_facebook.skp 23.7us -> 22us 0.93x
top25desk_blogger.skp 38.2us -> 35.4us 0.93x
keymobi_online_wsj_com_home_pag.skp 12.8us -> 11.9us 0.93x
top25desk_wordpress.skp 28.9us -> 26.8us 0.93x
top25desk_answers_yahoo_com.skp 37.2us -> 34.4us 0.93x
keymobi_plus_google_com_app_bas.skp 9.56us -> 8.85us 0.93x
keymobi_wordpress.skp 16.1us -> 14.9us 0.92x
keymobi_mobile_news_sandbox_goo.skp 27.1us -> 24.9us 0.92x
top25desk_techcrunch_com.skp 31.1us -> 28.6us 0.92x
keymobi_worldjournal_com_.skp 50.7us -> 46.5us 0.92x
keymobi_theverge_com_2012_10_28.skp 26.2us -> 24us 0.92x
desk_jsfiddlebigcar.skp 1.73us -> 1.59us 0.92x
top25desk_weather_com.skp 31.3us -> 28.7us 0.92x
top25desk_google_com_search_q_c.skp 48.2us -> 44.1us 0.92x
top25desk_twitter.skp 27.8us -> 25.5us 0.92x
tabl_worldjournal.skp 29.3us -> 26.8us 0.91x
desk_nytimes.skp 46us -> 42us 0.91x
top25desk_docs___1_open_documen.skp 6.04us -> 5.51us 0.91x
keymobi_wikipedia__1_tab_.skp 59.7us -> 54.4us 0.91x
desk_unicodetable.skp 1.12ms -> 1.02ms 0.91x
top25desk_ebay_com.skp 17.8us -> 16.2us 0.91x
keymobi_ftw_usatoday_com_2014_0.skp 26.8us -> 24.3us 0.91x
top25desk_sports_yahoo_com_.skp 49.9us -> 45.3us 0.91x
keymobi_cnn_com.skp 9.94us -> 9.03us 0.91x
keymobi_m_youtube_com_watch_v_9.skp 13.4us -> 12.2us 0.91x
top25desk_amazon_com.skp 26.6us -> 24.1us 0.91x
keymobi_news_yahoo_com.skp 17.5us -> 15.8us 0.9x
keymobi_wowwiki_com_world_of_wa.skp 11.2us -> 10.2us 0.9x
top25desk_plus_google_com_11003.skp 93.5us -> 84.4us 0.9x
desk_carsvg.skp 53.5us -> 48.2us 0.9x
top25desk_news_yahoo_com.skp 44.7us -> 40.3us 0.9x
keymobi_wikipedia__1_tab____del.skp 59.4us -> 53.4us 0.9x
desk_googlespreadsheet.skp 66us -> 59.2us 0.9x
keymobi_answers_yahoo_com_quest.skp 30.2us -> 27us 0.89x
desk_ugamsolutions.skp 13us -> 11.6us 0.89x
keymobi_shop_mobileweb_ebay_com.skp 6.96us -> 6.21us 0.89x
keymobi_nytimes_com_.skp 12.1us -> 10.8us 0.89x
keymobi_gsp_ro.skp 5.54us -> 4.92us 0.89x
top25desk_booking_com.skp 54.9us -> 48.6us 0.89x
top25desk_espn.skp 37us -> 32.6us 0.88x
keymobi_facebook_com_barackobam.skp 23.3us -> 20.4us 0.88x
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2231103002
Review-Url: https://codereview.chromium.org/
2231103002
fmalita [Wed, 10 Aug 2016 23:25:32 +0000 (16:25 -0700)]
[SVGDom] Disable verbose parsing messages be default
Guard with SK_VERBOSE_SVG_PARSING
R=robertphillips@google.com,rmistry@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2235963003
Review-Url: https://codereview.chromium.org/
2235963003
robertphillips [Wed, 10 Aug 2016 23:25:25 +0000 (16:25 -0700)]
Implement GPU occluded blur mask filter
Spawned off: https://codereview.chromium.org/
2214163003/ (Minor clean up related to blur mask filters)
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2201133002
Review-Url: https://codereview.chromium.org/
2201133002
reed [Wed, 10 Aug 2016 21:16:41 +0000 (14:16 -0700)]
update textblob api to use sk_sp
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2236013002
NOTREECHECKS=True
Review-Url: https://codereview.chromium.org/
2236013002
fmenozzi [Wed, 10 Aug 2016 20:01:35 +0000 (13:01 -0700)]
Revert "Remove generalized gradient code"
This reverts commit
0c63006b88a16e3418d92852a62771615799839d.
BUG=skia:
NOTREECHECKS=true
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2235953003
Review-Url: https://codereview.chromium.org/
2235953003
bsalomon [Wed, 10 Aug 2016 19:26:00 +0000 (12:26 -0700)]
Add more error printing to know why command buffer lib failed to load.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2233073002
Review-Url: https://codereview.chromium.org/
2233073002
mtklein [Wed, 10 Aug 2016 19:09:34 +0000 (12:09 -0700)]
In recording benches, record to and from the same format.
The recording bench must record some source material into some sort of
display list, and fundamentally cannot separate the timing of the two.
This CL makes it so the source material and display list are of the same type.
So instead of previous:
--nolite: SkRecord-based picture -> SkRecord-based picture
--lite: SkRecord-based picture -> threadsafe SkLiteDL
Now this times
--nolite: SkRecord-based picture -> SkRecord-based picture
--lite: SkLiteDL -> threadsafe SkLiteDL
This makes it easier to profile SkLiteDL and explore both recording and playback overhead hot spots.
The threadsafety is incidental for the source (and doesn't affect playback speed),
but I think it's handy to keep around on the destination to make a more fair comparison.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2230323002
Review-Url: https://codereview.chromium.org/
2230323002
robertphillips [Wed, 10 Aug 2016 19:00:09 +0000 (12:00 -0700)]
Create blurred RRect mask on GPU (rather than uploading it)
This CL doesn't try to resolve any of the larger issues. It just moves the computation of the blurred RRect to the gpu and sets up to start using vertex attributes for a nine patch draw (i.e., returning the texture coordinates)
All blurred rrects using the "analytic" path will change slightly with this CL.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222083004
Committed: https://skia.googlesource.com/skia/+/
75ccdc77a70ec2083141bf9ba98eb2f01ece2479
Committed: https://skia.googlesource.com/skia/+/
94b5c5a41160e0f55e267fc3d830df65736fac50
Review-Url: https://codereview.chromium.org/
2222083004
halcanary [Wed, 10 Aug 2016 18:40:37 +0000 (11:40 -0700)]
Revert 386ba54 and 4ab47e0 : perf debug assert.
Revert "Refactor SkCurveMeasure to use existing eval code"
This reverts commit
4ab47e087ecfc82f070cbbaef4d9eb562d3fd163.
Revert "Fastpath lines in SkCurveMeasure"
This reverts commit
386ba540612defc7808edc28126b9b8afcf45b89.
TBR=
NOTRY=true
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2233683004
Review-Url: https://codereview.chromium.org/
2233683004
hstern [Wed, 10 Aug 2016 18:12:22 +0000 (11:12 -0700)]
Fastpath lines in SkCurveMeasure
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2229403004
Review-Url: https://codereview.chromium.org/
2229403004
csmartdalton [Wed, 10 Aug 2016 18:09:07 +0000 (11:09 -0700)]
Add flag for window rectangles to GrRenderTarget
Adds a flag to GrRenderTarget that indicates whether it can be used
with window rectangles. Also attempts to clean up some of the mixed
samples API.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2225303002
Review-Url: https://codereview.chromium.org/
2225303002
hstern [Wed, 10 Aug 2016 17:55:09 +0000 (10:55 -0700)]
Refactor SkCurveMeasure to use existing eval code
- Use quad, cubic, conic eval code from SkGeometry.h
- Implement evaluateDerivativeLength, evaluateDerivative and evaluate switch cases for lines along with the refactor
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2226973004
Review-Url: https://codereview.chromium.org/
2226973004
halcanary [Wed, 10 Aug 2016 17:11:35 +0000 (10:11 -0700)]
SkGradientShader.cpp: fix build when SK_SUPPORT_GPU=0
NOTRY=true
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2235863002
Review-Url: https://codereview.chromium.org/
2235863002
csmartdalton [Wed, 10 Aug 2016 17:07:57 +0000 (10:07 -0700)]
Fix SkDEBUGCODE to accept commas
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2231663002
Review-Url: https://codereview.chromium.org/
2231663002
bungeman [Wed, 10 Aug 2016 16:23:43 +0000 (09:23 -0700)]
Remove no longer existing friend.
sk_fontmgr_create_default used to exist before SkFontMgr::RefDefault
could do the job better. There are no actual implementations for this
function, so SkFontMgr should no longer be friends with it.
TBR=reed
Removes a deceased friend.
Review-Url: https://codereview.chromium.org/
2232963002
fmenozzi [Wed, 10 Aug 2016 15:57:24 +0000 (08:57 -0700)]
Remove generalized gradient code
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2223203003
Review-Url: https://codereview.chromium.org/
2223203003
jcgregorio [Wed, 10 Aug 2016 15:44:44 +0000 (08:44 -0700)]
Package Go 1.6.2 in CIPD
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2230853003
Review-Url: https://codereview.chromium.org/
2230853003
robertphillips [Wed, 10 Aug 2016 15:40:35 +0000 (08:40 -0700)]
Revert of Create blurred RRect mask on GPU (rather than uploading it) (patchset #5 id:80001 of https://codereview.chromium.org/
2222083004/ )
Reason for revert:
No NoGPU bot on commit queue ?
Original issue's description:
> Create blurred RRect mask on GPU (rather than uploading it)
>
> This CL doesn't try to resolve any of the larger issues. It just moves the computation of the blurred RRect to the gpu and sets up to start using vertex attributes for a nine patch draw (i.e., returning the texture coordinates)
>
> All blurred rrects using the "analytic" path will change slightly with this CL.
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222083004
>
> Committed: https://skia.googlesource.com/skia/+/
75ccdc77a70ec2083141bf9ba98eb2f01ece2479
> Committed: https://skia.googlesource.com/skia/+/
94b5c5a41160e0f55e267fc3d830df65736fac50
TBR=bsalomon@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/
2232953002
mtklein [Wed, 10 Aug 2016 15:31:42 +0000 (08:31 -0700)]
constexpr NaN,+Inf,-Inf
Reading extern values meant these couldn't be compile-time constants.
math.h has INFINITY, which is macro that is supposed to expand to float +inf.
On MSVC it seems it's natively a double, so we cast just to make sure.
There's nan(const char*) in math.h for NaN too, but I don't trust that
to be compile-time evaluated. So instead, we keep reinterpreting a bit pattern.
I did try to write
static constexpr float float_nan() { ... }
and completely failed. constexpr seems a bit too restrictive in C++11 to make
it work, but Clang kept telling me, you'll be able to do this with C++14.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2233853002
Review-Url: https://codereview.chromium.org/
2233853002
egdaniel [Wed, 10 Aug 2016 15:29:53 +0000 (08:29 -0700)]
Check allignment of sub heap allocation in vulkan
Certain Vulkan devices will return difference alignment requirements for
a given allocation even if using the same heap. Thus we need to check
this alignment as well when deciding which subheap we want to use in our
memory allocation.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2232803003
Review-Url: https://codereview.chromium.org/
2232803003
hstern [Wed, 10 Aug 2016 14:45:31 +0000 (07:45 -0700)]
Add time return argument to SkCurveMeasure's getPosTan, rename to getPosTanTime
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2229893002
Review-Url: https://codereview.chromium.org/
2229893002
mtklein [Wed, 10 Aug 2016 14:30:58 +0000 (07:30 -0700)]
Roll GN: gn format is --in-place by default
As usual, might as well roll, and this new behavior is a small convenience.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2231833002
Review-Url: https://codereview.chromium.org/
2231833002
mtklein [Wed, 10 Aug 2016 14:30:21 +0000 (07:30 -0700)]
Default GR_GL_FUNCTION_TYPE to __stdcall on Windows.
Why is this configurable if we can't work without it?
Just to confirm, this is a Windows constraint, not an MSVC constraint, right?
Clang on Windows also needs __stdcall?
BUG=skia:5617
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2233883002
Review-Url: https://codereview.chromium.org/
2233883002
rmistry [Wed, 10 Aug 2016 14:23:51 +0000 (07:23 -0700)]
Add "svg" asset
BUG=skia:5628
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2235763002
Review-Url: https://codereview.chromium.org/
2235763002
robertphillips [Wed, 10 Aug 2016 14:14:55 +0000 (07:14 -0700)]
Create blurred RRect mask on GPU (rather than uploading it)
This CL doesn't try to resolve any of the larger issues. It just moves the computation of the blurred RRect to the gpu and sets up to start using vertex attributes for a nine patch draw (i.e., returning the texture coordinates)
All blurred rrects using the "analytic" path will change slightly with this CL.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222083004
Committed: https://skia.googlesource.com/skia/+/
75ccdc77a70ec2083141bf9ba98eb2f01ece2479
Review-Url: https://codereview.chromium.org/
2222083004
halcanary [Wed, 10 Aug 2016 14:13:21 +0000 (07:13 -0700)]
Revert of Change mapRectScaleTranslate to pass args/ret by value (patchset #2 id:20001 of https://codereview.chromium.org/
2138943002/ )
Reason for revert:
Build-Ubuntu-GCC-Arm7-Release-Android fails.
Original issue's description:
> Change mapRectScaleTranslate to pass args/ret by value
>
> This reverts commit
6092b6e0e57be20d2e1ad079c0af133d2f67bfd3.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2138943002
>
> Committed: https://skia.googlesource.com/skia/+/
1bd13ca922d6448d595064faee486eaf3fa56e56
TBR=mtklein@google.com,msarett@google.com,reed@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/
2234843002
rmistry [Wed, 10 Aug 2016 14:00:43 +0000 (07:00 -0700)]
SVG tool that downloads SVGs from a txt file into a specified dir
BUG=skia:5628
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2234823002
Review-Url: https://codereview.chromium.org/
2234823002
reed [Wed, 10 Aug 2016 13:37:43 +0000 (06:37 -0700)]
remove support for serializing bitmaps in old format
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2230973002
Review-Url: https://codereview.chromium.org/
2230973002
reed [Wed, 10 Aug 2016 13:17:54 +0000 (06:17 -0700)]
Change mapRectScaleTranslate to pass args/ret by value
This reverts commit
6092b6e0e57be20d2e1ad079c0af133d2f67bfd3.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2138943002
Review-Url: https://codereview.chromium.org/
2138943002
robertphillips [Wed, 10 Aug 2016 13:15:33 +0000 (06:15 -0700)]
Revert of Create blurred RRect mask on GPU (rather than uploading it) (patchset #4 id:60001 of https://codereview.chromium.org/
2222083004/ )
Reason for revert:
Erg - dumb bug
Original issue's description:
> Create blurred RRect mask on GPU (rather than uploading it)
>
> This CL doesn't try to resolve any of the larger issues. It just moves the computation of the blurred RRect to the gpu and sets up to start using vertex attributes for a nine patch draw (i.e., returning the texture coordinates)
>
> All blurred rrects using the "analytic" path will change slightly with this CL.
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222083004
>
> Committed: https://skia.googlesource.com/skia/+/
75ccdc77a70ec2083141bf9ba98eb2f01ece2479
TBR=bsalomon@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/
2236493002
fmalita [Wed, 10 Aug 2016 12:45:50 +0000 (05:45 -0700)]
Prevent degenerate linear gradient instantiation
If the point distance exceeds SkScalar, nasty things tend to happen.
R=reed@google.com
BUG=636194
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2234663002
Review-Url: https://codereview.chromium.org/
2234663002
robertphillips [Wed, 10 Aug 2016 12:33:12 +0000 (05:33 -0700)]
Create blurred RRect mask on GPU (rather than uploading it)
This CL doesn't try to resolve any of the larger issues. It just moves the computation of the blurred RRect to the gpu and sets up to start using vertex attributes for a nine patch draw (i.e., returning the texture coordinates)
All blurred rrects using the "analytic" path will change slightly with this CL.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222083004
Review-Url: https://codereview.chromium.org/
2222083004
halcanary [Wed, 10 Aug 2016 03:04:01 +0000 (20:04 -0700)]
SkPDF: bikeshed: use `auto` less
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2234623002
Review-Url: https://codereview.chromium.org/
2234623002
halcanary [Wed, 10 Aug 2016 00:46:25 +0000 (17:46 -0700)]
Revert of Store mipmap levels in deferred texture image (patchset #11 id:200001 of https://codereview.chromium.org/
2115023002/ )
Reason for revert:
speculative revert: android dm crashes
Original issue's description:
> Store mipmap levels in deferred texture image
>
> This is a follow-up to https://codereview.chromium.org/
2034933003/ which
> was reverted due to a memory leak.
>
> When creating the deferred texture image, detect if using medium / high
> quality. If so, generate and store mipmaps in the deferred texture
> image.
>
> When creating a texture from that be sure to read it back out.
>
> BUG=578304
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2115023002
>
> Committed: https://skia.googlesource.com/skia/+/
d6113140f7ae8996f679ac6698a60fb8c1386da3
TBR=brianosman@google.com,bsalomon@google.com,ericrk@chromium.org,cblume@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=578304
Review-Url: https://codereview.chromium.org/
2227323002
mtklein [Tue, 9 Aug 2016 23:37:47 +0000 (16:37 -0700)]
constexpr infinity
~/skia (inf) $ nm /tmp/rel/obj/src/core/libskia.SkLiteDL.o | grep GLOBAL__sub
<nothing>
TBR=halcanary@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2228203002
Review-Url: https://codereview.chromium.org/
2228203002
mtklein [Tue, 9 Aug 2016 22:13:18 +0000 (15:13 -0700)]
allocate memory manually in SkLiteDL
Instead of growing at SkTDArray's chosen rate (+4, then *1.25),
grow in additive 4K pages. This is my attempt to make realloc()
have the best chance of not copying and to keep fragmentation down.
Because we use a freelist the rate we grow doesn't affect performance
too much.
I'm not getting very reliable numbers, but this looks maybe 5-10% faster
for recording, mainly I think from inlining the allocation fast path into
push().
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2231553002
Review-Url: https://codereview.chromium.org/
2231553002
mtklein [Tue, 9 Aug 2016 22:09:39 +0000 (15:09 -0700)]
SkLiteDL: add some missing std::move()
This cuts a ref+unref roundtrip on all draw{Bitmap,Image}
I set this up originally and just... forgot.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2234483002
Review-Url: https://codereview.chromium.org/
2234483002
brianosman [Tue, 9 Aug 2016 21:02:13 +0000 (14:02 -0700)]
Restore scratch texture reuse on Adreno.
New testing shows that it's a win on our slowest SKPs, and pretty much a
wash on faster tests (mixed results). However, it also saves us ~3 ms on
the hwui bitmap upload jank test.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2227983003
Review-Url: https://codereview.chromium.org/
2227983003
rmistry [Tue, 9 Aug 2016 20:46:48 +0000 (13:46 -0700)]
Move ct_skps recipe from tools repo to Skia repo.
Also move the isolate file and script from Chromium repo to the Skia repo.
BUG=skia:5620
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221413002
Review-Url: https://codereview.chromium.org/
2221413002
cblume [Tue, 9 Aug 2016 20:45:56 +0000 (13:45 -0700)]
Store mipmap levels in deferred texture image
This is a follow-up to https://codereview.chromium.org/
2034933003/ which
was reverted due to a memory leak.
When creating the deferred texture image, detect if using medium / high
quality. If so, generate and store mipmaps in the deferred texture
image.
When creating a texture from that be sure to read it back out.
BUG=578304
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2115023002
Review-Url: https://codereview.chromium.org/
2115023002
halcanary [Tue, 9 Aug 2016 20:04:34 +0000 (13:04 -0700)]
SkPDF: SkPDFFont organization changes.
SkPDFFont:
- SkPDFType1Font::populate() encode advances correctly.
- break out logically independent code into new files:
* SkPDFConvertType1FontStream
* SkPDFMakeToUnicodeCmap
SkPDFFont.cpp is now 380 lines smaller.
Expose `SkPDFAppendCmapSections()` for testing.
SkPDFFontImpl.h
- Fold into SkPDFFont.
SkPDFConvertType1FontStream:
- Now assume given a SkStreamAsset
SkPDFFont:
- AdvanceMetric now hidden in a anonymous namespace.
No public API changes.
TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221163002
Review-Url: https://codereview.chromium.org/
2221163002
csmartdalton [Tue, 9 Aug 2016 19:42:47 +0000 (12:42 -0700)]
Include EXT_window_rectangles API
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221393004
Review-Url: https://codereview.chromium.org/
2221393004
mtklein [Tue, 9 Aug 2016 19:20:04 +0000 (12:20 -0700)]
Use SkNVRefCnt for a couple common types.
These types are ref-counted, but don't otherwise need a vtable.
This makes them good candidates for SkNVRefCnt.
Destruction can be a little more direct, and if nothing else,
sizeof(T) will get a little smaller by dropping the vptr.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2232433002
Review-Url: https://codereview.chromium.org/
2232433002
mtklein [Tue, 9 Aug 2016 18:44:12 +0000 (11:44 -0700)]
SkLiteDL: tiny perf tweak
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2229003003
Review-Url: https://codereview.chromium.org/
2229003003
rmistry [Tue, 9 Aug 2016 18:15:57 +0000 (11:15 -0700)]
Use slave_build instead of checkout in run/api.py
BUG=skia:5620
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221423002
Review-Url: https://codereview.chromium.org/
2221423002
jvanverth [Tue, 9 Aug 2016 17:53:11 +0000 (10:53 -0700)]
Add RasterWindowContext_mac
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2228883003
Review-Url: https://codereview.chromium.org/
2228883003
mtklein [Tue, 9 Aug 2016 17:13:28 +0000 (10:13 -0700)]
Sample app uses Ganesh before calling SkGraphics::Init().
This causes inconsistent hashing. Before Init(), we use portable Murmur3,
after a faster SSE4.2-based hash.
To fix, call SkGraphics::Init() first.
BUG=skia:5625
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2229853002
Review-Url: https://codereview.chromium.org/
2229853002
hstern [Tue, 9 Aug 2016 16:38:30 +0000 (09:38 -0700)]
Move seg_to to a new header, define SkSegType enum there
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221203002
Review-Url: https://codereview.chromium.org/
2221203002
vjiaoblack [Tue, 9 Aug 2016 16:32:09 +0000 (09:32 -0700)]
moved code into onDrawShadowedPic, only renders into shadow maps if needed
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2220633002
Review-Url: https://codereview.chromium.org/
2220633002
hstern [Tue, 9 Aug 2016 15:53:30 +0000 (08:53 -0700)]
Rework Overstroke GM to show differences between expected and actual
Draw the perpendiculars of the curve with the stroke width. See Cary's
SampleQuadStroker.cpp for what we are attempting to mimic.
BUG=589769,skia:5405,skia:5406
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2218773003
Review-Url: https://codereview.chromium.org/
2218773003
fmenozzi [Tue, 9 Aug 2016 15:05:57 +0000 (08:05 -0700)]
Refactor various gradient effect classes
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221133002
Review-Url: https://codereview.chromium.org/
2221133002
mtklein [Tue, 9 Aug 2016 14:40:23 +0000 (07:40 -0700)]
Purge the SkLiteDL freelist when PurgeAllCaches() is called.
Seems like the polite thing to do.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2228953002
Review-Url: https://codereview.chromium.org/
2228953002
mtklein [Tue, 9 Aug 2016 14:19:02 +0000 (07:19 -0700)]
SkLiteRecorder: don't tell SkCanvas about clips
If no one reads our clip, and we don't expect quickReject() to help,
we can probably get away without maintaining a proper clip stack.
This puts us at about 0.6-0.7x of previous record cost.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2227833004
Review-Url: https://codereview.chromium.org/
2227833004
caryclark [Tue, 9 Aug 2016 12:04:29 +0000 (05:04 -0700)]
add flaky test option
One fuzzer generated pathops test
fails everywhere except for one
builder. Add a flaky state to the
pathops test framework to handle
this until I can investigate
further.
TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221153005
Review-Url: https://codereview.chromium.org/
2221153005
martina.kollarova [Tue, 9 Aug 2016 08:41:55 +0000 (01:41 -0700)]
Check more GLES versions when creating context
Unifies the context creation for GL and GLES into a single loop.
BUG=skia:5403
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2201033003
Review-Url: https://codereview.chromium.org/
2201033003
caryclark [Mon, 8 Aug 2016 21:27:45 +0000 (14:27 -0700)]
template intersection fuzz fixes
Plumb in the ability to ignore asserts for out of range input
deeper into the template intersection code.
Exit gracefully when error conditions are found.
TBR=reed@google.com
BUG=632607,632628,633063,633065,634251,633608
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2224823004
Review-Url: https://codereview.chromium.org/
2224823004
fmalita [Mon, 8 Aug 2016 20:58:50 +0000 (13:58 -0700)]
[SVGDom] Improve whitespace handling in style parsing
Handle whitespace-padded style names/values.
R=stephana@google.com,robertphillips@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2225623002
Review-Url: https://codereview.chromium.org/
2225623002
lsalzman [Mon, 8 Aug 2016 20:40:27 +0000 (13:40 -0700)]
make SpecialLineRec::addSegment assert more permissive to accomodate rounding error
Because the driving code that calls SpecialLineRec::addSegment uses double precision,
when converted back to single precision this may round such that d0 and d1 are the same.
This causes the assert to trigger. The simplest thing to do here is to modify the assert
to not be so picky and allow the rare/occasional equality.
Downstream Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1290628
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2209303004
Review-Url: https://codereview.chromium.org/
2209303004
fmalita [Mon, 8 Aug 2016 19:58:57 +0000 (12:58 -0700)]
[SVGDom] Improved transform parsing
Update 'transform' attribute parsing to a more robust, SkSVGAttributeParser-based implementation.
R=robertphillips@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2220933003
Review-Url: https://codereview.chromium.org/
2220933003
mtklein [Mon, 8 Aug 2016 19:54:08 +0000 (12:54 -0700)]
add missing include
CQ_INCLUDE_TRYBOTS=master.client.skia:Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-MSAN-Trybot
Review-Url: https://codereview.chromium.org/
2226783002
hstern [Mon, 8 Aug 2016 19:28:13 +0000 (12:28 -0700)]
Add initial CurveMeasure code
- This code is entirely private and is not being used by anything.
- In a future CL we will write a class that uses CurveMeasure to compute dash points. In order to determine whether CurveMeasure or PathMeasure should be faster, we need the dash info (the sum of the on/off intervals and how many there are)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2187083002
Review-Url: https://codereview.chromium.org/
2187083002
mtklein [Mon, 8 Aug 2016 19:23:02 +0000 (12:23 -0700)]
SkLiteDL: control reuse by a single parameter
This simply caps the number of times a display list can be reused.
As this number goes up, the average amount of memory we cache goes up
and the expected number of mallocs per SkLiteDL::New() goes down.
This strategy does not need a hard-coded cap on how many display lists
to cache, or how big they can grow.
TBR=herb@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2226813002
Review-Url: https://codereview.chromium.org/
2226813002
dvonbeck [Mon, 8 Aug 2016 18:47:12 +0000 (11:47 -0700)]
Split distance vector into direction and magnitude components
The vector was split because the vector's users need it split, and we were creating it from the split components in the first place, so it made sense to skip that step.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2223053002
Review-Url: https://codereview.chromium.org/
2223053002
fmalita [Mon, 8 Aug 2016 18:38:55 +0000 (11:38 -0700)]
[SVGDom] Add viewBox support
The main feature is <svg> viewBox and proper viewport support, but the CL
touches a few other things:
* refactor SkSVGRenderContext to auto-restore canvas state, and split the
presentation bits into a separate CoW SkSVGPresentationContext
* introduce SkSVGNode::onPrepareToRender(), as a way for nodes to push their
custom state before the actual onRender() call (instead of relying on
non-virtual SkSVGNode to know about all possible state bits)
* add a "Type" suffix to SVG types, to disambiguate (e.g. SkSVGRectType vs.
SkSVGRect)
R=robertphillips@google.com,stephana@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222793002
Review-Url: https://codereview.chromium.org/
2222793002
dvonbeck [Mon, 8 Aug 2016 18:25:13 +0000 (11:25 -0700)]
Fixed comment about SkLightingShader::Context memory handling
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2225093002
Review-Url: https://codereview.chromium.org/
2225093002
halcanary [Mon, 8 Aug 2016 18:09:33 +0000 (11:09 -0700)]
SkTypeface_win_dw.cpp remove unused fn
TBR=bungeman@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2226653003
Review-Url: https://codereview.chromium.org/
2226653003
csmartdalton [Mon, 8 Aug 2016 16:55:06 +0000 (09:55 -0700)]
Encapsulate GrReducedClip result in class members
Updates GrReducedClip to store its result in class members instead of
various pointer arguments. This helps clean up calling code and will
make it easier to reduce the clip higher in the stack.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222873002
Review-Url: https://codereview.chromium.org/
2222873002
robertphillips [Mon, 8 Aug 2016 16:17:20 +0000 (09:17 -0700)]
Revert of Cleanup use of legacy SkSurface creation methods a bit (patchset #2 id:20001 of https://codereview.chromium.org/
2223023002/ )
Reason for revert:
webkit_headless!
Original issue's description:
> Cleanup use of legacy SkSurface creation methods a bit
>
> This:
> removes the SK_SUPPORT_LEGACY_NEW_SURFACE_API flag from the bzl build
> cleans up some remaining uses of the old API
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2223023002
>
> Committed: https://skia.googlesource.com/skia/+/
f21cd16228c20927fa4e9b937d6951471cfaa37a
TBR=benjaminwagner@google.com,egdaniel@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/
2220933004
halcanary [Mon, 8 Aug 2016 16:09:59 +0000 (09:09 -0700)]
SkPDF/SkAdvancedTypefaceMetrics: simplify ATM, PDF takes over
No public API changes.
TBR=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222523003
Review-Url: https://codereview.chromium.org/
2222523003
mtklein [Mon, 8 Aug 2016 16:06:27 +0000 (09:06 -0700)]
Use sse4.2 CRC32 instructions to hash when available.
About 9x faster than Murmur3 for long inputs.
Most of this is a mechanical change from SkChecksum::Murmur3(...) to SkOpts::hash(...).
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2208903002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot;master.client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac-Clang-x86_64-Release-CMake-Trybot
Review-Url: https://codereview.chromium.org/
2208903002
reed [Mon, 8 Aug 2016 16:00:29 +0000 (09:00 -0700)]
use onPeekBitmap instead of asLegacyBitmap
Since we know we are raster-backed at this point, it is fine, plus it avoids the copy-mutable logic in asLegacyBitmap, which is not needed here (and is slower if our bitmap was built with kNever_SkCopyPixelsMode).
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2223653002
Review-Url: https://codereview.chromium.org/
2223653002
msarett [Mon, 8 Aug 2016 15:13:09 +0000 (08:13 -0700)]
Fix alpha bug in SkColorXform
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221933002
Review-Url: https://codereview.chromium.org/
2221933002
bungeman [Mon, 8 Aug 2016 15:09:10 +0000 (08:09 -0700)]
Remove SK_SUPPORT_LEGACY_DATA_FACTORIES.
The code protected by this flag is no longer used. Remove the flag and
code. This also removes SK_SUPPORT_LEGACY_TYPEFACE_PTR from Android, as
it is no longer needed.
TBR=reed
Only removes already guarded API.
Review-Url: https://codereview.chromium.org/
2223933002
halcanary [Mon, 8 Aug 2016 14:21:42 +0000 (07:21 -0700)]
std::move(SkTDArray)
Since we don't support MSVC2013 anymore, we can be more
succinct when defining move constructors of compound types.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2227673002
Review-Url: https://codereview.chromium.org/
2227673002
fmalita [Mon, 8 Aug 2016 14:08:37 +0000 (07:08 -0700)]
Avoid caching resources for volatile bitmap shaders
SkBitmapProvider::isVolatile() treats all SkImages as non-volatile,
which is not what we want for temp SkImage wrappers of volatile bitmaps.
R=reed@google.com
BUG=chromium:633941
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222783002
Review-Url: https://codereview.chromium.org/
2222783002
robertphillips [Mon, 8 Aug 2016 13:57:38 +0000 (06:57 -0700)]
Cleanup use of legacy SkSurface creation methods a bit
This:
removes the SK_SUPPORT_LEGACY_NEW_SURFACE_API flag from the bzl build
cleans up some remaining uses of the old API
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2223023002
Review-Url: https://codereview.chromium.org/
2223023002
mtklein [Mon, 8 Aug 2016 13:56:22 +0000 (06:56 -0700)]
update picture recording benchmarks to allow comparison with SkLiteRecorder
Here's a demo. The new code is still looking 2-3x faster.
~/skia (bench) $ r nanobench --match nytimes --config nonrendering --ms 2000
curr/maxrss loops min median mean max stddev samples config bench
19/26 MB 2 146µs 147µs 151µs 422µs 9% 6615 nonrendering desk_nytimes.skp
20/26 MB 4 46.6µs 46.9µs 48.2µs 204µs 10% 10370 nonrendering keymobi_nytimes_com_.skp
~/skia (bench) $ r nanobench --match nytimes --config nonrendering --ms 2000 --lite
curr/maxrss loops min median mean max stddev samples config bench
19/26 MB 2 73.8µs 76.9µs 78.7µs 417µs 14% 12702 nonrendering desk_nytimes.skp
20/26 MB 5 18.5µs 18.7µs 19.3µs 137µs 12% 20713 nonrendering keymobi_nytimes_com_.skp
Here's a quick performance diff, where <1x means --lite is faster:
top25desk_wikipedia__1_tab_.skp 285us -> 364us 1.27x
top25desk_games_yahoo_com.skp 302us -> 329us 1.09x
tabl_mozilla.skp 241us -> 260us 1.08x
desk_chalkboard.skp 321us -> 313us 0.98x
tabl_gamedeksiam.skp 383us -> 367us 0.96x
top25desk_pinterest.skp 375us -> 281us 0.75x
keymobi_reddit_com_r_programmin.skp 258us -> 142us 0.55x
desk_nytimes.skp 149us -> 77.9us 0.52x
keymobi_worldjournal_com_.skp 201us -> 104us 0.52x
top25desk_blogger.skp 112us -> 55us 0.49x
top25desk_sports_yahoo_com_.skp 186us -> 89.6us 0.48x
desk_googlespreadsheet.skp 206us -> 97.5us 0.47x
top25desk_google_com_search_q_c.skp 192us -> 89.8us 0.47x
keymobi_wikipedia__1_tab_.skp 170us -> 79.3us 0.47x
keymobi_wikipedia__1_tab____del.skp 170us -> 78.2us 0.46x
desk_unicodetable.skp 6.25ms -> 2.87ms 0.46x
desk_carsvg.skp 138us -> 63.3us 0.46x
top25desk_answers_yahoo_com.skp 133us -> 60.7us 0.46x
top25desk_espn.skp 108us -> 49.2us 0.45x
top25desk_plus_google_com_11003.skp 361us -> 162us 0.45x
desk_espn.skp 99.4us -> 44.5us 0.45x
tabl_worldjournal.skp 103us -> 45.6us 0.44x
desk_ugamsolutions.skp 56.2us -> 24.8us 0.44x
top25desk_facebook.skp 82.7us -> 35.7us 0.43x
keymobi_cuteoverload_com.skp 213us -> 91.9us 0.43x
top25desk_linkedin.skp 61.3us -> 26.3us 0.43x
top25desk_news_yahoo_com.skp 153us -> 65.6us 0.43x
desk_gmailthread.skp 64.9us -> 27.8us 0.43x
keymobi_androidpolice_com_2012_.skp 167us -> 71.3us 0.43x
top25desk_amazon_com.skp 77.5us -> 33.1us 0.43x
desk_wowwiki.skp 129us -> 54.1us 0.42x
top25desk_weather_com.skp 113us -> 47.1us 0.42x
keymobi_facebook_com_barackobam.skp 95.2us -> 39.6us 0.42x
keymobi_shop_mobileweb_ebay_com.skp 31.5us -> 13.1us 0.42x
keymobi_amazon_com_gp_aw_s_ref_.skp 46.1us -> 18.9us 0.41x
keymobi_mobile_news_sandbox_goo.skp 90.7us -> 37us 0.41x
top25desk_google_com__hl_en_q_b.skp 52.4us -> 21.4us 0.41x
keymobi_answers_yahoo_com_quest.skp 96.5us -> 39.3us 0.41x
tabl_pravda.skp 126us -> 51.2us 0.41x
keymobi_nytimes_com_.skp 46.9us -> 19us 0.4x
keymobi_ftw_usatoday_com_2014_0.skp 119us -> 48.2us 0.4x
top25desk_youtube_com.skp 162us -> 65.3us 0.4x
keymobi_news_yahoo_com.skp 58.1us -> 23.2us 0.4x
keymobi_boingboing_net.skp 58.8us -> 23.4us 0.4x
keymobi_techcrunch_com.skp 26.3us -> 10.4us 0.39x
keymobi_plus_google_com_app_bas.skp 26.9us -> 10.4us 0.38x
keymobi_google_co_uk_search_hl_.skp 35.1us -> 13.4us 0.38x
keymobi_pinterest.skp 26.2us -> 10us 0.38x
keymobi_deviantart_com_.skp 67.1us -> 25.4us 0.38x
tabl_gmail.skp 10.3us -> 3.86us 0.38x
top25desk_ebay_com.skp 65.6us -> 24.5us 0.37x
keymobi_m_youtube_com_watch_v_9.skp 57.9us -> 21.6us 0.37x
top25desk_wordpress.skp 138us -> 51.3us 0.37x
keymobi_gsp_ro.skp 17us -> 6.34us 0.37x
top25desk_techcrunch_com.skp 93.6us -> 34.7us 0.37x
keymobi_cnn_com_2012_10_03_poli.skp 232us -> 85.5us 0.37x
keymobi_cnn_com.skp 30.5us -> 11.1us 0.37x
keymobi_baidu_com_s_wd_barack_o.skp 39.3us -> 14.3us 0.36x
keymobi_online_wsj_com_home_pag.skp 50.3us -> 18.3us 0.36x
keymobi_digg_com.skp 54.8us -> 19.5us 0.36x
keymobi_wowwiki_com_world_of_wa.skp 39.4us -> 14us 0.36x
keymobi_theverge_com_2012_10_28.skp 102us -> 36.4us 0.36x
tabl_digg.skp 105us -> 37.4us 0.36x
top25desk_google_com_calendar_.skp 67.2us -> 23.7us 0.35x
keymobi_wordpress.skp 65.3us -> 23us 0.35x
desk_css3gradients.skp 56.4us -> 19.8us 0.35x
top25desk_mail_google_com_mail_.skp 119us -> 41.6us 0.35x
desk_googlehome.skp 8.2us -> 2.85us 0.35x
top25desk_docs___1_open_documen.skp 23.8us -> 8.22us 0.35x
keymobi_mlb_com_.skp 18.6us -> 6.3us 0.34x
keymobi_slashdot_org_.skp 33us -> 11us 0.33x
desk_tiger8svg.skp 96.2us -> 32us 0.33x
top25desk_twitter.skp 124us -> 40.7us 0.33x
keymobi_bing_com_search_q_sloth.skp 17.3us -> 5.55us 0.32x
keymobi_linkedin.skp 6.78us -> 1.99us 0.29x
top25desk_booking_com.skp 291us -> 83.2us 0.29x
keymobi_blogger.skp 19.3us -> 5.47us 0.28x
keymobi_sfgate_com_.skp 83.3us -> 23us 0.28x
desk_jsfiddlebigcar.skp 10.8us -> 2.95us 0.27x
keymobi_theverge_com.skp 22us -> 5.27us 0.24x
desk_mapsvg.skp 1.15us -> 216ns 0.19x
keymobi_iphone_capitolvolkswage.skp 121us -> 22.3us 0.18x
desk_wikipedia.skp 1.36us -> 244ns 0.18x
desk_pokemonwiki.skp 1.35us -> 243ns 0.18x
desk_samoasvg.skp 1.39us -> 241ns 0.17x
desk_tigersvg.skp 1.41us -> 241ns 0.17x
keymobi_booking_com_searchresul.skp 129us -> 19.7us 0.15x
Some spot testing makes it look like everything that's not a giant speedup can be made so by tweaking my (arbitrarily set) maximum size for the free list.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2220273002
Review-Url: https://codereview.chromium.org/
2220273002
borenet [Mon, 8 Aug 2016 13:26:00 +0000 (06:26 -0700)]
Speculative fix for SKP partner-dir upload
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2229433002
Review-Url: https://codereview.chromium.org/
2229433002
mtklein [Mon, 8 Aug 2016 12:52:55 +0000 (05:52 -0700)]
Test sk_linear_to_srgb() less exhaustively in Debug mode.
It's pretty slow when not optimized... it can take ~5 minutes to run.
This makes it take ~2 seconds on my laptop.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2221803002
Review-Url: https://codereview.chromium.org/
2221803002
Hal Canary [Mon, 8 Aug 2016 12:45:40 +0000 (08:45 -0400)]
whitespace change
TBR=
Review URL: https://codereview.chromium.org/
2221893002 .
borenet [Mon, 8 Aug 2016 11:34:00 +0000 (04:34 -0700)]
[recipes] Smush the rest of builder_spec into appropriate places, other cleanup
BUG=skia:5578
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2219873003
Review-Url: https://codereview.chromium.org/
2219873003
mtklein [Sun, 7 Aug 2016 20:35:46 +0000 (13:35 -0700)]
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
mtklein [Sun, 7 Aug 2016 18:35:08 +0000 (11:35 -0700)]
SkLiteDL, very nearly the rest
fix saveLayer bounds
all the misc calls
a bit of refactoring
just drawVertices and drawPatch to go, plus some todos and likely bug fixes
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2226563002
Review-Url: https://codereview.chromium.org/
2226563002
update-skps [Sun, 7 Aug 2016 08:52:47 +0000 (01:52 -0700)]
Update SKP version
Automatic commit by the RecreateSKPs bot.
TBR=
NO_MERGE_BUILDS
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2220833002
Review-Url: https://codereview.chromium.org/
2220833002
mtklein [Sun, 7 Aug 2016 03:31:30 +0000 (20:31 -0700)]
SkLiteDL: closing in
- optimizeFor(GrContext*)
- images
- basic text
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2224753002
Review-Url: https://codereview.chromium.org/
2224753002
mtklein [Sat, 6 Aug 2016 22:28:11 +0000 (15:28 -0700)]
flesh out more of SkLiteDL:
save layer, clips, simple draws
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2226513002
Review-Url: https://codereview.chromium.org/
2226513002
mtklein [Sat, 6 Aug 2016 19:51:51 +0000 (12:51 -0700)]
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
csmartdalton [Sat, 6 Aug 2016 05:32:12 +0000 (22:32 -0700)]
Merge GrClipMaskManager into GrClipStackClip
TBR=bsalomon@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2196393007
Review-Url: https://codereview.chromium.org/
2196393007
reed [Fri, 5 Aug 2016 21:50:19 +0000 (14:50 -0700)]
use tmp allocator for images in temp shaders
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2222593003
Review-Url: https://codereview.chromium.org/
2222593003
halcanary [Fri, 5 Aug 2016 20:51:46 +0000 (13:51 -0700)]
SkPDF: Stop using kHAdvance_PerGlyphInfo
SkPDFFont:
- never request kHAdvance_PerGlyphInfo from typeface.
- set_glyph_widths() fn uses a glyph cache to get advances.
- stop expecting vertical advances that are never requested.
- composeAdvanceData() now non-templated
- appendAdvance() one-line function removed
SkPDFDevice:
- use a glyph cache for getting repeated advances.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2219733004
Review-Url: https://codereview.chromium.org/
2219733004
reed [Fri, 5 Aug 2016 20:19:01 +0000 (13:19 -0700)]
update Image_MakeFromRasterBitmap to check uniqueIDs
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2218223002
Review-Url: https://codereview.chromium.org/
2218223002
djsollen [Fri, 5 Aug 2016 20:04:41 +0000 (13:04 -0700)]
Enable SK_DEBUG/SK_RELEASE to be defined in the user config.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2204683005
Review-Url: https://codereview.chromium.org/
2204683005
reed [Fri, 5 Aug 2016 19:07:41 +0000 (12:07 -0700)]
rename FoceCopyMode to SkCopyPixelMode
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2220603002
Review-Url: https://codereview.chromium.org/
2220603002
lsalzman [Fri, 5 Aug 2016 18:48:45 +0000 (11:48 -0700)]
SkBlendARGB32 and S32[A]_Blend_BlitRow32 are currently formulated as: SkAlphaMulQ(src, src_scale) + SkAlphaMulQ(dst, dst_scale), which boils down to ((src*src_scale)>>8) + ((dst*dst_scale)>>8). In particular, note that the intermediate precision is discarded before the two parts are added together, causing the final result to possibly inaccurate.
In Firefox, we use SkCanvas::saveLayer in combination with a backdrop that initializes the layer to the background. When this is blended back onto background using transparency, where the source and destination pixel colors are the same, the resulting color after the blend is not preserved due to the lost precision mentioned above. In cases where this operation is repeatedly performed, this causes substantially noticeable differences in color as evidenced in this downstream Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1200684
In the test-case in the downstream report, essentially it does blend(src=0xFF2E3338, dst=0xFF2E3338, scale=217), which gives the result 0xFF2E3237, while we would expect to get back 0xFF2E3338.
This problem goes away if the blend is instead reformulated to effectively do (src*src_scale + dst*dst_scale)>>8, which keeps the intermediate precision during the addition before shifting it off.
This modifies the blending operations thusly. The performance should remain mostly unchanged, or possibly improve slightly, so there should be no real downside to doing this, with the benefit of making the results more accurate. Without this, it is currently unsafe for Firefox to blend a layer back onto itself that was initialized with a copy of its background.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2097883002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
[mtklein adds...]
No public API changes.
TBR=reed@google.com
Review-Url: https://codereview.chromium.org/
2097883002
reed [Fri, 5 Aug 2016 17:15:00 +0000 (10:15 -0700)]
use SkMakeBitmapShader to not force copies when possible
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=
2216403002
Review-Url: https://codereview.chromium.org/
2216403002