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

Unified Diff: cc/layers/picture_layer_impl.cc

Issue 819643004: Cache viewport rect for tile priority in UpdateTiles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 5 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
Index: cc/layers/picture_layer_impl.cc
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index 8db30c6de29089607882224caa72d8d3fb6a4cd0..7d6e2e4af8074dd9e8a2c5b9622b52d7a87e2209 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -283,7 +283,7 @@ void PictureLayerImpl::AppendQuads(RenderPass* render_pass,
// normally the same as draw viewport but can be independently overridden by
// embedders like Android WebView with SetExternalDrawConstraints.
gfx::Rect scaled_viewport_for_tile_priority = gfx::ScaleToEnclosingRect(
- GetViewportForTilePriorityInContentSpace(), max_contents_scale);
+ viewport_rect_for_tile_priority_in_content_space_, max_contents_scale);
size_t missing_tile_count = 0u;
size_t on_demand_missing_tile_count = 0u;
@@ -474,8 +474,7 @@ bool PictureLayerImpl::UpdateTilePriorities(
double current_frame_time_in_seconds =
(layer_tree_impl()->CurrentBeginFrameArgs().frame_time -
base::TimeTicks()).InSecondsF();
- gfx::Rect viewport_rect_in_layer_space =
- GetViewportForTilePriorityInContentSpace();
+ CacheViewportForTilePriorityInContentSpace();
// The tiling set can require tiles for activation any of the following
// conditions are true:
@@ -496,21 +495,21 @@ bool PictureLayerImpl::UpdateTilePriorities(
// Pass |occlusion_in_content_space| for |occlusion_in_layer_space| since
// they are the same space in picture layer, as contents scale is always 1.
bool updated = tilings_->UpdateTilePriorities(
- viewport_rect_in_layer_space, ideal_contents_scale_,
+ viewport_rect_for_tile_priority_in_content_space_, ideal_contents_scale_,
current_frame_time_in_seconds, occlusion_in_content_space,
can_require_tiles_for_activation);
return updated;
}
-gfx::Rect PictureLayerImpl::GetViewportForTilePriorityInContentSpace() const {
+void PictureLayerImpl::CacheViewportForTilePriorityInContentSpace() {
danakj 2015/01/21 22:32:18 s/CacheViewportFor/UpdateViewportRectFor/
hush (inactive) 2015/01/21 22:40:46 Done.
// If visible_rect_for_tile_priority_ is empty or
// viewport_rect_for_tile_priority is set to be different from the device
// viewport, try to inverse project the viewport into layer space and use
// that. Otherwise just use visible_rect_for_tile_priority_
gfx::Rect visible_rect_in_content_space = visible_rect_for_tile_priority_;
+
danakj 2015/01/21 22:32:18 don't add whitespace
hush (inactive) 2015/01/21 22:40:46 Done.
gfx::Rect viewport_rect_for_tile_priority =
layer_tree_impl()->ViewportRectForTilePriority();
-
if (visible_rect_in_content_space.IsEmpty() ||
layer_tree_impl()->DeviceViewport() != viewport_rect_for_tile_priority) {
gfx::Transform view_to_layer(gfx::Transform::kSkipInitialization);
@@ -521,7 +520,8 @@ gfx::Rect PictureLayerImpl::GetViewportForTilePriorityInContentSpace() const {
view_to_layer, viewport_rect_for_tile_priority));
}
}
- return visible_rect_in_content_space;
+ viewport_rect_for_tile_priority_in_content_space_ =
+ visible_rect_in_content_space;
}
PictureLayerImpl* PictureLayerImpl::GetPendingOrActiveTwinLayer() const {
@@ -1180,7 +1180,8 @@ void PictureLayerImpl::AsValueInto(base::debug::TracedValue* state) const {
state->EndArray();
state->BeginArray("tile_priority_rect");
- MathUtil::AddToTracedValue(GetViewportForTilePriorityInContentSpace(), state);
+ MathUtil::AddToTracedValue(viewport_rect_for_tile_priority_in_content_space_,
+ state);
state->EndArray();
state->BeginArray("visible_rect");
@@ -1245,7 +1246,7 @@ bool PictureLayerImpl::AllTilesRequiredAreReadyToDraw(
if (visible_rect_for_tile_priority_.IsEmpty())
return true;
- gfx::Rect rect = GetViewportForTilePriorityInContentSpace();
+ gfx::Rect rect = viewport_rect_for_tile_priority_in_content_space_;
rect.Intersect(visible_rect_for_tile_priority_);
// The high resolution tiling is the only tiling that can mark tiles as

Powered by Google App Engine
This is Rietveld 408576698