OLD | NEW |
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/metrics/histogram.h" | 13 #include "base/metrics/histogram.h" |
13 #include "cc/debug/benchmark_instrumentation.h" | 14 #include "cc/debug/benchmark_instrumentation.h" |
14 #include "cc/input/input_handler.h" | 15 #include "cc/input/input_handler.h" |
15 #include "cc/output/context_provider.h" | 16 #include "cc/output/context_provider.h" |
16 #include "cc/output/output_surface.h" | 17 #include "cc/output/output_surface.h" |
17 #include "cc/quads/draw_quad.h" | 18 #include "cc/quads/draw_quad.h" |
18 #include "cc/resources/prioritized_resource_manager.h" | 19 #include "cc/resources/prioritized_resource_manager.h" |
19 #include "cc/scheduler/delay_based_time_source.h" | 20 #include "cc/scheduler/delay_based_time_source.h" |
20 #include "cc/scheduler/frame_rate_controller.h" | 21 #include "cc/scheduler/frame_rate_controller.h" |
21 #include "cc/scheduler/scheduler.h" | 22 #include "cc/scheduler/scheduler.h" |
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 if (begin_main_frame_sent_completion_event_on_impl_thread_) { | 736 if (begin_main_frame_sent_completion_event_on_impl_thread_) { |
736 begin_main_frame_sent_completion_event_on_impl_thread_->Signal(); | 737 begin_main_frame_sent_completion_event_on_impl_thread_->Signal(); |
737 begin_main_frame_sent_completion_event_on_impl_thread_ = NULL; | 738 begin_main_frame_sent_completion_event_on_impl_thread_ = NULL; |
738 } | 739 } |
739 begin_main_frame_sent_time_ = base::TimeTicks::HighResNow(); | 740 begin_main_frame_sent_time_ = base::TimeTicks::HighResNow(); |
740 } | 741 } |
741 | 742 |
742 void ThreadProxy::BeginMainFrame( | 743 void ThreadProxy::BeginMainFrame( |
743 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) { | 744 scoped_ptr<BeginMainFrameAndCommitState> begin_main_frame_state) { |
744 TRACE_EVENT0("cc", "ThreadProxy::BeginMainFrame"); | 745 TRACE_EVENT0("cc", "ThreadProxy::BeginMainFrame"); |
| 746 TRACE_EVENT_SYNTHETIC_DELAY_ACTIVATE("cc.BeginMainFrame"); |
745 DCHECK(IsMainThread()); | 747 DCHECK(IsMainThread()); |
746 | 748 |
747 if (!layer_tree_host()) | 749 if (!layer_tree_host()) |
748 return; | 750 return; |
749 | 751 |
750 if (defer_commits_) { | 752 if (defer_commits_) { |
751 pending_deferred_commit_ = begin_main_frame_state.Pass(); | 753 pending_deferred_commit_ = begin_main_frame_state.Pass(); |
752 layer_tree_host()->DidDeferCommit(); | 754 layer_tree_host()->DidDeferCommit(); |
753 TRACE_EVENT0("cc", "EarlyOut_DeferCommits"); | 755 TRACE_EVENT0("cc", "EarlyOut_DeferCommits"); |
754 return; | 756 return; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 | 813 |
812 // Recreate all UI resources if there were evicted UI resources when the impl | 814 // Recreate all UI resources if there were evicted UI resources when the impl |
813 // thread initiated the commit. | 815 // thread initiated the commit. |
814 bool evicted_ui_resources = begin_main_frame_state | 816 bool evicted_ui_resources = begin_main_frame_state |
815 ? begin_main_frame_state->evicted_ui_resources | 817 ? begin_main_frame_state->evicted_ui_resources |
816 : false; | 818 : false; |
817 if (evicted_ui_resources) | 819 if (evicted_ui_resources) |
818 layer_tree_host()->RecreateUIResources(); | 820 layer_tree_host()->RecreateUIResources(); |
819 | 821 |
820 layer_tree_host()->Layout(); | 822 layer_tree_host()->Layout(); |
| 823 TRACE_EVENT_SYNTHETIC_DELAY_APPLY("cc.BeginMainFrame"); |
821 | 824 |
822 // Clear the commit flag after updating animations and layout here --- objects | 825 // Clear the commit flag after updating animations and layout here --- objects |
823 // that only layout when painted will trigger another SetNeedsCommit inside | 826 // that only layout when painted will trigger another SetNeedsCommit inside |
824 // UpdateLayers. | 827 // UpdateLayers. |
825 commit_requested_ = false; | 828 commit_requested_ = false; |
826 commit_request_sent_to_impl_thread_ = false; | 829 commit_request_sent_to_impl_thread_ = false; |
827 bool can_cancel_this_commit = | 830 bool can_cancel_this_commit = |
828 can_cancel_commit_ && | 831 can_cancel_commit_ && |
829 !in_composite_and_readback_ && | 832 !in_composite_and_readback_ && |
830 !evicted_ui_resources; | 833 !evicted_ui_resources; |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1055 Proxy::MainThreadTaskRunner()->PostTask( | 1058 Proxy::MainThreadTaskRunner()->PostTask( |
1056 FROM_HERE, | 1059 FROM_HERE, |
1057 base::Bind(&ThreadProxy::CreateAndInitializeOutputSurface, | 1060 base::Bind(&ThreadProxy::CreateAndInitializeOutputSurface, |
1058 main_thread_weak_ptr_)); | 1061 main_thread_weak_ptr_)); |
1059 } | 1062 } |
1060 | 1063 |
1061 DrawSwapReadbackResult ThreadProxy::DrawSwapReadbackInternal( | 1064 DrawSwapReadbackResult ThreadProxy::DrawSwapReadbackInternal( |
1062 bool forced_draw, | 1065 bool forced_draw, |
1063 bool swap_requested, | 1066 bool swap_requested, |
1064 bool readback_requested) { | 1067 bool readback_requested) { |
| 1068 TRACE_EVENT_SYNTHETIC_DELAY("cc.DrawAndSwap"); |
1065 DrawSwapReadbackResult result; | 1069 DrawSwapReadbackResult result; |
1066 result.did_draw = false; | 1070 result.did_draw = false; |
1067 result.did_swap = false; | 1071 result.did_swap = false; |
1068 result.did_readback = false; | 1072 result.did_readback = false; |
1069 DCHECK(IsImplThread()); | 1073 DCHECK(IsImplThread()); |
1070 DCHECK(layer_tree_host_impl_.get()); | 1074 DCHECK(layer_tree_host_impl_.get()); |
1071 if (!layer_tree_host_impl_) | 1075 if (!layer_tree_host_impl_) |
1072 return result; | 1076 return result; |
1073 | 1077 |
1074 DCHECK(layer_tree_host_impl_->renderer()); | 1078 DCHECK(layer_tree_host_impl_->renderer()); |
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1626 commit_to_activate_duration_history_.InsertSample( | 1630 commit_to_activate_duration_history_.InsertSample( |
1627 base::TimeTicks::HighResNow() - commit_complete_time_); | 1631 base::TimeTicks::HighResNow() - commit_complete_time_); |
1628 } | 1632 } |
1629 | 1633 |
1630 void ThreadProxy::DidManageTiles() { | 1634 void ThreadProxy::DidManageTiles() { |
1631 DCHECK(IsImplThread()); | 1635 DCHECK(IsImplThread()); |
1632 scheduler_on_impl_thread_->DidManageTiles(); | 1636 scheduler_on_impl_thread_->DidManageTiles(); |
1633 } | 1637 } |
1634 | 1638 |
1635 } // namespace cc | 1639 } // namespace cc |
OLD | NEW |