aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/render_pictures_main.cpp
Commit message (Collapse)AuthorAge
* Improvements/additions to SkImageCache/SkLazyPixelRef.Gravatar scroggo@google.com2013-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkPurgeableImageCache: New image cache that uses virtual memory to store the pixels. Combines features of SkAshmemImageCache (which has been removed) with SkPurgeableMemoryBlock, which has android and Mac versions. SkImageCache: Modified the API. pinCache now returns a status out parameter which states whether the pinned memory retained the old data. This allows allocAndPinCache to only be used for allocations. Add a new debug only interface to purge unpinned data. Updates to documentation, clarifying behavior. Changed CachedStatus to MemoryStatus SkLruImageCache: Implement the new function purgeAllUnpinnedCaches and change implementation of pinCache for the new behavior. SkLazyPixelRef: Rewrite onLockPixels to account for the new behavior of pinCache. BitmapFactoryTest: Test the new SkPurgeableImageCache. Write tests which directly test the SkImageCaches. Create a larger bitmap, since some of the SkImageCaches are designed to handle large bitmaps. bench_ and render_pictures: Consolidate lazy_decode_bitmap into one function. Allow using a flag to specify using the purgeable image cache. Clean up some #includes. Review URL: https://codereview.chromium.org/12433020 git-svn-id: http://skia.googlecode.com/svn/trunk@8207 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-03-14
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@8143 2bbb7eff-a529-9590-31e7-b0007b416f81
* Build fix: accessing uninitialized class member (not)Gravatar junov@chromium.org2013-03-13
| | | | | | TBR=sugoi git-svn-id: http://skia.googlecode.com/svn/trunk@8135 2bbb7eff-a529-9590-31e7-b0007b416f81
* Modifying the behavior of render_pictures --validate to test the effect of bbh.Gravatar junov@chromium.org2013-03-13
| | | | | | | | The new behavior consists in using the same renderer, with bbh disabled, as a reference renderer when the current renderer has a bbh. Review URL: https://codereview.chromium.org/12801002 git-svn-id: http://skia.googlecode.com/svn/trunk@8132 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixing crash in render_pictures when failing to create referenceBitmap for ↵Gravatar junov@chromium.org2013-03-12
| | | | | | | | --validate Review URL: https://codereview.chromium.org/12800002 git-svn-id: http://skia.googlecode.com/svn/trunk@8119 2bbb7eff-a529-9590-31e7-b0007b416f81
* Created my own flag parser, based off of gflags.Gravatar scroggo@google.com2013-03-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Share common code between bench_ and render_ to set up the PictureRenderer. Fix an include error in SkPictureRenderer.h. Simplified parameter passing in render_pictures_main. Switch to using an SkAutoTUnref for the PictureRenderer. I also changed the input format somewhat, so the buildbots need to be updated as well: https://codereview.appspot.com/7441044/ Fixed a bug in PictureBenchmark where calling setTimeIndividualTiles(false) sets the member variable to true. Removed setDeviceType from PictureBenchmark, since only the PictureRenderer needs to know which device type to use. Some changes to the input format: '--logPerIter' no longer takes a 1 or 0. Instead, '--logPerIter' turns it on and '--nologPerIter' turns it off (with off as the default). (Note that this is for bench_pictures; bench still uses the old format) Change '--device' to '--config' and 'bitmap' to '8888' to be the same as gm. Requires '--r' before inputs (to match gm), though there can be multiple inputs following it. Changed --enable-deferred-image-decoding (which no one uses but me yet anyway) to --deferImageDecoding, since the former is incompatible with the flag parser. Changes to behavior: Show a short error message on failure (rather than the explanation of all flags). BUG=https://code.google.com/p/skia/issues/detail?id=1094 Review URL: https://codereview.appspot.com/7230053 git-svn-id: http://skia.googlecode.com/svn/trunk@7961 2bbb7eff-a529-9590-31e7-b0007b416f81
* Create SkLazyPixelRef which performs lazy decoding.Gravatar scroggo@google.com2013-02-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new pixel ref behaves similarly to SkImageRef, with some key differences: It does not depend on the images project. It requires an SkImageCache, which handles allocation and caching of the pixel memory. It takes a function signature for decoding which decodes into already allocated pixel memory rather than into an SkBitmap. Add two implementations of SkImageCache: SkLruImageCache and SkAshmemImageCache. Replace SkSerializationHelpers::DecodeBitmap with SkPicture::InstallPixelRefProc, and update sites that referenced it. SkBitmapFactory now sets the pixel ref to a new object of the new class SkLazyPixelRef, provided it has an SkImageCache for caching. Provide an option to do lazy decodes in render_pictures and bench_pictures. SkPicture: Eliminate the default parameters in the constructor. If a proc for decoding bitmaps is installed, use it to decode any encoded data in subpictures. When parsing deserializing subpictures, check for success. When serializing subpictures, pass the picture's bitmap encoder to the subpicture's call to serialize. Update BitmapFactoryTest to test its new behavior. BUG=https://code.google.com/p/skia/issues/detail?id=1008 BUG=https://code.google.com/p/skia/issues/detail?id=1009 Review URL: https://codereview.appspot.com/7060052 git-svn-id: http://skia.googlecode.com/svn/trunk@7835 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add support for using ANGLE in bench_pictures.Gravatar scroggo@google.com2013-02-08
| | | | | | | | | | | | | BUG=https://code.google.com/p/skia/issues/detail?id=1012 Other cleanups: Remove setDeviceType from PictureBenchmark, since it is unnecessary. Dereference PictureRenderer::fGrContext when done with it. Make PictureRenderer::fGrContext and PictureRenderer::fGrContextFactory private, since they are not used by subclasses. Review URL: https://codereview.appspot.com/7314063 git-svn-id: http://skia.googlecode.com/svn/trunk@7677 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change the method for timing individual tiles in bench_pictures.Gravatar scroggo@google.com2013-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When timing individual tiles in bench_pictures, keep a timer running across all repeats, and then take the average. The former method of timing each iteration separately runs into precision errors on some platforms. Running on my Mac Pro with OSX 10.8, the cmsecs for the new method and the old method are roughly the same when checking the CPU time. When checking the wall time, the old method often gives me 0ms, while the new method gives me a larger value. I don't think this can be entirely attributed to rounding though, since on occasion I see the old method showing a short time period (.05 - .15ms) while the new method shows .15ms higher (which is in range for the difference I'm seeing for other tiles where the old method reports 0ms). Some other changes: PictureRenderer::resetState now takes a boolean parameter. If called with false, it will only do a flush, while if called with true, it will also call finish. resetState is now called with true everywhere except in between iterations of drawing the same tile (when timing individual tiles). render_pictures_main no longer calls resetState directly, since it already calls end, which calls resetState. BUG=http://code.google.com/p/skia/issues/detail?id=1066 Review URL: https://codereview.appspot.com/7101060 git-svn-id: http://skia.googlecode.com/svn/trunk@7424 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-17
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7240 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add option to ignore small pixel diffs for --validate. By default, rightGravatar edisonn@google.com2013-01-16
| | | | | | | | | | | now we will default to max diff of 256, which means that for now we report all pixels that are not as expected and we do not error out. Ideally we will decrease the value of max diff to something that does not have visual impact, e.g. 10, then we will report small changes with the intensity under 10, but we will error out for anything larger. Review URL: https://codereview.appspot.com/7137046 git-svn-id: http://skia.googlecode.com/svn/trunk@7232 2bbb7eff-a529-9590-31e7-b0007b416f81
* revert change 7218Gravatar edisonn@google.com2013-01-16
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7220 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add option to ignore small pixel diffs for --validate. By default, right now ↵Gravatar edisonn@google.com2013-01-16
| | | | | | | | we will default to max diff of 256, which means that for now we report all pixels that are not as expected and we do not error out. Ideally we will decrease the value of max diff to something that does not have visual impact, e.g. 10, then we will report small changes with the intensity under 10, but we will error out for anything larger. Review URL: https://codereview.appspot.com/7139043 git-svn-id: http://skia.googlecode.com/svn/trunk@7218 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add VALIDATE_FAILURE_IS_A_TOOL_FAILURE to specify whether a failure in ↵Gravatar reed@google.com2013-01-15
| | | | | | | | | | | validation means the tool should return failure or not. For now it is not defined, which means any failed pixels are still reported to stdout, but the tool does not return an error, allowing the bots to go green (until we can fix these failures). Review URL: https://codereview.appspot.com/7105056 git-svn-id: http://skia.googlecode.com/svn/trunk@7211 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix typo, report in validate diff teh value of the pixel, not the address of ↵Gravatar edisonn@google.com2013-01-11
| | | | | | the pixel. git-svn-id: http://skia.googlecode.com/svn/trunk@7135 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix warningsGravatar reed@google.com2013-01-07
| | | | | | Review URL: https://codereview.appspot.com/7060053 git-svn-id: http://skia.googlecode.com/svn/trunk@7070 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2012-12-19
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@6891 2bbb7eff-a529-9590-31e7-b0007b416f81
* Flags for render_pictures: verify, clone and writeWholeImage:Gravatar edisonn@google.com2012-12-18
| | | | | | | | | | 1) flag to verify PNGs produced by render_picture that produce the same pixels as simple renderer. 2) flag to write one single image (in tile we write individual tiles) - this will help running skdiff also 3) flag to clone the picture before rendering git-svn-id: http://skia.googlecode.com/svn/trunk@6890 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow setting a scaleFactor in bench_pictures (and render_pictures).Gravatar scroggo@google.com2012-12-17
| | | | | | | | | | | | | | In TiledPictureRenderer and CopyTilesRenderer, do a postTranslate so the translate is not affected by the scale factor. Likewise, use clipRegion for tiled renderer so it will be unaffected by the scale factor. Respect the viewport for record, playbackCreation, and pipe renderers. Review URL: https://codereview.appspot.com/6947072 git-svn-id: http://skia.googlecode.com/svn/trunk@6853 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow bench_pictures to have its viewport set on the command line.Gravatar scroggo@google.com2012-12-13
| | | | | | | | | | | | | | | Instead of drawing the entire (potentially very large) picture, only draw one viewport's worth. example: bench_pictures <skp directory> --viewport 640 480 BUG=https://code.google.com/p/skia/issues/detail?id=1007 Review URL: https://codereview.appspot.com/6943052 git-svn-id: http://skia.googlecode.com/svn/trunk@6799 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add a new PictureRenderer that draws the picture then breaks up into tiles.Gravatar scroggo@google.com2012-11-07
| | | | | | Review URL: https://codereview.appspot.com/6820103 git-svn-id: http://skia.googlecode.com/svn/trunk@6333 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add an option to render_pictures to rerecord the pictures with PNG encoded ↵Gravatar scroggo@google.com2012-11-07
| | | | | | | | bitmaps. Review URL: https://codereview.appspot.com/6821092 git-svn-id: http://skia.googlecode.com/svn/trunk@6332 2bbb7eff-a529-9590-31e7-b0007b416f81
* In bench_pictures --multi, maintain thread local caches.Gravatar scroggo@google.com2012-11-02
| | | | | | | | | | | | | | | | | Builds on https://codereview.appspot.com/6718046/ by mtklein. Previously, each iteration of drawing a picture started new threads to draw the picture. Since each thread is using thread local storage for the font cache, this means that each iteration had to start with an empty font cache. The newly added MultiCorePictureRenderer, separated from TiledPictureRenderer, now starts the drawing threads at the beginning of the test using an SkThreadPool, and keeps them alive through all iterations, so the font cache can be reused. For now, I have removed the pipe version of the threaded renderer. Updated bench_pictures_main and render_pictures_main to use the new renderer, and to unref a renderer before early exit. Review URL: https://codereview.appspot.com/6777063 git-svn-id: http://skia.googlecode.com/svn/trunk@6285 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make output path to render_pictures optionalGravatar borenet@google.com2012-10-26
| | | | | | Review URL: https://codereview.appspot.com/6779049 git-svn-id: http://skia.googlecode.com/svn/trunk@6136 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add the ability to provide function pointers to SkPicture serializationGravatar scroggo@google.com2012-10-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and deserialization for encoding and decoding bitmaps. Remove kForceFlattenBitmapPixels_Flag, which is no longer used. When an SkOrderedReadBuffer needs to read a bitmap, if it does not have an image decoder, use a dummy bitmap. In GM, add a tolerance option for color differences, used when testing picture serialization, so it can assume two images are the same even though PNG encoding/decoding may have resulted in small differences. Create dummy implementations for SkImageDecoder and SkImageEncoder functions in SkImageDecoder_empty so that a project that does not want to include the images project it can still build. Allow ports to build without images project. In Mac's image encoder, copy 4444 to 8888 before encoding. Add SkWriter32::reservePad, to provide a pointer to write non 4 byte aligned data, padded with zeroes. In bench_ and render_ pictures, pass decode function to SkPicture creation from a stream. BUG=https://code.google.com/p/skia/issues/detail?id=842 Review URL: https://codereview.appspot.com/6551071 git-svn-id: http://skia.googlecode.com/svn/trunk@5818 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow render_pictures to render using multiple threads.Gravatar scroggo@google.com2012-10-03
| | | | | | | | | | | | Make write() a static function so it can be used by the thread entry functions. Add a helper function to append a number to a string and call write to share code. Review URL: https://codereview.appspot.com/6589062 git-svn-id: http://skia.googlecode.com/svn/trunk@5789 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix return value for render_picturesGravatar caryclark@google.com2012-10-02
| | | | | | Review URL: https://codereview.appspot.com/6590049 git-svn-id: http://skia.googlecode.com/svn/trunk@5779 2bbb7eff-a529-9590-31e7-b0007b416f81
* build iOS with 'make all'Gravatar caryclark@google.com2012-10-02
| | | | | | | | | | | This builds all skia tests by treating iOS tools as executable applications. A few warnings were fixed as well. Removed old trace draw code and remnants. Review URL: https://codereview.appspot.com/6597063 git-svn-id: http://skia.googlecode.com/svn/trunk@5776 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix some bugs in our picture tools.Gravatar scroggo@google.com2012-10-01
| | | | | | | | | | | | When doing tiled rendering in multiple threads, clone fPicture, rather than the blank fPictureClones. Also fix a precedence problem so we get the correct rectangle. In render_pictures_main, call PictureRenderer::setup(). Review URL: https://codereview.appspot.com/6585055 git-svn-id: http://skia.googlecode.com/svn/trunk@5758 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove automatic resizing in *_picturesGravatar borenet@google.com2012-09-20
| | | | | | Review URL: https://codereview.appspot.com/6554045 git-svn-id: http://skia.googlecode.com/svn/trunk@5614 2bbb7eff-a529-9590-31e7-b0007b416f81
* In render_pictures tiled rendering, draw a separate PNG for each tile.Gravatar scroggo@google.com2012-09-20
| | | | | | | | | | Since the passed in picture may represent an image which is too large to be represented on the GPU, never create such a large canvas. Instead, after drawing to each tile, create a file showing just that tile. Review URL: https://codereview.appspot.com/6532056 git-svn-id: http://skia.googlecode.com/svn/trunk@5603 2bbb7eff-a529-9590-31e7-b0007b416f81
* Skip empty directories and input files not ending in .skp in *_picturesGravatar borenet@google.com2012-09-19
| | | | | | | Addressing https://code.google.com/p/skia/issues/detail?id=886 Review URL: https://codereview.appspot.com/6531047 git-svn-id: http://skia.googlecode.com/svn/trunk@5597 2bbb7eff-a529-9590-31e7-b0007b416f81
* Check for invalid SkPicturesGravatar borenet@google.com2012-09-17
| | | | | | | | | - Remove hasRecorded() since nobody uses it. - Add "success" boolean to SkPicture stream constructor - Track failures in render_pictures and bench_pictures Review URL: https://codereview.appspot.com/6493105 git-svn-id: http://skia.googlecode.com/svn/trunk@5573 2bbb7eff-a529-9590-31e7-b0007b416f81
* Enable automatic rescaling in bench_picturesGravatar borenet@google.com2012-09-14
| | | | | | | | | bench_pictures with "--device gpu" is failing because we're trying to allocate too much GPU memory. Move the recently-added scaling code into picture_utils and share it between render_pictures and bench_pictures. Review URL: https://codereview.appspot.com/6495125 git-svn-id: http://skia.googlecode.com/svn/trunk@5543 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2012-09-14
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5539 2bbb7eff-a529-9590-31e7-b0007b416f81
* To avoid running out of memory, we rescale very large pictures before weGravatar reed@google.com2012-09-13
| | | | | | | render them. Review URL: https://codereview.appspot.com/6504045 git-svn-id: http://skia.googlecode.com/svn/trunk@5530 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added GPU resource cache stats printing to render_picturesGravatar robertphillips@google.com2012-09-13
| | | | | | | | https://codereview.appspot.com/6492104/ git-svn-id: http://skia.googlecode.com/svn/trunk@5523 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add per-picture logging to render_picturesGravatar borenet@google.com2012-09-10
| | | | | | | This will be helpful for debugging crashes Review URL: https://codereview.appspot.com/6495112 git-svn-id: http://skia.googlecode.com/svn/trunk@5469 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix render_pictures for skia_static_initializers=0Gravatar borenet@google.com2012-09-10
| | | | | | Review URL: https://codereview.appspot.com/6500097 git-svn-id: http://skia.googlecode.com/svn/trunk@5465 2bbb7eff-a529-9590-31e7-b0007b416f81
* Report data from bench_pictures in the same fashion as bench.Gravatar scroggo@google.com2012-09-07
| | | | | | | | | | | | | | | | | | | | Move SkBenchLogger into separate files and make bench_pictures use it. Remove sk_tools::print_msg, since SkBenchLogger is now used instead. Combine picture_benchmark with bench_pictures, since that is the only project that uses it. Refactor the aggregator for bench timer data into its own class and make bench_pictures use it. Consolidate the various virtual PictureBenchmark::run functions into one for reuse. BUG=https://code.google.com/p/skia/issues/detail?id=822 Review URL: https://codereview.appspot.com/6488086 git-svn-id: http://skia.googlecode.com/svn/trunk@5432 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implemented power of two tiling.Gravatar keyar@chromium.org2012-08-23
| | | | | | Review URL: https://codereview.appspot.com/6485056 git-svn-id: http://skia.googlecode.com/svn/trunk@5274 2bbb7eff-a529-9590-31e7-b0007b416f81
* Images are written by PictureRenderer and not render_pictures_main.Gravatar keyar@chromium.org2012-08-21
| | | | | | Review URL: https://codereview.appspot.com/6448174 git-svn-id: http://skia.googlecode.com/svn/trunk@5216 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixed up SK_SUPPORT_GPU flags.Gravatar keyar@chromium.org2012-08-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5186 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added the option to enable GPU rendering on render_ and bench_pictures.Gravatar keyar@chromium.org2012-08-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5183 2bbb7eff-a529-9590-31e7-b0007b416f81
* Dirty commit so Brian can see changes.Gravatar keyar@chromium.org2012-08-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5171 2bbb7eff-a529-9590-31e7-b0007b416f81
* Refactored the bitmap creation into PictureRenderer.Gravatar keyar@chromium.org2012-08-07
| | | | | | | | | | Further, the picture is also stored in the PictureRenderer. The main gain of all of this is that we will not have to change how the device in more than one place when we end up adding different devices. Review URL: https://codereview.appspot.com/6458074 git-svn-id: http://skia.googlecode.com/svn/trunk@4990 2bbb7eff-a529-9590-31e7-b0007b416f81
* render_pictures and bench_pictures now use a --mode parameter.Gravatar keyar@chromium.org2012-08-02
| | | | | | | | This replaces the --tile, --pipe, etc. options from before as they are mutually exclusive. Review URL: https://codereview.appspot.com/6443076 git-svn-id: http://skia.googlecode.com/svn/trunk@4930 2bbb7eff-a529-9590-31e7-b0007b416f81
* Merged bench_pictures and render_pictures rendering methods.Gravatar keyar@chromium.org2012-08-01
| | | | | | | | bench_pictures now uses a class based method for choosing the benchmark type as well. Review URL: https://codereview.appspot.com/6452070 git-svn-id: http://skia.googlecode.com/svn/trunk@4894 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added an option to specify the tiling size to render_pictures.Gravatar keyar@chromium.org2012-07-27
| | | | | | | | With this change I should be able to start merging the rendering implementations of bench_pictures and render_pictures. Review URL: https://codereview.appspot.com/6427061 git-svn-id: http://skia.googlecode.com/svn/trunk@4816 2bbb7eff-a529-9590-31e7-b0007b416f81
* Changed to a class based method in passing around the rendering method for ↵Gravatar keyar@chromium.org2012-07-26
| | | | | | | | | | render_pictures. This is based on a comment for https://codereview.appspot.com/6427061/ Review URL: https://codereview.appspot.com/6405080 git-svn-id: http://skia.googlecode.com/svn/trunk@4786 2bbb7eff-a529-9590-31e7-b0007b416f81