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

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: Fix animations, but still sample timestamp in BeginFrame. 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 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
1495 recycle_tree_.swap(pending_tree_); 1499 recycle_tree_.swap(pending_tree_);
1496 else 1500 else
1497 pending_tree_ = LayerTreeImpl::create(this); 1501 pending_tree_ = LayerTreeImpl::create(this);
1498 client_->OnCanDrawStateChanged(CanDraw()); 1502 client_->OnCanDrawStateChanged(CanDraw());
1499 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree", pending_tree_.get()); 1503 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree", pending_tree_.get());
1500 TRACE_EVENT_ASYNC_STEP0("cc", 1504 TRACE_EVENT_ASYNC_STEP0("cc",
1501 "PendingTree", pending_tree_.get(), "waiting"); 1505 "PendingTree", pending_tree_.get(), "waiting");
1502 } 1506 }
1503 1507
1504 void LayerTreeHostImpl::UpdateVisibleTiles() { 1508 void LayerTreeHostImpl::UpdateVisibleTiles() {
1505 DCHECK(!client_->IsInsideDraw()) <<
1506 "Updating visible tiles within a draw may trigger "
1507 "spurious redraws.";
1508 if (tile_manager_ && tile_manager_->UpdateVisibleTiles()) 1509 if (tile_manager_ && tile_manager_->UpdateVisibleTiles())
1509 DidInitializeVisibleTile(); 1510 DidInitializeVisibleTile();
1510
1511 need_to_update_visible_tiles_before_draw_ = false; 1511 need_to_update_visible_tiles_before_draw_ = false;
1512 } 1512 }
1513 1513
1514 void LayerTreeHostImpl::ActivatePendingTree() { 1514 void LayerTreeHostImpl::ActivatePendingTree() {
1515 CHECK(pending_tree_); 1515 CHECK(pending_tree_);
1516 TRACE_EVENT_ASYNC_END0("cc", "PendingTree", pending_tree_.get()); 1516 TRACE_EVENT_ASYNC_END0("cc", "PendingTree", pending_tree_.get());
1517 1517
1518 need_to_update_visible_tiles_before_draw_ = true; 1518 need_to_update_visible_tiles_before_draw_ = true;
1519 1519
1520 active_tree_->SetRootLayerScrollOffsetDelegate(NULL); 1520 active_tree_->SetRootLayerScrollOffsetDelegate(NULL);
(...skipping 1184 matching lines...) Expand 10 before | Expand all | Expand 10 after
2705 std::set<UIResourceId>::iterator found_in_evicted = 2705 std::set<UIResourceId>::iterator found_in_evicted =
2706 evicted_ui_resources_.find(uid); 2706 evicted_ui_resources_.find(uid);
2707 if (found_in_evicted == evicted_ui_resources_.end()) 2707 if (found_in_evicted == evicted_ui_resources_.end())
2708 return; 2708 return;
2709 evicted_ui_resources_.erase(found_in_evicted); 2709 evicted_ui_resources_.erase(found_in_evicted);
2710 if (evicted_ui_resources_.empty()) 2710 if (evicted_ui_resources_.empty())
2711 client_->OnCanDrawStateChanged(CanDraw()); 2711 client_->OnCanDrawStateChanged(CanDraw());
2712 } 2712 }
2713 2713
2714 } // namespace cc 2714 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698