Go to file
yunchao.he 8e45c3777d Picture Recording: fix the performance bottleneck in SkDeferredCanvas::isFullFrame
blink skips all pending commands during picture recording if it is drawing an opaque full-frame
geometry or image. This may improve performance for some edge cases. To recognize an opaque
full-frame drawing should be cheap enough. Otherwise, the overhead will offset the improvement.
Unfortunately, data from perf for content_shell on Nexus7 shows that SkDeferredCanvas::isFullFrame
is far from cheap. Table below shows that how much isFullFrame() costs in the whole render process.

benchmark                              percentage
my local benchmark(draw 1000 sprites)   4.1%
speedReading                            2.8%
FishIETank(1000 fishes)                 1.5%
GUIMark3 Bitmap                         2.0%

By contrast, real recording (SkGPipeCanvas::drawBitmapRectToRect) and real rasterization
(GrDrawTarget::drawRect) cost ~4% and ~6% in the whole render process respectively. Apparently,
SkDeferredCanvas::isFullFrame() is nontrivial.

getDeviceSize() is the main contributor to this hotspot. The change simply save the canvasSize and
reuse it among drawings if it is not a fresh frame. This change cut off ~65% (or improved ~2 times)
of isFullFrame().

telemetry smoothness canvas_tough_test didn't show obvious improvement or regression.

BUG=411166
R=junov@chromium.org, tomhudson@google.com, reed@google.com

Author: yunchao.he@intel.com

Review URL: https://codereview.chromium.org/545813002
2014-09-14 18:59:04 -07:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Measure picture recording speed in nanobench. 2014-09-10 12:19:30 -07:00
debugger "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
dm Add --matrix to DM, to play around with and maybe use on a bot. 2014-09-11 12:30:12 -07:00
docs warn that docs/quickstart.md is out of sync with official docs 2014-04-21 19:18:46 +00:00
expectations Add support for the Rec601 YUV color space to GrYUVtoRGBEffect. 2014-09-12 17:45:58 -07:00
experimental disable webtry seccmp on non-linux build 2014-09-09 15:57:33 -07:00
forth Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gm Add support for the Rec601 YUV color space to GrYUVtoRGBEffect. 2014-09-12 17:45:58 -07:00
gyp Revert of Add a test that uses C++11 features as a compiler canary. (patchset #2 id:20001 of https://codereview.chromium.org/568913002/) 2014-09-12 17:07:34 -07:00
include Picture Recording: fix the performance bottleneck in SkDeferredCanvas::isFullFrame 2014-09-14 18:59:04 -07:00
platform_tools Make -d x86 have the default GPU cache size. 2014-09-09 12:07:05 -07:00
resources Add resources/mandrill_512_q075.jpg 2014-08-27 13:44:34 -04:00
samplecode "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
src Picture Recording: fix the performance bottleneck in SkDeferredCanvas::isFullFrame 2014-09-14 18:59:04 -07:00
tests Picture Recording: fix the performance bottleneck in SkDeferredCanvas::isFullFrame 2014-09-14 18:59:04 -07:00
third_party "NULL !=" = NULL 2014-09-05 13:34:00 -07:00
tools use SkData::NewUninitialized 2014-09-12 12:12:27 -07:00
trybots_to_run/chrome Deleting the hardcoded list of compile bots in trybots_to_run. 2013-04-09 11:59:42 +00:00
.gitignore Refactored frontend for the rebaseline server. 2014-09-05 13:51:24 -07:00
AUTHORS Add *@skia.org to AUTHORS so we can land CLs using those addresses if we like. 2014-09-12 12:03:55 -07:00
codereview.settings Add Project to skia 2014-06-20 09:39:15 -07:00
CONTRIBUTING Add CONTRIBUTING file 2014-01-13 15:06:26 +00:00
CQ_COMMITTERS Add stephana@ to the list of Skia CQ commiters. 2014-08-13 06:11:09 -07:00
DEPS rebaseline_server: allow users to generate SKP diff patches on a shared instance 2014-08-20 08:00:28 -07:00
Doxyfile delete no-longer-used update-doxygen.sh 2014-05-15 14:41:00 +00:00
gyp_skia Fix Windows bots 2014-06-16 13:41:25 -07:00
gyp_skia.py Roll gyp deps from 1765 to 1796. 2013-11-21 18:11:14 +00:00
LICENSE Manually update copyright notices in files that defied the automated process 2011-07-28 14:24:55 +00:00
make.bat Enable compiling with automatically-downloaded VS toolchain on Windows bots 2014-06-16 10:02:42 -04:00
make.py Enable compiling with automatically-downloaded VS toolchain on Windows bots 2014-06-16 10:02:42 -04:00
Makefile Update LSAN suppressions. 2014-08-29 07:55:35 -07:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py PRESUBMIT should only check owners for the top level include directory 2014-08-26 14:00:55 -07:00
README Point to skiadocs in our README. 2014-05-09 04:30:09 +00:00
README.chromium add root files from chrome 2013-08-13 19:11:15 +00:00
skia.gyp Remove the comments settings for vim tab width and expansion variables. 2013-12-02 22:23:03 +00:00
SKP_VERSION Update SKP version to 99 2014-09-11 21:31:30 -07:00
whitespace.txt whitespace change 2014-09-02 08:04:43 -04:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://sites.google.com/site/skiadocs/home