| Index: cc/playback/display_item_list.cc
|
| diff --git a/cc/playback/display_item_list.cc b/cc/playback/display_item_list.cc
|
| index 943f48d51ea29821d9ca2b391a83601dd757a099..6641c3191ad258dd07fe32c891491c875394301e 100644
|
| --- a/cc/playback/display_item_list.cc
|
| +++ b/cc/playback/display_item_list.cc
|
| @@ -48,7 +48,8 @@ DisplayItemList::DisplayItemList(gfx::Rect layer_rect,
|
| layer_rect_(layer_rect),
|
| is_suitable_for_gpu_rasterization_(true),
|
| approximate_op_count_(0),
|
| - picture_memory_usage_(0) {
|
| + picture_memory_usage_(0),
|
| + external_memory_usage_(0) {
|
| #if DCHECK_IS_ON()
|
| needs_process_ = false;
|
| #endif
|
| @@ -153,7 +154,7 @@ void DisplayItemList::ProcessAppendedItems() {
|
| if (retain_individual_display_items_) {
|
| // Warning: this double-counts SkPicture data if use_cached_picture_ is
|
| // also true.
|
| - picture_memory_usage_ += item->picture_memory_usage();
|
| + external_memory_usage_ += item->external_memory_usage();
|
| }
|
| }
|
|
|
| @@ -193,7 +194,7 @@ void DisplayItemList::Finalize() {
|
| DCHECK(!picture_);
|
| picture_ = skia::AdoptRef(recorder_->endRecordingAsPicture());
|
| DCHECK(picture_);
|
| - picture_memory_usage_ +=
|
| + picture_memory_usage_ =
|
| SkPictureUtils::ApproximateBytesUsed(picture_.get());
|
| recorder_.reset();
|
| canvas_.clear();
|
| @@ -213,14 +214,26 @@ int DisplayItemList::ApproximateOpCount() const {
|
| return approximate_op_count_;
|
| }
|
|
|
| -size_t DisplayItemList::PictureMemoryUsage() const {
|
| +size_t DisplayItemList::ApproximateMemoryUsage() const {
|
| DCHECK(ProcessAppendedItemsCalled());
|
| // We double-count in this case. Produce zero to avoid being misleading.
|
| if (use_cached_picture_ && retain_individual_display_items_)
|
| return 0;
|
|
|
| DCHECK_IMPLIES(use_cached_picture_, picture_);
|
| - return picture_memory_usage_;
|
| +
|
| + size_t memory_usage = sizeof(*this);
|
| +
|
| + // Memory outside this class due to |items_|.
|
| + memory_usage += items_.GetCapacityInBytes() + external_memory_usage_;
|
| +
|
| + // Memory outside this class due to |picture|.
|
| + memory_usage += picture_memory_usage_;
|
| +
|
| + // TODO(jbroman): Does anything else owned by this class substantially
|
| + // contribute to memory usage?
|
| +
|
| + return memory_usage;
|
| }
|
|
|
| scoped_refptr<base::trace_event::ConvertableToTraceFormat>
|
|
|