Chromium Code Reviews| Index: cc/playback/display_item_list.cc |
| diff --git a/cc/playback/display_item_list.cc b/cc/playback/display_item_list.cc |
| index 068cb00999b665bedd8d587cef4a66c2fe128a66..5262fa3fa398ef9cde69439c81aa7b9f8ac8eeda 100644 |
| --- a/cc/playback/display_item_list.cc |
| +++ b/cc/playback/display_item_list.cc |
| @@ -16,10 +16,16 @@ |
| #include "cc/debug/picture_debug_util.h" |
| #include "cc/debug/traced_display_item_list.h" |
| #include "cc/debug/traced_value.h" |
| +#include "cc/playback/clip_display_item.h" |
| +#include "cc/playback/clip_path_display_item.h" |
| +#include "cc/playback/compositing_display_item.h" |
| #include "cc/playback/display_item_list_settings.h" |
| #include "cc/playback/display_item_proto_factory.h" |
| #include "cc/playback/drawing_display_item.h" |
| +#include "cc/playback/filter_display_item.h" |
| +#include "cc/playback/float_clip_display_item.h" |
| #include "cc/playback/largest_display_item.h" |
| +#include "cc/playback/transform_display_item.h" |
| #include "cc/proto/display_item.pb.h" |
| #include "cc/proto/gfx_conversions.h" |
| #include "third_party/skia/include/core/SkCanvas.h" |
| @@ -183,7 +189,6 @@ int DisplayItemList::ApproximateOpCount() const { |
| return approximate_op_count_; |
| } |
| -DISABLE_CFI_PERF |
|
danakj
2016/12/07 02:41:55
This was because we were calling virtual methods i
|
| size_t DisplayItemList::ApproximateMemoryUsage() const { |
| size_t memory_usage = sizeof(*this); |
| @@ -191,7 +196,45 @@ size_t DisplayItemList::ApproximateMemoryUsage() const { |
| // Warning: this double-counts SkPicture data if use_cached_picture is |
| // also true. |
| for (const auto& item : inputs_.items) { |
| - external_memory_usage += item.ExternalMemoryUsage(); |
| + size_t bytes; |
|
vmpstr
2016/12/07 03:11:50
nit: = 0;
danakj
2016/12/07 03:48:39
Done.
|
| + switch (item.type()) { |
| + case DisplayItem::CLIP: |
| + bytes = static_cast<const ClipDisplayItem&>(item).ExternalMemoryUsage(); |
| + break; |
| + case DisplayItem::CLIP_PATH: |
| + bytes = |
| + static_cast<const ClipPathDisplayItem&>(item).ExternalMemoryUsage(); |
| + break; |
| + case DisplayItem::COMPOSITING: |
| + bytes = static_cast<const CompositingDisplayItem&>(item) |
| + .ExternalMemoryUsage(); |
| + break; |
| + case DisplayItem::DRAWING: |
| + bytes = |
| + static_cast<const DrawingDisplayItem&>(item).ExternalMemoryUsage(); |
| + break; |
| + case DisplayItem::FLOAT_CLIP: |
| + bytes = static_cast<const FloatClipDisplayItem&>(item) |
| + .ExternalMemoryUsage(); |
| + break; |
| + case DisplayItem::FILTER: |
| + bytes = |
| + static_cast<const FilterDisplayItem&>(item).ExternalMemoryUsage(); |
| + break; |
| + case DisplayItem::TRANSFORM: |
| + bytes = static_cast<const TransformDisplayItem&>(item) |
| + .ExternalMemoryUsage(); |
| + break; |
| + case DisplayItem::END_CLIP: |
| + case DisplayItem::END_CLIP_PATH: |
| + case DisplayItem::END_COMPOSITING: |
| + case DisplayItem::END_FLOAT_CLIP: |
| + case DisplayItem::END_FILTER: |
| + case DisplayItem::END_TRANSFORM: |
| + bytes = 0; |
| + break; |
| + } |
| + external_memory_usage += bytes; |
| } |
| // Memory outside this class due to |items_|. |