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

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

Issue 343653004: cc: Don't add new tilings while syncing a tiling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: managetilingsinsync: . Created 6 years, 6 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 ideal_page_scale_(0.f), 54 ideal_page_scale_(0.f),
55 ideal_device_scale_(0.f), 55 ideal_device_scale_(0.f),
56 ideal_source_scale_(0.f), 56 ideal_source_scale_(0.f),
57 ideal_contents_scale_(0.f), 57 ideal_contents_scale_(0.f),
58 raster_page_scale_(0.f), 58 raster_page_scale_(0.f),
59 raster_device_scale_(0.f), 59 raster_device_scale_(0.f),
60 raster_source_scale_(0.f), 60 raster_source_scale_(0.f),
61 raster_contents_scale_(0.f), 61 raster_contents_scale_(0.f),
62 low_res_raster_contents_scale_(0.f), 62 low_res_raster_contents_scale_(0.f),
63 raster_source_scale_is_fixed_(false), 63 raster_source_scale_is_fixed_(false),
64 was_animating_transform_to_screen_(false), 64 was_screen_space_transform_animating_(false),
65 needs_post_commit_initialization_(true), 65 needs_post_commit_initialization_(true),
66 should_update_tile_priorities_(false) { 66 should_update_tile_priorities_(false) {
67 layer_tree_impl()->RegisterPictureLayerImpl(this); 67 layer_tree_impl()->RegisterPictureLayerImpl(this);
68 } 68 }
69 69
70 PictureLayerImpl::~PictureLayerImpl() { 70 PictureLayerImpl::~PictureLayerImpl() {
71 layer_tree_impl()->UnregisterPictureLayerImpl(this); 71 layer_tree_impl()->UnregisterPictureLayerImpl(this);
72 } 72 }
73 73
74 const char* PictureLayerImpl::LayerTypeAsString() const { 74 const char* PictureLayerImpl::LayerTypeAsString() const {
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 on_demand_missing_tile_count); 379 on_demand_missing_tile_count);
380 } 380 }
381 381
382 // Aggressively remove any tilings that are not seen to save memory. Note 382 // Aggressively remove any tilings that are not seen to save memory. Note
383 // that this is at the expense of doing cause more frequent re-painting. A 383 // that this is at the expense of doing cause more frequent re-painting. A
384 // better scheme would be to maintain a tighter visible_content_rect for the 384 // better scheme would be to maintain a tighter visible_content_rect for the
385 // finer tilings. 385 // finer tilings.
386 CleanUpTilingsOnActiveLayer(seen_tilings); 386 CleanUpTilingsOnActiveLayer(seen_tilings);
387 } 387 }
388 388
389 void PictureLayerImpl::UpdateTilePriorities() { 389 void PictureLayerImpl::UpdateTiles() {
390 TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTilePriorities"); 390 TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTiles");
391 391
392 DoPostCommitInitializationIfNeeded(); 392 DoPostCommitInitializationIfNeeded();
393 393
394 if (layer_tree_impl()->device_viewport_valid_for_tile_management()) { 394 if (layer_tree_impl()->device_viewport_valid_for_tile_management()) {
395 visible_rect_for_tile_priority_ = visible_content_rect(); 395 visible_rect_for_tile_priority_ = visible_content_rect();
396 viewport_size_for_tile_priority_ = layer_tree_impl()->DrawViewportSize(); 396 viewport_size_for_tile_priority_ = layer_tree_impl()->DrawViewportSize();
397 screen_space_transform_for_tile_priority_ = screen_space_transform(); 397 screen_space_transform_for_tile_priority_ = screen_space_transform();
398 } 398 }
399 399
400 if (!CanHaveTilings()) { 400 if (!CanHaveTilings()) {
401 ideal_page_scale_ = 0.f; 401 ideal_page_scale_ = 0.f;
402 ideal_device_scale_ = 0.f; 402 ideal_device_scale_ = 0.f;
403 ideal_contents_scale_ = 0.f; 403 ideal_contents_scale_ = 0.f;
404 ideal_source_scale_ = 0.f; 404 ideal_source_scale_ = 0.f;
405 SanityCheckTilingState(); 405 SanityCheckTilingState();
406 return; 406 return;
407 } 407 }
408 408
409 UpdateIdealScales();
410
411 DCHECK(tilings_->num_tilings() > 0 || raster_contents_scale_ == 0.f)
412 << "A layer with no tilings shouldn't have valid raster scales";
413 if (!raster_contents_scale_ || ShouldAdjustRasterScale()) {
414 RecalculateRasterScales();
415 AddTilingsForRasterScale();
416 }
417
418 DCHECK(raster_page_scale_);
419 DCHECK(raster_device_scale_);
420 DCHECK(raster_source_scale_);
421 DCHECK(raster_contents_scale_);
422 DCHECK(low_res_raster_contents_scale_);
423
424 was_screen_space_transform_animating_ =
425 draw_properties().screen_space_transform_is_animating;
426
409 // TODO(sohanjg): Avoid needlessly update priorities when syncing to a 427 // TODO(sohanjg): Avoid needlessly update priorities when syncing to a
410 // non-updated tree which will then be updated immediately afterwards. 428 // non-updated tree which will then be updated immediately afterwards.
411 should_update_tile_priorities_ = true; 429 should_update_tile_priorities_ = true;
412 430
413 UpdateIdealScales(); 431 UpdateTilePriorities();
414 ManageTilings(draw_properties().screen_space_transform_is_animating,
415 draw_properties().maximum_animation_contents_scale);
416 432
417 if (!tilings_->num_tilings()) 433 if (layer_tree_impl()->IsPendingTree())
418 return; 434 MarkVisibleResourcesAsRequired();
435 }
436
437 void PictureLayerImpl::UpdateTilePriorities() {
438 TRACE_EVENT0("cc", "PictureLayerImpl::UpdateTilePriorities");
419 439
420 double current_frame_time_in_seconds = 440 double current_frame_time_in_seconds =
421 (layer_tree_impl()->CurrentFrameTimeTicks() - 441 (layer_tree_impl()->CurrentFrameTimeTicks() -
422 base::TimeTicks()).InSecondsF(); 442 base::TimeTicks()).InSecondsF();
423 443
424 bool tiling_needs_update = false; 444 bool tiling_needs_update = false;
425 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { 445 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
426 if (tilings_->tiling_at(i)->NeedsUpdateForFrameAtTime( 446 if (tilings_->tiling_at(i)->NeedsUpdateForFrameAtTime(
427 current_frame_time_in_seconds)) { 447 current_frame_time_in_seconds)) {
428 tiling_needs_update = true; 448 tiling_needs_update = true;
(...skipping 14 matching lines...) Expand all
443 gfx::ToEnclosingRect(MathUtil::ProjectClippedRect( 463 gfx::ToEnclosingRect(MathUtil::ProjectClippedRect(
444 screen_to_layer, gfx::Rect(viewport_size_for_tile_priority_))); 464 screen_to_layer, gfx::Rect(viewport_size_for_tile_priority_)));
445 visible_rect_in_content_space.Intersect(gfx::Rect(content_bounds())); 465 visible_rect_in_content_space.Intersect(gfx::Rect(content_bounds()));
446 } 466 }
447 } 467 }
448 468
449 gfx::Rect visible_layer_rect = gfx::ScaleToEnclosingRect( 469 gfx::Rect visible_layer_rect = gfx::ScaleToEnclosingRect(
450 visible_rect_in_content_space, 1.f / contents_scale_x()); 470 visible_rect_in_content_space, 1.f / contents_scale_x());
451 WhichTree tree = 471 WhichTree tree =
452 layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE; 472 layer_tree_impl()->IsActiveTree() ? ACTIVE_TREE : PENDING_TREE;
453 // TODO(sohanjg): Passing MaximumContentsScale as layer contents scale 473 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
454 // in UpdateTilePriorities is wrong and should be ideal contents scale. 474 // TODO(sohanjg): Passing MaximumContentsScale as layer contents scale
455 tilings_->UpdateTilePriorities(tree, 475 // in UpdateTilePriorities is wrong and should be ideal contents scale.
456 visible_layer_rect, 476 tilings_->tiling_at(i)->UpdateTilePriorities(tree,
457 MaximumTilingContentsScale(), 477 visible_layer_rect,
458 current_frame_time_in_seconds); 478 MaximumTilingContentsScale(),
459 479 current_frame_time_in_seconds);
460 if (layer_tree_impl()->IsPendingTree()) 480 }
461 MarkVisibleResourcesAsRequired();
462 481
463 // Tile priorities were modified. 482 // Tile priorities were modified.
464 layer_tree_impl()->DidModifyTilePriorities(); 483 layer_tree_impl()->DidModifyTilePriorities();
465 } 484 }
466 485
467 void PictureLayerImpl::NotifyTileStateChanged(const Tile* tile) { 486 void PictureLayerImpl::NotifyTileStateChanged(const Tile* tile) {
468 if (layer_tree_impl()->IsActiveTree()) { 487 if (layer_tree_impl()->IsActiveTree()) {
469 gfx::RectF layer_damage_rect = 488 gfx::RectF layer_damage_rect =
470 gfx::ScaleRect(tile->content_rect(), 1.f / tile->contents_scale()); 489 gfx::ScaleRect(tile->content_rect(), 1.f / tile->contents_scale());
471 AddDamageRect(layer_damage_rect); 490 AddDamageRect(layer_damage_rect);
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 iter->GetTileVersionForDrawing(); 753 iter->GetTileVersionForDrawing();
735 if (!tile_version.IsReadyToDraw() || 754 if (!tile_version.IsReadyToDraw() ||
736 tile_version.mode() != ManagedTileState::TileVersion::RESOURCE_MODE) 755 tile_version.mode() != ManagedTileState::TileVersion::RESOURCE_MODE)
737 return 0; 756 return 0;
738 757
739 return tile_version.get_resource_id(); 758 return tile_version.get_resource_id();
740 } 759 }
741 760
742 void PictureLayerImpl::MarkVisibleResourcesAsRequired() const { 761 void PictureLayerImpl::MarkVisibleResourcesAsRequired() const {
743 DCHECK(layer_tree_impl()->IsPendingTree()); 762 DCHECK(layer_tree_impl()->IsPendingTree());
744 DCHECK(!layer_tree_impl()->needs_update_draw_properties());
enne (OOO) 2014/06/19 17:38:49 Why does this go away?
danakj 2014/06/19 17:43:37 This is guaranteed by the callstack now, we only c
745 DCHECK(ideal_contents_scale_); 763 DCHECK(ideal_contents_scale_);
746 DCHECK_GT(tilings_->num_tilings(), 0u); 764 DCHECK_GT(tilings_->num_tilings(), 0u);
747 765
748 // The goal of this function is to find the minimum set of tiles that need to 766 // The goal of this function is to find the minimum set of tiles that need to
749 // be ready to draw in order to activate without flashing content from a 767 // be ready to draw in order to activate without flashing content from a
750 // higher res on the active tree to a lower res on the pending tree. 768 // higher res on the active tree to a lower res on the pending tree.
751 769
752 // First, early out for layers with no visible content. 770 // First, early out for layers with no visible content.
753 if (visible_content_rect().IsEmpty()) 771 if (visible_content_rect().IsEmpty())
754 return; 772 return;
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 namespace { 966 namespace {
949 967
950 inline float PositiveRatio(float float1, float float2) { 968 inline float PositiveRatio(float float1, float float2) {
951 DCHECK_GT(float1, 0); 969 DCHECK_GT(float1, 0);
952 DCHECK_GT(float2, 0); 970 DCHECK_GT(float2, 0);
953 return float1 > float2 ? float1 / float2 : float2 / float1; 971 return float1 > float2 ? float1 / float2 : float2 / float1;
954 } 972 }
955 973
956 } // namespace 974 } // namespace
957 975
958 void PictureLayerImpl::ManageTilings(bool animating_transform_to_screen, 976 void PictureLayerImpl::AddTilingsForRasterScale() {
959 float maximum_animation_contents_scale) {
960 DCHECK(ideal_contents_scale_);
961 DCHECK(ideal_page_scale_);
962 DCHECK(ideal_device_scale_);
963 DCHECK(ideal_source_scale_);
964 DCHECK(CanHaveTilings());
965 DCHECK(!needs_post_commit_initialization_);
966
967 bool change_target_tiling =
968 raster_page_scale_ == 0.f ||
969 raster_device_scale_ == 0.f ||
970 raster_source_scale_ == 0.f ||
971 raster_contents_scale_ == 0.f ||
972 low_res_raster_contents_scale_ == 0.f ||
973 ShouldAdjustRasterScale(animating_transform_to_screen);
974
975 if (tilings_->num_tilings() == 0) {
976 DCHECK(change_target_tiling)
977 << "A layer with no tilings shouldn't have valid raster scales";
978 }
979
980 if (change_target_tiling) {
981 RecalculateRasterScales(animating_transform_to_screen,
982 maximum_animation_contents_scale);
983 }
984
985 was_animating_transform_to_screen_ = animating_transform_to_screen;
986
987 if (!change_target_tiling)
988 return;
989
990 PictureLayerTiling* high_res = NULL; 977 PictureLayerTiling* high_res = NULL;
991 PictureLayerTiling* low_res = NULL; 978 PictureLayerTiling* low_res = NULL;
992 979
993 PictureLayerTiling* previous_low_res = NULL; 980 PictureLayerTiling* previous_low_res = NULL;
994 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { 981 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
995 PictureLayerTiling* tiling = tilings_->tiling_at(i); 982 PictureLayerTiling* tiling = tilings_->tiling_at(i);
996 if (tiling->contents_scale() == raster_contents_scale_) 983 if (tiling->contents_scale() == raster_contents_scale_)
997 high_res = tiling; 984 high_res = tiling;
998 if (tiling->contents_scale() == low_res_raster_contents_scale_) 985 if (tiling->contents_scale() == low_res_raster_contents_scale_)
999 low_res = tiling; 986 low_res = tiling;
1000 if (tiling->resolution() == LOW_RESOLUTION) 987 if (tiling->resolution() == LOW_RESOLUTION)
1001 previous_low_res = tiling; 988 previous_low_res = tiling;
1002 989
1003 // Reset all tilings to non-ideal until the end of this function. 990 // Reset all tilings to non-ideal until the end of this function.
1004 tiling->set_resolution(NON_IDEAL_RESOLUTION); 991 tiling->set_resolution(NON_IDEAL_RESOLUTION);
1005 } 992 }
1006 993
1007 if (!high_res) { 994 if (!high_res) {
1008 high_res = AddTiling(raster_contents_scale_); 995 high_res = AddTiling(raster_contents_scale_);
1009 if (raster_contents_scale_ == low_res_raster_contents_scale_) 996 if (raster_contents_scale_ == low_res_raster_contents_scale_)
1010 low_res = high_res; 997 low_res = high_res;
1011 } 998 }
1012 999
1013 // Only create new low res tilings when the transform is static. This 1000 // Only create new low res tilings when the transform is static. This
1014 // prevents wastefully creating a paired low res tiling for every new high res 1001 // prevents wastefully creating a paired low res tiling for every new high res
1015 // tiling during a pinch or a CSS animation. 1002 // tiling during a pinch or a CSS animation.
1016 bool is_pinching = layer_tree_impl()->PinchGestureActive(); 1003 bool is_pinching = layer_tree_impl()->PinchGestureActive();
1017 if (layer_tree_impl()->create_low_res_tiling() && !is_pinching && 1004 if (layer_tree_impl()->create_low_res_tiling() && !is_pinching &&
1018 !animating_transform_to_screen && !low_res && low_res != high_res) 1005 !draw_properties().screen_space_transform_is_animating && !low_res &&
1006 low_res != high_res)
1019 low_res = AddTiling(low_res_raster_contents_scale_); 1007 low_res = AddTiling(low_res_raster_contents_scale_);
1020 1008
1021 // Set low-res if we have one. 1009 // Set low-res if we have one.
1022 if (!low_res) 1010 if (!low_res)
1023 low_res = previous_low_res; 1011 low_res = previous_low_res;
1024 if (low_res && low_res != high_res) 1012 if (low_res && low_res != high_res)
1025 low_res->set_resolution(LOW_RESOLUTION); 1013 low_res->set_resolution(LOW_RESOLUTION);
1026 1014
1027 // Make sure we always have one high-res (even if high == low). 1015 // Make sure we always have one high-res (even if high == low).
1028 high_res->set_resolution(HIGH_RESOLUTION); 1016 high_res->set_resolution(HIGH_RESOLUTION);
1029 1017
1030 SanityCheckTilingState(); 1018 SanityCheckTilingState();
1031 } 1019 }
1032 1020
1033 bool PictureLayerImpl::ShouldAdjustRasterScale( 1021 bool PictureLayerImpl::ShouldAdjustRasterScale() const {
1034 bool animating_transform_to_screen) const { 1022 if (was_screen_space_transform_animating_ !=
1035 if (was_animating_transform_to_screen_ != animating_transform_to_screen) 1023 draw_properties().screen_space_transform_is_animating)
1036 return true; 1024 return true;
1037 1025
1038 bool is_pinching = layer_tree_impl()->PinchGestureActive(); 1026 bool is_pinching = layer_tree_impl()->PinchGestureActive();
1039 if (is_pinching && raster_page_scale_) { 1027 if (is_pinching && raster_page_scale_) {
1040 // We change our raster scale when it is: 1028 // We change our raster scale when it is:
1041 // - Higher than ideal (need a lower-res tiling available) 1029 // - Higher than ideal (need a lower-res tiling available)
1042 // - Too far from ideal (need a higher-res tiling available) 1030 // - Too far from ideal (need a higher-res tiling available)
1043 float ratio = ideal_page_scale_ / raster_page_scale_; 1031 float ratio = ideal_page_scale_ / raster_page_scale_;
1044 if (raster_page_scale_ > ideal_page_scale_ || 1032 if (raster_page_scale_ > ideal_page_scale_ ||
1045 ratio > kMaxScaleRatioDuringPinch) 1033 ratio > kMaxScaleRatioDuringPinch)
1046 return true; 1034 return true;
1047 } 1035 }
1048 1036
1049 if (!is_pinching) { 1037 if (!is_pinching) {
1050 // When not pinching, match the ideal page scale factor. 1038 // When not pinching, match the ideal page scale factor.
1051 if (raster_page_scale_ != ideal_page_scale_) 1039 if (raster_page_scale_ != ideal_page_scale_)
1052 return true; 1040 return true;
1053 } 1041 }
1054 1042
1055 // Always match the ideal device scale factor. 1043 // Always match the ideal device scale factor.
1056 if (raster_device_scale_ != ideal_device_scale_) 1044 if (raster_device_scale_ != ideal_device_scale_)
1057 return true; 1045 return true;
1058 1046
1059 // When the source scale changes we want to match it, but not when animating 1047 // When the source scale changes we want to match it, but not when animating
1060 // or when we've fixed the scale in place. 1048 // or when we've fixed the scale in place.
1061 if (!animating_transform_to_screen && !raster_source_scale_is_fixed_ && 1049 if (!draw_properties().screen_space_transform_is_animating &&
1050 !raster_source_scale_is_fixed_ &&
1062 raster_source_scale_ != ideal_source_scale_) 1051 raster_source_scale_ != ideal_source_scale_)
1063 return true; 1052 return true;
1064 1053
1065 return false; 1054 return false;
1066 } 1055 }
1067 1056
1068 float PictureLayerImpl::SnappedContentsScale(float scale) { 1057 float PictureLayerImpl::SnappedContentsScale(float scale) {
1069 // If a tiling exists within the max snapping ratio, snap to its scale. 1058 // If a tiling exists within the max snapping ratio, snap to its scale.
1070 float snapped_contents_scale = scale; 1059 float snapped_contents_scale = scale;
1071 float snapped_ratio = kSnapToExistingTilingRatio; 1060 float snapped_ratio = kSnapToExistingTilingRatio;
1072 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { 1061 for (size_t i = 0; i < tilings_->num_tilings(); ++i) {
1073 float tiling_contents_scale = tilings_->tiling_at(i)->contents_scale(); 1062 float tiling_contents_scale = tilings_->tiling_at(i)->contents_scale();
1074 float ratio = PositiveRatio(tiling_contents_scale, scale); 1063 float ratio = PositiveRatio(tiling_contents_scale, scale);
1075 if (ratio < snapped_ratio) { 1064 if (ratio < snapped_ratio) {
1076 snapped_contents_scale = tiling_contents_scale; 1065 snapped_contents_scale = tiling_contents_scale;
1077 snapped_ratio = ratio; 1066 snapped_ratio = ratio;
1078 } 1067 }
1079 } 1068 }
1080 return snapped_contents_scale; 1069 return snapped_contents_scale;
1081 } 1070 }
1082 1071
1083 void PictureLayerImpl::RecalculateRasterScales( 1072 void PictureLayerImpl::RecalculateRasterScales() {
1084 bool animating_transform_to_screen,
1085 float maximum_animation_contents_scale) {
1086 float old_raster_contents_scale = raster_contents_scale_; 1073 float old_raster_contents_scale = raster_contents_scale_;
1087 float old_raster_page_scale = raster_page_scale_; 1074 float old_raster_page_scale = raster_page_scale_;
1088 float old_raster_source_scale = raster_source_scale_; 1075 float old_raster_source_scale = raster_source_scale_;
1089 1076
1090 raster_device_scale_ = ideal_device_scale_; 1077 raster_device_scale_ = ideal_device_scale_;
1091 raster_page_scale_ = ideal_page_scale_; 1078 raster_page_scale_ = ideal_page_scale_;
1092 raster_source_scale_ = ideal_source_scale_; 1079 raster_source_scale_ = ideal_source_scale_;
1093 raster_contents_scale_ = ideal_contents_scale_; 1080 raster_contents_scale_ = ideal_contents_scale_;
1094 1081
1095 // If we're not animating, or leaving an animation, and the 1082 // If we're not animating, or leaving an animation, and the
1096 // ideal_source_scale_ changes, then things are unpredictable, and we fix 1083 // ideal_source_scale_ changes, then things are unpredictable, and we fix
1097 // the raster_source_scale_ in place. 1084 // the raster_source_scale_ in place.
1098 if (old_raster_source_scale && !animating_transform_to_screen && 1085 if (old_raster_source_scale &&
1099 !was_animating_transform_to_screen_ && 1086 !draw_properties().screen_space_transform_is_animating &&
1087 !was_screen_space_transform_animating_ &&
1100 old_raster_source_scale != ideal_source_scale_) 1088 old_raster_source_scale != ideal_source_scale_)
1101 raster_source_scale_is_fixed_ = true; 1089 raster_source_scale_is_fixed_ = true;
1102 1090
1103 // TODO(danakj): Adjust raster source scale closer to ideal source scale at 1091 // TODO(danakj): Adjust raster source scale closer to ideal source scale at
1104 // a throttled rate. Possibly make use of invalidation_.IsEmpty() on pending 1092 // a throttled rate. Possibly make use of invalidation_.IsEmpty() on pending
1105 // tree. This will allow CSS scale changes to get re-rastered at an 1093 // tree. This will allow CSS scale changes to get re-rastered at an
1106 // appropriate rate. 1094 // appropriate rate.
1107 if (raster_source_scale_is_fixed_) { 1095 if (raster_source_scale_is_fixed_) {
1108 raster_contents_scale_ /= raster_source_scale_; 1096 raster_contents_scale_ /= raster_source_scale_;
1109 raster_source_scale_ = 1.f; 1097 raster_source_scale_ = 1.f;
(...skipping 15 matching lines...) Expand all
1125 raster_page_scale_ = 1113 raster_page_scale_ =
1126 raster_contents_scale_ / raster_device_scale_ / raster_source_scale_; 1114 raster_contents_scale_ / raster_device_scale_ / raster_source_scale_;
1127 } 1115 }
1128 1116
1129 raster_contents_scale_ = 1117 raster_contents_scale_ =
1130 std::max(raster_contents_scale_, MinimumContentsScale()); 1118 std::max(raster_contents_scale_, MinimumContentsScale());
1131 1119
1132 // Since we're not re-rasterizing during animation, rasterize at the maximum 1120 // Since we're not re-rasterizing during animation, rasterize at the maximum
1133 // scale that will occur during the animation, if the maximum scale is 1121 // scale that will occur during the animation, if the maximum scale is
1134 // known. 1122 // known.
1135 if (animating_transform_to_screen) { 1123 if (draw_properties().screen_space_transform_is_animating) {
1136 if (maximum_animation_contents_scale > 0.f) { 1124 if (draw_properties().maximum_animation_contents_scale > 0.f) {
1137 raster_contents_scale_ = 1125 raster_contents_scale_ =
1138 std::max(raster_contents_scale_, maximum_animation_contents_scale); 1126 std::max(raster_contents_scale_,
1127 draw_properties().maximum_animation_contents_scale);
1139 } else { 1128 } else {
1140 raster_contents_scale_ = 1129 raster_contents_scale_ =
1141 std::max(raster_contents_scale_, 1130 std::max(raster_contents_scale_,
1142 1.f * ideal_page_scale_ * ideal_device_scale_); 1131 1.f * ideal_page_scale_ * ideal_device_scale_);
1143 } 1132 }
1144 } 1133 }
1145 1134
1146 // If this layer would only create one tile at this content scale, 1135 // If this layer would only create one tile at this content scale,
1147 // don't create a low res tiling. 1136 // don't create a low res tiling.
1148 gfx::Size content_bounds = 1137 gfx::Size content_bounds =
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
1637 return iterator_index_ < iterators_.size(); 1626 return iterator_index_ < iterators_.size();
1638 } 1627 }
1639 1628
1640 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( 1629 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType(
1641 PictureLayerTiling::TilingEvictionTileIterator* it) const { 1630 PictureLayerTiling::TilingEvictionTileIterator* it) const {
1642 return it->get_type() == iteration_stage_ && 1631 return it->get_type() == iteration_stage_ &&
1643 (**it)->required_for_activation() == required_for_activation_; 1632 (**it)->required_for_activation() == required_for_activation_;
1644 } 1633 }
1645 1634
1646 } // namespace cc 1635 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698