Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3718)

Unified Diff: cc/picture_layer_tiling.cc

Issue 11704002: cc: Generate tilings at other scales for impl-side painting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, sort() Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/picture_layer_tiling.h ('k') | cc/picture_layer_tiling_set.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/picture_layer_tiling.cc
diff --git a/cc/picture_layer_tiling.cc b/cc/picture_layer_tiling.cc
index 7ea16fd47e6211154fba2603ed6c279ae373b367..43d52c79f42045d952dc9d9193c7489bb1b6db48 100644
--- a/cc/picture_layer_tiling.cc
+++ b/cc/picture_layer_tiling.cc
@@ -24,7 +24,8 @@ PictureLayerTiling::PictureLayerTiling(float contents_scale,
gfx::Size tile_size)
: client_(NULL),
contents_scale_(contents_scale),
- tiling_data_(tile_size, gfx::Size(), true) {
+ tiling_data_(tile_size, gfx::Size(), true),
+ resolution_(NON_IDEAL_RESOLUTION) {
}
PictureLayerTiling::~PictureLayerTiling() {
@@ -60,12 +61,6 @@ void PictureLayerTiling::CreateTile(int i, int j) {
TileMapKey key(i, j);
DCHECK(!tiles_[key]);
tiles_[key] = client_->CreateTile(this, tile_rect);
-
- // TODO(enne): Remove this when we start setting priorities correctly.
- TilePriority priority;
- priority.resolution = HIGH_RESOLUTION;
- priority.time_to_visible_in_seconds = 1000;
- tiles_[key]->set_priority(ACTIVE_TREE, priority);
}
Region PictureLayerTiling::OpaqueRegionInContentRect(
@@ -271,8 +266,8 @@ gfx::Size PictureLayerTiling::Iterator::texture_size() const {
void PictureLayerTiling::UpdateTilePriorities(
WhichTree tree,
const gfx::Size& device_viewport,
- float layer_content_scale_x,
- float layer_content_scale_y,
+ float last_layer_contents_scale,
+ float current_layer_contents_scale,
const gfx::Transform& last_screen_transform,
const gfx::Transform& current_screen_transform,
double time_delta) {
@@ -287,6 +282,7 @@ void PictureLayerTiling::UpdateTilePriorities(
for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) {
TileMapKey key = it->first;
TilePriority priority;
+ priority.resolution = resolution_;
if (key.first > right || key.second > bottom) {
priority.distance_to_visible_in_pixels = std::numeric_limits<int>::max();
priority.time_to_visible_in_seconds =
@@ -296,22 +292,25 @@ void PictureLayerTiling::UpdateTilePriorities(
}
gfx::Rect tile_bound = tiling_data_.TileBounds(key.first, key.second);
- gfx::RectF layer_content_rect = gfx::ScaleRect(
+ gfx::RectF current_layer_content_rect = gfx::ScaleRect(
+ tile_bound,
+ current_layer_contents_scale / contents_scale_,
+ current_layer_contents_scale / contents_scale_);
+ gfx::RectF current_screen_rect = MathUtil::mapClippedRect(
+ current_screen_transform, current_layer_content_rect);
+ gfx::RectF last_layer_content_rect = gfx::ScaleRect(
tile_bound,
- layer_content_scale_x / contents_scale_,
- layer_content_scale_y / contents_scale_);
- gfx::RectF screen_rect = MathUtil::mapClippedRect(
- current_screen_transform, layer_content_rect);
- gfx::RectF previous_rect = MathUtil::mapClippedRect(
- last_screen_transform, layer_content_rect);
-
- priority.resolution = HIGH_RESOLUTION;
+ last_layer_contents_scale / contents_scale_,
+ last_layer_contents_scale / contents_scale_);
+ gfx::RectF last_screen_rect = MathUtil::mapClippedRect(
+ last_screen_transform, last_layer_content_rect);
+
priority.time_to_visible_in_seconds =
TilePriority::TimeForBoundsToIntersect(
- previous_rect, screen_rect, time_delta, view_rect);
+ last_screen_rect, current_screen_rect, time_delta, view_rect);
priority.distance_to_visible_in_pixels =
- TilePriority::manhattanDistance(screen_rect, view_rect);
+ TilePriority::manhattanDistance(current_screen_rect, view_rect);
it->second->set_priority(tree, priority);
}
}
« no previous file with comments | « cc/picture_layer_tiling.h ('k') | cc/picture_layer_tiling_set.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698