Index: cc/playback/display_list_recording_source.cc |
diff --git a/cc/playback/display_list_recording_source.cc b/cc/playback/display_list_recording_source.cc |
index 9d6e31f26c7effe52f992ee3ce86ba49f382e3c3..9caed71fd3a743f393cdc77391eac709d04be7ae 100644 |
--- a/cc/playback/display_list_recording_source.cc |
+++ b/cc/playback/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/playback/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 { |
@@ -51,6 +57,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) { |
@@ -76,6 +83,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; |