diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 06:51:56 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 06:51:56 +0000 |
commit | 8b09c34460ec0f1a41fc9f01049ac52d6ecea660 (patch) | |
tree | d93adba84e5a33b6b2aa0c66eebb569f74eb5e6f /cc/test/fake_picture_layer_tiling_client.cc | |
parent | 25eaf9b34c24d45b5c6f4bdb1c98ae20ae539d1f (diff) | |
download | chromium_src-8b09c34460ec0f1a41fc9f01049ac52d6ecea660.zip chromium_src-8b09c34460ec0f1a41fc9f01049ac52d6ecea660.tar.gz chromium_src-8b09c34460ec0f1a41fc9f01049ac52d6ecea660.tar.bz2 |
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
Diffstat (limited to 'cc/test/fake_picture_layer_tiling_client.cc')
-rw-r--r-- | cc/test/fake_picture_layer_tiling_client.cc | 18 |
1 files changed, 15 insertions, 3 deletions
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 <limits> -#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<int>::max(), + std::numeric_limits<int>::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), |