| Index: cc/playback/picture_pile.cc
|
| diff --git a/cc/playback/picture_pile.cc b/cc/playback/picture_pile.cc
|
| index b7b2822195bed289580a052401bcbf8a1704b9cd..55a5f80997a4a68685a3d720eaf5f84efe4c6f7b 100644
|
| --- a/cc/playback/picture_pile.cc
|
| +++ b/cc/playback/picture_pile.cc
|
| @@ -8,6 +8,7 @@
|
| #include <limits>
|
| #include <vector>
|
|
|
| +#include "cc/base/histograms.h"
|
| #include "cc/base/region.h"
|
| #include "cc/playback/picture_pile_impl.h"
|
| #include "skia/ext/analysis_canvas.h"
|
| @@ -149,6 +150,11 @@ const bool kDefaultClearCanvasSetting = false;
|
| const bool kDefaultClearCanvasSetting = true;
|
| #endif
|
|
|
| +DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
|
| + ScopedPicturePileUpdateTimer,
|
| + "Compositing.PicturePile.UpdateUs",
|
| + "Compositing.PicturePile.UpdateInvalidatedAreaPerMs");
|
| +
|
| } // namespace
|
|
|
| namespace cc {
|
| @@ -181,6 +187,8 @@ bool PicturePile::UpdateAndExpandInvalidation(
|
| const gfx::Rect& visible_layer_rect,
|
| int frame_number,
|
| RecordingSource::RecordingMode recording_mode) {
|
| + ScopedPicturePileUpdateTimer timer;
|
| +
|
| gfx::Rect interest_rect = visible_layer_rect;
|
| interest_rect.Inset(-pixel_record_distance_, -pixel_record_distance_);
|
| recorded_viewport_ = interest_rect;
|
| @@ -188,6 +196,13 @@ bool PicturePile::UpdateAndExpandInvalidation(
|
|
|
| bool updated = ApplyInvalidationAndResize(interest_rect, invalidation,
|
| layer_size, frame_number);
|
| +
|
| + // Count the area that is being invalidated.
|
| + Region recorded_invalidation(*invalidation);
|
| + recorded_invalidation.Intersect(recorded_viewport_);
|
| + for (Region::Iterator it(recorded_invalidation); it.has_rect(); it.next())
|
| + timer.AddArea(it.rect().size().GetArea());
|
| +
|
| std::vector<gfx::Rect> invalid_tiles;
|
| GetInvalidTileRects(interest_rect, &invalid_tiles);
|
| std::vector<gfx::Rect> record_rects;
|
|
|