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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 23796002: cc: Implement deadine scheduling disabled by default (Closed) Base URL: http://git.chromium.org/chromium/src.git@schedReadback4
Patch Set: Rebase on epenner's ManageTiles patch Created 7 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
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 1036 matching lines...) Expand 10 before | Expand all | Expand 10 after
1047 } 1047 }
1048 } 1048 }
1049 1049
1050 bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame, 1050 bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame,
1051 gfx::Rect device_viewport_damage_rect) { 1051 gfx::Rect device_viewport_damage_rect) {
1052 TRACE_EVENT1("cc", 1052 TRACE_EVENT1("cc",
1053 "LayerTreeHostImpl::PrepareToDraw", 1053 "LayerTreeHostImpl::PrepareToDraw",
1054 "SourceFrameNumber", 1054 "SourceFrameNumber",
1055 active_tree_->source_frame_number()); 1055 active_tree_->source_frame_number());
1056 1056
1057 if (need_to_update_visible_tiles_before_draw_) { 1057 if (need_to_update_visible_tiles_before_draw_ &&
1058 DCHECK(tile_manager_); 1058 tile_manager_ && tile_manager_->UpdateVisibleTiles()) {
1059 if (tile_manager_->UpdateVisibleTiles()) 1059 DidInitializeVisibleTile();
1060 DidInitializeVisibleTile();
1061 } 1060 }
1061 need_to_update_visible_tiles_before_draw_ = true;
1062 1062
1063 active_tree_->UpdateDrawProperties(); 1063 active_tree_->UpdateDrawProperties();
1064 1064
1065 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); 1065 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList();
1066 frame->render_passes.clear(); 1066 frame->render_passes.clear();
1067 frame->render_passes_by_id.clear(); 1067 frame->render_passes_by_id.clear();
1068 frame->will_draw_layers.clear(); 1068 frame->will_draw_layers.clear();
1069 frame->contains_incomplete_tile = false; 1069 frame->contains_incomplete_tile = false;
1070 frame->has_no_damage = false; 1070 frame->has_no_damage = false;
1071 1071
(...skipping 17 matching lines...) Expand all
1089 } 1089 }
1090 1090
1091 void LayerTreeHostImpl::EvictTexturesForTesting() { 1091 void LayerTreeHostImpl::EvictTexturesForTesting() {
1092 EnforceManagedMemoryPolicy(ManagedMemoryPolicy(0)); 1092 EnforceManagedMemoryPolicy(ManagedMemoryPolicy(0));
1093 } 1093 }
1094 1094
1095 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { 1095 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) {
1096 NOTREACHED(); 1096 NOTREACHED();
1097 } 1097 }
1098 1098
1099 void LayerTreeHostImpl::DidInitializeVisibleTileForTesting() {
1100 DidInitializeVisibleTile();
1101 }
1102
1099 void LayerTreeHostImpl::EnforceManagedMemoryPolicy( 1103 void LayerTreeHostImpl::EnforceManagedMemoryPolicy(
1100 const ManagedMemoryPolicy& policy) { 1104 const ManagedMemoryPolicy& policy) {
1101 1105
1102 bool evicted_resources = client_->ReduceContentsTextureMemoryOnImplThread( 1106 bool evicted_resources = client_->ReduceContentsTextureMemoryOnImplThread(
1103 visible_ ? policy.bytes_limit_when_visible 1107 visible_ ? policy.bytes_limit_when_visible
1104 : policy.bytes_limit_when_not_visible, 1108 : policy.bytes_limit_when_not_visible,
1105 ManagedMemoryPolicy::PriorityCutoffToValue( 1109 ManagedMemoryPolicy::PriorityCutoffToValue(
1106 visible_ ? policy.priority_cutoff_when_visible 1110 visible_ ? policy.priority_cutoff_when_visible
1107 : policy.priority_cutoff_when_not_visible)); 1111 : policy.priority_cutoff_when_not_visible));
1108 if (evicted_resources) { 1112 if (evicted_resources) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 DCHECK(settings_.impl_side_painting); 1151 DCHECK(settings_.impl_side_painting);
1148 // Mark priorities as dirty and schedule a ManageTiles(). 1152 // Mark priorities as dirty and schedule a ManageTiles().
1149 tile_priorities_dirty_ = true; 1153 tile_priorities_dirty_ = true;
1150 client_->SetNeedsManageTilesOnImplThread(); 1154 client_->SetNeedsManageTilesOnImplThread();
1151 } 1155 }
1152 1156
1153 void LayerTreeHostImpl::DidInitializeVisibleTile() { 1157 void LayerTreeHostImpl::DidInitializeVisibleTile() {
1154 // TODO(reveman): Determine tiles that changed and only damage 1158 // TODO(reveman): Determine tiles that changed and only damage
1155 // what's necessary. 1159 // what's necessary.
1156 SetFullRootLayerDamage(); 1160 SetFullRootLayerDamage();
1157 if (client_) 1161 if (client_ && !client_->IsInsideDraw())
1158 client_->DidInitializeVisibleTileOnImplThread(); 1162 client_->DidInitializeVisibleTileOnImplThread();
1159 } 1163 }
1160 1164
1161 void LayerTreeHostImpl::NotifyReadyToActivate() { 1165 void LayerTreeHostImpl::NotifyReadyToActivate() {
1162 client_->NotifyReadyToActivate(); 1166 client_->NotifyReadyToActivate();
1163 } 1167 }
1164 1168
1165 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) { 1169 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) {
1166 SetManagedMemoryPolicy(policy, zero_budget_); 1170 SetManagedMemoryPolicy(policy, zero_budget_);
1167 } 1171 }
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1494 recycle_tree_.swap(pending_tree_); 1498 recycle_tree_.swap(pending_tree_);
1495 else 1499 else
1496 pending_tree_ = LayerTreeImpl::create(this); 1500 pending_tree_ = LayerTreeImpl::create(this);
1497 client_->OnCanDrawStateChanged(CanDraw()); 1501 client_->OnCanDrawStateChanged(CanDraw());
1498 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree", pending_tree_.get()); 1502 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree", pending_tree_.get());
1499 TRACE_EVENT_ASYNC_STEP0("cc", 1503 TRACE_EVENT_ASYNC_STEP0("cc",
1500 "PendingTree", pending_tree_.get(), "waiting"); 1504 "PendingTree", pending_tree_.get(), "waiting");
1501 } 1505 }
1502 1506
1503 void LayerTreeHostImpl::UpdateVisibleTiles() { 1507 void LayerTreeHostImpl::UpdateVisibleTiles() {
1504 DCHECK(!client_->IsInsideDraw()) <<
1505 "Updating visible tiles within a draw may trigger "
1506 "spurious redraws.";
1507 if (tile_manager_ && tile_manager_->UpdateVisibleTiles()) 1508 if (tile_manager_ && tile_manager_->UpdateVisibleTiles())
1508 DidInitializeVisibleTile(); 1509 DidInitializeVisibleTile();
1509
1510 need_to_update_visible_tiles_before_draw_ = false; 1510 need_to_update_visible_tiles_before_draw_ = false;
1511 } 1511 }
1512 1512
1513 void LayerTreeHostImpl::ActivatePendingTree() { 1513 void LayerTreeHostImpl::ActivatePendingTree() {
1514 CHECK(pending_tree_); 1514 CHECK(pending_tree_);
1515 TRACE_EVENT_ASYNC_END0("cc", "PendingTree", pending_tree_.get()); 1515 TRACE_EVENT_ASYNC_END0("cc", "PendingTree", pending_tree_.get());
1516 1516
1517 need_to_update_visible_tiles_before_draw_ = true; 1517 need_to_update_visible_tiles_before_draw_ = true;
1518 1518
1519 active_tree_->SetRootLayerScrollOffsetDelegate(NULL); 1519 active_tree_->SetRootLayerScrollOffsetDelegate(NULL);
(...skipping 1184 matching lines...) Expand 10 before | Expand all | Expand 10 after
2704 std::set<UIResourceId>::iterator found_in_evicted = 2704 std::set<UIResourceId>::iterator found_in_evicted =
2705 evicted_ui_resources_.find(uid); 2705 evicted_ui_resources_.find(uid);
2706 if (found_in_evicted == evicted_ui_resources_.end()) 2706 if (found_in_evicted == evicted_ui_resources_.end())
2707 return; 2707 return;
2708 evicted_ui_resources_.erase(found_in_evicted); 2708 evicted_ui_resources_.erase(found_in_evicted);
2709 if (evicted_ui_resources_.empty()) 2709 if (evicted_ui_resources_.empty())
2710 client_->OnCanDrawStateChanged(CanDraw()); 2710 client_->OnCanDrawStateChanged(CanDraw());
2711 } 2711 }
2712 2712
2713 } // namespace cc 2713 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698