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

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

Issue 144463016: cc: add more devtools instrumentation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: capitalized instrumentation functions name Created 6 years, 10 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
« no previous file with comments | « cc/trees/thread_proxy.h ('k') | no next file » | 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"
11 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
12 #include "base/debug/trace_event_synthetic_delay.h" 12 #include "base/debug/trace_event_synthetic_delay.h"
13 #include "base/metrics/histogram.h" 13 #include "base/metrics/histogram.h"
14 #include "cc/base/swap_promise.h" 14 #include "cc/base/swap_promise.h"
15 #include "cc/debug/benchmark_instrumentation.h" 15 #include "cc/debug/benchmark_instrumentation.h"
16 #include "cc/debug/devtools_instrumentation.h"
16 #include "cc/input/input_handler.h" 17 #include "cc/input/input_handler.h"
17 #include "cc/output/context_provider.h" 18 #include "cc/output/context_provider.h"
18 #include "cc/output/output_surface.h" 19 #include "cc/output/output_surface.h"
19 #include "cc/quads/draw_quad.h" 20 #include "cc/quads/draw_quad.h"
20 #include "cc/resources/prioritized_resource_manager.h" 21 #include "cc/resources/prioritized_resource_manager.h"
21 #include "cc/scheduler/delay_based_time_source.h" 22 #include "cc/scheduler/delay_based_time_source.h"
22 #include "cc/scheduler/frame_rate_controller.h" 23 #include "cc/scheduler/frame_rate_controller.h"
23 #include "cc/scheduler/scheduler.h" 24 #include "cc/scheduler/scheduler.h"
24 #include "cc/trees/blocking_task_runner.h" 25 #include "cc/trees/blocking_task_runner.h"
25 #include "cc/trees/layer_tree_host.h" 26 #include "cc/trees/layer_tree_host.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 return make_scoped_ptr(new ThreadProxy(layer_tree_host, impl_task_runner)) 77 return make_scoped_ptr(new ThreadProxy(layer_tree_host, impl_task_runner))
77 .PassAs<Proxy>(); 78 .PassAs<Proxy>();
78 } 79 }
79 80
80 ThreadProxy::ThreadProxy( 81 ThreadProxy::ThreadProxy(
81 LayerTreeHost* layer_tree_host, 82 LayerTreeHost* layer_tree_host,
82 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) 83 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner)
83 : Proxy(impl_task_runner), 84 : Proxy(impl_task_runner),
84 main_thread_only_vars_unsafe_(this, layer_tree_host->id()), 85 main_thread_only_vars_unsafe_(this, layer_tree_host->id()),
85 main_thread_or_blocked_vars_unsafe_(layer_tree_host), 86 main_thread_or_blocked_vars_unsafe_(layer_tree_host),
86 compositor_thread_vars_unsafe_(this) { 87 compositor_thread_vars_unsafe_(this, layer_tree_host->id()) {
87 TRACE_EVENT0("cc", "ThreadProxy::ThreadProxy"); 88 TRACE_EVENT0("cc", "ThreadProxy::ThreadProxy");
88 DCHECK(IsMainThread()); 89 DCHECK(IsMainThread());
89 DCHECK(this->layer_tree_host()); 90 DCHECK(this->layer_tree_host());
90 } 91 }
91 92
92 ThreadProxy::MainThreadOnly::MainThreadOnly(ThreadProxy* proxy, 93 ThreadProxy::MainThreadOnly::MainThreadOnly(ThreadProxy* proxy,
93 int layer_tree_host_id) 94 int layer_tree_host_id)
94 : layer_tree_host_id(layer_tree_host_id), 95 : layer_tree_host_id(layer_tree_host_id),
95 animate_requested(false), 96 animate_requested(false),
96 commit_requested(false), 97 commit_requested(false),
(...skipping 15 matching lines...) Expand all
112 commit_waits_for_activation(false), 113 commit_waits_for_activation(false),
113 main_thread_inside_commit(false) {} 114 main_thread_inside_commit(false) {}
114 115
115 ThreadProxy::MainThreadOrBlockedMainThread::~MainThreadOrBlockedMainThread() {} 116 ThreadProxy::MainThreadOrBlockedMainThread::~MainThreadOrBlockedMainThread() {}
116 117
117 PrioritizedResourceManager* 118 PrioritizedResourceManager*
118 ThreadProxy::MainThreadOrBlockedMainThread::contents_texture_manager() { 119 ThreadProxy::MainThreadOrBlockedMainThread::contents_texture_manager() {
119 return layer_tree_host->contents_texture_manager(); 120 return layer_tree_host->contents_texture_manager();
120 } 121 }
121 122
122 ThreadProxy::CompositorThreadOnly::CompositorThreadOnly(ThreadProxy* proxy) 123 ThreadProxy::CompositorThreadOnly::CompositorThreadOnly(ThreadProxy* proxy,
123 : contents_texture_manager(NULL), 124 int layer_tree_host_id)
125 : layer_tree_host_id(layer_tree_host_id),
126 contents_texture_manager(NULL),
124 begin_main_frame_sent_completion_event(NULL), 127 begin_main_frame_sent_completion_event(NULL),
125 readback_request(NULL), 128 readback_request(NULL),
126 commit_completion_event(NULL), 129 commit_completion_event(NULL),
127 completion_event_for_commit_held_on_tree_activation(NULL), 130 completion_event_for_commit_held_on_tree_activation(NULL),
128 texture_acquisition_completion_event(NULL), 131 texture_acquisition_completion_event(NULL),
129 next_frame_is_newly_committed_frame(false), 132 next_frame_is_newly_committed_frame(false),
130 inside_draw(false), 133 inside_draw(false),
131 input_throttled_until_commit(false), 134 input_throttled_until_commit(false),
132 renew_tree_priority_pending(false), 135 renew_tree_priority_pending(false),
133 draw_duration_history(kDurationHistorySize), 136 draw_duration_history(kDurationHistorySize),
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 DCHECK(IsMainThread()); 676 DCHECK(IsMainThread());
674 DCHECK(Proxy::HasImplThread()); 677 DCHECK(Proxy::HasImplThread());
675 678
676 // Create LayerTreeHostImpl. 679 // Create LayerTreeHostImpl.
677 DebugScopedSetMainThreadBlocked main_thread_blocked(this); 680 DebugScopedSetMainThreadBlocked main_thread_blocked(this);
678 CompletionEvent completion; 681 CompletionEvent completion;
679 Proxy::ImplThreadTaskRunner()->PostTask( 682 Proxy::ImplThreadTaskRunner()->PostTask(
680 FROM_HERE, 683 FROM_HERE,
681 base::Bind(&ThreadProxy::InitializeImplOnImplThread, 684 base::Bind(&ThreadProxy::InitializeImplOnImplThread,
682 base::Unretained(this), 685 base::Unretained(this),
683 &completion, 686 &completion));
684 main().layer_tree_host_id));
685 completion.Wait(); 687 completion.Wait();
686 688
687 main_thread_weak_ptr_ = main().weak_factory.GetWeakPtr(); 689 main_thread_weak_ptr_ = main().weak_factory.GetWeakPtr();
688 690
689 main().started = true; 691 main().started = true;
690 } 692 }
691 693
692 void ThreadProxy::Stop() { 694 void ThreadProxy::Stop() {
693 TRACE_EVENT0("cc", "ThreadProxy::Stop"); 695 TRACE_EVENT0("cc", "ThreadProxy::Stop");
694 DCHECK(IsMainThread()); 696 DCHECK(IsMainThread());
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 impl().layer_tree_host_impl->memory_allocation_limit_bytes(); 769 impl().layer_tree_host_impl->memory_allocation_limit_bytes();
768 begin_main_frame_state->memory_allocation_priority_cutoff = 770 begin_main_frame_state->memory_allocation_priority_cutoff =
769 impl().layer_tree_host_impl->memory_allocation_priority_cutoff(); 771 impl().layer_tree_host_impl->memory_allocation_priority_cutoff();
770 begin_main_frame_state->evicted_ui_resources = 772 begin_main_frame_state->evicted_ui_resources =
771 impl().layer_tree_host_impl->EvictedUIResourcesExist(); 773 impl().layer_tree_host_impl->EvictedUIResourcesExist();
772 Proxy::MainThreadTaskRunner()->PostTask( 774 Proxy::MainThreadTaskRunner()->PostTask(
773 FROM_HERE, 775 FROM_HERE,
774 base::Bind(&ThreadProxy::BeginMainFrame, 776 base::Bind(&ThreadProxy::BeginMainFrame,
775 main_thread_weak_ptr_, 777 main_thread_weak_ptr_,
776 base::Passed(&begin_main_frame_state))); 778 base::Passed(&begin_main_frame_state)));
777 779 devtools_instrumentation::DidRequestMainThreadFrame(
780 impl().layer_tree_host_id);
778 if (impl().begin_main_frame_sent_completion_event) { 781 if (impl().begin_main_frame_sent_completion_event) {
779 impl().begin_main_frame_sent_completion_event->Signal(); 782 impl().begin_main_frame_sent_completion_event->Signal();
780 impl().begin_main_frame_sent_completion_event = NULL; 783 impl().begin_main_frame_sent_completion_event = NULL;
781 } 784 }
782 impl().begin_main_frame_sent_time = base::TimeTicks::HighResNow(); 785 impl().begin_main_frame_sent_time = base::TimeTicks::HighResNow();
783 } 786 }
784 787
785 void ThreadProxy::BeginMainFrame( 788 void ThreadProxy::BeginMainFrame(
786 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) { 789 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) {
787 TRACE_EVENT0("cc", "ThreadProxy::BeginMainFrame"); 790 TRACE_EVENT0("cc", "ThreadProxy::BeginMainFrame");
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
1399 1402
1400 void ThreadProxy::HasInitializedOutputSurfaceOnImplThread( 1403 void ThreadProxy::HasInitializedOutputSurfaceOnImplThread(
1401 CompletionEvent* completion, 1404 CompletionEvent* completion,
1402 bool* has_initialized_output_surface) { 1405 bool* has_initialized_output_surface) {
1403 DCHECK(IsImplThread()); 1406 DCHECK(IsImplThread());
1404 *has_initialized_output_surface = 1407 *has_initialized_output_surface =
1405 impl().scheduler->HasInitializedOutputSurface(); 1408 impl().scheduler->HasInitializedOutputSurface();
1406 completion->Signal(); 1409 completion->Signal();
1407 } 1410 }
1408 1411
1409 void ThreadProxy::InitializeImplOnImplThread(CompletionEvent* completion, 1412 void ThreadProxy::InitializeImplOnImplThread(CompletionEvent* completion) {
1410 int layer_tree_host_id) {
1411 TRACE_EVENT0("cc", "ThreadProxy::InitializeImplOnImplThread"); 1413 TRACE_EVENT0("cc", "ThreadProxy::InitializeImplOnImplThread");
1412 DCHECK(IsImplThread()); 1414 DCHECK(IsImplThread());
1413 impl().layer_tree_host_impl = 1415 impl().layer_tree_host_impl =
1414 layer_tree_host()->CreateLayerTreeHostImpl(this); 1416 layer_tree_host()->CreateLayerTreeHostImpl(this);
1415 const LayerTreeSettings& settings = layer_tree_host()->settings(); 1417 const LayerTreeSettings& settings = layer_tree_host()->settings();
1416 SchedulerSettings scheduler_settings; 1418 SchedulerSettings scheduler_settings;
1417 scheduler_settings.deadline_scheduling_enabled = 1419 scheduler_settings.deadline_scheduling_enabled =
1418 settings.deadline_scheduling_enabled; 1420 settings.deadline_scheduling_enabled;
1419 scheduler_settings.impl_side_painting = settings.impl_side_painting; 1421 scheduler_settings.impl_side_painting = settings.impl_side_painting;
1420 scheduler_settings.timeout_and_draw_when_animation_checkerboards = 1422 scheduler_settings.timeout_and_draw_when_animation_checkerboards =
1421 settings.timeout_and_draw_when_animation_checkerboards; 1423 settings.timeout_and_draw_when_animation_checkerboards;
1422 scheduler_settings.maximum_number_of_failed_draws_before_draw_is_forced_ = 1424 scheduler_settings.maximum_number_of_failed_draws_before_draw_is_forced_ =
1423 settings.maximum_number_of_failed_draws_before_draw_is_forced_; 1425 settings.maximum_number_of_failed_draws_before_draw_is_forced_;
1424 scheduler_settings.using_synchronous_renderer_compositor = 1426 scheduler_settings.using_synchronous_renderer_compositor =
1425 settings.using_synchronous_renderer_compositor; 1427 settings.using_synchronous_renderer_compositor;
1426 scheduler_settings.throttle_frame_production = 1428 scheduler_settings.throttle_frame_production =
1427 settings.throttle_frame_production; 1429 settings.throttle_frame_production;
1428 impl().scheduler = 1430 impl().scheduler =
1429 Scheduler::Create(this, scheduler_settings, layer_tree_host_id); 1431 Scheduler::Create(this, scheduler_settings, impl().layer_tree_host_id);
1430 impl().scheduler->SetVisible(impl().layer_tree_host_impl->visible()); 1432 impl().scheduler->SetVisible(impl().layer_tree_host_impl->visible());
1431 1433
1432 impl_thread_weak_ptr_ = impl().weak_factory.GetWeakPtr(); 1434 impl_thread_weak_ptr_ = impl().weak_factory.GetWeakPtr();
1433 completion->Signal(); 1435 completion->Signal();
1434 } 1436 }
1435 1437
1436 void ThreadProxy::InitializeOutputSurfaceOnImplThread( 1438 void ThreadProxy::InitializeOutputSurfaceOnImplThread(
1437 CompletionEvent* completion, 1439 CompletionEvent* completion,
1438 scoped_ptr<OutputSurface> output_surface, 1440 scoped_ptr<OutputSurface> output_surface,
1439 scoped_refptr<ContextProvider> offscreen_context_provider, 1441 scoped_refptr<ContextProvider> offscreen_context_provider,
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
1675 impl().commit_to_activate_duration_history.InsertSample( 1677 impl().commit_to_activate_duration_history.InsertSample(
1676 base::TimeTicks::HighResNow() - impl().commit_complete_time); 1678 base::TimeTicks::HighResNow() - impl().commit_complete_time);
1677 } 1679 }
1678 1680
1679 void ThreadProxy::DidManageTiles() { 1681 void ThreadProxy::DidManageTiles() {
1680 DCHECK(IsImplThread()); 1682 DCHECK(IsImplThread());
1681 impl().scheduler->DidManageTiles(); 1683 impl().scheduler->DidManageTiles();
1682 } 1684 }
1683 1685
1684 } // namespace cc 1686 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/thread_proxy.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698