OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |