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

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

Issue 367833003: cc: Start using raster/eviction iterators. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 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 #include <set> 9 #include <set>
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 LayerTreeImpl* tree_impl) { 90 LayerTreeImpl* tree_impl) {
91 return PictureLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>(); 91 return PictureLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>();
92 } 92 }
93 93
94 void PictureLayerImpl::PushPropertiesTo(LayerImpl* base_layer) { 94 void PictureLayerImpl::PushPropertiesTo(LayerImpl* base_layer) {
95 // It's possible this layer was never drawn or updated (e.g. because it was 95 // It's possible this layer was never drawn or updated (e.g. because it was
96 // a descendant of an opacity 0 layer). 96 // a descendant of an opacity 0 layer).
97 DoPostCommitInitializationIfNeeded(); 97 DoPostCommitInitializationIfNeeded();
98 PictureLayerImpl* layer_impl = static_cast<PictureLayerImpl*>(base_layer); 98 PictureLayerImpl* layer_impl = static_cast<PictureLayerImpl*>(base_layer);
99 99
100 // We have already synced the important bits from the the active layer, and
101 // we will soon swap out its tilings and use them for recycling. However,
102 // there are now tiles in this layer's tilings that were unref'd and replaced
103 // with new tiles (due to invalidation). This resets all active priorities on
104 // the to-be-recycled tiling to ensure replaced tiles don't linger and take
105 // memory (due to a stale 'active' priority).
106 if (layer_impl->tilings_)
107 layer_impl->tilings_->DidBecomeRecycled();
108
109 LayerImpl::PushPropertiesTo(base_layer); 100 LayerImpl::PushPropertiesTo(base_layer);
110 101
111 // When the pending tree pushes to the active tree, the pending twin 102 // When the pending tree pushes to the active tree, the pending twin
112 // becomes recycled. 103 // becomes recycled.
113 layer_impl->twin_layer_ = NULL; 104 layer_impl->twin_layer_ = NULL;
114 twin_layer_ = NULL; 105 twin_layer_ = NULL;
115 106
116 layer_impl->pile_ = pile_; 107 layer_impl->pile_ = pile_;
117 108
118 // Tilings would be expensive to push, so we swap. 109 // Tilings would be expensive to push, so we swap.
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 float width; 213 float width;
223 if (*iter && iter->IsReadyToDraw()) { 214 if (*iter && iter->IsReadyToDraw()) {
224 ManagedTileState::TileVersion::Mode mode = 215 ManagedTileState::TileVersion::Mode mode =
225 iter->GetTileVersionForDrawing().mode(); 216 iter->GetTileVersionForDrawing().mode();
226 if (mode == ManagedTileState::TileVersion::SOLID_COLOR_MODE) { 217 if (mode == ManagedTileState::TileVersion::SOLID_COLOR_MODE) {
227 color = DebugColors::SolidColorTileBorderColor(); 218 color = DebugColors::SolidColorTileBorderColor();
228 width = DebugColors::SolidColorTileBorderWidth(layer_tree_impl()); 219 width = DebugColors::SolidColorTileBorderWidth(layer_tree_impl());
229 } else if (mode == ManagedTileState::TileVersion::PICTURE_PILE_MODE) { 220 } else if (mode == ManagedTileState::TileVersion::PICTURE_PILE_MODE) {
230 color = DebugColors::PictureTileBorderColor(); 221 color = DebugColors::PictureTileBorderColor();
231 width = DebugColors::PictureTileBorderWidth(layer_tree_impl()); 222 width = DebugColors::PictureTileBorderWidth(layer_tree_impl());
232 } else if (iter->priority(ACTIVE_TREE).resolution == HIGH_RESOLUTION) { 223 } else if (iter.resolution() == HIGH_RESOLUTION) {
233 color = DebugColors::HighResTileBorderColor(); 224 color = DebugColors::HighResTileBorderColor();
234 width = DebugColors::HighResTileBorderWidth(layer_tree_impl()); 225 width = DebugColors::HighResTileBorderWidth(layer_tree_impl());
235 } else if (iter->priority(ACTIVE_TREE).resolution == LOW_RESOLUTION) { 226 } else if (iter.resolution() == LOW_RESOLUTION) {
236 color = DebugColors::LowResTileBorderColor(); 227 color = DebugColors::LowResTileBorderColor();
237 width = DebugColors::LowResTileBorderWidth(layer_tree_impl()); 228 width = DebugColors::LowResTileBorderWidth(layer_tree_impl());
238 } else if (iter->contents_scale() > max_contents_scale) { 229 } else if (iter->contents_scale() > max_contents_scale) {
239 color = DebugColors::ExtraHighResTileBorderColor(); 230 color = DebugColors::ExtraHighResTileBorderColor();
240 width = DebugColors::ExtraHighResTileBorderWidth(layer_tree_impl()); 231 width = DebugColors::ExtraHighResTileBorderWidth(layer_tree_impl());
241 } else { 232 } else {
242 color = DebugColors::ExtraLowResTileBorderColor(); 233 color = DebugColors::ExtraLowResTileBorderColor();
243 width = DebugColors::ExtraLowResTileBorderWidth(layer_tree_impl()); 234 width = DebugColors::ExtraLowResTileBorderWidth(layer_tree_impl());
244 } 235 }
245 } else { 236 } else {
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 377
387 if (geometry_rect.Intersects(scaled_viewport_for_tile_priority)) { 378 if (geometry_rect.Intersects(scaled_viewport_for_tile_priority)) {
388 append_quads_data->num_missing_tiles++; 379 append_quads_data->num_missing_tiles++;
389 ++missing_tile_count; 380 ++missing_tile_count;
390 } 381 }
391 append_quads_data->approximated_visible_content_area += 382 append_quads_data->approximated_visible_content_area +=
392 visible_geometry_rect.width() * visible_geometry_rect.height(); 383 visible_geometry_rect.width() * visible_geometry_rect.height();
393 continue; 384 continue;
394 } 385 }
395 386
396 if (iter->priority(ACTIVE_TREE).resolution != HIGH_RESOLUTION) { 387 if (iter.resolution() != HIGH_RESOLUTION) {
397 append_quads_data->approximated_visible_content_area += 388 append_quads_data->approximated_visible_content_area +=
398 visible_geometry_rect.width() * visible_geometry_rect.height(); 389 visible_geometry_rect.width() * visible_geometry_rect.height();
399 } 390 }
400 391
401 if (seen_tilings.empty() || seen_tilings.back() != iter.CurrentTiling()) 392 if (seen_tilings.empty() || seen_tilings.back() != iter.CurrentTiling())
402 seen_tilings.push_back(iter.CurrentTiling()); 393 seen_tilings.push_back(iter.CurrentTiling());
403 } 394 }
404 395
405 if (missing_tile_count) { 396 if (missing_tile_count) {
406 TRACE_EVENT_INSTANT2("cc", 397 TRACE_EVENT_INSTANT2("cc",
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 DCHECK(raster_source_scale_); 444 DCHECK(raster_source_scale_);
454 DCHECK(raster_contents_scale_); 445 DCHECK(raster_contents_scale_);
455 DCHECK(low_res_raster_contents_scale_); 446 DCHECK(low_res_raster_contents_scale_);
456 447
457 was_screen_space_transform_animating_ = 448 was_screen_space_transform_animating_ =
458 draw_properties().screen_space_transform_is_animating; 449 draw_properties().screen_space_transform_is_animating;
459 450
460 should_update_tile_priorities_ = true; 451 should_update_tile_priorities_ = true;
461 452
462 UpdateTilePriorities(occlusion_in_content_space); 453 UpdateTilePriorities(occlusion_in_content_space);
463
464 if (layer_tree_impl()->IsPendingTree())
465 MarkVisibleResourcesAsRequired();
466 } 454 }
467 455
468 void PictureLayerImpl::UpdateTilePriorities( 456 void PictureLayerImpl::UpdateTilePriorities(
469 const Occlusion& occlusion_in_content_space) { 457 const Occlusion& occlusion_in_content_space) {
470 TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTilePriorities"); 458 TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTilePriorities");
471 459
472 double current_frame_time_in_seconds = 460 double current_frame_time_in_seconds =
473 (layer_tree_impl()->CurrentBeginFrameArgs().frame_time - 461 (layer_tree_impl()->CurrentBeginFrameArgs().frame_time -
474 base::TimeTicks()).InSecondsF(); 462 base::TimeTicks()).InSecondsF();
475 463
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 void PictureLayerImpl::NotifyTileStateChanged(const Tile* tile) { 524 void PictureLayerImpl::NotifyTileStateChanged(const Tile* tile) {
537 if (layer_tree_impl()->IsActiveTree()) { 525 if (layer_tree_impl()->IsActiveTree()) {
538 gfx::RectF layer_damage_rect = 526 gfx::RectF layer_damage_rect =
539 gfx::ScaleRect(tile->content_rect(), 1.f / tile->contents_scale()); 527 gfx::ScaleRect(tile->content_rect(), 1.f / tile->contents_scale());
540 AddDamageRect(layer_damage_rect); 528 AddDamageRect(layer_damage_rect);
541 } 529 }
542 } 530 }
543 531
544 void PictureLayerImpl::DidBecomeActive() { 532 void PictureLayerImpl::DidBecomeActive() {
545 LayerImpl::DidBecomeActive(); 533 LayerImpl::DidBecomeActive();
546 tilings_->DidBecomeActive();
547 layer_tree_impl()->DidModifyTilePriorities(); 534 layer_tree_impl()->DidModifyTilePriorities();
548 } 535 }
549 536
550 void PictureLayerImpl::DidBeginTracing() { 537 void PictureLayerImpl::DidBeginTracing() {
551 pile_->DidBeginTracing(); 538 pile_->DidBeginTracing();
552 } 539 }
553 540
554 void PictureLayerImpl::ReleaseResources() { 541 void PictureLayerImpl::ReleaseResources() {
555 if (tilings_) 542 if (tilings_)
556 RemoveAllTilings(); 543 RemoveAllTilings();
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 layer_tree_impl()->begin_impl_frame_interval().InSecondsF() * 617 layer_tree_impl()->begin_impl_frame_interval().InSecondsF() *
631 layer_tree_impl()->settings().skewport_target_time_multiplier; 618 layer_tree_impl()->settings().skewport_target_time_multiplier;
632 } 619 }
633 620
634 int PictureLayerImpl::GetSkewportExtrapolationLimitInContentPixels() const { 621 int PictureLayerImpl::GetSkewportExtrapolationLimitInContentPixels() const {
635 return layer_tree_impl() 622 return layer_tree_impl()
636 ->settings() 623 ->settings()
637 .skewport_extrapolation_limit_in_content_pixels; 624 .skewport_extrapolation_limit_in_content_pixels;
638 } 625 }
639 626
627 bool PictureLayerImpl::RequiresHighResToDraw() const {
628 const PictureLayerImpl* layer = this;
629 if (GetTree() == PENDING_TREE)
630 layer = twin_layer_;
631 if (layer)
632 return layer->layer_tree_impl()->RequiresHighResToDraw();
633 return false;
634 }
635
640 gfx::Size PictureLayerImpl::CalculateTileSize( 636 gfx::Size PictureLayerImpl::CalculateTileSize(
641 const gfx::Size& content_bounds) const { 637 const gfx::Size& content_bounds) const {
642 int max_texture_size = 638 int max_texture_size =
643 layer_tree_impl()->resource_provider()->max_texture_size(); 639 layer_tree_impl()->resource_provider()->max_texture_size();
644 640
645 if (pile_->is_mask()) { 641 if (pile_->is_mask()) {
646 // Masks are not tiled, so if we can't cover the whole mask with one tile, 642 // Masks are not tiled, so if we can't cover the whole mask with one tile,
647 // don't make any tiles at all. Returning an empty size signals this. 643 // don't make any tiles at all. Returning an empty size signals this.
648 if (content_bounds.width() > max_texture_size || 644 if (content_bounds.width() > max_texture_size ||
649 content_bounds.height() > max_texture_size) 645 content_bounds.height() > max_texture_size)
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 765
770 const ManagedTileState::TileVersion& tile_version = 766 const ManagedTileState::TileVersion& tile_version =
771 iter->GetTileVersionForDrawing(); 767 iter->GetTileVersionForDrawing();
772 if (!tile_version.IsReadyToDraw() || 768 if (!tile_version.IsReadyToDraw() ||
773 tile_version.mode() != ManagedTileState::TileVersion::RESOURCE_MODE) 769 tile_version.mode() != ManagedTileState::TileVersion::RESOURCE_MODE)
774 return 0; 770 return 0;
775 771
776 return tile_version.get_resource_id(); 772 return tile_version.get_resource_id();
777 } 773 }
778 774
779 void PictureLayerImpl::MarkVisibleResourcesAsRequired() const {
780 DCHECK(layer_tree_impl()->IsPendingTree());
781 DCHECK(ideal_contents_scale_);
782 DCHECK_GT(tilings_->num_tilings(), 0u);
783
784 // The goal of this function is to find the minimum set of tiles that need to
785 // be ready to draw in order to activate without flashing content from a
786 // higher res on the active tree to a lower res on the pending tree.
787
788 // First, early out for layers with no visible content.
789 if (visible_content_rect().IsEmpty())
790 return;
791
792 gfx::Rect rect(visible_content_rect());
793
794 // Only mark tiles inside the viewport for tile priority as required for
795 // activation. This viewport is normally the same as the draw viewport but
796 // can be independently overridden by embedders like Android WebView with
797 // SetExternalDrawConstraints.
798 rect.Intersect(GetViewportForTilePriorityInContentSpace());
799
800 float min_acceptable_scale =
801 std::min(raster_contents_scale_, ideal_contents_scale_);
802
803 if (PictureLayerImpl* twin = twin_layer_) {
804 float twin_min_acceptable_scale =
805 std::min(twin->ideal_contents_scale_, twin->raster_contents_scale_);
806 // Ignore 0 scale in case CalculateContentsScale() has never been
807 // called for active twin.
808 if (twin_min_acceptable_scale != 0.0f) {
809 min_acceptable_scale =
810 std::min(min_acceptable_scale, twin_min_acceptable_scale);
811 }
812 }
813
814 PictureLayerTiling* high_res = NULL;
815 PictureLayerTiling* low_res = NULL;
816
817 // First pass: ready to draw tiles in acceptable but non-ideal tilings are
818 // marked as required for activation so that their textures are not thrown
819 // away; any non-ready tiles are not marked as required.
820 Region missing_region = rect;
821 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
822 PictureLayerTiling* tiling = tilings_->tiling_at(i);
823 DCHECK(tiling->has_ever_been_updated());
824
825 if (tiling->resolution() == LOW_RESOLUTION) {
826 DCHECK(!low_res) << "There can only be one low res tiling";
827 low_res = tiling;
828 }
829 if (tiling->contents_scale() < min_acceptable_scale)
830 continue;
831 if (tiling->resolution() == HIGH_RESOLUTION) {
832 DCHECK(!high_res) << "There can only be one high res tiling";
833 high_res = tiling;
834 continue;
835 }
836 for (PictureLayerTiling::CoverageIterator iter(tiling,
837 contents_scale_x(),
838 rect);
839 iter;
840 ++iter) {
841 if (!*iter || !iter->IsReadyToDraw())
842 continue;
843
844 missing_region.Subtract(iter.geometry_rect());
845 iter->MarkRequiredForActivation();
846 }
847 }
848 DCHECK(high_res) << "There must be one high res tiling";
849
850 // If these pointers are null (because no twin, no matching tiling, or the
851 // simpification just below), then high res tiles will be required to fill any
852 // holes left by the first pass above. If the pointers are valid, then this
853 // layer is allowed to skip any tiles that are not ready on its twin.
854 const PictureLayerTiling* twin_high_res = NULL;
855 const PictureLayerTiling* twin_low_res = NULL;
856
857 if (twin_layer_) {
858 // As a simplification, only allow activating to skip twin tiles that the
859 // active layer is also missing when both this layer and its twin have
860 // "simple" sets of tilings: only 2 tilings (high and low) or only 1 high
861 // res tiling. This avoids having to iterate/track coverage of non-ideal
862 // tilings during the last draw call on the active layer.
863 if (tilings_->num_tilings() <= 2 &&
864 twin_layer_->tilings_->num_tilings() <= tilings_->num_tilings()) {
865 twin_low_res = low_res ? GetTwinTiling(low_res) : NULL;
866 twin_high_res = high_res ? GetTwinTiling(high_res) : NULL;
867 }
868
869 // If this layer and its twin have different transforms, then don't compare
870 // them and only allow activating to high res tiles, since tiles on each
871 // layer will be in different places on screen.
872 if (twin_layer_->layer_tree_impl()->RequiresHighResToDraw() ||
873 bounds() != twin_layer_->bounds() ||
874 draw_properties().screen_space_transform !=
875 twin_layer_->draw_properties().screen_space_transform) {
876 twin_high_res = NULL;
877 twin_low_res = NULL;
878 }
879 }
880
881 // As a second pass, mark as required any visible high res tiles not filled in
882 // by acceptable non-ideal tiles from the first pass.
883 if (MarkVisibleTilesAsRequired(
884 high_res, twin_high_res, contents_scale_x(), rect, missing_region)) {
885 // As an optional third pass, if a high res tile was skipped because its
886 // twin was also missing, then fall back to mark low res tiles as required
887 // in case the active twin is substituting those for missing high res
888 // content. Only suitable, when low res is enabled.
889 if (low_res) {
890 MarkVisibleTilesAsRequired(
891 low_res, twin_low_res, contents_scale_x(), rect, missing_region);
892 }
893 }
894 }
895
896 bool PictureLayerImpl::MarkVisibleTilesAsRequired(
897 PictureLayerTiling* tiling,
898 const PictureLayerTiling* optional_twin_tiling,
899 float contents_scale,
900 const gfx::Rect& rect,
901 const Region& missing_region) const {
902 bool twin_had_missing_tile = false;
903 for (PictureLayerTiling::CoverageIterator iter(tiling,
904 contents_scale,
905 rect);
906 iter;
907 ++iter) {
908 Tile* tile = *iter;
909 // A null tile (i.e. missing recording) can just be skipped.
910 if (!tile)
911 continue;
912
913 // If the tile is occluded, don't mark it as required for activation.
914 if (tile->is_occluded(PENDING_TREE))
915 continue;
916
917 // If the missing region doesn't cover it, this tile is fully
918 // covered by acceptable tiles at other scales.
919 if (!missing_region.Intersects(iter.geometry_rect()))
920 continue;
921
922 // If the twin tile doesn't exist (i.e. missing recording or so far away
923 // that it is outside the visible tile rect) or this tile is shared between
924 // with the twin, then this tile isn't required to prevent flashing.
925 if (optional_twin_tiling) {
926 Tile* twin_tile = optional_twin_tiling->TileAt(iter.i(), iter.j());
927 if (!twin_tile || twin_tile == tile) {
928 // However if the shared tile is being used on the active tree, then
929 // there's no missing content in this place, and low res is not needed.
930 if (!twin_tile || !twin_tile->IsReadyToDraw())
931 twin_had_missing_tile = true;
932 continue;
933 }
934 }
935
936 tile->MarkRequiredForActivation();
937 }
938 return twin_had_missing_tile;
939 }
940
941 void PictureLayerImpl::DoPostCommitInitialization() { 775 void PictureLayerImpl::DoPostCommitInitialization() {
942 DCHECK(needs_post_commit_initialization_); 776 DCHECK(needs_post_commit_initialization_);
943 DCHECK(layer_tree_impl()->IsPendingTree()); 777 DCHECK(layer_tree_impl()->IsPendingTree());
944 778
945 if (!tilings_) 779 if (!tilings_)
946 tilings_.reset(new PictureLayerTilingSet(this, bounds())); 780 tilings_.reset(new PictureLayerTilingSet(this, bounds()));
947 781
948 DCHECK(!twin_layer_); 782 DCHECK(!twin_layer_);
949 twin_layer_ = static_cast<PictureLayerImpl*>( 783 twin_layer_ = static_cast<PictureLayerImpl*>(
950 layer_tree_impl()->FindActiveTreeLayerById(id())); 784 layer_tree_impl()->FindActiveTreeLayerById(id()));
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 if (layer_tree_impl()->IsRecycleTree()) 1160 if (layer_tree_impl()->IsRecycleTree())
1327 return; 1161 return;
1328 1162
1329 if (!CanHaveTilings()) { 1163 if (!CanHaveTilings()) {
1330 DCHECK_EQ(0u, tilings_->num_tilings()); 1164 DCHECK_EQ(0u, tilings_->num_tilings());
1331 return; 1165 return;
1332 } 1166 }
1333 if (tilings_->num_tilings() == 0) 1167 if (tilings_->num_tilings() == 0)
1334 return; 1168 return;
1335 1169
1336 // MarkVisibleResourcesAsRequired depends on having exactly 1 high res 1170 // We should only have one high res tiling.
1337 // tiling to mark its tiles as being required for activation.
1338 DCHECK_EQ(1, tilings_->NumHighResTilings()); 1171 DCHECK_EQ(1, tilings_->NumHighResTilings());
1339 #endif 1172 #endif
1340 } 1173 }
1341 1174
1342 bool PictureLayerImpl::ShouldAdjustRasterScaleDuringScaleAnimations() const { 1175 bool PictureLayerImpl::ShouldAdjustRasterScaleDuringScaleAnimations() const {
1343 if (!layer_tree_impl()->use_gpu_rasterization()) 1176 if (!layer_tree_impl()->use_gpu_rasterization())
1344 return false; 1177 return false;
1345 1178
1346 // Re-rastering text at different scales using GPU rasterization causes 1179 // Re-rastering text at different scales using GPU rasterization causes
1347 // texture uploads for glyphs at each scale (see crbug.com/366225). To 1180 // texture uploads for glyphs at each scale (see crbug.com/366225). To
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1480 tiling->resolution() != LOW_RESOLUTION) 1313 tiling->resolution() != LOW_RESOLUTION)
1481 continue; 1314 continue;
1482 1315
1483 gfx::Rect rect(visible_content_rect()); 1316 gfx::Rect rect(visible_content_rect());
1484 for (PictureLayerTiling::CoverageIterator iter( 1317 for (PictureLayerTiling::CoverageIterator iter(
1485 tiling, contents_scale_x(), rect); 1318 tiling, contents_scale_x(), rect);
1486 iter; 1319 iter;
1487 ++iter) { 1320 ++iter) {
1488 const Tile* tile = *iter; 1321 const Tile* tile = *iter;
1489 // A null tile (i.e. missing recording) can just be skipped. 1322 // A null tile (i.e. missing recording) can just be skipped.
1323 // TODO(vmpstr): Verify this is true if we create tiles in raster
1324 // iterators.
1490 if (!tile) 1325 if (!tile)
1491 continue; 1326 continue;
1492 1327
1493 if (tile->required_for_activation() && !tile->IsReadyToDraw()) 1328 if (tiling->IsTileRequiredForActivation(tile) && !tile->IsReadyToDraw())
1494 return false; 1329 return false;
1495 } 1330 }
1496 } 1331 }
1497 1332
1498 return true; 1333 return true;
1499 } 1334 }
1500 1335
1501 PictureLayerImpl::LayerRasterTileIterator::LayerRasterTileIterator() 1336 PictureLayerImpl::LayerRasterTileIterator::LayerRasterTileIterator()
1502 : layer_(NULL), current_stage_(arraysize(stages_)) { 1337 : layer_(NULL), current_stage_(arraysize(stages_)) {
1503 } 1338 }
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
1766 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange(); 1601 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange();
1767 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start; 1602 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start;
1768 return tiling_range.end - 1 - current_tiling_range_offset; 1603 return tiling_range.end - 1 - current_tiling_range_offset;
1769 } 1604 }
1770 } 1605 }
1771 NOTREACHED(); 1606 NOTREACHED();
1772 return 0; 1607 return 0;
1773 } 1608 }
1774 1609
1775 } // namespace cc 1610 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698