From 8b09c34460ec0f1a41fc9f01049ac52d6ecea660 Mon Sep 17 00:00:00 2001 From: "thakis@chromium.org" Date: Fri, 14 Mar 2014 06:51:56 +0000 Subject: Revert of cc: Replace recorded region with direct map lookup (https://codereview.chromium.org/196343005/) Reason for revert: Probably broke telemetry's testMeasurementSmoke (which only runs on the cq and not the main waterfall for some reason): http://crbug.com/350697 Original issue's description: > cc: Replace recorded region with direct map lookup > > If the viewport is extremely large, then keeping track of the recorded > region in PicturePile with an actual Region becomes extremely slow due > to a large number of rects being inserted into it. > > The recorded region behaves as a cache to the picture map; it's a > simpler way to know the state of all of the recordings contained within. > > In practice, the recorded region is only used for two things: a "should > this pile bother to create tilings" optimization and a "can a tile be > rastered in this content rect" check aka CanRaster. > > The optimization for "should create tilings" is replaced by a > has_any_recordings_ boolean, which could have a false positive in theory > (resizing to a smaller but non-empty size), but which shouldn't happen > in practice. Even if it did, this would only be a performance penalty > for creating no-op tilings that can't create tiles (due to CanRaster). > > The CanRaster check is replaced by a viewport hint, as most tiles that > the tiling creates will be inside of the very large expanded viewport > during recording, turning an expensive Region.Contains check to a > Rect.Contains one. In the edge cases where tiles are being created > outside of that expanded viewport, it will check the picture map > directly. This should only happen when the user has scrolled thousands > of pixels without a commit. > > BUG=b/13302269 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=256953 TBR=danakj@chromium.org,vmpstr@chromium.org,enne@chromium.org NOTREECHECKS=true NOTRY=true BUG=b/13302269 Review URL: https://codereview.chromium.org/196023015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257051 0039d316-1c4b-4281-b951-d872f2087c98 --- cc/test/fake_picture_layer_tiling_client.cc | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'cc/test/fake_picture_layer_tiling_client.cc') diff --git a/cc/test/fake_picture_layer_tiling_client.cc b/cc/test/fake_picture_layer_tiling_client.cc index 4289b9d4..36d1eee 100644 --- a/cc/test/fake_picture_layer_tiling_client.cc +++ b/cc/test/fake_picture_layer_tiling_client.cc @@ -6,14 +6,26 @@ #include -#include "cc/test/fake_picture_pile_impl.h" #include "cc/test/fake_tile_manager.h" namespace cc { +class FakeInfinitePicturePileImpl : public PicturePileImpl { + public: + FakeInfinitePicturePileImpl() { + gfx::Size size(std::numeric_limits::max(), + std::numeric_limits::max()); + Resize(size); + recorded_region_ = Region(gfx::Rect(size)); + } + + protected: + virtual ~FakeInfinitePicturePileImpl() {} +}; + FakePictureLayerTilingClient::FakePictureLayerTilingClient() : tile_manager_(new FakeTileManager(&tile_manager_client_)), - pile_(FakePicturePileImpl::CreateInfiniteFilledPile()), + pile_(new FakeInfinitePicturePileImpl()), twin_tiling_(NULL), allow_create_tile_(true), max_tiles_for_interest_area_(10000), @@ -24,7 +36,7 @@ FakePictureLayerTilingClient::FakePictureLayerTilingClient( ResourceProvider* resource_provider) : tile_manager_( new FakeTileManager(&tile_manager_client_, resource_provider)), - pile_(FakePicturePileImpl::CreateInfiniteFilledPile()), + pile_(new FakeInfinitePicturePileImpl()), twin_tiling_(NULL), allow_create_tile_(true), max_tiles_for_interest_area_(10000), -- cgit v1.1