| Index: cc/resources/display_list_recording_source.cc
|
| diff --git a/cc/resources/display_list_recording_source.cc b/cc/resources/display_list_recording_source.cc
|
| index 3a47c9067ca4dc7e0634aca8269100887a91a304..7ada580ab931d70f4e1ff5dcdbc2579d02e5a353 100644
|
| --- a/cc/resources/display_list_recording_source.cc
|
| +++ b/cc/resources/display_list_recording_source.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <algorithm>
|
|
|
| +#include "cc/base/histograms.h"
|
| #include "cc/base/region.h"
|
| #include "cc/layers/content_layer_client.h"
|
| #include "cc/resources/display_item_list.h"
|
| @@ -22,6 +23,11 @@ const int kPixelDistanceToRecord = 8000;
|
| // operations.
|
| const int kOpCountThatIsOkToAnalyze = 10;
|
|
|
| +DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
|
| + ScopedDisplayListRecordingSourceUpdateTimer,
|
| + "Compositing.DisplayListRecordingSource.UpdateUs",
|
| + "Compositing.DisplayListRecordingSource.UpdateInvalidatedAreaPerMs");
|
| +
|
| } // namespace
|
|
|
| namespace cc {
|
| @@ -49,6 +55,7 @@ bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
|
| const gfx::Rect& visible_layer_rect,
|
| int frame_number,
|
| RecordingMode recording_mode) {
|
| + ScopedDisplayListRecordingSourceUpdateTimer timer;
|
| bool updated = false;
|
|
|
| if (size_ != layer_size) {
|
| @@ -74,6 +81,12 @@ bool DisplayListRecordingSource::UpdateAndExpandInvalidation(
|
| updated = true;
|
| }
|
|
|
| + // 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());
|
| +
|
| if (!updated && !invalidation->Intersects(recorded_viewport_))
|
| return false;
|
|
|
|
|