diff options
author | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-22 01:42:36 +0000 |
---|---|---|
committer | enne@chromium.org <enne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-22 01:42:36 +0000 |
commit | fcb846d462bd0d985c94b5bec5a37fa75411c797 (patch) | |
tree | a7f59e309a1f57ea98628a8a42860d2e7a095e16 /cc/resources/tile_priority.h | |
parent | b871b360ea4bb73ec539db8a10f1ba47e0eb1e33 (diff) | |
download | chromium_src-fcb846d462bd0d985c94b5bec5a37fa75411c797.zip chromium_src-fcb846d462bd0d985c94b5bec5a37fa75411c797.tar.gz chromium_src-fcb846d462bd0d985c94b5bec5a37fa75411c797.tar.bz2 |
cc: Move activation check into TileManager
Currently "AreVisibleResourcesReady" requires a tree and tiling walk to
calculate, which means that it's not going to be cheap enough to call
repeatedly during a frame. This is one step towards making activation happen
sooner.
This patch only changes "AreVisibleResourcesReady" into
"MarkVisibleResourcesAsRequired", marking individual tiles as being required
for activation. The TileManager recalculates the set of required tiles when
assigning gpu memory, so that "required" tiles that don't get memory won't be
considered. This lets it very cheaply determine how many outstanding tiles
are needed for the frame.
R=danakj@chromium.org,reveman@chromium.org
BUG=236648
Review URL: https://chromiumcodereview.appspot.com/14660027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201419 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources/tile_priority.h')
-rw-r--r-- | cc/resources/tile_priority.h | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/cc/resources/tile_priority.h b/cc/resources/tile_priority.h index c203bbb..33d69f0 100644 --- a/cc/resources/tile_priority.h +++ b/cc/resources/tile_priority.h @@ -42,17 +42,18 @@ scoped_ptr<base::Value> TileResolutionAsValue( struct CC_EXPORT TilePriority { TilePriority() - : resolution(NON_IDEAL_RESOLUTION), - time_to_visible_in_seconds(std::numeric_limits<float>::infinity()), - distance_to_visible_in_pixels(std::numeric_limits<float>::infinity()) {} - - TilePriority( - TileResolution resolution, - float time_to_visible_in_seconds, - float distance_to_visible_in_pixels) - : resolution(resolution), - time_to_visible_in_seconds(time_to_visible_in_seconds), - distance_to_visible_in_pixels(distance_to_visible_in_pixels) {} + : resolution(NON_IDEAL_RESOLUTION), + required_for_activation(false), + time_to_visible_in_seconds(std::numeric_limits<float>::infinity()), + distance_to_visible_in_pixels(std::numeric_limits<float>::infinity()) {} + + TilePriority(TileResolution resolution, + float time_to_visible_in_seconds, + float distance_to_visible_in_pixels) + : resolution(resolution), + required_for_activation(false), + time_to_visible_in_seconds(time_to_visible_in_seconds), + distance_to_visible_in_pixels(distance_to_visible_in_pixels) {} TilePriority(const TilePriority& active, const TilePriority& pending) { if (active.resolution == HIGH_RESOLUTION || @@ -64,6 +65,9 @@ struct CC_EXPORT TilePriority { else resolution = NON_IDEAL_RESOLUTION; + required_for_activation = + active.required_for_activation || pending.required_for_activation; + time_to_visible_in_seconds = std::min(active.time_to_visible_in_seconds, pending.time_to_visible_in_seconds); @@ -112,6 +116,7 @@ struct CC_EXPORT TilePriority { } TileResolution resolution; + bool required_for_activation; float time_to_visible_in_seconds; float distance_to_visible_in_pixels; |