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

Unified Diff: cc/layers/picture_layer_impl.cc

Issue 616543004: cc: Use visible_rect_for_tile_priority_ where approriate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: UpdateTiles Created 6 years, 3 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 eaccbbf46ba873ebf196ad8f02c92c0a4a47db51..445dfa526535f0a603f55fb6ccc196e8f6a05726 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -441,15 +441,17 @@ void PictureLayerImpl::AppendQuads(
CleanUpTilingsOnActiveLayer(seen_tilings);
}
-void PictureLayerImpl::UpdateTiles(
- const Occlusion& occlusion_in_content_space) {
+void PictureLayerImpl::UpdateTiles(const Occlusion& occlusion_in_content_space,
+ bool draw_properties_valid) {
danakj 2014/10/01 02:05:14 nit: this name seems like a bit of a like, like th
danakj 2014/10/01 02:05:37 a bit of a lie* i mean
boliu 2014/10/01 02:14:58 Umm, external_draw_constraints_invalid? But only t
danakj 2014/10/01 02:23:42 From the POV of this function it seems like the vi
boliu 2014/10/01 02:28:47 I was referring to LTHI::SetExternalDrawConstraint
TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTiles");
DCHECK_EQ(1.f, contents_scale_x());
DCHECK_EQ(1.f, contents_scale_y());
DoPostCommitInitializationIfNeeded();
- visible_rect_for_tile_priority_ = visible_content_rect();
+ if (draw_properties_valid) {
+ visible_rect_for_tile_priority_ = visible_content_rect();
+ }
viewport_rect_for_tile_priority_ =
layer_tree_impl()->ViewportRectForTilePriority();
screen_space_transform_for_tile_priority_ = screen_space_transform();
@@ -806,7 +808,7 @@ void PictureLayerImpl::MarkVisibleResourcesAsRequired() const {
// higher res on the active tree to a lower res on the pending tree.
// First, early out for layers with no visible content.
- if (visible_content_rect().IsEmpty())
+ if (visible_rect_for_tile_priority_.IsEmpty())
return;
// Only mark tiles inside the viewport for tile priority as required for
@@ -814,7 +816,7 @@ void PictureLayerImpl::MarkVisibleResourcesAsRequired() const {
// can be independently overridden by embedders like Android WebView with
// SetExternalDrawConstraints.
gfx::Rect rect = GetViewportForTilePriorityInContentSpace();
- rect.Intersect(visible_content_rect());
+ rect.Intersect(visible_rect_for_tile_priority_);
float min_acceptable_scale =
std::min(raster_contents_scale_, ideal_contents_scale_);
@@ -1492,16 +1494,18 @@ bool PictureLayerImpl::AllTilesRequiredForActivationAreReadyToDraw() const {
if (!tilings_)
return true;
- if (visible_content_rect().IsEmpty())
+ if (visible_rect_for_tile_priority_.IsEmpty())
return true;
+ gfx::Rect rect = GetViewportForTilePriorityInContentSpace();
+ rect.Intersect(visible_rect_for_tile_priority_);
+
for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
PictureLayerTiling* tiling = tilings_->tiling_at(i);
if (tiling->resolution() != HIGH_RESOLUTION &&
tiling->resolution() != LOW_RESOLUTION)
continue;
- gfx::Rect rect(visible_content_rect());
for (PictureLayerTiling::CoverageIterator iter(tiling, 1.f, rect); iter;
++iter) {
const Tile* tile = *iter;

Powered by Google App Engine
This is Rietveld 408576698