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

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

Issue 924973003: CC: Force push properties for all layers when tracing is started (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments addressed Created 5 years, 9 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
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/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 max_transfer_buffer_usage_bytes); 149 max_transfer_buffer_usage_bytes);
150 } 150 }
151 151
152 size_t GetMaxStagingResourceCount() { 152 size_t GetMaxStagingResourceCount() {
153 // Upper bound for number of staging resource to allow. 153 // Upper bound for number of staging resource to allow.
154 return 32; 154 return 32;
155 } 155 }
156 156
157 } // namespace 157 } // namespace
158 158
159 LayerTreeHostImpl::FrameData::FrameData() : has_no_damage(false) { 159 FrameData::FrameData() : has_no_damage(false) {
160 } 160 }
161 161
162 LayerTreeHostImpl::FrameData::~FrameData() {} 162 FrameData::~FrameData() {
163 }
163 164
164 scoped_ptr<LayerTreeHostImpl> LayerTreeHostImpl::Create( 165 scoped_ptr<LayerTreeHostImpl> LayerTreeHostImpl::Create(
165 const LayerTreeSettings& settings, 166 const LayerTreeSettings& settings,
166 LayerTreeHostImplClient* client, 167 LayerTreeHostImplClient* client,
167 Proxy* proxy, 168 Proxy* proxy,
168 RenderingStatsInstrumentation* rendering_stats_instrumentation, 169 RenderingStatsInstrumentation* rendering_stats_instrumentation,
169 SharedBitmapManager* shared_bitmap_manager, 170 SharedBitmapManager* shared_bitmap_manager,
170 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 171 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
171 int id) { 172 int id) {
172 return make_scoped_ptr(new LayerTreeHostImpl(settings, 173 return make_scoped_ptr(new LayerTreeHostImpl(settings,
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 render_surface->damage_tracker()->UpdateDamageTrackingState( 543 render_surface->damage_tracker()->UpdateDamageTrackingState(
543 render_surface->layer_list(), 544 render_surface->layer_list(),
544 render_surface_layer->id(), 545 render_surface_layer->id(),
545 render_surface->SurfacePropertyChangedOnlyFromDescendant(), 546 render_surface->SurfacePropertyChangedOnlyFromDescendant(),
546 render_surface->content_rect(), 547 render_surface->content_rect(),
547 render_surface_layer->mask_layer(), 548 render_surface_layer->mask_layer(),
548 render_surface_layer->filters()); 549 render_surface_layer->filters());
549 } 550 }
550 } 551 }
551 552
552 void LayerTreeHostImpl::FrameData::AsValueInto( 553 void FrameData::AsValueInto(base::trace_event::TracedValue* value) const {
553 base::trace_event::TracedValue* value) const {
554 value->SetBoolean("has_no_damage", has_no_damage); 554 value->SetBoolean("has_no_damage", has_no_damage);
555 555
556 // Quad data can be quite large, so only dump render passes if we select 556 // Quad data can be quite large, so only dump render passes if we select
557 // cc.debug.quads. 557 // cc.debug.quads.
558 bool quads_enabled; 558 bool quads_enabled;
559 TRACE_EVENT_CATEGORY_GROUP_ENABLED( 559 TRACE_EVENT_CATEGORY_GROUP_ENABLED(
560 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), &quads_enabled); 560 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), &quads_enabled);
561 if (quads_enabled) { 561 if (quads_enabled) {
562 value->BeginArray("render_passes"); 562 value->BeginArray("render_passes");
563 for (size_t i = 0; i < render_passes.size(); ++i) { 563 for (size_t i = 0; i < render_passes.size(); ++i) {
564 value->BeginDictionary(); 564 value->BeginDictionary();
565 render_passes[i]->AsValueInto(value); 565 render_passes[i]->AsValueInto(value);
566 value->EndDictionary(); 566 value->EndDictionary();
567 } 567 }
568 value->EndArray(); 568 value->EndArray();
569 } 569 }
570 } 570 }
571 571
572 void LayerTreeHostImpl::FrameData::AppendRenderPass( 572 void FrameData::AppendRenderPass(scoped_ptr<RenderPass> render_pass) {
573 scoped_ptr<RenderPass> render_pass) {
574 render_passes_by_id[render_pass->id] = render_pass.get(); 573 render_passes_by_id[render_pass->id] = render_pass.get();
575 render_passes.push_back(render_pass.Pass()); 574 render_passes.push_back(render_pass.Pass());
576 } 575 }
577 576
578 DrawMode LayerTreeHostImpl::GetDrawMode() const { 577 DrawMode LayerTreeHostImpl::GetDrawMode() const {
579 if (resourceless_software_draw_) { 578 if (resourceless_software_draw_) {
580 return DRAW_MODE_RESOURCELESS_SOFTWARE; 579 return DRAW_MODE_RESOURCELESS_SOFTWARE;
581 } else if (output_surface_->context_provider()) { 580 } else if (output_surface_->context_provider()) {
582 return DRAW_MODE_HARDWARE; 581 return DRAW_MODE_HARDWARE;
583 } else { 582 } else {
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 941
943 void LayerTreeHostImpl::DidAnimateScrollOffset() { 942 void LayerTreeHostImpl::DidAnimateScrollOffset() {
944 client_->SetNeedsCommitOnImplThread(); 943 client_->SetNeedsCommitOnImplThread();
945 client_->RenewTreePriority(); 944 client_->RenewTreePriority();
946 } 945 }
947 946
948 void LayerTreeHostImpl::SetViewportDamage(const gfx::Rect& damage_rect) { 947 void LayerTreeHostImpl::SetViewportDamage(const gfx::Rect& damage_rect) {
949 viewport_damage_rect_.Union(damage_rect); 948 viewport_damage_rect_.Union(damage_rect);
950 } 949 }
951 950
952 static inline RenderPass* FindRenderPassById( 951 static inline RenderPass* FindRenderPassById(RenderPassId render_pass_id,
953 RenderPassId render_pass_id, 952 const FrameData& frame) {
954 const LayerTreeHostImpl::FrameData& frame) {
955 RenderPassIdHashMap::const_iterator it = 953 RenderPassIdHashMap::const_iterator it =
956 frame.render_passes_by_id.find(render_pass_id); 954 frame.render_passes_by_id.find(render_pass_id);
957 return it != frame.render_passes_by_id.end() ? it->second : NULL; 955 return it != frame.render_passes_by_id.end() ? it->second : NULL;
958 } 956 }
959 957
960 static void RemoveRenderPassesRecursive(RenderPassId remove_render_pass_id, 958 static void RemoveRenderPassesRecursive(RenderPassId remove_render_pass_id,
961 LayerTreeHostImpl::FrameData* frame) { 959 FrameData* frame) {
962 RenderPass* remove_render_pass = 960 RenderPass* remove_render_pass =
963 FindRenderPassById(remove_render_pass_id, *frame); 961 FindRenderPassById(remove_render_pass_id, *frame);
964 // The pass was already removed by another quad - probably the original, and 962 // The pass was already removed by another quad - probably the original, and
965 // we are the replica. 963 // we are the replica.
966 if (!remove_render_pass) 964 if (!remove_render_pass)
967 return; 965 return;
968 RenderPassList& render_passes = frame->render_passes; 966 RenderPassList& render_passes = frame->render_passes;
969 RenderPassList::iterator to_remove = std::find(render_passes.begin(), 967 RenderPassList::iterator to_remove = std::find(render_passes.begin(),
970 render_passes.end(), 968 render_passes.end(),
971 remove_render_pass); 969 remove_render_pass);
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1520 pending_tree_->root_layer(), 1518 pending_tree_->root_layer(),
1521 [](LayerImpl* layer) { layer->DidBeginTracing(); }); 1519 [](LayerImpl* layer) { layer->DidBeginTracing(); });
1522 } 1520 }
1523 LayerTreeHostCommon::CallFunctionForSubtree( 1521 LayerTreeHostCommon::CallFunctionForSubtree(
1524 active_tree_->root_layer(), 1522 active_tree_->root_layer(),
1525 [](LayerImpl* layer) { layer->DidBeginTracing(); }); 1523 [](LayerImpl* layer) { layer->DidBeginTracing(); });
1526 } 1524 }
1527 1525
1528 { 1526 {
1529 TRACE_EVENT0("cc", "DrawLayers.FrameViewerTracing"); 1527 TRACE_EVENT0("cc", "DrawLayers.FrameViewerTracing");
1530 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( 1528 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
danakj 2015/03/16 19:06:49 Did you mean to call TraceLayerTreeSnapshot here?
1531 TRACE_DISABLED_BY_DEFAULT("cc.debug") "," 1529 TRACE_DISABLED_BY_DEFAULT("cc.debug") ","
1532 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads") "," 1530 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads") ","
1533 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.layers"), 1531 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.layers"),
1534 "cc::LayerTreeHostImpl", 1532 "cc::LayerTreeHostImpl",
1535 id_, 1533 id_,
1536 AsValueWithFrame(frame)); 1534 AsValueWithFrame(frame));
1537 } 1535 }
1538 1536
1539 const DrawMode draw_mode = GetDrawMode(); 1537 const DrawMode draw_mode = GetDrawMode();
1540 1538
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1622 // We would not have any content to draw until the pending tree is activated. 1620 // We would not have any content to draw until the pending tree is activated.
1623 // Prevent the active tree from drawing until activation. 1621 // Prevent the active tree from drawing until activation.
1624 SetRequiresHighResToDraw(); 1622 SetRequiresHighResToDraw();
1625 } 1623 }
1626 1624
1627 const RendererCapabilitiesImpl& 1625 const RendererCapabilitiesImpl&
1628 LayerTreeHostImpl::GetRendererCapabilities() const { 1626 LayerTreeHostImpl::GetRendererCapabilities() const {
1629 return renderer_->Capabilities(); 1627 return renderer_->Capabilities();
1630 } 1628 }
1631 1629
1632 bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { 1630 bool LayerTreeHostImpl::SwapBuffers(const FrameData& frame) {
1633 ResetRequiresHighResToDraw(); 1631 ResetRequiresHighResToDraw();
1634 if (frame.has_no_damage) { 1632 if (frame.has_no_damage) {
1635 active_tree()->BreakSwapPromises(SwapPromise::SWAP_FAILS); 1633 active_tree()->BreakSwapPromises(SwapPromise::SWAP_FAILS);
1636 return false; 1634 return false;
1637 } 1635 }
1638 CompositorFrameMetadata metadata = MakeCompositorFrameMetadata(); 1636 CompositorFrameMetadata metadata = MakeCompositorFrameMetadata();
1639 active_tree()->FinishSwapPromises(&metadata); 1637 active_tree()->FinishSwapPromises(&metadata);
1640 for (auto& latency : metadata.latency_info) { 1638 for (auto& latency : metadata.latency_info) {
1641 TRACE_EVENT_FLOW_STEP0( 1639 TRACE_EVENT_FLOW_STEP0(
1642 "input,benchmark", 1640 "input,benchmark",
(...skipping 1827 matching lines...) Expand 10 before | Expand all | Expand 10 after
3470 new_target.SetToMin(layer_impl->MaxScrollOffset()); 3468 new_target.SetToMin(layer_impl->MaxScrollOffset());
3471 3469
3472 curve->UpdateTarget( 3470 curve->UpdateTarget(
3473 animation->TrimTimeToCurrentIteration(CurrentBeginFrameArgs().frame_time) 3471 animation->TrimTimeToCurrentIteration(CurrentBeginFrameArgs().frame_time)
3474 .InSecondsF(), 3472 .InSecondsF(),
3475 new_target); 3473 new_target);
3476 3474
3477 return true; 3475 return true;
3478 } 3476 }
3479 } // namespace cc 3477 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698