aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
Commit message (Collapse)AuthorAge
* Reduced skslc memory consumptionGravatar ethannicholas2016-10-27
| | | | | | | | | | | The big change here is smarter generic type handling which allows us to keep far fewer entries in the core symboltable. This also comments out a number of OpenGL builtin functions which Skia does not use and is unlikely to in the future. BUG=655673 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2442063002 Review-Url: https://codereview.chromium.org/2442063002
* Avoid separate allocation of SkImageCacheratorGravatar fmalita2016-10-27
| | | | | | | | | | Embed directly in SkImage_Generator, and add a helper to handle param validation. R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2453473004 Review-Url: https://codereview.chromium.org/2453473004
* SkTInsertionSort tweak.Gravatar Ben Wagner2016-10-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | 'Unoptomized' insertion sort swaps the 'insert' value multiple times inside the main loop before it finds its place. However, this has the advantage that if the 'insert' element is already not less than any element in the sorted partition no moves are made at all. The 'optimized' insertion sort present before this CL moves the 'insert' value into a temporary (creating a 'hole') and then moves already sorted elements until the 'insert' element finds its place. This has the disadvantage of always moving the 'insert' element out of the list and then re-inserting it, even if this was unnecessary. This CL further optimizes the insertion sort by moving the first test of the main loop to before moving the 'insert' element into the temporary. This is expected to increase the code size by a few instructions but avoids the useless non-moves. There will actually be one fewer comparison per element comsidered (the initial 'left < hole' predicate is always true when entering the inner loop). GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4022 Change-Id: I33158b7781e4dbec1f1b76c0bf43ebe169075733 Reviewed-on: https://skia-review.googlesource.com/4022 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Ben Wagner <bungeman@google.com>
* Speculative fix for flaky webp encode/decode on Nexus 5Gravatar Matt Sarett2016-10-26
| | | | | | | | | | | | | | | | | | | I'm not really expecting this to work anymore... The docs don't say anything about the rgb pointer needing to stay valid, and it looks like we are done with it after the call to import. Still, worth a try I think. BUG=skia:5876 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4024 Change-Id: I6e65ef96a2b661b01eb92bedab0acd73ed4f6218 Reviewed-on: https://skia-review.googlesource.com/4024 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
* SkRasterPipelineBlitter simplificationsGravatar Mike Klein2016-10-26
| | | | | | | | | | | | | | | | | | | | | The main idea here is to simplify, mainly to reduce the number of SkRasterPipeline objects the blitter holds. - Use SkBlendMode instead of SkXfermode, just store SkBlendMode. - Fuse the shader and color filter together into one SkRasterPipeline during blitter creation. - I noticed all calls to append_load_d() and append_store() now have the same ctx argument, so I folded that through. I'll be following up with more of this sort of refactoring... I think I can fold everything into a single SkRasterPipeline during blitter creation now, but I'll want to make sure I've got my ducks in a row for how that works with pipeline strength reduction (like skipping dst loads when drawing in Src mode). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4021 Change-Id: I88252ab8ad16f102c71bad871f8b6aec2fc1f226 Reviewed-on: https://skia-review.googlesource.com/4021 Reviewed-by: Herb Derby <herb@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Write transparent pixels more often (SkGifCodec)Gravatar scroggo2016-10-26
| | | | | | | | | | | | | | | | | | Writing transparent pixels is faster than the alternative, and we can skip clearing the frame to transparent. We'll still clear if the image is incomplete. I ran ./out/Release/nanobench --images <images> --samples 100 --sourceType image --simpleCodec -v over the GIFs we have on our bots, and found an average ~13% speedup. Raw data is on sheet 2 of https://docs.google.com/spreadsheets/d/19V-t9BfbFw5eiwBTKA1qOBkZbchjlTC5EIz6HFy-6RI/ (the sheet is named WriteTransparentPixels). GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2436183002 Review-Url: https://codereview.chromium.org/2436183002
* Move when swapping, if possible.Gravatar bungeman2016-10-26
| | | | | | | | | | | | | This change was avoided in the past because vc++ 2013 (12.0) did not properly create default move constructors and move assignment operators. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2454763002 TBR=reed Verbal lgtm Review-Url: https://codereview.chromium.org/2454763002
* Convert SkRasterPipeline loads and stores to indirect.Gravatar Mike Klein2016-10-26
| | | | | | | | | | | | | | | This allows us to change the underlying pointer without rebuilding the pipeline, e.g. when moving the blitter from scanline to scanline. The extra overhead when not needed is measurable but small, <2%. We can always add back direct stages later for cases where we know the context pointer will not change. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3943 Change-Id: I827d7e6e4e67d02dd2802610f898f98c5f36f8cb Reviewed-on: https://skia-review.googlesource.com/3943 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Create GrTextureOpList to support deferred copy batches for texturesGravatar Brian Osman2016-10-26
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3967 Change-Id: I63b926f63294795f999a130c0ceead87fbaf978d Reviewed-on: https://skia-review.googlesource.com/3967 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Add disableStencil method to GrGLGpuGravatar csmartdalton2016-10-26
| | | | | | | | | | | | Most the calls to flushStencil were just trying to disable it. This change cleans up that code so it can just call "disableStencil" instead of having to muck with GrStencilSettings. It should also make those calls slightly faster. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2453793002 Review-Url: https://codereview.chromium.org/2453793002
* Turn on -Wrange-loop-analysis.Gravatar Mike Klein2016-10-26
| | | | | | | | | | | | | | -Wrange-loop-analysis triggers when we use a new-style for loop in a way that appears to unintentionally call a copy constructor on each non-trivial loop element instead of operating on them by reference. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4000 Change-Id: If9e1b7fcc1f2789ae03c41c17abb17e60d564a8b Reviewed-on: https://skia-review.googlesource.com/4000 Reviewed-by: Ethan Nicholas <ethannicholas@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Revert of Generate Signed Distance Field directly from vector path (patchset ↵Gravatar bsalomon2016-10-26
| | | | | | | | | | | | | | | | | | | | | | | | | #19 id:360001 of https://codereview.chromium.org/1643143002/ ) Reason for revert: Chrome crash Original issue's description: > Generate Signed Distance Field directly from vector path > > Add SkGenerateDistanceFieldFromPath API to generate signed distance field directly from SkPath. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1643143002 > > Committed: https://skia.googlesource.com/skia/+/4de97a64e8829323a7070b623411d9f9ddb0cd0f > Committed: https://skia.googlesource.com/skia/+/e8f0a7b986f1e5583c9bc162efcdd92fd6430549 > Committed: https://skia.googlesource.com/skia/+/67c7c81a82b6351e9fbbf235084d7120162d9268 TBR=jvanverth@google.com,mtklein@google.com,wasim.abbas@arm.com,caryclark@google.com,reed@google.com,joel.liang@arm.com # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=skia: Review-Url: https://codereview.chromium.org/2447403002
* Fix some Windows warningsGravatar Jim Van Verth2016-10-26
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3980 Change-Id: Icfc5dfb985b966c625d9bc81f61719ac5549085e Reviewed-on: https://skia-review.googlesource.com/3980 Reviewed-by: Matt Sarett <msarett@google.com> Commit-Queue: Jim Van Verth <jvanverth@google.com>
* Add GrOpList and rename GrDrawTarget to GrRenderTargetOpListGravatar Robert Phillips2016-10-26
| | | | | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3910 Change-Id: I026aa26ecc61a0d002e98892dca728536259e8b1 Reviewed-on: https://skia-review.googlesource.com/3910 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* GrConstColorProcessor uses 4f colors in the destination spaceGravatar Brian Osman2016-10-26
| | | | | | | | | | | | | | | | | | | | Many places that construct one are explicitly specifying opaque white or transparent black, which we can assume (based on the semantics of the operation) should remain (0,0,0,0) or (1,1,1,1), so that's simple. In other cases, we convert our source color to destination space. One wrinkle is tht SkColorFilter now needs to know the destination color space, due to SkModeColorFilter. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3903 Change-Id: I4969c0260588f4021300733f601b47dc606adf79 Reviewed-on: https://skia-review.googlesource.com/3903 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Remove SK_IGNORE_GL_TEXTURE_TARGET.Gravatar Ben Wagner2016-10-26
| | | | | | | | | | | This code was added with "Use a struct for client GL texture handles" https://codereview.chromium.org/1429863009. This define no longer appears to be set anywhere, so it and the code it guards can be removed. Change-Id: I80bb2a77b1f076143851c1d112937221eff2111a Reviewed-on: https://skia-review.googlesource.com/3902 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
* SkGifCodec: do not write off the end of memory when repeatCount > 1Gravatar Matt Sarett2016-10-26
| | | | | | | | | | | BUG=skia:5887 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3940 Change-Id: I9e3ed6153a73277896ac067ef73918a41a0546b8 Reviewed-on: https://skia-review.googlesource.com/3940 Reviewed-by: Leon Scroggins <scroggo@google.com> Commit-Queue: Matt Sarett <msarett@google.com>
* GIF: Fill the frame if we have a dummy color tableGravatar scroggo2016-10-25
| | | | | | | | | | | | Since we will not draw anything later, we need to fill the frame with the fill color. NOTREECHECKS=true BUG=skia:5883 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2450943002 Review-Url: https://codereview.chromium.org/2450943002
* SK_FIX_BUILDGravatar scroggo2016-10-25
| | | | | | | | | NOTRY=true NOTREECHECKS=true TBR=mtklein@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2447223002 Review-Url: https://codereview.chromium.org/2447223002
* Always use a color table with 256 colorsGravatar scroggo2016-10-25
| | | | | | | | | | | | | | | | | | Speculative fix for skbug.com/5883 We are hitting an assert (which I have not been able to repro - still need to get the skp that triggers it) because we are trying to read beyond the end of the color table. We use 8-bit indices, so 256 should be enough to prevent going beyond the end. There is only one case when we use a smaller color table - when it is a dummy. Make the dummy full size. NOTREECHECKS=true BUG=skia:5883 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2452673002 Review-Url: https://codereview.chromium.org/2452673002
* Fix more namespace conflicts in SkGifImageReaderGravatar scroggo2016-10-25
| | | | | | | | | | To fix Google3 TBR=benjaminwagner@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2450753003 NOTREECHECKS=true Review-Url: https://codereview.chromium.org/2450753003
* SkRasterPipeline::compile().Gravatar Mike Klein2016-10-25
| | | | | | | | | | | I'm not yet caching these in the blitter, and speed is essentially unchanged in the bench where I am now building and compiling the pipeline only once. This may not be able to stay a simple std::function after I figure out caching, but for now it's a nice fit. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3911 Change-Id: I9545af589f73baf9f17cb4e6ace9a814c2478fe9 Reviewed-on: https://skia-review.googlesource.com/3911 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* Move SkRasterPipeline further into SkOpts.Gravatar Mike Klein2016-10-25
| | | | | | | | | | | | | | | | | | The portable code now becomes entirely focused on enum+ptr descriptions, leaving the concrete implementation of the pipeline to SkOpts::run_pipeline(). As implemented, the concrete implementation is basically the same, with a little more type safety. Speed is essentially unchanged on my laptop, and that's having run_pipeline() rebuild its concrete state every call. There's room for improvement there if we split this into a compile_pipeline() / run_pipeline() sort of thing, which is my next planned CL. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3920 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Change-Id: Ie4c554f51040426de7c5c144afa5d9d9d8938012 Reviewed-on: https://skia-review.googlesource.com/3920 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* fix fuzzGravatar caryclark2016-10-25
| | | | | | | | | | Abort early if fuzz data breaks intersection. R=kjlubick@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2444333002 Review-Url: https://codereview.chromium.org/2444333002
* remove discardablepixelrefGravatar Mike Reed2016-10-25
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3883 Change-Id: Ica284be78563a4ccd6e0cb07404064fb5511ba57 Reviewed-on: https://skia-review.googlesource.com/3883 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org>
* Generate Signed Distance Field directly from vector pathGravatar joel.liang2016-10-25
| | | | | | | | | | | Add SkGenerateDistanceFieldFromPath API to generate signed distance field directly from SkPath. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1643143002 Committed: https://skia.googlesource.com/skia/+/4de97a64e8829323a7070b623411d9f9ddb0cd0f Committed: https://skia.googlesource.com/skia/+/e8f0a7b986f1e5583c9bc162efcdd92fd6430549 Review-Url: https://codereview.chromium.org/1643143002
* Help msvs compile SkColorSpaceXform fasterGravatar Matt Sarett2016-10-24
| | | | | | | | | | | | | | Allowing MSVS to choose to not inline color_xform_RGBA will prevent the complexity from exploding. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3884 Change-Id: I31ab0754c6cc375d6d0e71ceb16afef1927bb4e3 Reviewed-on: https://skia-review.googlesource.com/3884 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Matt Sarett <msarett@google.com>
* Rename GIFImageReader to SkGifImageReaderGravatar scroggo2016-10-24
| | | | | | | | The former could violate One Definition Rule in Google3, since other projects that are based on Chrome/webkit also have GIFImageReader. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2445653004 Review-Url: https://codereview.chromium.org/2445653004
* Use SK_ALWAYS_INLINE in SkColorSpaceXformGravatar Matt Sarett2016-10-24
| | | | | | | | | | | | | | | | | | | Two reasons for this: (1) We care about the performance of this code, and Windows isn't very good at inlining. Let's make sure we isntruct the compiler to inline. (2) Since landing uses of this in Chrome, we're seeing flaky LayoutTests that appear to be timing related. I'm (very optimistically) hoping that this will help. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3744 Change-Id: Ibb6d9c4252c0b8ce62203fe65c7dd296248982c8 Reviewed-on: https://skia-review.googlesource.com/3744 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Refactored SkColorSpace_A2B to allow arbitrary ordering of elementsGravatar raftias2016-10-24
| | | | | | | | | | | | | | | This is essential for representing non-lutAtoBType A2B tags such as lut16Type, lut8Type, mpet. Parsing of A2B0 tags was also moved ahead of the TRC/XYZ-matrix parsing, as profiles examined with both tags either had the TRC/XYZ tags as a fall-back or were incorrectly displayed if only the TRC/XYZ tags were used. This was submitted alone to reduce CL size. Tests that will use these changes will be introduced in the subsequent CLs that add on lut8/16Type A2B0 parsing. We already have lut16Type test images and these have been tested locally, but require additional code not submitted yet for lut16Type ICC profile parsing and A2B colorspace xforms. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2444553002 Review-Url: https://codereview.chromium.org/2444553002
* SkShader* refAs... to sk_sp<SkShader> makeAs...Gravatar Ben Wagner2016-10-24
| | | | | | | | | | | There appear to be no existing overriders of the refAs.. method outside Skia. Change-Id: Iab174e83023093b4d7fc0bd8907666b66ddb1eea Reviewed-on: https://skia-review.googlesource.com/3746 Reviewed-by: Ben Wagner <benjaminwagner@google.com> Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Ben Wagner <bungeman@google.com>
* Add support for multiple frames in SkCodecGravatar scroggo2016-10-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add an interface to decode frames beyond the first in SkCodec, and add an implementation for SkGifCodec. Add getFrameData to SkCodec. This method reads ahead in the stream to return a vector containing meta data about each frame in the image. This is not required in order to decode frames beyond the first, but it allows a client to learn extra information: - how long the frame should be displayed - whether a frame should be blended with a prior frame, allowing the client to provide the prior frame to speed up decoding Add a new fields to SkCodec::Options: - fFrameIndex - fHasPriorFrame The API is designed so that SkCodec never caches frames. If a client wants a frame beyond the first, they specify the frame in Options.fFrameIndex. If the client does not have the frame's required frame (the frame that this frame must be blended on top of) cached, they pass false for Options.fHasPriorFrame. Unless the frame is independent, the codec will then recursively decode all frames necessary to decode fFrameIndex. If the client has the required frame cached, they can put it in the dst they pass to the codec, and the codec will only draw fFrameIndex onto it. Replace SkGifCodec's scanline decoding support with progressive decoding, and update the tests accordingly. Implement new APIs in SkGifCodec. Instead of using gif_lib, use GIFImageReader, imported from Chromium (along with its copyright headers) with the following changes: - SkGifCodec is now the client - Replace blink types - Combine GIFColorMap::buildTable and ::getTable into a method that creates and returns an SkColorTable - Input comes from an SkStream, instead of a SegmentReader. Add SkStreamBuffer, which buffers the (potentially partial) stream in order to decode progressively. (FIXME: This requires copying data that previously was read directly from the SegmentReader. Does this hurt performance? If so, can we fix it?) - Remove UMA code - Instead of reporting screen width and height to the client, allow the client to query for it - Fail earlier if the first frame AND screen have size of zero - Compute required previous frame when adding a new one - Move GIFParseQuery from GIFImageDecoder to GIFImageReader - Allow parsing up to a specific frame (to skip parsing the rest of the stream if a client only wants the first frame) - Compute whether the first frame has alpha and supports index 8, to create the SkImageInfo. This happens before reporting that the size has been decoded. Add GIFImageDecoder::haveDecodedRow to SkGifCodec, imported from Chromium (along with its copyright header), with the following changes: - Add support for sampling - Use the swizzler - Keep track of the rows decoded - Do *not* keep track of whether we've seen alpha Remove SkCodec::kOutOfOrder_SkScanlineOrder, which was only used by GIF scanline decoding. Call onRewind even if there is no stream (SkGifCodec needs to clear its decoded state so it will decode from the beginning). Add a method to SkSwizzler to access the offset into the dst, taking subsetting into account. Add a GM that animates a GIF. Add tests for the new APIs. *** Behavior changes: * Previously, we reported that an image with a subset frame and no transparent index was opaque and used the background index (if present) to fill the background. This is necessary in order to support index 8, but it does not match viewers/browsers I have seen. Examples: - Chromium and Gimp render the background transparent - Firefox, Safari, Linux Image Viewer, Safari Preview clip to the frame (for a single frame image) This CL matches Chromium's behavior and renders the background transparent. This allows us to have consistent behavior across products and simplifies the code (relative to what we would have to do to continue the old behavior on Android). It also means that we will no longer support index 8 for some GIFs. * Stop checking for GIFSTAMP - all GIFs should be either 89a or 87a. This matches Chromium. I suspect that bugs would have been reported if valid GIFs started with "GIFVER" instead of "GIF89a" or "GIF87a" (but did not decode in Chromium). *** Future work not included in this CL: * Move some checks out of haveDecodedRow, since they are the same for the entire frame e.g. - intersecting the frameRect with the full image size - whether there is a color table * Change when we write transparent pixels - In some cases, Chromium deemed this unnecessary, but I suspect it is slower than the fallback case. There will continue to be cases where we should *not* write them, but for e.g. the first pass where we have already cleared to transparent (which we may also be able to skip) writing the transparent pixels will not make anything incorrect. * Report color type and alpha type per frame - Depending on alpha values, disposal methods, frame rects, etc, subsequent frames may have different properties than the first. * Skip copies of the encoded data - We copy the encoded data in case the stream is one that cannot be rewound, so we can parse and then decode (possibly not immediately). For some input streams, this is unnecessary. - I was concerned this cause a performance regression, but on average the new code is faster than the old for the images I tested [1]. - It may cause a performance regression for Chromium, though, where we can always move back in the stream, so this should be addressed. Design doc: https://docs.google.com/a/google.com/document/d/12Qhf9T92MWfdWujQwCIjhCO3sw6pTJB5pJBwDM1T7Kc/ [1] https://docs.google.com/a/google.com/spreadsheets/d/19V-t9BfbFw5eiwBTKA1qOBkZbchjlTC5EIz6HFy-6RI/ GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=2045293002 Review-Url: https://codereview.chromium.org/2045293002
* fix a few more fuzzesGravatar caryclark2016-10-24
| | | | | | | | | | | | Minor changes to fix some fuzz conditions. A couple of ignored asserts when the data is fuzzy, and one fail condition when the underlying data has already been deleted. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2443243002 Review-Url: https://codereview.chromium.org/2443243002
* nc seal breaks simplifyGravatar caryclark2016-10-24
| | | | | | | | | | | | | | | This test has nearly coincident lines that are missorted. The underlying bug is caused when a pair of curves are coincident when reduced to line segments, but the end points aren't detected. The error was generated by running nanobench over all svg sample data with the distance field patch installed. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2440043003 Review-Url: https://codereview.chromium.org/2440043003
* Rename all color space factories from New* to Make*Gravatar Brian Osman2016-10-24
| | | | | | | | | | | | | | | | | | | | | Matches our naming convention for all other types - factories that return sk_sp (or any type that intelligently manages its own lifetime) are named Make. Previous factories are still around, assuming SK_SUPPORT_LEGACY_COLOR_SPACE_FACTORIES is defined. Enable that define for Android, etc. See also: https://codereview.chromium.org/2442053002/ BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3822 Change-Id: Iaea9376490736b494e8ffc820831f052bbe1478d Reviewed-on: https://skia-review.googlesource.com/3822 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Reed <reed@google.com>
* formalize host debuggingGravatar caryclark2016-10-24
| | | | | | | | | | | | | | Pathops writes files, anticipating upcoming crashes, and verifies the results against regions. Formalize these debugging methods so that they are more easily triggered by hosts outside of skia unit tests. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2441763003 Review-Url: https://codereview.chromium.org/2441763003
* fix one more fuzzerGravatar caryclark2016-10-24
| | | | | | | TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2438333002 Review-Url: https://codereview.chromium.org/2438333002
* Fall back from analytic to sampling earlierGravatar liyuqian2016-10-21
| | | | | | | | | | This magically fixes some strange js unit tests in Chrome. Those tests only fail in virtual/gpu which somehow interacts with my cpu rasterizer? BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2439973004 Review-Url: https://chromiumcodereview.appspot.com/2439973004
* use conservative-clip-bit in pipecanvasGravatar Mike Reed2016-10-21
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3821 Change-Id: I18bbcf0fa715c8136355812997766b0f7d8412b6 Reviewed-on: https://skia-review.googlesource.com/3821 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Reed <reed@google.com>
* New helpers for converting SkColor to GrColor4fGravatar Brian Osman2016-10-21
| | | | | | | | | | | | | | These versions will eliminate lots of copy-pasting in various fragment processor creation code. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3787 Change-Id: I3ada2d4866e92cfc0507beeea11e05790d73757d Reviewed-on: https://skia-review.googlesource.com/3787 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
* Another forgotten forceRLEGravatar liyuqian2016-10-21
| | | | | | | | BUG=skia: TBR=reed@google.com,caryclark@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2438163003 Review-Url: https://chromiumcodereview.appspot.com/2438163003
* Fix for Chrome MSANGravatar Matt Sarett2016-10-21
| | | | | | | | | | | | | | | | | | I believe that the complaints are occurring because the |a| vector might be uninitialized where it is used here. It doesn't actually matter because we won't use or store that value - it's just a placeholder. But we need to make the bot happy. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3800 Change-Id: I1891da9d1d2708008e4606daebf9bb6f96e92fc0 Reviewed-on: https://skia-review.googlesource.com/3800 Commit-Queue: Matt Sarett <msarett@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* Remove SkRRectsGaussianEdgeShaderGravatar Robert Phillips2016-10-21
| | | | | | | | | | | This class is no longer used. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3734 Change-Id: I16634760df6b31c7e97c893b7e2b982cd7b1d1fd Reviewed-on: https://skia-review.googlesource.com/3734 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* [Sk4fGradient] Use infinity floats for clamp-mode extreme positionsGravatar fmalita2016-10-21
| | | | | | | | | | | | | | | In clamp mode, we use a couple of synthetic edges that are supposed to extend to +/- infinity (-inf .. P0 and Pn .. inf). Currently we use SK_ScalarMin/Max, but these can be overrun with large/malicious inputs. Use SK_ScalarInfinity/SK_ScalarNegativeInfinity instead, and tweak compute_interval_props() to handle inf values gracefully. BUG=skia:5835 R=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2441733002 Review-Url: https://chromiumcodereview.appspot.com/2441733002
* Zero tail stack buffers.Gravatar Mike Klein2016-10-20
| | | | | | | | | | | | | | | | MSAN and the no-SIMD bots have noticed the top lanes of the tail vectors are not initialized. As they were written it was faster to leave them unintialized, but as re-written here it's equal speed and now safe. CQ_INCLUDE_TRYBOTS=master.client.skia:Perf-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN-Trybot,Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3790 Change-Id: Icd41ba14ae6baf9947eb361a366f1ce19ad8aa67 Reviewed-on: https://skia-review.googlesource.com/3790 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
* SkRasterPipeline_opts: split next() into next_body() and next_tail().Gravatar Mike Klein2016-10-20
| | | | | | | | | | | | | | This may work around an Chrome/MSVC/PGO compiler crasher. Even if not, it's harmless for performance, and arguably more readable. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3789 Change-Id: I0bf23f65d7832b9f43e275f85e7985fcd6b13b9f Reviewed-on: https://skia-review.googlesource.com/3789 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org>
* SkScalerContext to use smart pointers.Gravatar bungeman2016-10-20
| | | | | | | | | CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-ASAN-Trybot;master.client.skia:Test-Ubuntu-Clang-GCE-CPU-AVX2-x86_64-Debug-MSAN-Trybot Change-Id: I27a714388b8ded7dfc968e322b0a587205f575f1 Reviewed-on: https://skia-review.googlesource.com/3731 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Ben Wagner <bungeman@google.com>
* SkRasterPipeline: memcpy-free tail code.Gravatar Mike Klein2016-10-20
| | | | | | | | | | | | | We don't call the tail code nearly as often as the body code, but when we do and call memcpy(), we first have to vzeroupper back into the non-AVX world. That does seem to slow things down considerably. You wouldn't think it, but this gives a nice speed up (tested on Windows). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3783 Change-Id: I40cbe1e529f2431825edec7638265601b64e7ec5 Reviewed-on: https://skia-review.googlesource.com/3783 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
* remove 4 legacy flags (clients already updated)Gravatar Mike Reed2016-10-20
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3785 Change-Id: I187e50e09ed7a3316719fae51af770259928fdf9 Reviewed-on: https://skia-review.googlesource.com/3785 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Mike Reed <reed@google.com>
* Quickly fix the forgotten forceRLEGravatar liyuqian2016-10-20
| | | | | | | | BUG=skia: TBR=reed@google.com,caryclark@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2436593004 Review-Url: https://chromiumcodereview.appspot.com/2436593004