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

Side by Side Diff: cc/layers/picture_layer_impl.cc

Issue 140513006: cc: Simplify picture layer tiling update tile priorities. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 if (!tiling_needs_update) 332 if (!tiling_needs_update)
333 return; 333 return;
334 334
335 UpdateLCDTextStatus(can_use_lcd_text()); 335 UpdateLCDTextStatus(can_use_lcd_text());
336 336
337 gfx::Transform current_screen_space_transform = screen_space_transform(); 337 gfx::Transform current_screen_space_transform = screen_space_transform();
338 338
339 gfx::Size viewport_size = layer_tree_impl()->DrawViewportSize(); 339 gfx::Size viewport_size = layer_tree_impl()->DrawViewportSize();
340 gfx::Rect viewport_in_content_space; 340 gfx::Rect viewport_in_content_space;
341 gfx::Transform screen_to_layer(gfx::Transform::kSkipInitialization); 341 gfx::Transform screen_to_layer(gfx::Transform::kSkipInitialization);
342 if (screen_space_transform().GetInverse(&screen_to_layer)) { 342 if (screen_space_transform().GetInverse(&screen_to_layer)) {
enne (OOO) 2014/01/31 23:33:36 Maybe we only need this projection if the viewport
vmpstr 2014/02/03 20:27:24 Done.
343 viewport_in_content_space = 343 viewport_in_content_space =
344 gfx::ToEnclosingRect(MathUtil::ProjectClippedRect( 344 gfx::ToEnclosingRect(MathUtil::ProjectClippedRect(
345 screen_to_layer, gfx::Rect(viewport_size))); 345 screen_to_layer, gfx::Rect(viewport_size)));
346 } 346 }
347 347
348 WhichTree tree = 348 WhichTree tree =
349 layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE; 349 layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE;
350 size_t max_tiles_for_interest_area = 350 size_t max_tiles_for_interest_area =
351 layer_tree_impl()->settings().max_tiles_for_interest_area; 351 layer_tree_impl()->settings().max_tiles_for_interest_area;
352 tilings_->UpdateTilePriorities( 352 tilings_->UpdateTilePriorities(
353 tree, 353 tree,
354 viewport_size,
355 viewport_in_content_space, 354 viewport_in_content_space,
356 visible_content_rect(), 355 visible_content_rect(),
357 last_bounds_,
358 bounds(),
359 last_content_scale_,
360 contents_scale_x(), 356 contents_scale_x(),
361 last_screen_space_transform_,
362 current_screen_space_transform,
363 current_frame_time_in_seconds, 357 current_frame_time_in_seconds,
364 max_tiles_for_interest_area); 358 max_tiles_for_interest_area);
365 359
366 if (layer_tree_impl()->IsPendingTree()) 360 if (layer_tree_impl()->IsPendingTree())
367 MarkVisibleResourcesAsRequired(); 361 MarkVisibleResourcesAsRequired();
368 362
369 last_screen_space_transform_ = current_screen_space_transform; 363 last_screen_space_transform_ = current_screen_space_transform;
enne (OOO) 2014/01/31 23:33:36 Do we need this still?
vmpstr 2014/02/03 20:27:24 Nope. Removed.
370 last_bounds_ = bounds(); 364 last_bounds_ = bounds();
371 last_content_scale_ = contents_scale_x(); 365 last_content_scale_ = contents_scale_x();
372 366
373 // Tile priorities were modified. 367 // Tile priorities were modified.
374 layer_tree_impl()->DidModifyTilePriorities(); 368 layer_tree_impl()->DidModifyTilePriorities();
375 } 369 }
376 370
377 void PictureLayerImpl::DidBecomeActive() { 371 void PictureLayerImpl::DidBecomeActive() {
378 LayerImpl::DidBecomeActive(); 372 LayerImpl::DidBecomeActive();
379 tilings_->DidBecomeActive(); 373 tilings_->DidBecomeActive();
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 contents_scale_x(), 713 contents_scale_x(),
720 rect); 714 rect);
721 iter; 715 iter;
722 ++iter) { 716 ++iter) {
723 if (!*iter || !iter->IsReadyToDraw()) 717 if (!*iter || !iter->IsReadyToDraw())
724 continue; 718 continue;
725 719
726 // This iteration is over the visible content rect which is potentially 720 // This iteration is over the visible content rect which is potentially
727 // less conservative than projecting the viewport into the layer. 721 // less conservative than projecting the viewport into the layer.
728 // Ignore tiles that are know to be outside the viewport. 722 // Ignore tiles that are know to be outside the viewport.
729 if (iter->priority(PENDING_TREE).distance_to_visible_in_pixels != 0) 723 if (iter->priority(PENDING_TREE).distance_to_visible != 0)
enne (OOO) 2014/01/31 23:33:36 I think this can go away as we only mark tiles in
vmpstr 2014/02/03 20:27:24 Good point. Done.
730 continue; 724 continue;
731 725
732 missing_region.Subtract(iter.geometry_rect()); 726 missing_region.Subtract(iter.geometry_rect());
733 iter->MarkRequiredForActivation(); 727 iter->MarkRequiredForActivation();
734 } 728 }
735 } 729 }
736 DCHECK(high_res) << "There must be one high res tiling"; 730 DCHECK(high_res) << "There must be one high res tiling";
737 731
738 // If these pointers are null (because no twin, no matching tiling, or the 732 // If these pointers are null (because no twin, no matching tiling, or the
739 // simpification just below), then high res tiles will be required to fill any 733 // simpification just below), then high res tiles will be required to fill any
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
788 iter; 782 iter;
789 ++iter) { 783 ++iter) {
790 Tile* tile = *iter; 784 Tile* tile = *iter;
791 // A null tile (i.e. missing recording) can just be skipped. 785 // A null tile (i.e. missing recording) can just be skipped.
792 if (!tile) 786 if (!tile)
793 continue; 787 continue;
794 788
795 // This iteration is over the visible content rect which is potentially 789 // This iteration is over the visible content rect which is potentially
796 // less conservative than projecting the viewport into the layer. 790 // less conservative than projecting the viewport into the layer.
797 // Ignore tiles that are know to be outside the viewport. 791 // Ignore tiles that are know to be outside the viewport.
798 if (tile->priority(PENDING_TREE).distance_to_visible_in_pixels != 0) 792 if (tile->priority(PENDING_TREE).distance_to_visible != 0)
799 continue; 793 continue;
800 794
801 // If the missing region doesn't cover it, this tile is fully 795 // If the missing region doesn't cover it, this tile is fully
802 // covered by acceptable tiles at other scales. 796 // covered by acceptable tiles at other scales.
803 if (!missing_region.Intersects(iter.geometry_rect())) 797 if (!missing_region.Intersects(iter.geometry_rect()))
804 continue; 798 continue;
805 799
806 // If the twin tile doesn't exist (i.e. missing recording or so far away 800 // If the twin tile doesn't exist (i.e. missing recording or so far away
807 // that it is outside the visible tile rect) or this tile is shared between 801 // that it is outside the visible tile rect) or this tile is shared between
808 // with the twin, then this tile isn't required to prevent flashing. 802 // with the twin, then this tile isn't required to prevent flashing.
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const { 1225 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const {
1232 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded(); 1226 const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded();
1233 return tilings_->GPUMemoryUsageInBytes(); 1227 return tilings_->GPUMemoryUsageInBytes();
1234 } 1228 }
1235 1229
1236 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) { 1230 void PictureLayerImpl::RunMicroBenchmark(MicroBenchmarkImpl* benchmark) {
1237 benchmark->RunOnLayer(this); 1231 benchmark->RunOnLayer(this);
1238 } 1232 }
1239 1233
1240 } // namespace cc 1234 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698