aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench
Commit message (Collapse)AuthorAge
* Add BGRA as input format to SkColorSpaceXformGravatar msarett2016-09-22
| | | | | | | | | | This is immediately useful for webp and I think it's a fair guess that BGRA src formats are not uncommon. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2353363008 Review-Url: https://codereview.chromium.org/2353363008
* Make SkColorSpaceXform::New() take bare ptrsGravatar msarett2016-09-22
| | | | | | | | | | There's no need to take sk_sp if we're not going to ref the ptr. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2360863003 Review-Url: https://codereview.chromium.org/2360863003
* Add a transient image filter cache to SkImage::makeWithFilter & PDFGravatar brianosman2016-09-21
| | | | | | | | | | | Added a bench for makeWithFilter (~23 ms -> ~6 ms median locally). Also fixed indentation. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2360663002 Review-Url: https://codereview.chromium.org/2360663002
* abstract name of clipping ops, to transtion to a more restricted setGravatar reed2016-09-20
| | | | | | | | | | | SkRegion::Op --> SkCanvas::ClipOp (alias) --> SkClipOp pre-CL needed in chrome : https://codereview.chromium.org/2355583002/ BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2355483002 Review-Url: https://codereview.chromium.org/2355483002
* Support Float32 output from SkColorSpaceXformGravatar msarett2016-09-16
| | | | | | | | | | | | | | | * Adds Float32 support to SkColorSpaceXform * Changes API to allows clients to ask for F32, updates clients to new API * Adds Sk4f_load4 and Sk4f_store4 to SkNx * Make use of new xform in SkGr.cpp BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003 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/+/43d6651111374b5d1e4ddd9030dcf079b448ec47 Review-Url: https://codereview.chromium.org/2339233003
* Revert of Support Float32 output from SkColorSpaceXform (patchset #7 ↵Gravatar msarett2016-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:140001 of https://codereview.chromium.org/2339233003/ ) Reason for revert: Hitting an assert Original issue's description: > Support Float32 output from SkColorSpaceXform > > * Adds Float32 support to SkColorSpaceXform > * Changes API to allows clients to ask for F32, updates clients to > new API > * Adds Sk4f_load4 and Sk4f_store4 to SkNx > * Make use of new xform in SkGr.cpp > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003 > 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/+/43d6651111374b5d1e4ddd9030dcf079b448ec47 TBR=brianosman@google.com,mtklein@google.com,scroggo@google.com,mtklein@chromium.org,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/2347473007
* Support Float32 output from SkColorSpaceXformGravatar msarett2016-09-16
| | | | | | | | | | | | | | * Adds Float32 support to SkColorSpaceXform * Changes API to allows clients to ask for F32, updates clients to new API * Adds Sk4f_load4 and Sk4f_store4 to SkNx * Make use of new xform in SkGr.cpp BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339233003 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/2339233003
* SkFontData to use smart pointers.Gravatar bungeman2016-09-16
| | | | | | | | | | | | | | | | | 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
* Revert of SkFontData to use smart pointers. (patchset #3 id:40001 of ↵Gravatar bungeman2016-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* SkFontData to use smart pointers.Gravatar bungeman2016-09-15
| | | | | | | | | | | | | | | | 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
* More NoGPU compile fixesGravatar brianosman2016-09-15
| | | | | | | | | I can now build 'most' with skia_gpu=0 on my machine. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2340133003 Review-Url: https://codereview.chromium.org/2340133003
* [SVGDom] Expose intrinsic size infoGravatar fmalita2016-09-14
| | | | | | | | | | | | | | * 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
* Fix SVG flag iOS linkingGravatar fmalita2016-09-14
| | | | | | | TBR=mtklein@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2344533002 Review-Url: https://codereview.chromium.org/2344533002
* Nanobench SVG supportGravatar fmalita2016-09-14
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339743002 Review-Url: https://codereview.chromium.org/2339743002
* Reduce overhead for linear color xformsGravatar msarett2016-09-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to build src and dst transfer fn tables every time a new xform was created with linear src and dst. Now we don't compute them because we don't need them. This will make SkColorSpaceXform a far better option for any xforms with float or half-float inputs or outputs, particularly on a small number of pixels. This CL also moves SkColorSpaceXform closer to what I anticipate will be the eventual 'API design'. I think apply() will want to take a SrcColorType enum (not created yet because it's not necessary yet) and a DstColorType enum (still using SkColorType because there's not yet a reason not to). Performance changes: toSRGB 341us -> 366us to2Dot2 404us -> 403us toF16 318us -> 304us There's no reason for toSRGB or to2Dot2 to change. The refactor seems to have caused the compiler to order the instructions a little differently... This is something to come back to if we need to squeeze more performance out of sRGB. For now, let's not be held up by something we don't control. F16 likely improves because we are no longer (unnecessarily) building the linear tables. Code size gets a little bigger. Measuring SkColorSpaceXform size as a percentage of src/ size, we go from 0.8% to 1.4%. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2335723002 Review-Url: https://codereview.chromium.org/2335723002
* No \n in bench names.Gravatar jcgregorio2016-09-13
| | | | | | | | BUG=skia: R=mtklein GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2332153003 Review-Url: https://codereview.chromium.org/2332153003
* Add ContextOptions field to SkCommandLineConfigGpuGravatar csmartdalton2016-09-13
| | | | | | | | | Reduces duplicate code by computing the ContextOptions in one spot. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2337163002 Review-Url: https://codereview.chromium.org/2337163002
* Use sk_sp text blob APIsGravatar fmalita2016-09-13
| | | | | | | | | | | SkTextBlobBuilder::build() -> make() SkAutoTUnref<const SkTextBlob> -> sk_sp<SkTextBlob> drawTextBlob(const SkTextBlob*) -> drawTextBlob(const sk_sp<SkTextBlob>&) BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2335493005 Review-Url: https://codereview.chromium.org/2335493005
* change SkStreams to work with sk_sp<SkData> instead of SkData*Gravatar reed2016-09-12
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2333713002 Review-Url: https://codereview.chromium.org/2333713002
* Benchmarks for testing changes to GrResourceCache replacement policy when ↵Gravatar bsalomon2016-09-08
| | | | | | | | over budget. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2317263002 Review-Url: https://codereview.chromium.org/2317263002
* Checking for valid colorType, alphaType, colorSpace in SkCodecGravatar msarett2016-09-08
| | | | | | | | | | | | | | | | | * 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
* Add option to skip rects to drawImageLattice()Gravatar msarett2016-09-02
| | | | | | | | | | | | | | | | HWUI skips transparent rects when drawing. When skia draws using bilerp, we will blend transparent rects with neighboring rects and might draw a bit of a smudge. This CL adds the option to skip rects, allowing us to have compatible behavior with the framework. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2305433002 Review-Url: https://codereview.chromium.org/2305433002
* Some tests around surface creation and snapshotting with color spaceGravatar brianosman2016-08-30
| | | | | | | | | | | | Verify the rules that we're converging on for surfaces: - For 8888, we only support sRGB-like gamma, or no color space at all. - For F16, we require a color space, with linear gamma. - For all other formats, we do not support color spaces. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2270823002 Review-Url: https://codereview.chromium.org/2270823002
* benchmarks: Avoid brackets and commas in test names.Gravatar jcgregorio2016-08-29
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2295483002 Review-Url: https://codereview.chromium.org/2295483002
* Batched implementation of drawLattice() for GPUGravatar msarett2016-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bechmarks (Nexus 6P): Src=100x100, Dst=250x250, NumRects=9 Android 77.7us Skia (without patch) 57.2us Skia (with patch) 30.9us Src=100x100, Dst=500x500, NumRects=9 Android 77.0us Skia (without patch) 56.9us Skia (with patch) 31.8us Src=100x100, Dst=1000x1000, NumRects=9 Android 180us Skia (without patch) 96.8us Skia (with patch) 70.5us Src=100x100, Dst=250x250, NumRects=15 Android 208us Skia (without patch) 155us Skia (with patch) 38.2us Src=100x100, Dst=500x500, NumRects=15 Android 207us Skia (without patch) 152us Skia (with patch) 38.4us Src=100x100, Dst=1000x1000, NumRects=15 Android 233us Skia (without patch) 156us Skia (with patch) 99.9us BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255963002 Committed: https://skia.googlesource.com/skia/+/93242c4ae50dfcc0d922cdb3ba80bbc7b4bbe93d Review-Url: https://codereview.chromium.org/2255963002
* Revert of Batched implementation of drawLattice() for GPU (patchset #7 ↵Gravatar msarett2016-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:180001 of https://codereview.chromium.org/2255963002/ ) Reason for revert: Things drawing weird. Original issue's description: > Batched implementation of drawLattice() for GPU > > Bechmarks (Nexus 6P): > > Src=100x100, Dst=250x250, NumRects=9 > Android 77.7us > Skia (without patch) 57.2us > Skia (with patch) 34.7us > > Src=100x100, Dst=500x500, NumRects=9 > Android 77.0us > Skia (without patch) 56.9us > Skia (with patch) 44.5us > > Src=100x100, Dst=1000x1000, NumRects=9 > Android 180us > Skia (without patch) 96.8us > Skia (with patch) 70.5us > > Src=100x100, Dst=250x250, NumRects=15 > Android 208us > Skia (without patch) 155us > Skia (with patch) 55.9us > > Src=100x100, Dst=500x500, NumRects=15 > Android 207us > Skia (without patch) 152us > Skia (with patch) 63.0us > > Src=100x100, Dst=1000x1000, NumRects=15 > Android 233us > Skia (without patch) 156us > Skia (with patch) 99.9us > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255963002 > > Committed: https://skia.googlesource.com/skia/+/93242c4ae50dfcc0d922cdb3ba80bbc7b4bbe93d TBR=bsalomon@google.com,reed@google.com,djsollen@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/2255683004
* SkPDF: in-place font subsettingGravatar halcanary2016-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Motivation: gross code simplification, also no bitset lookups at draw time. SkPDFFont owns its glyph useage bitset. SkPDFSubstituteMap goes away. SkPDFObject interface is simplified. SkPDFDocument tracks font usage (as hash set), not glyph usage. SkPDFFont gets a simpler constructor. SkPDFFont has first and last glyph set in constructor, not adjusted later. SkPDFFont implementations are simplified. SkPDFGlyphSet is replaced with simple SkBitSet. SkPDFFont sizes its SkBitSets based on glyph count. SkPDFGlyphSetMap goes away. SkBitSet is now non-copyable. SkBitSet now how utility methods to match old SkPDFGlyphSet. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253283004 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Release-GDI-Trybot,Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug-GDI-Trybot Review-Url: https://codereview.chromium.org/2253283004
* Batched implementation of drawLattice() for GPUGravatar msarett2016-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bechmarks (Nexus 6P): Src=100x100, Dst=250x250, NumRects=9 Android 77.7us Skia (without patch) 57.2us Skia (with patch) 34.7us Src=100x100, Dst=500x500, NumRects=9 Android 77.0us Skia (without patch) 56.9us Skia (with patch) 44.5us Src=100x100, Dst=1000x1000, NumRects=9 Android 180us Skia (without patch) 96.8us Skia (with patch) 70.5us Src=100x100, Dst=250x250, NumRects=15 Android 208us Skia (without patch) 155us Skia (with patch) 55.9us Src=100x100, Dst=500x500, NumRects=15 Android 207us Skia (without patch) 152us Skia (with patch) 63.0us Src=100x100, Dst=1000x1000, NumRects=15 Android 233us Skia (without patch) 156us Skia (with patch) 99.9us BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255963002 Review-Url: https://codereview.chromium.org/2255963002
* Optimize color xforms when src and dst are matchingGravatar msarett2016-08-15
| | | | | | | | | | | | | | | Useful when: (1) Client does not realize src and dst match (calls color xform anyway). (2) Client wants half floats, src and dst have matching gamuts (3) Client wants premul (done correctly in linear space), src and dst have matching gamuts. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2206403003 Review-Url: https://codereview.chromium.org/2206403003
* Optimized implementation of quickReject()Gravatar msarett2016-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Impl Overview (1) Keep the device clip bounds up to date. This requires minimal additional work in a few places throughout canvas. (2) Keep track of if the ctm isScaleTranslate. Yes, there's a function that does this, but it's slow to call. (3) Perform the src->device transform in quick reject, then check intersection/nan. Other Notes: (1) NaN and intersection checks are performed simultaneously. (2) We no longer quick reject infinity. (3) Affine and perspective are both handled in the slow case. (4) SkRasterClip::isEmpty() is handled by the intersection check. Performance on Nexus 6P: 93.2ms -> 59.8ms Overall Android Jank Tests Performance Impact: Should gain us a ms or two on some tests. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2225393002 Committed: https://skia.googlesource.com/skia/+/d22a817ff57986407facd16af36320fc86ce02da Review-Url: https://codereview.chromium.org/2225393002
* Revert of Optimized implementation of quickReject() (patchset #12 id:260001 ↵Gravatar mtklein2016-08-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of https://codereview.chromium.org/2225393002/ ) Reason for revert: New assert triggering in the Chrome roll, https://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_asan_rel_ng/builds/208750/steps/webkit_unit_tests%20%28with%20patch%29%20on%20Ubuntu-12.04/logs/FrameThrottlingTest.SynchronousLayoutInAnimationFrameCallback and breaks the SKNX_NO_SIMD bot, https://codereview.chromium.org/2236363004 Original issue's description: > Optimized implementation of quickReject() > > Impl Overview > (1) Keep the device clip bounds up to date. This > requires minimal additional work in a few places > throughout canvas. > (2) Keep track of if the ctm isScaleTranslate. Yes, > there's a function that does this, but it's slow > to call. > (3) Perform the src->device transform in quick reject, > then check intersection/nan. > > Other Notes: > (1) NaN and intersection checks are performed > simultaneously. > (2) We no longer quick reject infinity. > (3) Affine and perspective are both handled in the slow > case. > (4) SkRasterClip::isEmpty() is handled by the intersection > check. > > Performance on Nexus 6P: > 93.2ms -> 59.8ms > > Overall Android Jank Tests Performance Impact: > Should gain us a ms or two on some tests. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2225393002 > > Committed: https://skia.googlesource.com/skia/+/d22a817ff57986407facd16af36320fc86ce02da 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/2231393003
* Optimized implementation of quickReject()Gravatar msarett2016-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Impl Overview (1) Keep the device clip bounds up to date. This requires minimal additional work in a few places throughout canvas. (2) Keep track of if the ctm isScaleTranslate. Yes, there's a function that does this, but it's slow to call. (3) Perform the src->device transform in quick reject, then check intersection/nan. Other Notes: (1) NaN and intersection checks are performed simultaneously. (2) We no longer quick reject infinity. (3) Affine and perspective are both handled in the slow case. (4) SkRasterClip::isEmpty() is handled by the intersection check. Performance on Nexus 6P: 93.2ms -> 59.8ms Overall Android Jank Tests Performance Impact: Should gain us a ms or two on some tests. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2225393002 Review-Url: https://codereview.chromium.org/2225393002
* Implement GPU occluded blur mask filterGravatar robertphillips2016-08-10
| | | | | | | | 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
* In recording benches, record to and from the same format.Gravatar mtklein2016-08-10
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add time return argument to SkCurveMeasure's getPosTan, rename to getPosTanTimeGravatar hstern2016-08-10
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2229893002 Review-Url: https://codereview.chromium.org/2229893002
* Revert of Change mapRectScaleTranslate to pass args/ret by value (patchset ↵Gravatar halcanary2016-08-10
| | | | | | | | | | | | | | | | | | | | | | | | | | #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
* Change mapRectScaleTranslate to pass args/ret by valueGravatar reed2016-08-10
| | | | | | | | | This reverts commit 6092b6e0e57be20d2e1ad079c0af133d2f67bfd3. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2138943002 Review-Url: https://codereview.chromium.org/2138943002
* Add initial CurveMeasure codeGravatar hstern2016-08-08
| | | | | | | | | | | - 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
* Use sse4.2 CRC32 instructions to hash when available.Gravatar mtklein2016-08-08
| | | | | | | | | | | | 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
* update picture recording benchmarks to allow comparison with SkLiteRecorderGravatar mtklein2016-08-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* SkLite*Gravatar mtklein2016-08-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add new bench for occluded blurmaskfilter drawsGravatar robertphillips2016-08-04
| | | | | | | | | | | | w/ occluders 44/44 MB 6 497us 500us 500us 502us 0% .oOOooooOO gpu bluroccludedrrect w/o occluders 41/41 MB 5 1.08ms 1.09ms 1.12ms 1.47ms 11% .........O gpu bluroccludedrrect GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2203153002 Review-Url: https://codereview.chromium.org/2203153002
* Convert SkAutoTUnref<SkData> to sk_sp<SkData>.Gravatar bungeman2016-08-03
| | | | | | | | | With the move from SkData::NewXXX to SkData::MakeXXX most SkAutoTUnref<SkData> were changed to sk_sp<SkData>. However, there are still a few SkAutoTUnref<SkData> around, so clean them up. Review-Url: https://codereview.chromium.org/2212493002
* Perform color correction on png decodesGravatar msarett2016-08-03
| | | | | | | | 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
* Add new benchmark for testing special hard stop gradient casesGravatar fmenozzi2016-08-03
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2206713002 Review-Url: https://codereview.chromium.org/2206713002
* Move off SK_SUPPORT_LEGACY_DATA_FACTORIES.Gravatar bungeman2016-08-02
| | | | | | | 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
* Add drawImageLattice() and drawBitmapLattice() APIsGravatar msarett2016-08-02
| | | | | | | | | | | | The specified image/bitmap is divided into rects, which can be draw stretched, shrunk, or at a fixed size. Will be used by Android to draw 9patch (which are acutally N-patch) images. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1992283002 Review-Url: https://codereview.chromium.org/1992283002
* SkRasterPipeline: new APIs for fusionGravatar mtklein2016-07-29
| | | | | | | | | | | | | | | | | | | Most visibly this adds a macro SK_RASTER_STAGE that cuts down on the boilerplate of defining a raster pipeline stage function. Most interestingly, SK_RASTER_STAGE doesn't define a SkRasterPipeline::Fn, but rather a new type EasyFn. This function is always static and inlined, and the details of interacting with the SkRasterPipeline::Stage are taken care of for you: ctx is just passed as a void*, and st->next() is always called. All EasyFns have to do is take care of the meat of the work: update r,g,b, etc. and read and write from their context. The really neat new feature here is that you can either add EasyFns to a pipeline with the new append() functions, _or_ call them directly yourself. This lets you use the same set of pieces to build either a pipelined version of the function or a custom, fused version. The bench shows this off. On my desktop, the pipeline version of the bench takes about 25% more time to run than the fused one. The old approach to creating stages still works fine. I haven't updated SkXfermode.cpp or SkArithmeticMode.cpp because they seemed just as clear using Fn directly as they would have using EasyFn. If this looks okay to you I will rework the comments in SkRasterPipeline to explain SK_RASTER_STAGE and EasyFn a bit as I've done here in the CL description. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2195853002 Review-Url: https://codereview.chromium.org/2195853002
* SkPDF: PDFStream has-a not is-a PDFDictGravatar halcanary2016-07-29
| | | | | | | | | | | | | | | Motivation: SkPDFStream and SkPDFSharedStream now work the same. Also: - move SkPDFStream into SkPDFTypes (it's a fundamental PDF type). - minor refactor of SkPDFSharedStream - SkPDFSharedStream takes unique_ptr to represent ownership BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190883003 Review-Url: https://codereview.chromium.org/2190883003
* Fix various SkColorSpace bugsGravatar msarett2016-07-29
| | | | | | | | | | (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