Commit ccc08dc2 authored by danakj@chromium.org's avatar danakj@chromium.org

cc: Add TRACE_EVENTs to SingleThreadProxy

This adds traces to entry points in SingleThreadProxy that have
analogous trace events in the ThreadProxy. Also add trace points
along the critical CompositeImmediately -> CommitAndComposite ->
DoCommit/DoComposite code path.

R=enne
BUG=339248

Review URL: https://codereview.chromium.org/149053006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247874 0039d316-1c4b-4281-b951-d872f2087c98
parent 5a49421b
...@@ -82,6 +82,7 @@ bool SingleThreadProxy::CompositeAndReadback(void* pixels, ...@@ -82,6 +82,7 @@ bool SingleThreadProxy::CompositeAndReadback(void* pixels,
} }
void SingleThreadProxy::FinishAllRendering() { void SingleThreadProxy::FinishAllRendering() {
TRACE_EVENT0("cc", "SingleThreadProxy::FinishAllRendering");
DCHECK(Proxy::IsMainThread()); DCHECK(Proxy::IsMainThread());
{ {
DebugScopedSetImplThread impl(this); DebugScopedSetImplThread impl(this);
...@@ -95,11 +96,13 @@ bool SingleThreadProxy::IsStarted() const { ...@@ -95,11 +96,13 @@ bool SingleThreadProxy::IsStarted() const {
} }
void SingleThreadProxy::SetLayerTreeHostClientReady() { void SingleThreadProxy::SetLayerTreeHostClientReady() {
TRACE_EVENT0("cc", "SingleThreadProxy::SetLayerTreeHostClientReady");
// Scheduling is controlled by the embedder in the single thread case, so // Scheduling is controlled by the embedder in the single thread case, so
// nothing to do. // nothing to do.
} }
void SingleThreadProxy::SetVisible(bool visible) { void SingleThreadProxy::SetVisible(bool visible) {
TRACE_EVENT0("cc", "SingleThreadProxy::SetVisible");
DebugScopedSetImplThread impl(this); DebugScopedSetImplThread impl(this);
layer_tree_host_impl_->SetVisible(visible); layer_tree_host_impl_->SetVisible(visible);
...@@ -176,16 +179,19 @@ const RendererCapabilities& SingleThreadProxy::GetRendererCapabilities() const { ...@@ -176,16 +179,19 @@ const RendererCapabilities& SingleThreadProxy::GetRendererCapabilities() const {
} }
void SingleThreadProxy::SetNeedsAnimate() { void SingleThreadProxy::SetNeedsAnimate() {
TRACE_EVENT0("cc", "SingleThreadProxy::SetNeedsAnimate");
DCHECK(Proxy::IsMainThread()); DCHECK(Proxy::IsMainThread());
client_->ScheduleAnimation(); client_->ScheduleAnimation();
} }
void SingleThreadProxy::SetNeedsUpdateLayers() { void SingleThreadProxy::SetNeedsUpdateLayers() {
TRACE_EVENT0("cc", "SingleThreadProxy::SetNeedsUpdateLayers");
DCHECK(Proxy::IsMainThread()); DCHECK(Proxy::IsMainThread());
client_->ScheduleComposite(); client_->ScheduleComposite();
} }
void SingleThreadProxy::DoCommit(scoped_ptr<ResourceUpdateQueue> queue) { void SingleThreadProxy::DoCommit(scoped_ptr<ResourceUpdateQueue> queue) {
TRACE_EVENT0("cc", "SingleThreadProxy::DoCommit");
DCHECK(Proxy::IsMainThread()); DCHECK(Proxy::IsMainThread());
// Commit immediately. // Commit immediately.
{ {
...@@ -245,6 +251,7 @@ void SingleThreadProxy::SetNeedsCommit() { ...@@ -245,6 +251,7 @@ void SingleThreadProxy::SetNeedsCommit() {
} }
void SingleThreadProxy::SetNeedsRedraw(const gfx::Rect& damage_rect) { void SingleThreadProxy::SetNeedsRedraw(const gfx::Rect& damage_rect) {
TRACE_EVENT0("cc", "SingleThreadProxy::SetNeedsRedraw");
SetNeedsRedrawRectOnImplThread(damage_rect); SetNeedsRedrawRectOnImplThread(damage_rect);
client_->ScheduleComposite(); client_->ScheduleComposite();
} }
...@@ -281,6 +288,8 @@ void SingleThreadProxy::Stop() { ...@@ -281,6 +288,8 @@ void SingleThreadProxy::Stop() {
} }
void SingleThreadProxy::OnCanDrawStateChanged(bool can_draw) { void SingleThreadProxy::OnCanDrawStateChanged(bool can_draw) {
TRACE_EVENT1(
"cc", "SingleThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw);
DCHECK(Proxy::IsImplThread()); DCHECK(Proxy::IsImplThread());
UpdateBackgroundAnimateTicking(); UpdateBackgroundAnimateTicking();
} }
...@@ -320,6 +329,8 @@ void SingleThreadProxy::SetNeedsCommitOnImplThread() { ...@@ -320,6 +329,8 @@ void SingleThreadProxy::SetNeedsCommitOnImplThread() {
void SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread( void SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread(
scoped_ptr<AnimationEventsVector> events, scoped_ptr<AnimationEventsVector> events,
base::Time wall_clock_time) { base::Time wall_clock_time) {
TRACE_EVENT0(
"cc", "SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread");
DCHECK(Proxy::IsImplThread()); DCHECK(Proxy::IsImplThread());
DebugScopedSetMainThread main(this); DebugScopedSetMainThread main(this);
layer_tree_host_->SetAnimationEvents(events.Pass(), wall_clock_time); layer_tree_host_->SetAnimationEvents(events.Pass(), wall_clock_time);
...@@ -360,6 +371,7 @@ void SingleThreadProxy::SendManagedMemoryStats() { ...@@ -360,6 +371,7 @@ void SingleThreadProxy::SendManagedMemoryStats() {
bool SingleThreadProxy::IsInsideDraw() { return inside_draw_; } bool SingleThreadProxy::IsInsideDraw() { return inside_draw_; }
void SingleThreadProxy::DidLoseOutputSurfaceOnImplThread() { void SingleThreadProxy::DidLoseOutputSurfaceOnImplThread() {
TRACE_EVENT0("cc", "SingleThreadProxy::DidLoseOutputSurfaceOnImplThread");
// Cause a commit so we can notice the lost context. // Cause a commit so we can notice the lost context.
SetNeedsCommitOnImplThread(); SetNeedsCommitOnImplThread();
client_->DidAbortSwapBuffers(); client_->DidAbortSwapBuffers();
...@@ -370,12 +382,14 @@ void SingleThreadProxy::DidSwapBuffersOnImplThread() { ...@@ -370,12 +382,14 @@ void SingleThreadProxy::DidSwapBuffersOnImplThread() {
} }
void SingleThreadProxy::OnSwapBuffersCompleteOnImplThread() { void SingleThreadProxy::OnSwapBuffersCompleteOnImplThread() {
TRACE_EVENT0("cc", "SingleThreadProxy::OnSwapBuffersCompleteOnImplThread");
client_->DidCompleteSwapBuffers(); client_->DidCompleteSwapBuffers();
} }
// Called by the legacy scheduling path (e.g. where render_widget does the // Called by the legacy scheduling path (e.g. where render_widget does the
// scheduling) // scheduling)
void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) { void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) {
TRACE_EVENT0("cc", "SingleThreadProxy::CompositeImmediately");
gfx::Rect device_viewport_damage_rect; gfx::Rect device_viewport_damage_rect;
LayerTreeHostImpl::FrameData frame; LayerTreeHostImpl::FrameData frame;
...@@ -431,6 +445,7 @@ bool SingleThreadProxy::CommitAndComposite( ...@@ -431,6 +445,7 @@ bool SingleThreadProxy::CommitAndComposite(
const gfx::Rect& device_viewport_damage_rect, const gfx::Rect& device_viewport_damage_rect,
bool for_readback, bool for_readback,
LayerTreeHostImpl::FrameData* frame) { LayerTreeHostImpl::FrameData* frame) {
TRACE_EVENT0("cc", "SingleThreadProxy::CommitAndComposite");
DCHECK(Proxy::IsMainThread()); DCHECK(Proxy::IsMainThread());
if (!layer_tree_host_->InitializeOutputSurfaceIfNeeded()) if (!layer_tree_host_->InitializeOutputSurfaceIfNeeded())
...@@ -494,6 +509,7 @@ bool SingleThreadProxy::DoComposite( ...@@ -494,6 +509,7 @@ bool SingleThreadProxy::DoComposite(
const gfx::Rect& device_viewport_damage_rect, const gfx::Rect& device_viewport_damage_rect,
bool for_readback, bool for_readback,
LayerTreeHostImpl::FrameData* frame) { LayerTreeHostImpl::FrameData* frame) {
TRACE_EVENT0("cc", "SingleThreadProxy::DoComposite");
DCHECK(!layer_tree_host_->output_surface_lost()); DCHECK(!layer_tree_host_->output_surface_lost());
bool lost_output_surface = false; bool lost_output_surface = false;
......
...@@ -401,14 +401,14 @@ void ThreadProxy::SetNeedsCommit() { ...@@ -401,14 +401,14 @@ void ThreadProxy::SetNeedsCommit() {
} }
void ThreadProxy::DidLoseOutputSurfaceOnImplThread() { void ThreadProxy::DidLoseOutputSurfaceOnImplThread() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::DidLoseOutputSurfaceOnImplThread"); TRACE_EVENT0("cc", "ThreadProxy::DidLoseOutputSurfaceOnImplThread");
DCHECK(IsImplThread());
CheckOutputSurfaceStatusOnImplThread(); CheckOutputSurfaceStatusOnImplThread();
} }
void ThreadProxy::CheckOutputSurfaceStatusOnImplThread() { void ThreadProxy::CheckOutputSurfaceStatusOnImplThread() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::CheckOutputSurfaceStatusOnImplThread"); TRACE_EVENT0("cc", "ThreadProxy::CheckOutputSurfaceStatusOnImplThread");
DCHECK(IsImplThread());
if (!impl().layer_tree_host_impl->IsContextLost()) if (!impl().layer_tree_host_impl->IsContextLost())
return; return;
if (ContextProvider* offscreen_contexts = if (ContextProvider* offscreen_contexts =
...@@ -418,23 +418,23 @@ void ThreadProxy::CheckOutputSurfaceStatusOnImplThread() { ...@@ -418,23 +418,23 @@ void ThreadProxy::CheckOutputSurfaceStatusOnImplThread() {
} }
void ThreadProxy::OnSwapBuffersCompleteOnImplThread() { void ThreadProxy::OnSwapBuffersCompleteOnImplThread() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::OnSwapBuffersCompleteOnImplThread"); TRACE_EVENT0("cc", "ThreadProxy::OnSwapBuffersCompleteOnImplThread");
DCHECK(IsImplThread());
Proxy::MainThreadTaskRunner()->PostTask( Proxy::MainThreadTaskRunner()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&ThreadProxy::DidCompleteSwapBuffers, main_thread_weak_ptr_)); base::Bind(&ThreadProxy::DidCompleteSwapBuffers, main_thread_weak_ptr_));
} }
void ThreadProxy::SetNeedsBeginImplFrame(bool enable) { void ThreadProxy::SetNeedsBeginImplFrame(bool enable) {
DCHECK(IsImplThread());
TRACE_EVENT1("cc", "ThreadProxy::SetNeedsBeginImplFrame", "enable", enable); TRACE_EVENT1("cc", "ThreadProxy::SetNeedsBeginImplFrame", "enable", enable);
DCHECK(IsImplThread());
impl().layer_tree_host_impl->SetNeedsBeginImplFrame(enable); impl().layer_tree_host_impl->SetNeedsBeginImplFrame(enable);
UpdateBackgroundAnimateTicking(); UpdateBackgroundAnimateTicking();
} }
void ThreadProxy::BeginImplFrame(const BeginFrameArgs& args) { void ThreadProxy::BeginImplFrame(const BeginFrameArgs& args) {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::BeginImplFrame"); TRACE_EVENT0("cc", "ThreadProxy::BeginImplFrame");
DCHECK(IsImplThread());
// Sample the frame time now. This time will be used for updating animations // Sample the frame time now. This time will be used for updating animations
// when we draw. // when we draw.
...@@ -444,9 +444,9 @@ void ThreadProxy::BeginImplFrame(const BeginFrameArgs& args) { ...@@ -444,9 +444,9 @@ void ThreadProxy::BeginImplFrame(const BeginFrameArgs& args) {
} }
void ThreadProxy::OnCanDrawStateChanged(bool can_draw) { void ThreadProxy::OnCanDrawStateChanged(bool can_draw) {
DCHECK(IsImplThread());
TRACE_EVENT1( TRACE_EVENT1(
"cc", "ThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw); "cc", "ThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw);
DCHECK(IsImplThread());
impl().scheduler->SetCanDraw(can_draw); impl().scheduler->SetCanDraw(can_draw);
UpdateBackgroundAnimateTicking(); UpdateBackgroundAnimateTicking();
} }
...@@ -457,17 +457,17 @@ void ThreadProxy::NotifyReadyToActivate() { ...@@ -457,17 +457,17 @@ void ThreadProxy::NotifyReadyToActivate() {
} }
void ThreadProxy::SetNeedsCommitOnImplThread() { void ThreadProxy::SetNeedsCommitOnImplThread() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::SetNeedsCommitOnImplThread"); TRACE_EVENT0("cc", "ThreadProxy::SetNeedsCommitOnImplThread");
DCHECK(IsImplThread());
impl().scheduler->SetNeedsCommit(); impl().scheduler->SetNeedsCommit();
} }
void ThreadProxy::PostAnimationEventsToMainThreadOnImplThread( void ThreadProxy::PostAnimationEventsToMainThreadOnImplThread(
scoped_ptr<AnimationEventsVector> events, scoped_ptr<AnimationEventsVector> events,
base::Time wall_clock_time) { base::Time wall_clock_time) {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", TRACE_EVENT0("cc",
"ThreadProxy::PostAnimationEventsToMainThreadOnImplThread"); "ThreadProxy::PostAnimationEventsToMainThreadOnImplThread");
DCHECK(IsImplThread());
Proxy::MainThreadTaskRunner()->PostTask( Proxy::MainThreadTaskRunner()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&ThreadProxy::SetAnimationEvents, base::Bind(&ThreadProxy::SetAnimationEvents,
...@@ -524,8 +524,8 @@ void ThreadProxy::SendManagedMemoryStats() { ...@@ -524,8 +524,8 @@ void ThreadProxy::SendManagedMemoryStats() {
bool ThreadProxy::IsInsideDraw() { return impl().inside_draw; } bool ThreadProxy::IsInsideDraw() { return impl().inside_draw; }
void ThreadProxy::SetNeedsRedraw(const gfx::Rect& damage_rect) { void ThreadProxy::SetNeedsRedraw(const gfx::Rect& damage_rect) {
DCHECK(IsMainThread());
TRACE_EVENT0("cc", "ThreadProxy::SetNeedsRedraw"); TRACE_EVENT0("cc", "ThreadProxy::SetNeedsRedraw");
DCHECK(IsMainThread());
Proxy::ImplThreadTaskRunner()->PostTask( Proxy::ImplThreadTaskRunner()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&ThreadProxy::SetNeedsRedrawRectOnImplThread, base::Bind(&ThreadProxy::SetNeedsRedrawRectOnImplThread,
...@@ -568,8 +568,8 @@ bool ThreadProxy::BeginMainFrameRequested() const { ...@@ -568,8 +568,8 @@ bool ThreadProxy::BeginMainFrameRequested() const {
} }
void ThreadProxy::SetNeedsRedrawOnImplThread() { void ThreadProxy::SetNeedsRedrawOnImplThread() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::SetNeedsRedrawOnImplThread"); TRACE_EVENT0("cc", "ThreadProxy::SetNeedsRedrawOnImplThread");
DCHECK(IsImplThread());
impl().scheduler->SetNeedsRedraw(); impl().scheduler->SetNeedsRedraw();
} }
...@@ -596,8 +596,8 @@ void ThreadProxy::SetSwapUsedIncompleteTileOnImplThread( ...@@ -596,8 +596,8 @@ void ThreadProxy::SetSwapUsedIncompleteTileOnImplThread(
} }
void ThreadProxy::DidInitializeVisibleTileOnImplThread() { void ThreadProxy::DidInitializeVisibleTileOnImplThread() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::DidInitializeVisibleTileOnImplThread"); TRACE_EVENT0("cc", "ThreadProxy::DidInitializeVisibleTileOnImplThread");
DCHECK(IsImplThread());
impl().scheduler->SetNeedsRedraw(); impl().scheduler->SetNeedsRedraw();
} }
...@@ -1084,20 +1084,20 @@ void ThreadProxy::ScheduledActionCommit() { ...@@ -1084,20 +1084,20 @@ void ThreadProxy::ScheduledActionCommit() {
} }
void ThreadProxy::ScheduledActionUpdateVisibleTiles() { void ThreadProxy::ScheduledActionUpdateVisibleTiles() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionUpdateVisibleTiles"); TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionUpdateVisibleTiles");
DCHECK(IsImplThread());
impl().layer_tree_host_impl->UpdateVisibleTiles(); impl().layer_tree_host_impl->UpdateVisibleTiles();
} }
void ThreadProxy::ScheduledActionActivatePendingTree() { void ThreadProxy::ScheduledActionActivatePendingTree() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionActivatePendingTree"); TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionActivatePendingTree");
DCHECK(IsImplThread());
impl().layer_tree_host_impl->ActivatePendingTree(); impl().layer_tree_host_impl->ActivatePendingTree();
} }
void ThreadProxy::ScheduledActionBeginOutputSurfaceCreation() { void ThreadProxy::ScheduledActionBeginOutputSurfaceCreation() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionBeginOutputSurfaceCreation"); TRACE_EVENT0("cc", "ThreadProxy::ScheduledActionBeginOutputSurfaceCreation");
DCHECK(IsImplThread());
Proxy::MainThreadTaskRunner()->PostTask( Proxy::MainThreadTaskRunner()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&ThreadProxy::CreateAndInitializeOutputSurface, base::Bind(&ThreadProxy::CreateAndInitializeOutputSurface,
...@@ -1658,8 +1658,8 @@ void ThreadProxy::StartScrollbarAnimationOnImplThread() { ...@@ -1658,8 +1658,8 @@ void ThreadProxy::StartScrollbarAnimationOnImplThread() {
} }
void ThreadProxy::DidActivatePendingTree() { void ThreadProxy::DidActivatePendingTree() {
DCHECK(IsImplThread());
TRACE_EVENT0("cc", "ThreadProxy::DidActivatePendingTreeOnImplThread"); TRACE_EVENT0("cc", "ThreadProxy::DidActivatePendingTreeOnImplThread");
DCHECK(IsImplThread());
if (impl().completion_event_for_commit_held_on_tree_activation && if (impl().completion_event_for_commit_held_on_tree_activation &&
!impl().layer_tree_host_impl->pending_tree()) { !impl().layer_tree_host_impl->pending_tree()) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment