Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3077)

Unified Diff: cc/playback/display_item_list.cc

Issue 2561523002: cc: Devirtualize DisplayItem::ExternalMemoryUsage(). (Closed)
Patch Set: externalmem: . Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/playback/display_item.cc ('k') | cc/playback/drawing_display_item.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..2009f1c19a955b1791902cca2bf473f83217e9b1 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
size_t DisplayItemList::ApproximateMemoryUsage() const {
size_t memory_usage = sizeof(*this);
@@ -191,7 +196,44 @@ 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 = 0;
+ 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:
+ break;
+ }
+ external_memory_usage += bytes;
}
// Memory outside this class due to |items_|.
« no previous file with comments | « cc/playback/display_item.cc ('k') | cc/playback/drawing_display_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698