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

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: rebase 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
« no previous file with comments | « cc/layers/picture_layer_impl.h ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/picture_layer_impl.cc
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index 6845a071fe605ab02c7ed14fece2a583d47f7fe0..3dbce3cb6dab0bb1327dfb34bb0811fbccc7b8b6 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();
+ UpdateViewportRectForTilePriorityInContentSpace();
// The tiling set can require tiles for activation any of the following
// conditions are true:
@@ -496,13 +495,13 @@ 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::UpdateViewportRectForTilePriorityInContentSpace() {
// 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
@@ -510,7 +509,6 @@ gfx::Rect PictureLayerImpl::GetViewportForTilePriorityInContentSpace() const {
gfx::Rect visible_rect_in_content_space = visible_rect_for_tile_priority_;
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 +519,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,8 +1179,8 @@ void PictureLayerImpl::AsValueInto(base::debug::TracedValue* state) const {
state->EndArray();
MathUtil::AddToTracedValue("tile_priority_rect",
- GetViewportForTilePriorityInContentSpace(), state);
-
+ viewport_rect_for_tile_priority_in_content_space_,
+ state);
MathUtil::AddToTracedValue("visible_rect", visible_content_rect(), state);
state->BeginArray("pictures");
@@ -1240,7 +1239,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
« no previous file with comments | « cc/layers/picture_layer_impl.h ('k') | cc/layers/picture_layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698