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 12259027: cc: Simplify the logic for deciding to update tile priorities. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add early-out and unit test Created 7 years, 7 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 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 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 void LayerTreeHostImpl::BeginCommit() {} 226 void LayerTreeHostImpl::BeginCommit() {}
227 227
228 void LayerTreeHostImpl::CommitComplete() { 228 void LayerTreeHostImpl::CommitComplete() {
229 TRACE_EVENT0("cc", "LayerTreeHostImpl::CommitComplete"); 229 TRACE_EVENT0("cc", "LayerTreeHostImpl::CommitComplete");
230 230
231 // Impl-side painting needs an update immediately post-commit to have the 231 // Impl-side painting needs an update immediately post-commit to have the
232 // opportunity to create tilings. Other paths can call UpdateDrawProperties 232 // opportunity to create tilings. Other paths can call UpdateDrawProperties
233 // more lazily when needed prior to drawing. 233 // more lazily when needed prior to drawing.
234 if (settings_.impl_side_painting) { 234 if (settings_.impl_side_painting) {
235 pending_tree_->set_needs_update_draw_properties(); 235 pending_tree_->set_needs_update_draw_properties();
236 pending_tree_->UpdateDrawProperties(LayerTreeImpl::UPDATE_PENDING_TREE); 236 pending_tree_->UpdateDrawProperties();
237 } else { 237 } else {
238 active_tree_->set_needs_update_draw_properties(); 238 active_tree_->set_needs_update_draw_properties();
239 } 239 }
240 240
241 client_->SendManagedMemoryStats(); 241 client_->SendManagedMemoryStats();
242 } 242 }
243 243
244 bool LayerTreeHostImpl::CanDraw() { 244 bool LayerTreeHostImpl::CanDraw() {
245 // Note: If you are changing this function or any other function that might 245 // Note: If you are changing this function or any other function that might
246 // affect the result of CanDraw, make sure to call 246 // affect the result of CanDraw, make sure to call
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 it = frame->render_passes.size() - position_from_end; 872 it = frame->render_passes.size() - position_from_end;
873 DCHECK_GE(frame->render_passes.size(), position_from_end); 873 DCHECK_GE(frame->render_passes.size(), position_from_end);
874 } 874 }
875 } 875 }
876 } 876 }
877 877
878 bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame, 878 bool LayerTreeHostImpl::PrepareToDraw(FrameData* frame,
879 gfx::Rect device_viewport_damage_rect) { 879 gfx::Rect device_viewport_damage_rect) {
880 TRACE_EVENT0("cc", "LayerTreeHostImpl::PrepareToDraw"); 880 TRACE_EVENT0("cc", "LayerTreeHostImpl::PrepareToDraw");
881 881
882 active_tree_->UpdateDrawProperties( 882 active_tree_->UpdateDrawProperties();
883 LayerTreeImpl::UPDATE_ACTIVE_TREE_FOR_DRAW);
884 883
885 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); 884 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList();
886 frame->render_passes.clear(); 885 frame->render_passes.clear();
887 frame->render_passes_by_id.clear(); 886 frame->render_passes_by_id.clear();
888 frame->will_draw_layers.clear(); 887 frame->will_draw_layers.clear();
889 frame->contains_incomplete_tile = false; 888 frame->contains_incomplete_tile = false;
890 frame->has_no_damage = false; 889 frame->has_no_damage = false;
891 890
892 if (active_tree_->root_layer()) { 891 if (active_tree_->root_layer()) {
893 device_viewport_damage_rect.Union(viewport_damage_rect_); 892 device_viewport_damage_rect.Union(viewport_damage_rect_);
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 if (tile_manager_) 1262 if (tile_manager_)
1264 tile_manager_->CheckForCompletedTileUploads(); 1263 tile_manager_->CheckForCompletedTileUploads();
1265 } 1264 }
1266 1265
1267 bool LayerTreeHostImpl::ActivatePendingTreeIfNeeded() { 1266 bool LayerTreeHostImpl::ActivatePendingTreeIfNeeded() {
1268 if (!pending_tree_) 1267 if (!pending_tree_)
1269 return false; 1268 return false;
1270 1269
1271 CHECK(tile_manager_); 1270 CHECK(tile_manager_);
1272 1271
1273 pending_tree_->UpdateDrawProperties(LayerTreeImpl::UPDATE_PENDING_TREE); 1272 pending_tree_->UpdateDrawProperties();
1274 1273
1275 TRACE_EVENT_ASYNC_STEP1("cc", 1274 TRACE_EVENT_ASYNC_STEP1("cc",
1276 "PendingTree", pending_tree_.get(), "activate", 1275 "PendingTree", pending_tree_.get(), "activate",
1277 "state", ValueToString(ActivationStateAsValue())); 1276 "state", ValueToString(ActivationStateAsValue()));
1278 1277
1279 // Activate once all visible resources in pending tree are ready. 1278 // Activate once all visible resources in pending tree are ready.
1280 if (!pending_tree_->AreVisibleResourcesReady()) 1279 if (!pending_tree_->AreVisibleResourcesReady())
1281 return false; 1280 return false;
1282 1281
1283 ActivatePendingTree(); 1282 ActivatePendingTree();
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 active_tree_->UpdateMaxScrollOffset(); 1457 active_tree_->UpdateMaxScrollOffset();
1459 } 1458 }
1460 1459
1461 void LayerTreeHostImpl::DidChangeTopControlsPosition() { 1460 void LayerTreeHostImpl::DidChangeTopControlsPosition() {
1462 client_->SetNeedsRedrawOnImplThread(); 1461 client_->SetNeedsRedrawOnImplThread();
1463 active_tree_->set_needs_update_draw_properties(); 1462 active_tree_->set_needs_update_draw_properties();
1464 SetFullRootLayerDamage(); 1463 SetFullRootLayerDamage();
1465 } 1464 }
1466 1465
1467 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() { 1466 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() {
1468 active_tree_->UpdateDrawProperties(LayerTreeImpl::UPDATE_ACTIVE_TREE); 1467 active_tree_->UpdateDrawProperties();
1469 return !active_tree_->RenderSurfaceLayerList().empty(); 1468 return !active_tree_->RenderSurfaceLayerList().empty();
1470 } 1469 }
1471 1470
1472 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin( 1471 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin(
1473 gfx::Point viewport_point, InputHandler::ScrollInputType type) { 1472 gfx::Point viewport_point, InputHandler::ScrollInputType type) {
1474 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); 1473 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin");
1475 1474
1476 if (top_controls_manager_) 1475 if (top_controls_manager_)
1477 top_controls_manager_->ScrollBegin(); 1476 top_controls_manager_->ScrollBegin();
1478 1477
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
2160 } 2159 }
2161 2160
2162 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { 2161 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) {
2163 if (debug_state_.continuous_painting != debug_state.continuous_painting) 2162 if (debug_state_.continuous_painting != debug_state.continuous_painting)
2164 paint_time_counter_->ClearHistory(); 2163 paint_time_counter_->ClearHistory();
2165 2164
2166 debug_state_ = debug_state; 2165 debug_state_ = debug_state;
2167 } 2166 }
2168 2167
2169 } // namespace cc 2168 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698