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

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

Issue 884243004: cc: Record frame timing composite events in the tracker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_unittest.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/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 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 device_scale_factor_(1.f), 222 device_scale_factor_(1.f),
223 resourceless_software_draw_(false), 223 resourceless_software_draw_(false),
224 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()), 224 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()),
225 animation_registrar_(AnimationRegistrar::Create()), 225 animation_registrar_(AnimationRegistrar::Create()),
226 rendering_stats_instrumentation_(rendering_stats_instrumentation), 226 rendering_stats_instrumentation_(rendering_stats_instrumentation),
227 micro_benchmark_controller_(this), 227 micro_benchmark_controller_(this),
228 shared_bitmap_manager_(shared_bitmap_manager), 228 shared_bitmap_manager_(shared_bitmap_manager),
229 gpu_memory_buffer_manager_(gpu_memory_buffer_manager), 229 gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
230 id_(id), 230 id_(id),
231 requires_high_res_to_draw_(false), 231 requires_high_res_to_draw_(false),
232 is_likely_to_require_a_draw_(false) { 232 is_likely_to_require_a_draw_(false),
233 frame_timing_tracker_(FrameTimingTracker::Create()) {
233 DCHECK(proxy_->IsImplThread()); 234 DCHECK(proxy_->IsImplThread());
234 DidVisibilityChange(this, visible_); 235 DidVisibilityChange(this, visible_);
235 animation_registrar_->set_supports_scroll_animations( 236 animation_registrar_->set_supports_scroll_animations(
236 proxy_->SupportsImplScrolling()); 237 proxy_->SupportsImplScrolling());
237 238
238 SetDebugState(settings.initial_debug_state); 239 SetDebugState(settings.initial_debug_state);
239 240
240 // LTHI always has an active tree. 241 // LTHI always has an active tree.
241 active_tree_ = LayerTreeImpl::create(this, new SyncedProperty<ScaleGroup>(), 242 active_tree_ = LayerTreeImpl::create(this, new SyncedProperty<ScaleGroup>(),
242 new SyncedElasticOverscroll); 243 new SyncedElasticOverscroll);
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 807
807 contributing_render_pass_id = 808 contributing_render_pass_id =
808 it->NextContributingRenderPassId(contributing_render_pass_id); 809 it->NextContributingRenderPassId(contributing_render_pass_id);
809 } 810 }
810 } 811 }
811 812
812 AppendQuadsForLayer(target_render_pass, 813 AppendQuadsForLayer(target_render_pass,
813 *it, 814 *it,
814 occlusion_tracker, 815 occlusion_tracker,
815 &append_quads_data); 816 &append_quads_data);
817
818 // For layers that represent themselves, add composite frame timing
819 // requests if the visible rect intersects the requested rect.
820 for (const auto& request : it->frame_timing_requests()) {
821 const gfx::Rect& request_content_rect =
822 it->LayerRectToContentRect(request.rect());
823 if (request_content_rect.Intersects(it->visible_content_rect())) {
824 frame->composite_events.push_back(
825 FrameTimingTracker::FrameAndRectIds(
826 active_tree_->source_frame_number(), request.id()));
827 }
828 }
816 } 829 }
817 830
818 ++layers_drawn; 831 ++layers_drawn;
819 } 832 }
820 833
821 rendering_stats_instrumentation_->AddVisibleContentArea( 834 rendering_stats_instrumentation_->AddVisibleContentArea(
822 append_quads_data.visible_content_area); 835 append_quads_data.visible_content_area);
823 rendering_stats_instrumentation_->AddApproximatedVisibleContentArea( 836 rendering_stats_instrumentation_->AddApproximatedVisibleContentArea(
824 append_quads_data.approximated_visible_content_area); 837 append_quads_data.approximated_visible_content_area);
825 838
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
1431 1444
1432 static void LayerTreeHostImplDidBeginTracingCallback(LayerImpl* layer) { 1445 static void LayerTreeHostImplDidBeginTracingCallback(LayerImpl* layer) {
1433 layer->DidBeginTracing(); 1446 layer->DidBeginTracing();
1434 } 1447 }
1435 1448
1436 void LayerTreeHostImpl::DrawLayers(FrameData* frame, 1449 void LayerTreeHostImpl::DrawLayers(FrameData* frame,
1437 base::TimeTicks frame_begin_time) { 1450 base::TimeTicks frame_begin_time) {
1438 TRACE_EVENT0("cc", "LayerTreeHostImpl::DrawLayers"); 1451 TRACE_EVENT0("cc", "LayerTreeHostImpl::DrawLayers");
1439 DCHECK(CanDraw()); 1452 DCHECK(CanDraw());
1440 1453
1454 if (!frame->composite_events.empty()) {
1455 frame_timing_tracker_->SaveTimeStamps(frame_begin_time,
1456 frame->composite_events);
1457 }
1458
1441 if (frame->has_no_damage) { 1459 if (frame->has_no_damage) {
1442 TRACE_EVENT_INSTANT0("cc", "EarlyOut_NoDamage", TRACE_EVENT_SCOPE_THREAD); 1460 TRACE_EVENT_INSTANT0("cc", "EarlyOut_NoDamage", TRACE_EVENT_SCOPE_THREAD);
1443 DCHECK(!output_surface_->capabilities() 1461 DCHECK(!output_surface_->capabilities()
1444 .draw_and_swap_full_viewport_every_frame); 1462 .draw_and_swap_full_viewport_every_frame);
1445 return; 1463 return;
1446 } 1464 }
1447 1465
1448 DCHECK(!frame->render_passes.empty()); 1466 DCHECK(!frame->render_passes.empty());
1449 1467
1450 fps_counter_->SaveTimeStamp(frame_begin_time, 1468 fps_counter_->SaveTimeStamp(frame_begin_time,
(...skipping 2008 matching lines...) Expand 10 before | Expand all | Expand 10 after
3459 } 3477 }
3460 3478
3461 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3479 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3462 std::vector<PictureLayerImpl*>::iterator it = 3480 std::vector<PictureLayerImpl*>::iterator it =
3463 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3481 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3464 DCHECK(it != picture_layers_.end()); 3482 DCHECK(it != picture_layers_.end());
3465 picture_layers_.erase(it); 3483 picture_layers_.erase(it);
3466 } 3484 }
3467 3485
3468 } // namespace cc 3486 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698