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

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 397443002: [not for review] Add Draw entries to window Performance Timeline Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git pull of third_party/WebKit Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: cc/trees/layer_tree_host_impl.cc
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index 06b3d8db19abb4eb3bb93febd19f0299f5b5cf6b..7f2946c4fa5129bd7a640aacc6590c24a2213c21 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -5,6 +5,7 @@
#include "cc/trees/layer_tree_host_impl.h"
#include <algorithm>
+#include <iostream>
#include <limits>
#include "base/basictypes.h"
@@ -25,6 +26,7 @@
#include "cc/debug/devtools_instrumentation.h"
#include "cc/debug/frame_rate_counter.h"
#include "cc/debug/paint_time_counter.h"
+#include "cc/debug/performance_draw_timing_counter.h"
#include "cc/debug/rendering_stats_instrumentation.h"
#include "cc/debug/traced_value.h"
#include "cc/input/page_scale_animation.h"
@@ -236,6 +238,7 @@ LayerTreeHostImpl::LayerTreeHostImpl(
pinch_gesture_active_(false),
pinch_gesture_end_should_clear_scrolling_layer_(false),
fps_counter_(FrameRateCounter::Create(proxy_->HasImplThread())),
+ draw_counter_(PerformanceDrawTimingCounter::Create()),
paint_time_counter_(PaintTimeCounter::Create()),
memory_history_(MemoryHistory::Create()),
debug_rect_history_(DebugRectHistory::Create()),
@@ -851,8 +854,32 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
*it,
occlusion_tracker,
&append_quads_data);
- }
+ const std::vector<std::pair<int64_t, gfx::Rect> > &vec =
enne (OOO) 2014/07/22 20:44:26 This block of code could probably just get moved i
+ it->draw_frame_request_rects();
+ if (vec.size()) {
enne (OOO) 2014/07/22 20:44:26 style nit: early out here and continue rather than
Mike B 2014/07/25 23:09:41 Hm, to do that I need to make it a function I can
+ gfx::Rect viewport = it->visible_content_rect();
enne (OOO) 2014/07/22 20:44:26 bikeshed: This isn't the viewport, it's the viewpo
Mike B 2014/07/25 23:09:41 Gotcha, I'm just creating that variable to print o
+ std::cout << "[LayerTreeHostImpl] it->id() " << it->id()
+ << " it->visible_content_rect = ["
+ << viewport.x() << ", " << viewport.y() << ", "
+ << viewport.right() << ", " << viewport.bottom() << "]"
+ << std::endl;
+ for (size_t i = 0; i < vec.size(); ++i) {
+ int64_t rect_id = vec[i].first;
+ bool intersects = it->visible_content_rect().Intersects(
enne (OOO) 2014/07/22 20:44:26 visible content rect is in content space (aka laye
Mike B 2014/07/25 23:09:41 Done.
+ vec[i].second);
+ std::cout << "[LayerTreeHostImpl] Target " << rect_id
+ << (intersects ? " Intersects " : " Misses ") << " - ["
+ << vec[i].second.x() << ", " << vec[i].second.y() << ", "
+ << vec[i].second.width() << ", " << vec[i].second.height()
+ << "]" << std::endl;
+ if (intersects) {
+ uncommitted_draw_frame_ids_.push_back(
enne (OOO) 2014/07/22 20:44:26 This should live on the frame data too and not be
+ std::make_pair(active_tree_->source_frame_number(), rect_id));
enne (OOO) 2014/07/22 20:44:26 How does performance timeline handle getting the s
Mike B 2014/07/25 23:09:41 It gets 2 entries that have the same source frame
+ }
+ }
+ }
+ }
++layers_drawn;
}
@@ -1425,6 +1452,7 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame,
TRACE_EVENT_INSTANT0("cc", "EarlyOut_NoDamage", TRACE_EVENT_SCOPE_THREAD);
DCHECK(!output_surface_->capabilities()
.draw_and_swap_full_viewport_every_frame);
+ uncommitted_draw_frame_ids_.clear();
return;
}
@@ -1514,6 +1542,10 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame,
DCHECK(frame->render_passes.empty());
frame->render_passes_by_id.clear();
+ draw_counter_->SaveTimeStamps(CurrentFrameTimeTicks(),
+ uncommitted_draw_frame_ids_);
+ uncommitted_draw_frame_ids_.clear();
+
// The next frame should start by assuming nothing has changed, and changes
// are noted as they occur.
// TODO(boliu): If we did a temporary software renderer frame, propogate the

Powered by Google App Engine
This is Rietveld 408576698