5087b2c067
Reason for revert: This is leaking memory: http://108.170.220.120:10117/builders/Test-Ubuntu13.10-GCE-NoGPU-x86_64-Debug-ASAN/builds/2516/steps/RunDM/logs/stdio Original issue's description: > 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 > > Committed: https://skia.googlesource.com/skia/+/8e45c3777d886ba3fe239bb549d06b0693692152 R=junov@chromium.org, tomhudson@google.com, reed@google.com, yunchao.he@intel.com TBR=junov@chromium.org, reed@google.com, tomhudson@google.com, yunchao.he@intel.com NOTREECHECKS=true NOTRY=true BUG=411166 Author: mtklein@google.com Review URL: https://codereview.chromium.org/571053002 |
||
---|---|---|
.. | ||
ios | ||
mac | ||
win | ||
SkBoundaryPatch.h | ||
SkCamera.h | ||
SkCanvasStateUtils.h | ||
SkCubicInterval.h | ||
SkCullPoints.h | ||
SkDebugUtils.h | ||
SkDeferredCanvas.h | ||
SkDumpCanvas.h | ||
SkEventTracer.h | ||
SkFrontBufferedStream.h | ||
SkInterpolator.h | ||
SkJSONCPP.h | ||
SkLayer.h | ||
SkLua.h | ||
SkLuaCanvas.h | ||
SkMatrix44.h | ||
SkMeshUtils.h | ||
SkNinePatch.h | ||
SkNoSaveLayerCanvas.h | ||
SkNullCanvas.h | ||
SkNWayCanvas.h | ||
SkParse.h | ||
SkParsePaint.h | ||
SkParsePath.h | ||
SkPathUtils.h | ||
SkPictureUtils.h | ||
SkProxyCanvas.h | ||
SkRandom.h | ||
SkRTConf.h | ||
SkWGL.h |