aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm
Commit message (Collapse)AuthorAge
* Store DM failures in an array, not a single string.Gravatar mtklein2014-11-19
| | | | | | | | | | | | | | | | | | | | | | This should fix the problem where a repeatedly failing test causes this assertion: ../../src/core/SkString.cpp:572: failed assertion "length >= 0 && length < SkToInt(kBufferSize)" Example output: 0 GMs x 7 configs, 2 tests, 0 pictures 0 tasks left, 100 failed Failures: test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() < 95 lines elided > test RTree: ../../tests/RTreeTest.cpp:77 0 != rtree.getCount() 100 failures. BUG=skia: Review URL: https://codereview.chromium.org/741833002
* Revert of Make nanobench and dm be usable from Chromium build (patchset #5 ↵Gravatar jcgregorio2014-11-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:80001 of https://codereview.chromium.org/657373002/) Reason for revert: Causing breakages on Mac build. Original issue's description: > Make nanobench and dm be usable from Chromium build > > Move the app logic for each app as follows: > > <app>.cpp -- the file which contains main(). Embedders that compile > their own apps, such as ios shell, upcoming Chromium dm etc, do not use this. > > <app>_main.cpp -- the main logic of the Skia test application. This will be > used by Skia -compiled apps as well as embedder -compiled apps. > > <app>_main.h -- the API for the main logic. This will be > used by Skia -compiled apps as well as embedder -compiled apps. > > This way (the upcoming) Chromium dm can setup its Chromium-specific setup > in custom main(), and then call dm_main(), without the need of any > SK_BUILD_FOR_XXXX defines controlling whether the tool defines main or not. > > BUG=skia:2992 > > Committed: https://skia.googlesource.com/skia/+/c092d3bdab5f723576cc0346cea3ee282a9cb444 TBR=mtklein@chromium.org,mtklein@google.com,borenet@google.com,kkinnunen@nvidia.com NOTREECHECKS=true NOTRY=true BUG=skia:2992 Review URL: https://codereview.chromium.org/724073002
* Make nanobench and dm be usable from Chromium buildGravatar kkinnunen2014-11-13
| | | | | | | | | | | | | | | | | | | | | Move the app logic for each app as follows: <app>.cpp -- the file which contains main(). Embedders that compile their own apps, such as ios shell, upcoming Chromium dm etc, do not use this. <app>_main.cpp -- the main logic of the Skia test application. This will be used by Skia -compiled apps as well as embedder -compiled apps. <app>_main.h -- the API for the main logic. This will be used by Skia -compiled apps as well as embedder -compiled apps. This way (the upcoming) Chromium dm can setup its Chromium-specific setup in custom main(), and then call dm_main(), without the need of any SK_BUILD_FOR_XXXX defines controlling whether the tool defines main or not. BUG=skia:2992 Review URL: https://codereview.chromium.org/657373002
* Get gpudft support working in dm, gm, nanobench and bench_picturesGravatar jvanverth2014-11-07
| | | | | | | | | | | | Adds a new config to test distance field text. Clean up some flags and #defines to read "distance field text", not "distance field fonts" to be consistent with Chromium NOTREECHECKS=true Committed: https://skia.googlesource.com/skia/+/06ba179838ba4fe187cf290750aeeb4a02a2960b Review URL: https://codereview.chromium.org/699453005
* When running DM, write test failures to json.Gravatar scroggo2014-11-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add skiatest::Failure to keep track of data about a test failure. Reporter::reportFailed and ::onReportFailed now take Failure as a parameter. This allows the implementation to treat the failure as it wishes. Provide a helper to format the failure the same as prior to the change. Update the macros for calling reportFailed (REPORTER_ASSERT etc) to create a Failure object. Convert a direct call to reportFailed to the macro ERRORF. Write Failures to Json. Sample output when running dm on the dummy test crrev.com/705723004: { "test_results" : { "failures" : [ { "condition" : "0 > 3", "file_name" : "../../tests/DummyTest.cpp", "line_no" : 10, "message" : "" }, { "condition" : "false", "file_name" : "../../tests/DummyTest.cpp", "line_no" : 4, "message" : "" }, { "condition" : "1 == 3", "file_name" : "../../tests/DummyTest.cpp", "line_no" : 5, "message" : "I can too count!" }, { "condition" : "", "file_name" : "../../tests/DummyTest.cpp", "line_no" : 6, "message" : "seven is 7" }, { "condition" : "1 == 3", "file_name" : "../../tests/DummyTest.cpp", "line_no" : 14, "message" : "I can too count!" } ] } } Report all of the failures from one test. Previously, if one test had multiple failures, only one was reportered. e.g: Failures: test Dummy: ../../tests/DummyTest.cpp:6 seven is 7 test Dummy2: ../../tests/DummyTest.cpp:10 0 > 3 test Dummy3: ../../tests/DummyTest.cpp:14 I can too count!: 1 == 3 3 failures. Now, we get all the messages: Failures: test Dummy: ../../tests/DummyTest.cpp:4 false ../../tests/DummyTest.cpp:5 I can too count!: 1 == 3 ../../tests/DummyTest.cpp:6 seven is 7 test Dummy2: ../../tests/DummyTest.cpp:10 0 > 3 test Dummy3: ../../tests/DummyTest.cpp:14 I can too count!: 1 == 3 3 failures. (Note that we still state "3 failures" because 3 DM::Tasks failed.) BUG=skia:3082 BUG=skia:2454 Review URL: https://codereview.chromium.org/694703005
* Revert of Get gpudft support working in dm, gm, nanobench and bench_pictures ↵Gravatar jvanverth2014-11-06
| | | | | | | | | | | | | | | | | | | | | | | | (patchset #2 id:20001 of https://codereview.chromium.org/699453005/) Reason for revert: Not compiling in ANGLE build Original issue's description: > Get gpudft support working in dm, gm, nanobench and bench_pictures > > Adds a new config to test distance field text. > Clean up some flags and #defines to read "distance field text", > not "distance field fonts" to be consistent with Chromium > > NOTREECHECKS=true > > Committed: https://skia.googlesource.com/skia/+/06ba179838ba4fe187cf290750aeeb4a02a2960b TBR=bsalomon@google.com,mtklein@google.com,reed@google.com NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/707723005
* Get gpudft support working in dm, gm, nanobench and bench_picturesGravatar jvanverth2014-11-06
| | | | | | | | | | Adds a new config to test distance field text. Clean up some flags and #defines to read "distance field text", not "distance field fonts" to be consistent with Chromium NOTREECHECKS=true Review URL: https://codereview.chromium.org/699453005
* Revert of Revert of Turn on NVPR 4x MSAA by default when supported in DM and ↵Gravatar mtklein2014-11-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nanobench. (patchset #1 id:1 of https://codereview.chromium.org/693933004/) Reason for revert: Try again with loops overflow fix landed. Original issue's description: > Revert of Turn on NVPR 4x MSAA by default when supported in DM and nanobench. (patchset #2 id:20001 of https://codereview.chromium.org/704563003/) > > Reason for revert: > Timing out on nvpr when drawing conics. Fix will take some thought so reverting for now. > > Original issue's description: > > Turn on NVPR 4x MSAA by default when supported in DM and nanobench. > > > > This brings DM and nanobench's default configs in line with GM's. > > > > BUG=skia: > > > > Committed: https://skia.googlesource.com/skia/+/31f88675718966bbb7f09718b40de10c7e214739 > > TBR=bsalomon@google.com,mtklein@google.com,mtklein@chromium.org > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/d5cd4ee5b81b51e43be7ed13f3c0f0f6c1b3fe14 TBR=bsalomon@google.com,mtklein@chromium.org,egdaniel@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/685923003
* Revert of Turn on NVPR 4x MSAA by default when supported in DM and ↵Gravatar egdaniel2014-11-05
| | | | | | | | | | | | | | | | | | | | | | | nanobench. (patchset #2 id:20001 of https://codereview.chromium.org/704563003/) Reason for revert: Timing out on nvpr when drawing conics. Fix will take some thought so reverting for now. Original issue's description: > Turn on NVPR 4x MSAA by default when supported in DM and nanobench. > > This brings DM and nanobench's default configs in line with GM's. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/31f88675718966bbb7f09718b40de10c7e214739 TBR=bsalomon@google.com,mtklein@google.com,mtklein@chromium.org NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/693933004
* Turn on NVPR 4x MSAA by default when supported in DM and nanobench.Gravatar mtklein2014-11-05
| | | | | | | | This brings DM and nanobench's default configs in line with GM's. BUG=skia: Review URL: https://codereview.chromium.org/704563003
* Separate JSON functions from DMWriteTask.Gravatar scroggo2014-11-04
| | | | | | | | | Add JsonWriter, which handles Json output from DM, in preparation for adding json output for tests. This change should not affect behavior. BUG=skia:2454 Review URL: https://codereview.chromium.org/702513003
* SkTaskGroup::batch(fn, args, N)Gravatar mtklein2014-10-29
| | | | | | | | Porting QuiltTask isn't important in itself; this is mostly an API feeler. BUG=skia: Review URL: https://codereview.chromium.org/689673003
* Use MacOS's CoreGraphics PDF Rasterizer in DMGravatar halcanary2014-10-27
| | | | | | BUG=3061 Review URL: https://codereview.chromium.org/650323004
* Print GPU cache stats in nanobench/dm with veryVerboseGravatar bsalomon2014-10-24
| | | | Review URL: https://codereview.chromium.org/680553002
* Fix DMWriteTask to write PDF files correctlyGravatar halcanary2014-10-17
| | | | | | Previously, it was not rewinding the asset. Review URL: https://codereview.chromium.org/659793004
* Clarify what DM means in the README file.Gravatar tfarina2014-10-09
| | | | | | | | | | | It took me a while to figure out what this acronym meant. ;) Googling for it lead me to gyp/dm.gyp. BUG=None TEST=None R=mtklein@google.com Review URL: https://codereview.chromium.org/638083003
* Fix usage of SK_BUILD_* defines.Gravatar tfarina2014-10-06
| | | | | | | | | | | | | | | Since we just 'define' them, but not attribute anything to them, like '1' for example, cpp expands it to nothing and that breaks the "#if" clauses. To fix that, uses "#if defined(...)" which will correctly check if your macro name was defined or not. BUG=skia:2850 TEST=make most R=robertphillips@google.com Review URL: https://codereview.chromium.org/628763005
* Handle getMemoryBase returning NULL in WriteTask.Gravatar bungeman2014-10-02
| | | | | | | | | | DM::WriteTask::fData was changed from a data to a stream in "SkData to SkStreamAsset to avoid unneeded copying" https://skia.googlesource.com/skia/+/a4c6094177ebde18c706cbcfbd2013d0a088e0ee However, DM::WriteTask::draw was not updated to handle this, resulting in segfaults when trying to write out PDF files. Review URL: https://codereview.chromium.org/627473002
* Don't test the old picture backend anymore.Gravatar mtklein2014-09-29
| | | | | | | | | | | This saves a bunch of CPU time in DM, and even better, lets us tear it down! BUG=skia: R=robertphillips@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/612603002
* Remove underscores from mode identifiers.Gravatar mtklein2014-09-23
| | | | | | | | | | | | | | Underscore is used as a field separator sometimes when parsing the task name into a list of config, mode, etc. (This itself is dumb and TODO(mtklein): fix.) Underscores in the field names will really mess that up, both in directories generated from human-mode -w, and in the .json file. BUG=skia: R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/599503002
* Introduce Props to surface (patchset #27 id:520001 of ↵Gravatar reed2014-09-22
| | | | | | | | | | | | https://codereview.chromium.org/551463004/)" This reverts commit 29c857d0f3a1cb837f73406eeb6ba9771879b5e7. TBR= Author: reed@google.com Review URL: https://codereview.chromium.org/588143004
* Revert of introduce Props to surface (patchset #27 id:520001 of ↵Gravatar reed2014-09-21
| | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/551463004/) Reason for revert: Broke call site in WebKit Original issue's description: > introduce Props to surface (work in progress) > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/3716fd067a5621bb94a6cb08d72afec8bf3aceda R=robertphillips@google.com, bsalomon@google.com, jvanverth@google.com, bungeman@google.com, fmalita@google.com, vangelis@chromium.org, reed@google.com TBR=bsalomon@google.com, bungeman@google.com, fmalita@google.com, jvanverth@google.com, reed@google.com, robertphillips@google.com, vangelis@chromium.org NOTREECHECKS=true NOTRY=true BUG=skia: Author: reed@chromium.org Review URL: https://codereview.chromium.org/583773004
* introduce Props to surface (work in progress)Gravatar reed2014-09-21
| | | | | | | | | BUG=skia: R=robertphillips@google.com, bsalomon@google.com, jvanverth@google.com, bungeman@google.com, fmalita@google.com, vangelis@chromium.org, reed@chromium.org Author: reed@google.com Review URL: https://codereview.chromium.org/551463004
* Add a "mode" tag to key in DM json output.Gravatar mtklein2014-09-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This lets us distinguish the original ("direct") runs from their replay modes. There was a bit of a bug in here now fixed: we used the first entry in fSuffixes as the config. Actually, the last entry in suffixes is the config. This is moot when there's only one suffix (direct drawing), but for mode drawing we were recording the mode as config! Now it's correct. Here's some example output where I rigged a bunch of modes to fail: { "results" : [ { "key" : { "config" : "565", "mode" : "default-nobbh", "name" : "xfermodes2" }, "md5" : "2daf6f7e2b8e56543b92068a10d2179e", "options" : { "source_type" : "GM" } }, { "key" : { "config" : "8888", "mode" : "default-nobbh", "name" : "xfermodes2" }, "md5" : "490361e8a52800d29558bc23876da8c6", "options" : { "source_type" : "GM" } }, ... { "key" : { "config" : "565", "mode" : "direct", "name" : "xfermodes2" }, "md5" : "92a3801d5914d6c2662904a3bb50d2b9", "options" : { "source_type" : "GM" } }, ... { "key" : { "config" : "8888", "mode" : "direct", "name" : "xfermodes2" }, "md5" : "e7e8b3e9d31e601acaaff4633ed5f63a", "options" : { "source_type" : "GM" } }, BUG=skia: R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/586533005
* DM: --gpu and --cpu should only control top-level tasks.Gravatar mtklein2014-09-17
| | | | | | | | | | | | | | | | | This fixes a bug where we run some Android bots with --nocpu, and the current behavior disables the (CPU-bound) WriteTasks the GPU bound GM runs spawn off. The WriteTasks don't run and we end up with "null" in our .json files. Tested locally: out/Release/dm --nocpu -w /tmp/out; ls /tmp/out dm.json gpu/ BUG=skia:2938 R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/578033002
* Add --matrix to DM, to play around with and maybe use on a bot.Gravatar mtklein2014-09-11
| | | | | | | | | BUG=skia: R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/563723005
* Back to hashing source content, not .png.Gravatar mtklein2014-09-09
| | | | | | | | | BUG=skia: R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/560453002
* Update DM JSON format.Gravatar mtklein2014-09-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ex. dm --match patch -w bad --key arch x86 gpu nvidia model z620 --properties git_hash abcd build_number 20 -> { "build_number" : "20", "git_hash" : "abcd", "key" : { "arch" : "x86", "gpu" : "nvidia", "model" : "z620" }, "results" : [ { "key" : { "config" : "565", "name" : "ninepatch-stretch" }, "md5" : "f78cfafcbabaf815f3dfcf61fb59acc7", "options" : { "source_type" : "GM" } }, { "key" : { "config" : "8888", "name" : "ninepatch-stretch" }, "md5" : "3e8a42f35a1e76f00caa191e6310d789", "options" : { "source_type" : "GM" } }, ... This breaks -r, but that's okay. Going to follow up this CL with one that removes that entirely. BUG=skia: R=stephana@google.com, jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/551873003
* Remove expectations / -r from DM entirely.Gravatar mtklein2014-09-09
| | | | | | | | | | | | It's getting tricky to coordinate changes to output for bots with -r, and -r is not widely used. The suggested alternative is to run skdiff. BUG=skia: R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/553583004
* Hash .pngs instead of SkBitmaps.Gravatar mtklein2014-09-08
| | | | | | | | | | | | | | | | | | | | | | | This has the nice property of being able to double-check hashes after the fact. mtklein@mtklein ~/skia (hash-png)> md5sum bad/8888/3x3bitmaprect.png deede70ab2f34067d461fb4a93332d4c bad/8888/3x3bitmaprect.png mtklein@mtklein ~/skia (hash-png)> grep 3x3bitmaprect_8888 bad/dm.json "3x3bitmaprect_8888" : "deede70ab2f34067d461fb4a93332d4c", I have checked that no two premultiplied colors map to the same unpremultiplied color (math nerds: unpremultiplication is injective), so a change in premultiplied SkBitmap will always imply a change in the encoded unpremultiplied .png. This means, it's safe to hash .pngs; we won't miss subtle changes. BUG=skia: R=jcgregorio@google.com, stephana@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/549203003
* Add --nameByHash for the bots, and refactor hashing a bit.Gravatar mtklein2014-09-08
| | | | | | | | | | | | | | | | | | | | | No diff in dm.json output. Here's what we get when --nameByHash is on: mtklein@mtklein ~/skia (dm)> ls bad4/ 0077fefedcee39feae9d12751853758b.png 431921de1607b4e1ae6864cc684d9b8e.png 8a3e17eba9302498700a703bb286d1ef.png c6448cb266f5e0b8d02b512ad484a9ad.png 01b0dcd515e846ea3b7f3b4c68120943.png 4372eb0fce0b0bcf5a582c502f90ecef.png 8a6acdd96cf6915fa01a9cea6d6291b0.png c6db4e2c9860b900130af429373eafaa.png 02974ab0efa7aa325b3bf22515b33899.png 43bddc2e255a3501ce2728544b1d409d.png 8aa8763d11afd397c2768e54d5599181.png c716a9a53513a16e0572c67863e3be08.png 02b7b9e5e95e69f89b6cec9c4539d972.png 43cf7adda66b3719e4abd19e92dda55e.png 8ade6bb4c9e2244e0dbd9436cf6e2132.png c854bb6dd105644a71d0219025409039.png 02d29dbfd29260f9318fcd6177c6ba7b.png 4423958139a2b64185583dacb7379b13.png 8b039171593685112a9454879f40a965.png c863ac2394e519690c57e1392b14b19f.png ... BUG=skia: R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/550283002
* Let .skps have Expectations (i.e. work with -r) too.Gravatar mtklein2014-09-08
| | | | | | | | | BUG=skia: R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/549183002
* Start to rework DM JSON handling.Gravatar mtklein2014-09-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DM's striking off into its own JSON world. This gets strawman implementations in place for writing and reading a JSON file mapping test name to hashes. For what it's worth, I basically want to change _all_ these pieces, - MD5 is slow and we can replace it with something faster, - JSON schema needs room to grow more data, - it'd be nice to hash once instead of twice when reading and writing, - this code wants lots of refactoring, but this gives us a starting platform to work on these bits at our leisure. E.x. file for now: mtklein@mtklein ~/skia (dm)> cat good/dm.json { "3x3bitmaprect_565" : "fc70d985fbfbe70e3a3c9dc626d4f5bc", "3x3bitmaprect_8888" : "df1591dde35907399734ea19feb76663", "3x3bitmaprect_gpu" : "df1591dde35907399734ea19feb76663", "aaclip_565" : "1862798689b838a7ab0dc0652b9ace3a", "aaclip_8888" : "47bb314329f0ce243f1d83fd583decb7", "aaclip_gpu" : "75f72412d0ef4815770202d297246e7d", ... BUG=skia: R=jcgregorio@google.com, stephana@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/546873002
* Change SkPicture::draw to playbackGravatar robertphillips2014-09-04
| | | | | | | | R=reed@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/540963002
* SkThreadPool ~~> SkTaskGroupGravatar mtklein2014-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkTaskGroup is like SkThreadPool except the threads stay in one global pool. Each SkTaskGroup itself is tiny (4 bytes) and its wait() method applies only to tasks add()ed to that instance, not the whole thread pool. This means we don't need to bring up new thread pools when tests themselves want to use multithreading (e.g. pathops, quilt). We just create a new SkTaskGroup and wait for that to complete. This should be more efficient, and allow us to expand where we use threads to really latency sensitive places. E.g. we can probably now use these in nanobench for CPU .skp rendering. Now that all threads are sharing the same pool, I think we can remove most of the custom mechanism pathops tests use to control threading. They'll just ride on the global pool with all other tests now. This (temporarily?) removes the GPU multithreading feature from DM, which we don't use. On my desktop, DM runs a little faster (57s -> 55s) in Debug, and a lot faster in Release (36s -> 24s). The bots show speedups of similar proportions, cutting more than a minute off the N4/Release and Win7/Debug runtimes. BUG=skia: Committed: https://skia.googlesource.com/skia/+/9c7207b5dc71dc5a96a2eb107d401133333d5b6f R=caryclark@google.com, bsalomon@google.com, bungeman@google.com, mtklein@google.com, reed@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/531653002
* Revert of SkThreadPool ~~> SkTaskGroup (patchset #4 id:60001 of ↵Gravatar mtklein2014-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/531653002/) Reason for revert: Leaks, leaks, leaks. Original issue's description: > SkThreadPool ~~> SkTaskGroup > > SkTaskGroup is like SkThreadPool except the threads stay in > one global pool. Each SkTaskGroup itself is tiny (4 bytes) > and its wait() method applies only to tasks add()ed to that > instance, not the whole thread pool. > > This means we don't need to bring up new thread pools when > tests themselves want to use multithreading (e.g. pathops, > quilt). We just create a new SkTaskGroup and wait for that > to complete. This should be more efficient, and allow us > to expand where we use threads to really latency sensitive > places. E.g. we can probably now use these in nanobench > for CPU .skp rendering. > > Now that all threads are sharing the same pool, I think we > can remove most of the custom mechanism pathops tests use > to control threading. They'll just ride on the global pool > with all other tests now. > > This (temporarily?) removes the GPU multithreading feature > from DM, which we don't use. > > On my desktop, DM runs a little faster (57s -> 55s) in > Debug, and a lot faster in Release (36s -> 24s). The bots > show speedups of similar proportions, cutting more than a > minute off the N4/Release and Win7/Debug runtimes. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/9c7207b5dc71dc5a96a2eb107d401133333d5b6f R=caryclark@google.com, bsalomon@google.com, bungeman@google.com, reed@google.com, mtklein@chromium.org TBR=bsalomon@google.com, bungeman@google.com, caryclark@google.com, mtklein@chromium.org, reed@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Author: mtklein@google.com Review URL: https://codereview.chromium.org/533393002
* SkThreadPool ~~> SkTaskGroupGravatar mtklein2014-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkTaskGroup is like SkThreadPool except the threads stay in one global pool. Each SkTaskGroup itself is tiny (4 bytes) and its wait() method applies only to tasks add()ed to that instance, not the whole thread pool. This means we don't need to bring up new thread pools when tests themselves want to use multithreading (e.g. pathops, quilt). We just create a new SkTaskGroup and wait for that to complete. This should be more efficient, and allow us to expand where we use threads to really latency sensitive places. E.g. we can probably now use these in nanobench for CPU .skp rendering. Now that all threads are sharing the same pool, I think we can remove most of the custom mechanism pathops tests use to control threading. They'll just ride on the global pool with all other tests now. This (temporarily?) removes the GPU multithreading feature from DM, which we don't use. On my desktop, DM runs a little faster (57s -> 55s) in Debug, and a lot faster in Release (36s -> 24s). The bots show speedups of similar proportions, cutting more than a minute off the N4/Release and Win7/Debug runtimes. BUG=skia: R=caryclark@google.com, bsalomon@google.com, bungeman@google.com, mtklein@google.com, reed@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/531653002
* Try out scalar picture sizesGravatar robertphillips2014-08-29
| | | | | | | | | | This paves the way for removing the 'fTile' parameter from SkPictureShader (although that should be a different CL). If we like this we could also move to providing an entire cull SkRect. R=reed@google.com, mtklein@google.com, fmalita@google.com, fmalita@chromium.org Author: robertphillips@google.com Review URL: https://codereview.chromium.org/513983002
* Remove SkQuadTree.Gravatar mtklein2014-08-26
| | | | | | | | | | | | | | We're not testing it to the same degree we do RTree and TileGrid. Any changes we'll make to BBH APIs become 33% easier without it. If find we want it again, we can always resurrect it. BUG=skia:1021,skia:2834 R=robertphillips@google.com, mtklein@google.com TBR=reed Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/500373005
* SkData to SkStreamAsset to avoid unneeded copyingGravatar halcanary2014-08-26
| | | | | | | | R=mtklein@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/502193002
* Install a hook to swap between SkPicture backends with a single define.Gravatar mtklein2014-08-21
| | | | | | | | | BUG=skia: R=robertphillips@google.com, reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/492023002
* Print max RSS in GM and nanobench too.Gravatar mtklein2014-08-19
| | | | | | | | | | | Everyone used MB, so update the API to just return that. BUG=skia: R=halcanary@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/483323002
* Stop sorting the results of SkBBH::search().Gravatar mtklein2014-08-18
| | | | | | | | | | | | | We only seem to need to sort with SkQuadTree, which is not actively used by client code. So it's really just wasted work. SkQuadTree is interesting, but I'd rather disable it than slow down the production code path. BUG=skia:2834 R=robertphillips@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/471063004
* Guard ANGLE and MESA instead of defining them as native when unsupported.Gravatar mtklein2014-08-14
| | | | | | | | | | | | | | | Since we've added "angle" to the default list of configs we've been running kNative_GLContextType tests twice in DM, once for the real native, once for angle. This pointlessly doubles the GPU critical path in DM. Whoops. NOTREECHECKS=true BUG=skia: R=bsalomon@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/471063002
* DM: Replace --pathOpsVerbose with --veryVerboseGravatar halcanary2014-08-13
| | | | | | | | R=caryclark@google.com, mtklein@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/468963002
* SkTileGrid: store insertion order, return results sorted by that.Gravatar mtklein2014-08-12
| | | | | | | | | | | This removes the need to assume the void* are SkPictureStateTree::Data*. BUG=skia: R=robertphillips@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/466503002
* Process Statistics header, add max RSS to render_pdfsGravatar halcanary2014-08-11
| | | | | | | | | | Committed: https://skia.googlesource.com/skia/+/6274baae7fe82ce6481da367687aa6168356e1e1 R=mtklein@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/448993003
* Plumbing for using a BBH in SkRecordDraw.Gravatar mtklein2014-08-11
| | | | | | | | | | | | | | | | For now this only creates a degenerate bounding box hierarchy where all ops just have maximal bounds. I will flesh out FillBounds in future CL(s). Not quite sure why QuadTree and TileGrid aren't drawing right---haven't even looked at the diffs yet---so I've disabled those test modes for now. RTree seems fine, so that'll at least get us coverage for all this new plumbing. BUG=skia: R=robertphillips@google.com, mtklein@google.com, reed@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/454123003
* Fix iOS build by centralizing --writePath.Gravatar mtklein2014-08-07
| | | | | | | | | | | CQ_EXTRA_TRYBOTS=tryserver.skia:Build-Mac10.7-Clang-Arm7-Debug-iOS-Trybot BUG=skia: R=mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/452633002
* DM: conserve memory when using --skpsGravatar mtklein2014-08-07
| | | | | | | | | | | | - limit to maximum 1000x1000 viewport like in bench_pictures and nanobench - use lazy bitmap decoding when reading the pictures from disk BUG=skia: R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/448263002