-
hidehiko authored
Revert of Back PaintRecord with PaintOpBuffer instead of SkPicture (patchset #42 id:810001 of https://codereview.chromium.org/2768143002/ ) Reason for revert: Reverting due to CrOS breakage. crbug.com/712102 Original issue's description: > Back PaintRecord with PaintOpBuffer instead of SkPicture > > Change the backing of PaintRecord to be a data structure implemented in > cc/paint instead of using SkPicture directly. This new class cribs heavily > from SkLiteDL. > > PaintRecord used to be a typedef to an SkPicture but now is a typedef to > a PaintOpBuffer. (This leaves some flexibility to change this in the > future to an interface without having to modify all of Chromium again.) > > PaintOpBuffer stores a contiguous array of ops, with the ops stored > in place. As an optimization, the first op is stored locally in the > PaintOpBuffer itself to avoid extra allocations for small pictures. > > This patch moves slow path counting from a gpu analysis canvas into > PaintOpBuffer directly. As ops are recorded, slow paths are counted, and > a PaintRecord now knows how many ops it has. This is about a 1.5% savings > for record time (gpu analysis was 2% and 0.5% overhead to record later). > > This patch also implements the SkRecordNoopSaveLayerDrawRestores > optimization from Skia at raster time. This takes save layer (just > opacity) / draw / restore commands and turns them into draws with > opacity. It moves that optimization from Blink at record time inside of > CompositingRecorder and moves it to both DisplayItemList::RasterItem > and PaintOpBuffer::playback (since a save could be either a DisplayItem > or a PaintOp). It's not as robust as Skia's solution and so misses > a few cases that Skia catches, but the rasterize and record on 10k > page agreed that performance was good enough. > > CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > > Review-Url: https://codereview.chromium.org/2768143002 > Cr-Commit-Position: refs/heads/master@{#464809} > Committed: https://chromium.googlesource.com/chromium/src/+/e49d70a44bf12043cc781390f7fc53ce7b4ac807 TBR=chrishtr@chromium.org,danakj@chromium.org,mtklein@chromium.org,thakis@chromium.org,vitalybuka@chromium.org,vmpstr@chromium.org,enne@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. Review-Url: https://codereview.chromium.org/2820133005 Cr-Commit-Position: refs/heads/master@{#465196}
ddefb10b