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

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

Issue 23088002: cc: RenderingStats overhaul (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merged EnumerateFileds. Created 7 years, 4 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.cc ('k') | content/renderer/render_widget.cc » ('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/thread_proxy.h" 5 #include "cc/trees/thread_proxy.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 begin_frame_sent_to_main_thread_completion_event_on_impl_thread_->Signal(); 688 begin_frame_sent_to_main_thread_completion_event_on_impl_thread_->Signal();
689 begin_frame_sent_to_main_thread_completion_event_on_impl_thread_ = NULL; 689 begin_frame_sent_to_main_thread_completion_event_on_impl_thread_ = NULL;
690 } 690 }
691 begin_frame_sent_to_main_thread_time_ = base::TimeTicks::HighResNow(); 691 begin_frame_sent_to_main_thread_time_ = base::TimeTicks::HighResNow();
692 } 692 }
693 693
694 void ThreadProxy::BeginFrameOnMainThread( 694 void ThreadProxy::BeginFrameOnMainThread(
695 scoped_ptr<BeginFrameAndCommitState> begin_frame_state) { 695 scoped_ptr<BeginFrameAndCommitState> begin_frame_state) {
696 TRACE_EVENT0("cc", "ThreadProxy::BeginFrameOnMainThread"); 696 TRACE_EVENT0("cc", "ThreadProxy::BeginFrameOnMainThread");
697 DCHECK(IsMainThread()); 697 DCHECK(IsMainThread());
698
698 if (!layer_tree_host_) 699 if (!layer_tree_host_)
699 return; 700 return;
700 701
701 if (defer_commits_) { 702 if (defer_commits_) {
702 pending_deferred_commit_ = begin_frame_state.Pass(); 703 pending_deferred_commit_ = begin_frame_state.Pass();
703 layer_tree_host_->DidDeferCommit(); 704 layer_tree_host_->DidDeferCommit();
704 TRACE_EVENT0("cc", "EarlyOut_DeferCommits"); 705 TRACE_EVENT0("cc", "EarlyOut_DeferCommits");
705 return; 706 return;
706 } 707 }
707 708
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 OffscreenContextProviderForCompositorThread(); 810 OffscreenContextProviderForCompositorThread();
810 if (offscreen_context_provider.get()) 811 if (offscreen_context_provider.get())
811 created_offscreen_context_provider_ = true; 812 created_offscreen_context_provider_ = true;
812 } 813 }
813 814
814 // Notify the impl thread that the main thread is ready to commit. This will 815 // Notify the impl thread that the main thread is ready to commit. This will
815 // begin the commit process, which is blocking from the main thread's 816 // begin the commit process, which is blocking from the main thread's
816 // point of view, but asynchronously performed on the impl thread, 817 // point of view, but asynchronously performed on the impl thread,
817 // coordinated by the Scheduler. 818 // coordinated by the Scheduler.
818 { 819 {
819 TRACE_EVENT0("cc", "ThreadProxy::BeginFrameOnMainThread::commit"); 820 TRACE_EVENT_BEGIN0("cc", "ThreadProxy::BeginFrameOnMainThread::commit");
820 821
821 DebugScopedSetMainThreadBlocked main_thread_blocked(this); 822 DebugScopedSetMainThreadBlocked main_thread_blocked(this);
822 823
823 RenderingStatsInstrumentation* stats_instrumentation = 824 RenderingStatsInstrumentation* stats_instrumentation =
824 layer_tree_host_->rendering_stats_instrumentation(); 825 layer_tree_host_->rendering_stats_instrumentation();
825 base::TimeTicks start_time = stats_instrumentation->StartRecording(); 826 base::TimeTicks start_time = stats_instrumentation->StartRecording();
826 827
827 CompletionEvent completion; 828 CompletionEvent completion;
828 Proxy::ImplThreadTaskRunner()->PostTask( 829 Proxy::ImplThreadTaskRunner()->PostTask(
829 FROM_HERE, 830 FROM_HERE,
830 base::Bind(&ThreadProxy::StartCommitOnImplThread, 831 base::Bind(&ThreadProxy::StartCommitOnImplThread,
831 impl_thread_weak_ptr_, 832 impl_thread_weak_ptr_,
832 &completion, 833 &completion,
833 queue.release(), 834 queue.release(),
834 offscreen_context_provider)); 835 offscreen_context_provider));
835 completion.Wait(); 836 completion.Wait();
836 837
837 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time); 838 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time);
838 stats_instrumentation->AddCommit(duration); 839 stats_instrumentation->AddCommit(duration);
840 TRACE_EVENT_END1("cc", "ThreadProxy::BeginFrameOnMainThread::commit",
841 "data", stats_instrumentation->
842 GetMainThreadRenderingStats().AsTraceableData());
843 stats_instrumentation->AccumulateAndClearMainThreadStats();
839 } 844 }
840 845
841 layer_tree_host_->CommitComplete(); 846 layer_tree_host_->CommitComplete();
842 layer_tree_host_->DidBeginFrame(); 847 layer_tree_host_->DidBeginFrame();
843 } 848 }
844 849
845 void ThreadProxy::StartCommitOnImplThread( 850 void ThreadProxy::StartCommitOnImplThread(
846 CompletionEvent* completion, 851 CompletionEvent* completion,
847 ResourceUpdateQueue* raw_queue, 852 ResourceUpdateQueue* raw_queue,
848 scoped_refptr<cc::ContextProvider> offscreen_context_provider) { 853 scoped_refptr<cc::ContextProvider> offscreen_context_provider) {
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1510 DCHECK(layer_tree_host_impl_->settings().impl_side_painting); 1515 DCHECK(layer_tree_host_impl_->settings().impl_side_painting);
1511 completion_event_for_commit_held_on_tree_activation_->Signal(); 1516 completion_event_for_commit_held_on_tree_activation_->Signal();
1512 completion_event_for_commit_held_on_tree_activation_ = NULL; 1517 completion_event_for_commit_held_on_tree_activation_ = NULL;
1513 } 1518 }
1514 1519
1515 commit_to_activate_duration_history_.InsertSample( 1520 commit_to_activate_duration_history_.InsertSample(
1516 base::TimeTicks::HighResNow() - commit_complete_time_); 1521 base::TimeTicks::HighResNow() - commit_complete_time_);
1517 } 1522 }
1518 1523
1519 } // namespace cc 1524 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/single_thread_proxy.cc ('k') | content/renderer/render_widget.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698