Chromium Code Reviews| 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..0906eef58f9fa588b61620e38403af6a45c510eb 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, |
| + "Renderer4.DisplayListRecordingSourceRecordUs", |
| + "Renderer4.DisplayListRecordingSourceInvalidatedAreaRecordedPerMs"); |
| + |
| } // 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_)) |
|
jbroman
2015/04/14 18:18:12
Possibly this check could use recorded_invalidatio
enne (OOO)
2015/04/14 19:55:27
This is fine, as-is.
|
| return false; |