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

Unified Diff: cc/playback/display_item_list.cc

Issue 2747273002: cc: Remove AsValue virtual from DisplayItem. (Closed)
Patch Set: Created 3 years, 9 months 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_list.h ('k') | cc/playback/display_item_list_unittest.cc » ('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 779fc81dded3996fc1042c0387435244971bd3f3..3229b83019b23da651c8684611613256efdd7f6f 100644
--- a/cc/playback/display_item_list.cc
+++ b/cc/playback/display_item_list.cc
@@ -14,8 +14,6 @@
#include "base/trace_event/trace_event_argument.h"
#include "cc/base/math_util.h"
#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"
@@ -38,13 +36,6 @@ namespace {
// operations.
const int kOpCountThatIsOkToAnalyze = 10;
-bool DisplayItemsTracingEnabled() {
- bool tracing_enabled;
- TRACE_EVENT_CATEGORY_GROUP_ENABLED(
- TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items"), &tracing_enabled);
- return tracing_enabled;
-}
-
bool GetCanvasClipBounds(SkCanvas* canvas, gfx::Rect* clip_bounds) {
SkRect canvas_clip_bounds;
if (!canvas->getLocalClipBounds(&canvas_clip_bounds))
@@ -194,50 +185,193 @@ bool DisplayItemList::ShouldBeAnalyzedForSolidColor() const {
return ApproximateOpCount() <= kOpCountThatIsOkToAnalyze;
}
-std::unique_ptr<base::trace_event::ConvertableToTraceFormat>
-DisplayItemList::AsValue(bool include_items) const {
- std::unique_ptr<base::trace_event::TracedValue> state(
- new base::trace_event::TracedValue());
+void DisplayItemList::EmitTraceSnapshot() const {
+ bool include_items;
+ TRACE_EVENT_CATEGORY_GROUP_ENABLED(
+ TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items"), &include_items);
+ TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
+ TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items") ","
+ TRACE_DISABLED_BY_DEFAULT("cc.debug.picture") ","
+ TRACE_DISABLED_BY_DEFAULT("devtools.timeline.picture"),
+ "cc::DisplayItemList", this, CreateTracedValue(include_items));
+}
+std::unique_ptr<base::trace_event::TracedValue>
+DisplayItemList::CreateTracedValue(bool include_items) const {
+ auto state = base::MakeUnique<base::trace_event::TracedValue>();
state->BeginDictionary("params");
+
if (include_items) {
state->BeginArray("items");
- size_t item_index = 0;
- for (const DisplayItem& item : inputs_.items) {
- item.AsValueInto(item_index < inputs_.visual_rects.size()
- ? inputs_.visual_rects[item_index]
- : gfx::Rect(),
- state.get());
- item_index++;
+
+ auto visual_rects_it = inputs_.visual_rects.begin();
+ for (const DisplayItem& base_item : inputs_.items) {
+ gfx::Rect visual_rect;
+ if (visual_rects_it != inputs_.visual_rects.end()) {
+ visual_rect = *visual_rects_it;
+ ++visual_rects_it;
+ }
+
+ switch (base_item.type()) {
+ case DisplayItem::CLIP: {
+ const auto& item = static_cast<const ClipDisplayItem&>(base_item);
+ std::string output =
+ base::StringPrintf("ClipDisplayItem rect: [%s] visualRect: [%s]",
+ item.clip_rect().ToString().c_str(),
+ visual_rect.ToString().c_str());
+ for (const SkRRect& rounded_rect : item.rounded_clip_rects()) {
+ base::StringAppendF(
+ &output, " rounded_rect: [rect: [%s]",
+ gfx::SkRectToRectF(rounded_rect.rect()).ToString().c_str());
+ base::StringAppendF(&output, " radii: [");
+ SkVector upper_left_radius =
+ rounded_rect.radii(SkRRect::kUpperLeft_Corner);
+ base::StringAppendF(&output, "[%f,%f],", upper_left_radius.x(),
+ upper_left_radius.y());
+ SkVector upper_right_radius =
+ rounded_rect.radii(SkRRect::kUpperRight_Corner);
+ base::StringAppendF(&output, " [%f,%f],", upper_right_radius.x(),
+ upper_right_radius.y());
+ SkVector lower_right_radius =
+ rounded_rect.radii(SkRRect::kLowerRight_Corner);
+ base::StringAppendF(&output, " [%f,%f],", lower_right_radius.x(),
+ lower_right_radius.y());
+ SkVector lower_left_radius =
+ rounded_rect.radii(SkRRect::kLowerLeft_Corner);
+ base::StringAppendF(&output, " [%f,%f]]", lower_left_radius.x(),
+ lower_left_radius.y());
+ }
+ state->AppendString(output);
+ break;
+ }
+ case DisplayItem::END_CLIP:
+ state->AppendString(
+ base::StringPrintf("EndClipDisplayItem visualRect: [%s]",
+ visual_rect.ToString().c_str()));
+ break;
+ case DisplayItem::CLIP_PATH: {
+ const auto& item = static_cast<const ClipPathDisplayItem&>(base_item);
+ state->AppendString(base::StringPrintf(
+ "ClipPathDisplayItem length: %d visualRect: [%s]",
+ item.clip_path().countPoints(), visual_rect.ToString().c_str()));
+ break;
+ }
+ case DisplayItem::END_CLIP_PATH:
+ state->AppendString(
+ base::StringPrintf("EndClipPathDisplayItem visualRect: [%s]",
+ visual_rect.ToString().c_str()));
+ break;
+ case DisplayItem::COMPOSITING: {
+ const auto& item =
+ static_cast<const CompositingDisplayItem&>(base_item);
+ std::string output = base::StringPrintf(
+ "CompositingDisplayItem alpha: %d, xfermode: %d, visualRect: "
+ "[%s]",
+ item.alpha(), static_cast<int>(item.xfermode()),
+ visual_rect.ToString().c_str());
+ if (item.has_bounds()) {
+ base::StringAppendF(
+ &output, ", bounds: [%s]",
+ gfx::SkRectToRectF(item.bounds()).ToString().c_str());
+ }
+ state->AppendString(output);
+ break;
+ }
+ case DisplayItem::END_COMPOSITING:
+ state->AppendString(
+ base::StringPrintf("EndCompositingDisplayItem visualRect: [%s]",
+ visual_rect.ToString().c_str()));
+ break;
+ case DisplayItem::DRAWING: {
+ const auto& item = static_cast<const DrawingDisplayItem&>(base_item);
+ state->BeginDictionary();
+ state->SetString("name", "DrawingDisplayItem");
+
+ state->BeginArray("visualRect");
+ state->AppendInteger(visual_rect.x());
+ state->AppendInteger(visual_rect.y());
+ state->AppendInteger(visual_rect.width());
+ state->AppendInteger(visual_rect.height());
+ state->EndArray();
+
+ state->BeginArray("cullRect");
+ state->AppendInteger(item.picture().cullRect().x());
+ state->AppendInteger(item.picture().cullRect().y());
+ state->AppendInteger(item.picture().cullRect().width());
+ state->AppendInteger(item.picture().cullRect().height());
+ state->EndArray();
+
+ std::string b64_picture;
+ PictureDebugUtil::SerializeAsBase64(ToSkPicture(&item.picture()),
+ &b64_picture);
+ state->SetString("skp64", b64_picture);
+ state->EndDictionary();
+ break;
+ }
+ case DisplayItem::FILTER: {
+ const auto& item = static_cast<const FilterDisplayItem&>(base_item);
+ state->AppendString(base::StringPrintf(
+ "FilterDisplayItem bounds: [%s] visualRect: [%s]",
+ item.bounds().ToString().c_str(),
+ visual_rect.ToString().c_str()));
+ break;
+ }
+ case DisplayItem::END_FILTER:
+ state->AppendString(
+ base::StringPrintf("EndFilterDisplayItem visualRect: [%s]",
+ visual_rect.ToString().c_str()));
+ break;
+ case DisplayItem::FLOAT_CLIP: {
+ const auto& item =
+ static_cast<const FloatClipDisplayItem&>(base_item);
+ state->AppendString(base::StringPrintf(
+ "FloatClipDisplayItem rect: [%s] visualRect: [%s]",
+ item.clip_rect().ToString().c_str(),
+ visual_rect.ToString().c_str()));
+ break;
+ }
+ case DisplayItem::END_FLOAT_CLIP:
+ state->AppendString(
+ base::StringPrintf("EndFloatClipDisplayItem visualRect: [%s]",
+ visual_rect.ToString().c_str()));
+ break;
+ case DisplayItem::TRANSFORM: {
+ const auto& item =
+ static_cast<const TransformDisplayItem&>(base_item);
+ state->AppendString(base::StringPrintf(
+ "TransformDisplayItem transform: [%s] visualRect: [%s]",
+ item.transform().ToString().c_str(),
+ visual_rect.ToString().c_str()));
+ break;
+ }
+ case DisplayItem::END_TRANSFORM:
+ state->AppendString(
+ base::StringPrintf("EndTransformDisplayItem visualRect: [%s]",
+ visual_rect.ToString().c_str()));
+ break;
+ }
}
state->EndArray(); // "items".
}
+
MathUtil::AddToTracedValue("layer_rect", rtree_.GetBounds(), state.get());
state->EndDictionary(); // "params".
- SkPictureRecorder recorder;
- gfx::Rect bounds = rtree_.GetBounds();
- SkCanvas* canvas = recorder.beginRecording(bounds.width(), bounds.height());
- canvas->translate(-bounds.x(), -bounds.y());
- canvas->clipRect(gfx::RectToSkRect(bounds));
- Raster(canvas, nullptr, gfx::Rect(), 1.f);
- sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
-
- std::string b64_picture;
- PictureDebugUtil::SerializeAsBase64(picture.get(), &b64_picture);
- state->SetString("skp64", b64_picture);
-
- return std::move(state);
-}
+ {
+ SkPictureRecorder recorder;
+ gfx::Rect bounds = rtree_.GetBounds();
+ SkCanvas* canvas = recorder.beginRecording(bounds.width(), bounds.height());
+ canvas->translate(-bounds.x(), -bounds.y());
+ canvas->clipRect(gfx::RectToSkRect(bounds));
+ Raster(canvas, nullptr, gfx::Rect(), 1.f);
+ sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();
+
+ std::string b64_picture;
+ PictureDebugUtil::SerializeAsBase64(picture.get(), &b64_picture);
+ state->SetString("skp64", b64_picture);
+ }
-void DisplayItemList::EmitTraceSnapshot() const {
- TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID(
- TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items") ","
- TRACE_DISABLED_BY_DEFAULT("cc.debug.picture") ","
- TRACE_DISABLED_BY_DEFAULT("devtools.timeline.picture"),
- "cc::DisplayItemList", this,
- TracedDisplayItemList::AsTraceableDisplayItemList(this,
- DisplayItemsTracingEnabled()));
+ return state;
}
void DisplayItemList::GenerateDiscardableImagesMetadata() {
« no previous file with comments | « cc/playback/display_item_list.h ('k') | cc/playback/display_item_list_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698