summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authorvmpstr <vmpstr@chromium.org>2014-08-27 11:11:01 -0700
committerCommit bot <commit-bot@chromium.org>2014-08-27 18:12:08 +0000
commitd7de03c45e06e104e3ba022e240f7bc88315e753 (patch)
treecdf42e78c47aca5cd424c1ea06ba24c61ba275d5 /cc
parent5d4f2af9a63ff2bbf24a0baccc2b22952582f20a (diff)
downloadchromium_src-d7de03c45e06e104e3ba022e240f7bc88315e753.zip
chromium_src-d7de03c45e06e104e3ba022e240f7bc88315e753.tar.gz
chromium_src-d7de03c45e06e104e3ba022e240f7bc88315e753.tar.bz2
cc: Report only on active tiles in tracing.
This patch changes which tiles we report on. Previously, we logged all of the available tiles. Now, we only log tiles that are active. That is, only tiles that are on either active or pending trees are logged. The way this is done is as follows: - Walk the tree, layers, tilings - Insert all tiles from a tiling into a set - Stuff those into a trace. BUG=403094 Review URL: https://codereview.chromium.org/493543002 Cr-Commit-Position: refs/heads/master@{#292183}
Diffstat (limited to 'cc')
-rw-r--r--cc/layers/layer_impl.cc3
-rw-r--r--cc/layers/layer_impl.h1
-rw-r--r--cc/layers/picture_layer_impl.cc10
-rw-r--r--cc/layers/picture_layer_impl.h3
-rw-r--r--cc/resources/picture_layer_tiling.cc7
-rw-r--r--cc/resources/picture_layer_tiling.h2
-rw-r--r--cc/resources/tile_manager.cc8
-rw-r--r--cc/resources/tile_manager.h1
-rw-r--r--cc/trees/layer_tree_host_impl.cc22
-rw-r--r--cc/trees/layer_tree_impl.cc14
-rw-r--r--cc/trees/layer_tree_impl.h2
11 files changed, 60 insertions, 13 deletions
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 14ffa6f..2d444a1 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -1400,6 +1400,9 @@ void LayerImpl::RemoveDependentNeedsPushProperties() {
parent_->RemoveDependentNeedsPushProperties();
}
+void LayerImpl::GetAllTilesForTracing(std::set<const Tile*>* tiles) const {
+}
+
void LayerImpl::AsValueInto(base::debug::TracedValue* state) const {
TracedValue::MakeDictIntoImplicitSnapshotWithCategory(
TRACE_DISABLED_BY_DEFAULT("cc.debug"),
diff --git a/cc/layers/layer_impl.h b/cc/layers/layer_impl.h
index 8af8c3d..c10710c 100644
--- a/cc/layers/layer_impl.h
+++ b/cc/layers/layer_impl.h
@@ -523,6 +523,7 @@ class CC_EXPORT LayerImpl : public LayerAnimationValueObserver,
virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl);
virtual void PushPropertiesTo(LayerImpl* layer);
+ virtual void GetAllTilesForTracing(std::set<const Tile*>* tiles) const;
virtual void AsValueInto(base::debug::TracedValue* dict) const;
virtual size_t GPUMemoryUsageInBytes() const;
diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
index b3a095f..43348fa 100644
--- a/cc/layers/picture_layer_impl.cc
+++ b/cc/layers/picture_layer_impl.cc
@@ -6,6 +6,7 @@
#include <algorithm>
#include <limits>
+#include <set>
#include "base/debug/trace_event_argument.h"
#include "base/time/time.h"
@@ -1404,6 +1405,15 @@ void PictureLayerImpl::GetDebugBorderProperties(
*width = DebugColors::TiledContentLayerBorderWidth(layer_tree_impl());
}
+void PictureLayerImpl::GetAllTilesForTracing(
+ std::set<const Tile*>* tiles) const {
+ if (!tilings_)
+ return;
+
+ for (size_t i = 0; i < tilings_->num_tilings(); ++i)
+ tilings_->tiling_at(i)->GetAllTilesForTracing(tiles);
+}
+
void PictureLayerImpl::AsValueInto(base::debug::TracedValue* state) const {
const_cast<PictureLayerImpl*>(this)->DoPostCommitInitializationIfNeeded();
LayerImpl::AsValueInto(state);
diff --git a/cc/layers/picture_layer_impl.h b/cc/layers/picture_layer_impl.h
index f9845be..47d881d 100644
--- a/cc/layers/picture_layer_impl.h
+++ b/cc/layers/picture_layer_impl.h
@@ -5,6 +5,7 @@
#ifndef CC_LAYERS_PICTURE_LAYER_IMPL_H_
#define CC_LAYERS_PICTURE_LAYER_IMPL_H_
+#include <set>
#include <string>
#include <vector>
@@ -191,6 +192,8 @@ class CC_EXPORT PictureLayerImpl
virtual void GetDebugBorderProperties(
SkColor* color, float* width) const OVERRIDE;
+ virtual void GetAllTilesForTracing(
+ std::set<const Tile*>* tiles) const OVERRIDE;
virtual void AsValueInto(base::debug::TracedValue* dict) const OVERRIDE;
virtual void UpdateIdealScales();
diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc
index b302873..3ae7be4 100644
--- a/cc/resources/picture_layer_tiling.cc
+++ b/cc/resources/picture_layer_tiling.cc
@@ -7,6 +7,7 @@
#include <algorithm>
#include <cmath>
#include <limits>
+#include <set>
#include "base/debug/trace_event.h"
#include "base/debug/trace_event_argument.h"
@@ -684,6 +685,12 @@ void PictureLayerTiling::DidBecomeActive() {
}
}
+void PictureLayerTiling::GetAllTilesForTracing(
+ std::set<const Tile*>* tiles) const {
+ for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it)
+ tiles->insert(it->second.get());
+}
+
void PictureLayerTiling::AsValueInto(base::debug::TracedValue* state) const {
state->SetInteger("num_tiles", tiles_.size());
state->SetDouble("content_scale", contents_scale_);
diff --git a/cc/resources/picture_layer_tiling.h b/cc/resources/picture_layer_tiling.h
index f2e5e73..45edc7d 100644
--- a/cc/resources/picture_layer_tiling.h
+++ b/cc/resources/picture_layer_tiling.h
@@ -5,6 +5,7 @@
#ifndef CC_RESOURCES_PICTURE_LAYER_TILING_H_
#define CC_RESOURCES_PICTURE_LAYER_TILING_H_
+#include <set>
#include <utility>
#include <vector>
@@ -261,6 +262,7 @@ class CC_EXPORT PictureLayerTiling {
return frame_time_in_seconds != last_impl_frame_time_in_seconds_;
}
+ void GetAllTilesForTracing(std::set<const Tile*>* tiles) const;
void AsValueInto(base::debug::TracedValue* array) const;
size_t GPUMemoryUsageInBytes() const;
diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
index b7f5a9d..f3d302b 100644
--- a/cc/resources/tile_manager.cc
+++ b/cc/resources/tile_manager.cc
@@ -731,14 +731,6 @@ void TileManager::BasicStateAsValueInto(base::debug::TracedValue* state) const {
state->EndDictionary();
}
-void TileManager::AllTilesAsValueInto(base::debug::TracedValue* state) const {
- for (TileMap::const_iterator it = tiles_.begin(); it != tiles_.end(); ++it) {
- state->BeginDictionary();
- it->second->AsValueInto(state);
- state->EndDictionary();
- }
-}
-
void TileManager::AssignGpuMemoryToTiles(
PrioritizedTileSet* tiles,
TileVector* tiles_that_need_to_be_rasterized) {
diff --git a/cc/resources/tile_manager.h b/cc/resources/tile_manager.h
index eec5629..df9325e 100644
--- a/cc/resources/tile_manager.h
+++ b/cc/resources/tile_manager.h
@@ -112,7 +112,6 @@ class CC_EXPORT TileManager : public RasterizerClient,
scoped_refptr<base::debug::ConvertableToTraceFormat> BasicStateAsValue()
const;
void BasicStateAsValueInto(base::debug::TracedValue* dict) const;
- void AllTilesAsValueInto(base::debug::TracedValue* array) const;
const MemoryHistory::Entry& memory_stats_from_last_assign() const {
return memory_stats_from_last_assign_;
}
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index a6d50c6..e293a5a 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -3145,11 +3145,25 @@ void LayerTreeHostImpl::AsValueWithFrameInto(
state->BeginDictionary("device_viewport_size");
MathUtil::AddToTracedValue(device_viewport_size_, state);
state->EndDictionary();
- if (tile_manager_) {
- state->BeginArray("tiles");
- tile_manager_->AllTilesAsValueInto(state);
- state->EndArray();
+ std::set<const Tile*> tiles;
+ active_tree_->GetAllTilesForTracing(&tiles);
+ if (pending_tree_)
+ pending_tree_->GetAllTilesForTracing(&tiles);
+
+ state->BeginArray("active_tiles");
+ for (std::set<const Tile*>::const_iterator it = tiles.begin();
+ it != tiles.end();
+ ++it) {
+ const Tile* tile = *it;
+
+ state->BeginDictionary();
+ tile->AsValueInto(state);
+ state->EndDictionary();
+ }
+ state->EndArray();
+
+ if (tile_manager_) {
state->BeginDictionary("tile_manager_basic_state");
tile_manager_->BasicStateAsValueInto(state);
state->EndDictionary();
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index 6d2d88d..c9526f9 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -817,6 +817,20 @@ AnimationRegistrar* LayerTreeImpl::animationRegistrar() const {
return layer_tree_host_impl_->animation_registrar();
}
+void LayerTreeImpl::GetAllTilesForTracing(std::set<const Tile*>* tiles) const {
+ typedef LayerIterator<LayerImpl> LayerIteratorType;
+ LayerIteratorType end = LayerIteratorType::End(&render_surface_layer_list_);
+ for (LayerIteratorType it =
+ LayerIteratorType::Begin(&render_surface_layer_list_);
+ it != end;
+ ++it) {
+ if (!it.represents_itself())
+ continue;
+ LayerImpl* layer_impl = *it;
+ layer_impl->GetAllTilesForTracing(tiles);
+ }
+}
+
void LayerTreeImpl::AsValueInto(base::debug::TracedValue* state) const {
TracedValue::MakeDictIntoImplicitSnapshot(state, "cc::LayerTreeImpl", this);
state->SetInteger("source_frame_number", source_frame_number_);
diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h
index e21b1c8..eb05ee5 100644
--- a/cc/trees/layer_tree_impl.h
+++ b/cc/trees/layer_tree_impl.h
@@ -6,6 +6,7 @@
#define CC_TREES_LAYER_TREE_IMPL_H_
#include <list>
+#include <set>
#include <string>
#include <vector>
@@ -112,6 +113,7 @@ class CC_EXPORT LayerTreeImpl {
const LayerTreeDebugState& debug_state() const;
float device_scale_factor() const;
DebugRectHistory* debug_rect_history() const;
+ void GetAllTilesForTracing(std::set<const Tile*>* tiles) const;
void AsValueInto(base::debug::TracedValue* dict) const;
// Other public methods