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

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: address enne's comments 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 1030 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 } 1041 }
1042 } 1042 }
1043 1043
1044 bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame, 1044 bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame,
1045 gfx::Rect device_viewport_damage_rect) { 1045 gfx::Rect device_viewport_damage_rect) {
1046 TRACE_EVENT1("cc", 1046 TRACE_EVENT1("cc",
1047 "LayerTreeHostImpl::PrepareToDraw", 1047 "LayerTreeHostImpl::PrepareToDraw",
1048 "SourceFrameNumber", 1048 "SourceFrameNumber",
1049 active_tree_->source_frame_number()); 1049 active_tree_->source_frame_number());
1050 1050
1051 if (need_to_update_visible_tiles_before_draw_) { 1051 if (need_to_update_visible_tiles_before_draw_ &&
1052 DCHECK(tile_manager_); 1052 tile_manager_ && tile_manager_->UpdateVisibleTiles()) {
1053 if (tile_manager_->UpdateVisibleTiles()) 1053 DidInitializeVisibleTile();
1054 DidInitializeVisibleTile();
1055 } 1054 }
1055 need_to_update_visible_tiles_before_draw_ = true;
1056 1056
1057 active_tree_->UpdateDrawProperties(); 1057 active_tree_->UpdateDrawProperties();
1058 1058
1059 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); 1059 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList();
1060 frame->render_passes.clear(); 1060 frame->render_passes.clear();
1061 frame->render_passes_by_id.clear(); 1061 frame->render_passes_by_id.clear();
1062 frame->will_draw_layers.clear(); 1062 frame->will_draw_layers.clear();
1063 frame->contains_incomplete_tile = false; 1063 frame->contains_incomplete_tile = false;
1064 frame->has_no_damage = false; 1064 frame->has_no_damage = false;
1065 1065
(...skipping 17 matching lines...) Expand all
1083 } 1083 }
1084 1084
1085 void LayerTreeHostImpl::EvictTexturesForTesting() { 1085 void LayerTreeHostImpl::EvictTexturesForTesting() {
1086 EnforceManagedMemoryPolicy(ManagedMemoryPolicy(0)); 1086 EnforceManagedMemoryPolicy(ManagedMemoryPolicy(0));
1087 } 1087 }
1088 1088
1089 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { 1089 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) {
1090 NOTREACHED(); 1090 NOTREACHED();
1091 } 1091 }
1092 1092
1093 void LayerTreeHostImpl::DidInitializeVisibleTileForTesting() {
1094 DidInitializeVisibleTile();
1095 }
1096
1093 void LayerTreeHostImpl::EnforceManagedMemoryPolicy( 1097 void LayerTreeHostImpl::EnforceManagedMemoryPolicy(
1094 const ManagedMemoryPolicy& policy) { 1098 const ManagedMemoryPolicy& policy) {
1095 1099
1096 bool evicted_resources = client_->ReduceContentsTextureMemoryOnImplThread( 1100 bool evicted_resources = client_->ReduceContentsTextureMemoryOnImplThread(
1097 visible_ ? policy.bytes_limit_when_visible 1101 visible_ ? policy.bytes_limit_when_visible
1098 : policy.bytes_limit_when_not_visible, 1102 : policy.bytes_limit_when_not_visible,
1099 ManagedMemoryPolicy::PriorityCutoffToValue( 1103 ManagedMemoryPolicy::PriorityCutoffToValue(
1100 visible_ ? policy.priority_cutoff_when_visible 1104 visible_ ? policy.priority_cutoff_when_visible
1101 : policy.priority_cutoff_when_not_visible)); 1105 : policy.priority_cutoff_when_not_visible));
1102 if (evicted_resources) { 1106 if (evicted_resources) {
(...skipping 30 matching lines...) Expand all
1133 policy.priority_cutoff_when_not_visible); 1137 policy.priority_cutoff_when_not_visible);
1134 new_state.num_resources_limit = policy.num_resources_limit; 1138 new_state.num_resources_limit = policy.num_resources_limit;
1135 tile_manager_->SetGlobalState(new_state); 1139 tile_manager_->SetGlobalState(new_state);
1136 manage_tiles_needed_ = true; 1140 manage_tiles_needed_ = true;
1137 } 1141 }
1138 1142
1139 void LayerTreeHostImpl::DidInitializeVisibleTile() { 1143 void LayerTreeHostImpl::DidInitializeVisibleTile() {
1140 // TODO(reveman): Determine tiles that changed and only damage 1144 // TODO(reveman): Determine tiles that changed and only damage
1141 // what's necessary. 1145 // what's necessary.
1142 SetFullRootLayerDamage(); 1146 SetFullRootLayerDamage();
1143 if (client_) 1147 if (client_ && !client_->IsInsideDraw())
1144 client_->DidInitializeVisibleTileOnImplThread(); 1148 client_->DidInitializeVisibleTileOnImplThread();
1145 } 1149 }
1146 1150
1147 void LayerTreeHostImpl::NotifyReadyToActivate() { 1151 void LayerTreeHostImpl::NotifyReadyToActivate() {
1148 client_->NotifyReadyToActivate(); 1152 client_->NotifyReadyToActivate();
1149 } 1153 }
1150 1154
1151 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) { 1155 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) {
1152 SetManagedMemoryPolicy(policy, zero_budget_); 1156 SetManagedMemoryPolicy(policy, zero_budget_);
1153 } 1157 }
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1480 recycle_tree_.swap(pending_tree_); 1484 recycle_tree_.swap(pending_tree_);
1481 else 1485 else
1482 pending_tree_ = LayerTreeImpl::create(this); 1486 pending_tree_ = LayerTreeImpl::create(this);
1483 client_->OnCanDrawStateChanged(CanDraw()); 1487 client_->OnCanDrawStateChanged(CanDraw());
1484 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree", pending_tree_.get()); 1488 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree", pending_tree_.get());
1485 TRACE_EVENT_ASYNC_STEP0("cc", 1489 TRACE_EVENT_ASYNC_STEP0("cc",
1486 "PendingTree", pending_tree_.get(), "waiting"); 1490 "PendingTree", pending_tree_.get(), "waiting");
1487 } 1491 }
1488 1492
1489 void LayerTreeHostImpl::UpdateVisibleTiles() { 1493 void LayerTreeHostImpl::UpdateVisibleTiles() {
1490 DCHECK(!client_->IsInsideDraw()) << 1494 DCHECK(!client_->IsInsideDraw())
1491 "Updating visible tiles within a draw may trigger " 1495 << "Updating visible tiles within a draw may trigger spurious redraws.";
1492 "spurious redraws.";
1493 if (tile_manager_ && tile_manager_->UpdateVisibleTiles()) 1496 if (tile_manager_ && tile_manager_->UpdateVisibleTiles())
1494 DidInitializeVisibleTile(); 1497 DidInitializeVisibleTile();
1495 1498
1496 need_to_update_visible_tiles_before_draw_ = false; 1499 need_to_update_visible_tiles_before_draw_ = false;
1497 } 1500 }
1498 1501
1499 void LayerTreeHostImpl::ActivatePendingTree() { 1502 void LayerTreeHostImpl::ActivatePendingTree() {
1500 CHECK(pending_tree_); 1503 CHECK(pending_tree_);
1501 TRACE_EVENT_ASYNC_END0("cc", "PendingTree", pending_tree_.get()); 1504 TRACE_EVENT_ASYNC_END0("cc", "PendingTree", pending_tree_.get());
1502 1505
(...skipping 1159 matching lines...) Expand 10 before | Expand all | Expand 10 after
2662 2665
2663 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource( 2666 ResourceProvider::ResourceId LayerTreeHostImpl::ResourceIdForUIResource(
2664 UIResourceId uid) const { 2667 UIResourceId uid) const {
2665 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid); 2668 UIResourceMap::const_iterator iter = ui_resource_map_.find(uid);
2666 if (iter != ui_resource_map_.end()) 2669 if (iter != ui_resource_map_.end())
2667 return iter->second; 2670 return iter->second;
2668 return 0; 2671 return 0;
2669 } 2672 }
2670 2673
2671 } // namespace cc 2674 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698