Go to file
herb 8602ede5fd In the current code, tiling and bilerp sampling are strongly tied together. They can be separated by taking advantage of observation that translating a sample point into filter points in the bilerp stage the filter points will be at most 0.5 outside the tile. This allows simplified repositioning for the various tiling modes; clamp and mirror use min and max while repeat has max -> 0 and 0-> max. This allows bilerp to simply treat the filter points that fall off the tile. This allows tiling and bilerp sampling to be totally separate.
This CL has several parts that are intertwined:
* move pin/wrap functionality into BilerpSampler.
* remove the nearest neighbor and bilerp tilers
* create a simplified general tiler
* remove the pipeline virtual calls bilerpEdge and bilerpSpan because everything works of sample points now.
* redo all the bilerp sampling to use the new local to methods to wrap/pin.
* introduce a new medium rate sample that handles spans with 1 < |dx| < 2.

This change improves the performance as displayed below:
Most of top 25 desktop improves or are the same. A few are worse, but close to the noise floor. In addition, this change has about 3% smaller code.

old time     new time   new/old
13274693  8414645  0.633886  top25desk_google_com_search_q_c.skp_1
4946466   3258018  0.658656  top25desk_wordpress.skp_1
6977187   5737584  0.822335  top25desk_youtube_com.skp_1
3770021   3296831  0.874486  top25desk_google_com__hl_en_q_b.skp_1
8890813   8600143  0.967307  top25desk_answers_yahoo_com.skp_1
3178974   3094300  0.973364  top25desk_facebook.skp_1
8871835   8711260  0.981901  top25desk_twitter.skp_1
838509    829290   0.989005  top25desk_blogger.skp_1
2821870   2801111  0.992644  top25desk_plus_google_com_11003.skp_1
511978    509530   0.995219  top25desk_techcrunch_com.skp_1
2408588   2397435  0.995369  top25desk_ebay_com.skp_1
4446919   4448004  1.00024   top25desk_espn.skp_1
2863241   2875696  1.00435   top25desk_google_com_calendar_.skp_1
7170086   7208447  1.00535   top25desk_booking_com.skp_1
7356109   7417776  1.00838   top25desk_pinterest.skp_1
5265591   5340392  1.01421   top25desk_weather_com.skp_1
5675244   5774144  1.01743   top25desk_sports_yahoo_com_.skp_1
1048531   1067663  1.01825   top25desk_games_yahoo_com.skp_1
2075501   2115131  1.01909   top25desk_amazon_com.skp_1
4262170   4370441  1.0254    top25desk_news_yahoo_com.skp_1
3789319   3897996  1.02868   top25desk_docs___1_open_documen.skp_1
919336    949979   1.03333   top25desk_wikipedia__1_tab_.skp_1
4274454   4489369  1.05028   top25desk_mail_google_com_mail_.skp_1
4149326   4376556  1.05476   top25desk_linkedin.skp_1

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2134893002
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/2134893002
2016-07-21 13:22:04 -07:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Remove unnecessary getColorSpace() API from SkCodec 2016-07-21 11:57:49 -07:00
bin bin/fetch-skps: print instruction on error 2016-04-26 12:38:47 -07:00
build_overrides GN 2016-06-23 10:29:30 -07:00
cmake Delete the legacy SVG parser 2016-07-19 06:12:54 -07:00
debugger Fix old debugger 2016-04-29 14:02:18 -07:00
dm Remove unnecessary getColorSpace() API from SkCodec 2016-07-21 11:57:49 -07:00
example Lots of progress on switching to SkColorSpace rather than SkColorProfileType 2016-06-16 13:03:24 -07:00
experimental tools/SkShaper: SkStream->blob 2016-07-12 09:17:43 -07:00
fuzz Port FuzzPathop from chromium 2016-07-19 16:50:03 -07:00
gm Fixed GM:lightingshader2 size 2016-07-21 12:19:54 -07:00
gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
gyp Setup system in Vulkan to reuse VkDescriptorSet allocations. 2016-07-21 11:50:37 -07:00
include Retract PipelineBuilder some more 2016-07-21 12:04:08 -07:00
infra Add "skp" asset 2016-07-21 10:27:00 -07:00
platform_tools Update documents/scripts for SampleApp removal 2016-07-12 09:12:39 -07:00
resources Use hintgasp font when testing rendering. 2016-07-12 06:55:25 -07:00
samplecode Factor code to rotate a canvas about a point. 2016-07-12 15:01:19 -07:00
site docs: Add info on using blamer to the sheriffing docs. 2016-07-21 05:37:28 -07:00
src In the current code, tiling and bilerp sampling are strongly tied together. They can be separated by taking advantage of observation that translating a sample point into filter points in the bilerp stage the filter points will be at most 0.5 outside the tile. This allows simplified repositioning for the various tiling modes; clamp and mirror use min and max while repeat has max -> 0 and 0-> max. This allows bilerp to simply treat the filter points that fall off the tile. This allows tiling and bilerp sampling to be totally separate. 2016-07-21 13:22:04 -07:00
tests let line/cubic intersect at four spots 2016-07-21 12:28:04 -07:00
third_party Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
tools Remove unnecessary getColorSpace() API from SkCodec 2016-07-21 11:57:49 -07:00
.gitignore Add CIPD support for bot assets 2016-06-28 04:41:49 -07:00
.gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
AUTHORS SkPDF: Use type 2/3 shading for gradient shaders 2016-06-17 12:38:54 -07:00
BUILD.gn Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
codereview.settings Automatically add a docs preview link and NOTRY=true when there are only docs changes. 2015-02-26 10:16:13 -08:00
CONTRIBUTING Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
CQ_COMMITTERS Moved committer list to chrome-infra-auth and deleted it from the repo 2015-09-02 13:37:54 -07:00
DEPS GN: add missing .exe 2016-07-21 13:01:08 -07:00
Doxyfile Documentation: SkCanvas API 2015-05-19 10:21:29 -07:00
gyp_skia Make Win runtime DLLs writeable before overwriting 2016-03-18 08:33:38 -07:00
gyp_skia.py Roll gyp deps from 1765 to 1796. 2013-11-21 18:11:14 +00:00
LICENSE Include resources directory in google3 sync. 2015-10-20 13:00:48 -07:00
make.bat Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
make.py GYP: remove stale skia_scalar gyp variable 2015-11-10 13:25:12 -05:00
Makefile Add visualbench as valid target to Makefile 2015-12-18 08:05:06 -08:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py Specifying master names with "master." prefix is deprecated 2016-07-13 12:57:42 -07:00
public.bzl exclude test that fails on google3 asan 2016-07-19 12:27:32 -07:00
README Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
README.chromium Update README.chromium. 2015-06-11 13:19:24 -07:00
skia Basic standalone GN configs. 2016-07-21 12:25:45 -07:00
skia.gyp Fix references to https://sites.google.com/site/skiadocs/. 2015-02-03 13:12:54 -02:00
SKP_VERSION Update SKP version 2016-07-17 01:02:55 -07:00
whitespace.txt Trigger bots and upload images to Gold 2016-07-21 05:38:49 -07:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.