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

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

Issue 873473006: cc: Commit directly to active tree when using single thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « cc/trees/single_thread_proxy.h ('k') | cc/trees/thread_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/single_thread_proxy.h" 5 #include "cc/trees/single_thread_proxy.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/debug/trace_event.h" 8 #include "base/debug/trace_event.h"
9 #include "cc/debug/benchmark_instrumentation.h" 9 #include "cc/debug/benchmark_instrumentation.h"
10 #include "cc/output/context_provider.h" 10 #include "cc/output/context_provider.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 DebugScopedSetImplThread impl(this); 75 DebugScopedSetImplThread impl(this);
76 layer_tree_host_impl_->FinishAllRendering(); 76 layer_tree_host_impl_->FinishAllRendering();
77 } 77 }
78 } 78 }
79 79
80 bool SingleThreadProxy::IsStarted() const { 80 bool SingleThreadProxy::IsStarted() const {
81 DCHECK(Proxy::IsMainThread()); 81 DCHECK(Proxy::IsMainThread());
82 return layer_tree_host_impl_; 82 return layer_tree_host_impl_;
83 } 83 }
84 84
85 bool SingleThreadProxy::CommitToActiveTree() const {
86 // With SingleThreadProxy we skip the pending tree and commit directly to the
87 // active tree.
88 return false;
enne (OOO) 2015/01/28 01:14:53 ...false?!
danakj 2015/01/28 01:28:20 Oh thats why my unittests started passing. thanks
89 }
90
85 void SingleThreadProxy::SetLayerTreeHostClientReady() { 91 void SingleThreadProxy::SetLayerTreeHostClientReady() {
86 TRACE_EVENT0("cc", "SingleThreadProxy::SetLayerTreeHostClientReady"); 92 TRACE_EVENT0("cc", "SingleThreadProxy::SetLayerTreeHostClientReady");
87 // Scheduling is controlled by the embedder in the single thread case, so 93 // Scheduling is controlled by the embedder in the single thread case, so
88 // nothing to do. 94 // nothing to do.
89 DCHECK(Proxy::IsMainThread()); 95 DCHECK(Proxy::IsMainThread());
90 DebugScopedSetImplThread impl(this); 96 DebugScopedSetImplThread impl(this);
91 if (layer_tree_host_->settings().single_thread_proxy_scheduler && 97 if (layer_tree_host_->settings().single_thread_proxy_scheduler &&
92 !scheduler_on_impl_thread_) { 98 !scheduler_on_impl_thread_) {
93 SchedulerSettings scheduler_settings(layer_tree_host_->settings()); 99 SchedulerSettings scheduler_settings(layer_tree_host_->settings());
94 scheduler_settings.main_thread_should_always_be_low_latency = true; 100 scheduler_settings.main_thread_should_always_be_low_latency = true;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 // In the single-threaded case, the scale and scroll deltas should never be 249 // In the single-threaded case, the scale and scroll deltas should never be
244 // touched on the impl layer tree. 250 // touched on the impl layer tree.
245 scoped_ptr<ScrollAndScaleSet> scroll_info = 251 scoped_ptr<ScrollAndScaleSet> scroll_info =
246 layer_tree_host_impl_->ProcessScrollDeltas(); 252 layer_tree_host_impl_->ProcessScrollDeltas();
247 DCHECK(!scroll_info->scrolls.size()); 253 DCHECK(!scroll_info->scrolls.size());
248 DCHECK_EQ(1.f, scroll_info->page_scale_delta); 254 DCHECK_EQ(1.f, scroll_info->page_scale_delta);
249 #endif 255 #endif
250 } 256 }
251 257
252 if (layer_tree_host_->settings().impl_side_painting) { 258 if (layer_tree_host_->settings().impl_side_painting) {
253 // TODO(enne): just commit directly to the active tree. 259 // Commit goes directly to the active tree, but we need to synchronously
254 // 260 // "activate" the tree still during commit to satisfy any potential
255 // Synchronously activate during commit to satisfy any potential
256 // SetNextCommitWaitsForActivation calls. Unfortunately, the tree 261 // SetNextCommitWaitsForActivation calls. Unfortunately, the tree
257 // might not be ready to draw, so DidActivateSyncTree must set 262 // might not be ready to draw, so DidActivateSyncTree must set
258 // the flag to force the tree to not draw until textures are ready. 263 // the flag to force the tree to not draw until textures are ready.
259 NotifyReadyToActivate(); 264 NotifyReadyToActivate();
260 } else { 265 } else {
261 CommitComplete(); 266 CommitComplete();
262 } 267 }
263 } 268 }
264 269
265 void SingleThreadProxy::CommitComplete() { 270 void SingleThreadProxy::CommitComplete() {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 return contents_texture_manager->ReduceMemoryOnImplThread( 431 return contents_texture_manager->ReduceMemoryOnImplThread(
427 limit_bytes, priority_cutoff, resource_provider); 432 limit_bytes, priority_cutoff, resource_provider);
428 } 433 }
429 434
430 bool SingleThreadProxy::IsInsideDraw() { return inside_draw_; } 435 bool SingleThreadProxy::IsInsideDraw() { return inside_draw_; }
431 436
432 void SingleThreadProxy::DidActivateSyncTree() { 437 void SingleThreadProxy::DidActivateSyncTree() {
433 // Non-impl-side painting finishes commit in DoCommit. Impl-side painting 438 // Non-impl-side painting finishes commit in DoCommit. Impl-side painting
434 // defers until here to simulate SetNextCommitWaitsForActivation. 439 // defers until here to simulate SetNextCommitWaitsForActivation.
435 if (layer_tree_host_impl_->settings().impl_side_painting) { 440 if (layer_tree_host_impl_->settings().impl_side_painting) {
436 // This is required because NotifyReadyToActivate gets called when 441 // This is required because NotifyReadyToActivate gets called immediately
437 // the pending tree is not actually ready in the SingleThreadProxy. 442 // after commit since single thread commits directly to the active tree.
438 layer_tree_host_impl_->SetRequiresHighResToDraw(); 443 layer_tree_host_impl_->SetRequiresHighResToDraw();
439 444
440 CommitComplete(); 445 CommitComplete();
441 } 446 }
442 447
443 timing_history_.DidActivateSyncTree(); 448 timing_history_.DidActivateSyncTree();
444 } 449 }
445 450
446 void SingleThreadProxy::DidPrepareTiles() { 451 void SingleThreadProxy::DidPrepareTiles() {
447 DCHECK(layer_tree_host_impl_->settings().impl_side_painting); 452 DCHECK(layer_tree_host_impl_->settings().impl_side_painting);
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 819
815 void SingleThreadProxy::DidBeginImplFrameDeadline() { 820 void SingleThreadProxy::DidBeginImplFrameDeadline() {
816 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame(); 821 layer_tree_host_impl_->ResetCurrentBeginFrameArgsForNextFrame();
817 } 822 }
818 823
819 void SingleThreadProxy::SendBeginFramesToChildren(const BeginFrameArgs& args) { 824 void SingleThreadProxy::SendBeginFramesToChildren(const BeginFrameArgs& args) {
820 layer_tree_host_->SendBeginFramesToChildren(args); 825 layer_tree_host_->SendBeginFramesToChildren(args);
821 } 826 }
822 827
823 } // namespace cc 828 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/single_thread_proxy.h ('k') | cc/trees/thread_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698