aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
...
* Support ARB extensions for indirect drawingGravatar csmartdalton2016-06-03
| | | | | | | | | | Adds support for the ARB extensions and fixes incorrect logic that was being used on the GL version for indirect drawing. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2038743002 Review-Url: https://codereview.chromium.org/2038743002
* Add color correction benchmark - with comparison to qcmsGravatar msarett2016-06-03
| | | | | | | | | | | | | | | | --colorImages is empty by default so this won't affect the runtime of the bots. To run locally, use --colorImages <path> and --benchType skcolorcodec. Two takeaways so far: Color correction is (currently) slower than jpeg decodes. Our reference solution is slower than qcms. TBR=reed@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2035793002 Review-Url: https://codereview.chromium.org/2035793002
* Fix uses of SkImageInfo in BRD to preserve color space infoGravatar msarett2016-06-03
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2035483005 Review-Url: https://codereview.chromium.org/2035483005
* skiaserve: Add a flag to control hosted mode, i.e. when running on ↵Gravatar jcgregorio2016-06-03
| | | | | | | | | | debugger.skia.org. BUG=skia: TBR=ethannicholas@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2036173002 Review-Url: https://codereview.chromium.org/2036173002
* Add Android device type for NVIDIA ShieldGravatar borenet2016-06-03
| | | | | | | BUG=skia:5185 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2036183003 Review-Url: https://codereview.chromium.org/2036183003
* Make SkPngCodec decode progressively.Gravatar scroggo2016-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a step towards using SkCodec in Chromium, where progressive decoding is necessary. Switch from using png_read_row (which expects all the data to be available) to png_process_data, which uses callbacks when rows are available. Create a new API for SkCodec, which supports progressive decoding and scanline decoding. Future changes will switch the other clients off of startScanlineDecode and get/skip-Scanlines to the new API. Remove SkCodec::kNone_ScanlineOrder, which was only used for interlaced PNG images. In the new API, interlaced PNG fits kTopDown. Also remove updateCurrScanline(), which was only used by the old implementation for interlaced PNG. DMSrcSink: - In CodecSrc::kScanline_Mode, use the new method for scanline decoding for the supported formats (just PNG and PNG-in-ICO for now). fuzz.cpp: - Remove reference to kNone_ScanlineOrder SkCodec: - Add new APIs: - startIncrementalDecode - incrementalDecode - Remove kNone_SkScanlineOrder and updateCurrScanline() SkPngCodec: - Implement new APIs - Switch from sk_read_fn/png_read_row etc to png_process_data - Expand AutoCleanPng's role to decode the header and create the SkPngCodec - Make the interlaced PNG decoder report how many lines were initialized during an incomplete decode - Make initializeSwizzler return a bool instead of an SkCodec::Result (It only returned kSuccess or kInvalidInput anyway) SkIcoCodec: - Implement the new APIs; supported for PNG in ICO SkSampledCodec: - Call the new method for decoding scanlines, and fall back to the old method if the new version is unimplemented - Remove references to kNone_SkScanlineOrder tests/CodecPartial: - Add a test which decodes part of an image, then finishes the decode, and compares it to the straightforward method tests/CodecTest: - Add a test which decodes all scanlines using the new method - Repurpose the Codec_stripes test to decode using the new method in sections rather than all at once - In the method check(), add a parameter for whether the image supports the new method of scanline decoding, and be explicit about whether an image supports incomplete - Test incomplete PNG decodes. We should have been doing it anyway for non-interlaced (except for an image that is too small - one row), but the new method supports interlaced incomplete as well - Make test_invalid_parameters test the new method - Add a test to ensure that it's safe to fall back to scanline decoding without rewinding BUG=skia:4211 The new version was generally faster than the old version (but not significantly so). Some raw performance differences can be found at https://docs.google.com/a/google.com/spreadsheets/d/1Gis3aRCEa72qBNDRMgGDg3jD-pMgO-FXldlNF9ejo4o/ Design doc can be found at https://docs.google.com/a/google.com/document/d/11Mn8-ePDKwVEMCjs3nWwSjxcSpJ_Cu8DF57KNtUmgLM/ GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1997703003 Committed: https://skia.googlesource.com/skia/+/a4b09a117d4d1ba5dda372e6a2323e653766539e Committed: https://skia.googlesource.com/skia/+/30e78c9737ff4861dc4e3fa1e4cd010680ed6965 Review-Url: https://codereview.chromium.org/1997703003
* Check libpng directly into third_party/Gravatar scroggo2016-06-02
| | | | | | | | | | | | | | | | | | | With this change, the CMake build, which does not use DEPS to sync external projects, is able to build and use the same version of libpng that is used in other builds. This will allow all platforms (including Google3 CMake build) to test on the same version of libpng, so we do not need to make SkPngCodec support all versions of libpng. - Update CMakeLists.txt to use the checked in libpng. - Check in libpng version 1.6.22rc01 - Update README.google - Replace our old LICENSE file with the latest one from libpng GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2033063003 CQ_EXTRA_TRYBOTS=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/2033063003
* SkMultiPictureDocument & SkMultiPictureDocumentReaderGravatar halcanary2016-06-02
| | | | | | | | | | | | also, a new DM::Src. motivation: To be used to test the printing pipeline in Chromium. BUG=skia:5370 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2023593002 Review-Url: https://codereview.chromium.org/2023593002
* add MakeS32 helper to SkImageInfo, fix named-gamma constructor bugGravatar reed2016-06-02
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2035813003 Review-Url: https://codereview.chromium.org/2035813003
* Implement OpenGL backend in Android viewer appGravatar liyuqian2016-06-02
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2032623002 Review-Url: https://codereview.chromium.org/2032623002
* Fix argument parsing in android app launcher scriptGravatar brianosman2016-06-02
| | | | | | | | | | Makes the argument match the error message that gets printed (and users' expectations). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2030123002 Review-Url: https://codereview.chromium.org/2030123002
* Tessellator: stop copying vertices into Polys and Monotones.Gravatar senorblanco2016-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The vertices which are produced by stage 5 of the tesselator are copied into the Polys and MonotonePolys it produces. This is necessary because each vertex may have an arbitrary valence, since it may participate in an arbitrary number of Polys, so we can't use the vertex's prev/next pointers to represent all the Monotones of which this vertex may be a member. However, each Edge can only be a member of two Polys (one on each side of the edge). So by adding two prev/next pointer pairs to each Edge, we can represent each Monotone as a list of edges instead. Then we no longer need to copy the vertices. One wrinkle is that the ear-clipping stage (6) of the tessellator does require prev/next pointers, in order to remove vertices as their ears are clipped. So we convert the edge list into a vertex list during Monotone::emit(), using the prev/next pointers temporarily for that monotone. This change improves performance by 7-20% on a non-caching version of the tessellator, and reduces memory use. Other notes: 1) Polys are initially constructed empty (no edges), but with the top vertex, which is needed for splitting Polys. Edges are added to Polys only after their bottom vertex is seen. 2) MonotonePolys are always constructed with one edge, so we always know their handedness (left/right). MonotonePoly::addEdge() no longer detects when a monotone is "done" (edge of opposite handedness); this is handled by Poly::addEdge(), so MonotonePoly::addEdge() has no return value. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2029243002 Review-Url: https://codereview.chromium.org/2029243002
* Adjust tolerance for when Ganesh stroked-line-as-rect optimization kicks inGravatar robertphillips2016-06-02
| | | | | | | | Some GPUs results look worse for the < 1.0f tolerance (i.e., iPad) GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2035843002 Review-Url: https://codereview.chromium.org/2035843002
* Remove SK_SUPPORT_LEGACY_TYPEFACE_MAKE_FROM_NAME.Gravatar bungeman2016-06-02
| | | | | | | | | | The define SK_SUPPORT_LEGACY_TYPEFACE_MAKE_FROM_NAME is no longer used by any clients and the code it guards can now be removed as well. TBR=reed This just removes dead code. Review-Url: https://codereview.chromium.org/2030983002
* Exclude Mali devices from manual mip-mapping.Gravatar brianosman2016-06-02
| | | | | | | | | With manual mip-mapping, the Nexus 10 is failing the sRGB mip-map test. That suggests a failure in the sRGB implementation (decode after bilerp, possibly?). Using the driver's mip-mapper resolves the unit test issue, at least. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2036763002 Review-Url: https://codereview.chromium.org/2036763002
* Add getting the size of a given mipmap level.Gravatar cblume2016-06-02
| | | | | | | | | | | When allocating memory for mipmaps, it would be very handy to know the dimensions of a given mipmap level. R=bsalomon@google.com BUG=578304 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2018283002 Review-Url: https://codereview.chromium.org/2018283002
* Add a caps bit to enable/disable the new manual mip-mapperGravatar brianosman2016-06-02
| | | | | | | | | | Turn it off on Adreno3xx devices, because the small-render-target bug on those devices leads to empty mipmaps for the smallest mips. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2026393004 Review-Url: https://codereview.chromium.org/2026393004
* Fix incorrect parameter in new benchmark.Gravatar brianosman2016-06-02
| | | | | | | | | An old value for one of the dimensions slipped in with the original CL. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2033713003 Review-Url: https://codereview.chromium.org/2033713003
* Manually generated sRGB mipmaps, with successively smaller draws.Gravatar brianosman2016-06-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Dirty GL-generated mipmaps whenever an sRGB texture is used with a new value for TEXTURE_SRGB_DECODE. Add a new test rectangle to the gamma GM that tests that textures are correctly converted to linear before filtering when generating mipmaps. Added a new unit test that alternates how a texture is interpreted (sRGB or not), to verify that we rebuild mipmaps when needed, and that we get the correct results out in both modes. This test originally failed on four of our bots producing incorrect mips in three different ways. I'm not real surprised, but it looks like we can't rely on glGenerateMipmap to do the right thing, in conjunction with TEXTURE_SRGB_DECODE. Instead, actually create mip-chains using a series of draw calls. (My first attempt used glBlitFramebuffer, and that still had bugs on several bots). This approach appears to work correctly on any device that fully supports sRGB. Because the mipmap draws are fairly destructive to state, I had to hoist them out of bindTexture. That means adding a second pass over the texture accesses in the processor, at the very beginning of flush. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1840473002 Review-Url: https://codereview.chromium.org/2007973002
* Handle stroked single line special case in GaneshGravatar robertphillips2016-06-02
| | | | | | | | | | | | | This CL roughly halves the time spent on the captured stroked lines skp. On my Linux desktop it boosts the external benchmark from 2618 to 5007. This is a companion to: https://codereview.chromium.org/2019193002/ (Add new GM to exercise stroked line special case) The idea is to land the GM first so any regressions are visible. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2023693002 Review-Url: https://codereview.chromium.org/2023693002
* Add a test to ensure that a case where SkCubicClipper::ChopMonoAtY returns ↵Gravatar mbarbella2016-06-01
| | | | | | | | | | | false is handled properly. Also fixes a style issue in the fix for the issue being tested. BUG=chromium:613918 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2021343004 Review-Url: https://codereview.chromium.org/2021343004
* Create SkColorSpaceXform to handle color conversionsGravatar msarett2016-06-01
| | | | | | | | | | | | Also adds testing of qcms color correction, so we can compare SkColorSpaceXform outputs to qcms outputs. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002 Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c Review-Url: https://codereview.chromium.org/1952063002
* Recognize common parametric gammaGravatar msarett2016-06-01
| | | | | | | | | | | 5% of images with ICC profiles (in my test set of 10k) have this exact gamma representation, which is very close to 2.2f. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2027413002 Review-Url: https://codereview.chromium.org/2027413002
* Release surface between runs to avoid seg faultGravatar brianosman2016-06-01
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2032693002 Review-Url: https://codereview.chromium.org/2032693002
* Fix uninit warning on valgrind bot in SkPathPriv:IsSimpleClosedRectGravatar Brian Salomon2016-06-01
| | | | | | | TBR=robertphillips@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2030713002 Review URL: https://codereview.chromium.org/2030713002 .
* New benchmark to measure GPU mip-mapping performanceGravatar brianosman2016-06-01
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2030673002 Review-Url: https://codereview.chromium.org/2030673002
* Revert of Make SkPngCodec decode progressively. (patchset #24 id:480001 of ↵Gravatar scroggo2016-06-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1997703003/ ) Reason for revert: Still breaking Google3 e.g.: https://sponge.corp.google.com/target?id=9261d31b-34fc-4f0f-981e-f92f7c5cea2c&target=//third_party/skia/HEAD:dm#shard=1|run=1|attempt=1|page=-1 https://test.corp.google.com/ui#cl=123773095&flags=CAMQBQ==&id=OCL:123773095:BASE:123773415:1464804876959:b0ea9b1c&t=//third_party/skia/HEAD:dm Original issue's description: > Make SkPngCodec decode progressively. > > This is a step towards using SkCodec in Chromium, where progressive > decoding is necessary. > > Switch from using png_read_row (which expects all the data to be > available) to png_process_data, which uses callbacks when rows are > available. > > Create a new API for SkCodec, which supports progressive decoding and > scanline decoding. Future changes will switch the other clients off of > startScanlineDecode and get/skip-Scanlines to the new API. > > Remove SkCodec::kNone_ScanlineOrder, which was only used for interlaced > PNG images. In the new API, interlaced PNG fits kTopDown. Also remove > updateCurrScanline(), which was only used by the old implementation for > interlaced PNG. > > DMSrcSink: > - In CodecSrc::kScanline_Mode, use the new method for scanline decoding > for the supported formats (just PNG and PNG-in-ICO for now). > > fuzz.cpp: > - Remove reference to kNone_ScanlineOrder > > SkCodec: > - Add new APIs: > - startIncrementalDecode > - incrementalDecode > - Remove kNone_SkScanlineOrder and updateCurrScanline() > > SkPngCodec: > - Implement new APIs > - Switch from sk_read_fn/png_read_row etc to png_process_data > - Expand AutoCleanPng's role to decode the header and create the > SkPngCodec > - Make the interlaced PNG decoder report how many lines were > initialized during an incomplete decode > - Make initializeSwizzler return a bool instead of an SkCodec::Result > (It only returned kSuccess or kInvalidInput anyway) > > SkIcoCodec: > - Implement the new APIs; supported for PNG in ICO > > SkSampledCodec: > - Call the new method for decoding scanlines, and fall back to the old > method if the new version is unimplemented > - Remove references to kNone_SkScanlineOrder > > tests/CodecPartial: > - Add a test which decodes part of an image, then finishes the decode, > and compares it to the straightforward method > > tests/CodecTest: > - Add a test which decodes all scanlines using the new method > - Repurpose the Codec_stripes test to decode using the new method in > sections rather than all at once > - In the method check(), add a parameter for whether the image supports > the new method of scanline decoding, and be explicit about whether an > image supports incomplete > - Test incomplete PNG decodes. We should have been doing it anyway for > non-interlaced (except for an image that is too small - one row), but > the new method supports interlaced incomplete as well > - Make test_invalid_parameters test the new method > - Add a test to ensure that it's safe to fall back to scanline decoding without > rewinding > > BUG=skia:4211 > > The new version was generally faster than the old version (but not significantly so). > > Some raw performance differences can be found at https://docs.google.com/a/google.com/spreadsheets/d/1Gis3aRCEa72qBNDRMgGDg3jD-pMgO-FXldlNF9ejo4o/ > > Design doc can be found at https://docs.google.com/a/google.com/document/d/11Mn8-ePDKwVEMCjs3nWwSjxcSpJ_Cu8DF57KNtUmgLM/ > > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1997703003 > > Committed: https://skia.googlesource.com/skia/+/a4b09a117d4d1ba5dda372e6a2323e653766539e > > Committed: https://skia.googlesource.com/skia/+/30e78c9737ff4861dc4e3fa1e4cd010680ed6965 TBR=reed@google.com,msarett@google.com,scroggo@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:4211 Review-Url: https://codereview.chromium.org/2026383002
* Add SkPathPriv::IsSimpleClosedRectGravatar bsalomon2016-06-01
| | | | | | | | This function looks for "simple" rect paths. Simple here means begins and ends at a corner and is closed (either manually or with a close verb). Unlike SkPath::isRect this returns the starting point index (using the same start indexing scheme as SkPath::addRect). GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2017313002 Review-Url: https://codereview.chromium.org/2017313002
* Add offset to memory allocationsGravatar jvanverth2016-06-01
| | | | | | | | | | | This is setting up for suballocations within one large allocation BUG=skia:5031 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2018933004 TBR=bsalomon@google.com Review-Url: https://codereview.chromium.org/2018933004
* Revert of Create SkColorSpaceXform to handle color conversions (patchset #10 ↵Gravatar msarett2016-06-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | id:260001 of https://codereview.chromium.org/1952063002/ ) Reason for revert: Google3 can't find qcms Original issue's description: > Create SkColorSpaceXform to handle color conversions > > Also adds testing of qcms color correction, so we can compare > SkColorSpaceXform outputs to qcms outputs. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002 > > Committed: https://skia.googlesource.com/skia/+/740cc88ee3d63c75e52d31238f2a32600cc57a8c TBR=reed@google.com,scroggo@google.com,mtklein@google.com,herb@google.com,brianosman@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/2023093004
* Implement support for rendering color emoji on WindowsGravatar kulshin2016-06-01
| | | | | | | | | | | | | | This change adds support to the DirectWrite scaler context for detection of color fonts. If it detects a color font and the glyph is a color glyph, it will use DirectWrite's TranslateColorGlyphRun API and generate an image of the glyph that can then be rendered. Chromium tests: https://codereview.chromium.org/2003853002 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1984943002 Review-Url: https://codereview.chromium.org/1984943002
* Create SkColorSpaceXform to handle color conversionsGravatar msarett2016-06-01
| | | | | | | | | | Also adds testing of qcms color correction, so we can compare SkColorSpaceXform outputs to qcms outputs. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1952063002 Review-Url: https://codereview.chromium.org/1952063002
* Make SkPngCodec decode progressively.Gravatar scroggo2016-06-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a step towards using SkCodec in Chromium, where progressive decoding is necessary. Switch from using png_read_row (which expects all the data to be available) to png_process_data, which uses callbacks when rows are available. Create a new API for SkCodec, which supports progressive decoding and scanline decoding. Future changes will switch the other clients off of startScanlineDecode and get/skip-Scanlines to the new API. Remove SkCodec::kNone_ScanlineOrder, which was only used for interlaced PNG images. In the new API, interlaced PNG fits kTopDown. Also remove updateCurrScanline(), which was only used by the old implementation for interlaced PNG. DMSrcSink: - In CodecSrc::kScanline_Mode, use the new method for scanline decoding for the supported formats (just PNG and PNG-in-ICO for now). fuzz.cpp: - Remove reference to kNone_ScanlineOrder SkCodec: - Add new APIs: - startIncrementalDecode - incrementalDecode - Remove kNone_SkScanlineOrder and updateCurrScanline() SkPngCodec: - Implement new APIs - Switch from sk_read_fn/png_read_row etc to png_process_data - Expand AutoCleanPng's role to decode the header and create the SkPngCodec - Make the interlaced PNG decoder report how many lines were initialized during an incomplete decode - Make initializeSwizzler return a bool instead of an SkCodec::Result (It only returned kSuccess or kInvalidInput anyway) SkIcoCodec: - Implement the new APIs; supported for PNG in ICO SkSampledCodec: - Call the new method for decoding scanlines, and fall back to the old method if the new version is unimplemented - Remove references to kNone_SkScanlineOrder tests/CodecPartial: - Add a test which decodes part of an image, then finishes the decode, and compares it to the straightforward method tests/CodecTest: - Add a test which decodes all scanlines using the new method - Repurpose the Codec_stripes test to decode using the new method in sections rather than all at once - In the method check(), add a parameter for whether the image supports the new method of scanline decoding, and be explicit about whether an image supports incomplete - Test incomplete PNG decodes. We should have been doing it anyway for non-interlaced (except for an image that is too small - one row), but the new method supports interlaced incomplete as well - Make test_invalid_parameters test the new method - Add a test to ensure that it's safe to fall back to scanline decoding without rewinding BUG=skia:4211 The new version was generally faster than the old version (but not significantly so). Some raw performance differences can be found at https://docs.google.com/a/google.com/spreadsheets/d/1Gis3aRCEa72qBNDRMgGDg3jD-pMgO-FXldlNF9ejo4o/ Design doc can be found at https://docs.google.com/a/google.com/document/d/11Mn8-ePDKwVEMCjs3nWwSjxcSpJ_Cu8DF57KNtUmgLM/ GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1997703003 Committed: https://skia.googlesource.com/skia/+/a4b09a117d4d1ba5dda372e6a2323e653766539e Review-Url: https://codereview.chromium.org/1997703003
* [GN] Add support for disabling opts via SK_BUILD_NO_OPTS define.Gravatar sdefresne2016-06-01
| | | | | | | | | | | | | | | | | | | | | When targetting iOS and using gyp to generate the build files, it is not possible to select files to build depending on the architecture. Due to that, the skia code was disabling all optimisation when SK_BUILD_FOR_IOS was defined. Since it is possible to select the correct optimised version when using gn, this pessimisation is hurting the build. Introduce a new define to disable the optimisation SK_BUILD_NO_OPTS. It will be used by Chromium when building skia for iOS with gyp but not gn. Define SK_BUILD_NO_OPTS along-side SK_BUILD_FOR_IOS for all files that look like build configuration (Xcode projects, gyp configuration files, public.bzl) in order to avoid introducing breakage on those builds. BUG=607933 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2002423002 Review-Url: https://codereview.chromium.org/2002423002
* always compute a cubic tangentGravatar caryclark2016-06-01
| | | | | | | | | | | | | | | | If the inflection of a cubic is also the cusp, the tangent is degenerate at that t when computed directly. Rather than giving up, subdivide the curve there and use the computed control points to compute the tangent. This strategy also removes the error paths where the tangent formerly could not be computed. R=reed@google.com BUG=615686 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2020293002 Review-Url: https://codereview.chromium.org/2020293002
* Check results from calls to SkCubicClipper::ChopMonoAtY.Gravatar mbarbella2016-05-31
| | | | | | | BUG=613918 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2006143009 Review-Url: https://codereview.chromium.org/2006143009
* Revert of Make SkPngCodec decode progressively. (patchset #18 id:340001 of ↵Gravatar scroggo2016-05-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1997703003/ ) Reason for revert: This is failing tests and then crashing on Google3 [1]. The crashes are fixed by crrev.com/2026873002, but to fix the builder we'll need to upgrade its version of libpng. [1] https://sponge.corp.google.com/target?id=e545ef55-4da4-4931-9524-1ac92acb61b1&target=//third_party/skia/HEAD:dm#shard=1|run=1|attempt=1|page=-1 Original issue's description: > Make SkPngCodec decode progressively. > > This is a step towards using SkCodec in Chromium, where progressive > decoding is necessary. > > Switch from using png_read_row (which expects all the data to be > available) to png_process_data, which uses callbacks when rows are > available. > > Create a new API for SkCodec, which supports progressive decoding and > scanline decoding. Future changes will switch the other clients off of > startScanlineDecode and get/skip-Scanlines to the new API. > > Remove SkCodec::kNone_ScanlineOrder, which was only used for interlaced > PNG images. In the new API, interlaced PNG fits kTopDown. Also remove > updateCurrScanline(), which was only used by the old implementation for > interlaced PNG. > > DMSrcSink: > - In CodecSrc::kScanline_Mode, use the new method for scanline decoding > for the supported formats (just PNG and PNG-in-ICO for now). > > fuzz.cpp: > - Remove reference to kNone_ScanlineOrder > > SkCodec: > - Add new APIs: > - startIncrementalDecode > - incrementalDecode > - Remove kNone_SkScanlineOrder and updateCurrScanline() > > SkPngCodec: > - Implement new APIs > - Switch from sk_read_fn/png_read_row etc to png_process_data > - Expand AutoCleanPng's role to decode the header and create the > SkPngCodec > - Make the interlaced PNG decoder report how many lines were > initialized during an incomplete decode > - Make initializeSwizzler return a bool instead of an SkCodec::Result > (It only returned kSuccess or kInvalidInput anyway) > > SkIcoCodec: > - Implement the new APIs; supported for PNG in ICO > > SkSampledCodec: > - Call the new method for decoding scanlines, and fall back to the old > method if the new version is unimplemented > - Remove references to kNone_SkScanlineOrder > > tests/CodecPartial: > - Add a test which decodes part of an image, then finishes the decode, > and compares it to the straightforward method > > tests/CodecTest: > - Add a test which decodes all scanlines using the new method > - Repurpose the Codec_stripes test to decode using the new method in > sections rather than all at once > - In the method check(), add a parameter for whether the image supports > the new method of scanline decoding, and be explicit about whether an > image supports incomplete > - Test incomplete PNG decodes. We should have been doing it anyway for > non-interlaced (except for an image that is too small - one row), but > the new method supports interlaced incomplete as well > - Make test_invalid_parameters test the new method > - Add a test to ensure that it's safe to fall back to scanline decoding without > rewinding > > BUG=skia:4211 > > The new version was generally faster than the old version (but not significantly so). > > Some raw performance differences can be found at https://docs.google.com/a/google.com/spreadsheets/d/1Gis3aRCEa72qBNDRMgGDg3jD-pMgO-FXldlNF9ejo4o/ > > Design doc can be found at https://docs.google.com/a/google.com/document/d/11Mn8-ePDKwVEMCjs3nWwSjxcSpJ_Cu8DF57KNtUmgLM/ > > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1997703003 > > Committed: https://skia.googlesource.com/skia/+/a4b09a117d4d1ba5dda372e6a2323e653766539e TBR=reed@google.com,msarett@google.com,scroggo@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:4211 Review-Url: https://codereview.chromium.org/2023103002
* skiaserve: Add /quitquitquit handler. Will be used in the hosted debugger.Gravatar jcgregorio2016-05-31
| | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2023023002 TBR=ethannicholas Review-Url: https://codereview.chromium.org/2023023002
* Make use of new SkLights classGravatar robertphillips2016-05-31
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2026763002 Review-Url: https://codereview.chromium.org/2026763002
* Fix build errorGravatar scroggo2016-05-31
| | | | | | | TBR=herb@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2021393002 Review-Url: https://codereview.chromium.org/2021393002
* SkTypeface::MakeFromName to take SkFontStyle.Gravatar mboc2016-05-31
| | | | | | | | | | | | | SkTypeface::MakeFromName currently takes SkTypeface::Style, which is quite limited. This starts the transition to this function taking SkFontStyle instead. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1818043002 TBR=reed He said it sounded like a good idea. Review-Url: https://codereview.chromium.org/1818043002
* SkXPS: clean up SkConstexprMathGravatar halcanary2016-05-31
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2000853003 Review-Url: https://codereview.chromium.org/2000853003
* SkEncodedInfo: simplifyGravatar halcanary2016-05-31
| | | | | | | | No public API change. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2025713003 Review-Url: https://codereview.chromium.org/2025713003
* Fix bug where SkPath will convert an arc to an oval and change the starting ↵Gravatar bsalomon2016-05-31
| | | | | | | | | point. Adds unit tests to test the behavior of addArc to oval conversions. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2017743002 Review-Url: https://codereview.chromium.org/2017743002
* Use special case for 0x00 and 0xFF alpha to go faster.Gravatar herb2016-05-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Base Exp Ratio Name 3916010 3077544 0.785888 top25desk_amazon_com.skp_1 3462512 2776580 0.801898 top25desk_google_com_calendar_.skp_1 3446330 3134187 0.909427 top25desk_ebay_com.skp_1 590474 546375 0.925316 top25desk_techcrunch_com.skp_1 3804991 3544162 0.931451 top25desk_google_com__hl_en_q_b.skp_1 996037 939960 0.9437 top25desk_blogger.skp_1 973264 922677 0.948023 top25desk_wikipedia__1_tab_.skp_1 4514050 4295660 0.95162 top25desk_docs___1_open_documen.skp_1 4255383 4110057 0.965849 top25desk_linkedin.skp_1 8408717 8191843 0.974208 top25desk_booking_com.skp_1 2878529 2806501 0.974977 top25desk_plus_google_com_11003.skp_1 11509894 11254486 0.97781 top25desk_pinterest.skp_1 9132514 9010635 0.986654 top25desk_weather_com.skp_1 6504720 6419592 0.986913 top25desk_sports_yahoo_com_.skp_1 9136774 9033870 0.988737 top25desk_answers_yahoo_com.skp_1 4836199 4799784 0.99247 top25desk_news_yahoo_com.skp_1 1393650 1384065 0.993122 top25desk_games_yahoo_com.skp_1 6779678 6735278 0.993451 top25desk_youtube_com.skp_1 10926943 10882308 0.995915 top25desk_espn.skp_1 4259514 4245489 0.996707 top25desk_facebook.skp_1 10955293 10947657 0.999303 top25desk_google_com_search_q_c.skp_1 9153575 9207386 1.00588 top25desk_twitter.skp_1 3865942 3906345 1.01045 top25desk_wordpress.skp_1 4180009 4305530 1.03003 top25desk_mail_google_com_mail_.skp_1 BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2020463003 Review-Url: https://codereview.chromium.org/2020463003
* Add mip support to *DeferredTextureImageData functions.Gravatar cblume2016-05-31
| | | | | | | | | | | | | | | As a first step, I want to add the ability to store multiple mip levels in the opaque object. I will follow this with using SkMipMap to generate and store the mip levels and generating the texture from those stored mip levels. R=bsalomon@chromium.org CC=ericrk@chromium.org BUG=578304 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2023573002 Review-Url: https://codereview.chromium.org/2023573002
* Filter out degenerate contours in GrConvexPolyEffectGravatar lsalzman2016-05-31
| | | | | | | | | | | | | | | | | | | | As noticed in a downstream Firefox bug report https://bugzilla.mozilla.org/show_bug.cgi?id=1255062 If a path such as (moveTo, moveTo, lineTo, lineTo, close) is supplied, and if the non-degenerate contour is convex, the convexity test will pass, and GrConvexPolyEffect will be used. However, the path's raw points are used to build the edge list, which does not filter out degenerate contours. This may cause the polygon to fail to draw. This patch ensures that the degenerate contours are filtered out by using an iterator as the path convexity test does. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2018613003 Review-Url: https://codereview.chromium.org/2018613003
* Add missing files for GL unix viewer.Gravatar jvanverth2016-05-31
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2023943004 Review-Url: https://codereview.chromium.org/2023943004
* Fix integer overflow in SkColorSpaceGravatar msarett2016-05-31
| | | | | | | BUG=skia:5361 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2020303002 Review-Url: https://codereview.chromium.org/2020303002
* Add new GM to exercise stroked line special caseGravatar robertphillips2016-05-31
| | | | | | | | | | This is a companion to: https://codereview.chromium.org/2023693002/ (Handle stroked single line special case in Ganesh) The idea is to land this CL first so any regressions are visible. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2019193002 Review-Url: https://codereview.chromium.org/2019193002