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

Side by Side Diff: cc/playback/display_item_list.cc

Issue 2646623002: cc: Remove all blimp code from cc. (Closed)
Patch Set: test build Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « cc/playback/display_item_list.h ('k') | cc/playback/display_item_list_settings.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/playback/display_item_list.h" 5 #include "cc/playback/display_item_list.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/numerics/safe_conversions.h" 11 #include "base/numerics/safe_conversions.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/trace_event/trace_event.h" 13 #include "base/trace_event/trace_event.h"
14 #include "base/trace_event/trace_event_argument.h" 14 #include "base/trace_event/trace_event_argument.h"
15 #include "cc/base/math_util.h" 15 #include "cc/base/math_util.h"
16 #include "cc/debug/picture_debug_util.h" 16 #include "cc/debug/picture_debug_util.h"
17 #include "cc/debug/traced_display_item_list.h" 17 #include "cc/debug/traced_display_item_list.h"
18 #include "cc/debug/traced_value.h" 18 #include "cc/debug/traced_value.h"
19 #include "cc/playback/clip_display_item.h" 19 #include "cc/playback/clip_display_item.h"
20 #include "cc/playback/clip_path_display_item.h" 20 #include "cc/playback/clip_path_display_item.h"
21 #include "cc/playback/compositing_display_item.h" 21 #include "cc/playback/compositing_display_item.h"
22 #include "cc/playback/display_item_list_settings.h" 22 #include "cc/playback/display_item_list_settings.h"
23 #include "cc/playback/display_item_proto_factory.h"
24 #include "cc/playback/drawing_display_item.h" 23 #include "cc/playback/drawing_display_item.h"
25 #include "cc/playback/filter_display_item.h" 24 #include "cc/playback/filter_display_item.h"
26 #include "cc/playback/float_clip_display_item.h" 25 #include "cc/playback/float_clip_display_item.h"
27 #include "cc/playback/largest_display_item.h" 26 #include "cc/playback/largest_display_item.h"
28 #include "cc/playback/transform_display_item.h" 27 #include "cc/playback/transform_display_item.h"
29 #include "cc/proto/display_item.pb.h"
30 #include "cc/proto/gfx_conversions.h"
31 #include "third_party/skia/include/core/SkCanvas.h" 28 #include "third_party/skia/include/core/SkCanvas.h"
32 #include "third_party/skia/include/core/SkPictureRecorder.h" 29 #include "third_party/skia/include/core/SkPictureRecorder.h"
33 #include "third_party/skia/include/utils/SkPictureUtils.h" 30 #include "third_party/skia/include/utils/SkPictureUtils.h"
34 #include "ui/gfx/geometry/rect.h" 31 #include "ui/gfx/geometry/rect.h"
35 #include "ui/gfx/geometry/rect_conversions.h" 32 #include "ui/gfx/geometry/rect_conversions.h"
36 #include "ui/gfx/skia_util.h" 33 #include "ui/gfx/skia_util.h"
37 34
38 namespace cc { 35 namespace cc {
39 36
40 namespace { 37 namespace {
(...skipping 26 matching lines...) Expand all
67 LargestDisplayItemSize() * kDefaultNumDisplayItemsToReserve), 64 LargestDisplayItemSize() * kDefaultNumDisplayItemsToReserve),
68 settings(settings) {} 65 settings(settings) {}
69 66
70 DisplayItemList::Inputs::~Inputs() {} 67 DisplayItemList::Inputs::~Inputs() {}
71 68
72 scoped_refptr<DisplayItemList> DisplayItemList::Create( 69 scoped_refptr<DisplayItemList> DisplayItemList::Create(
73 const DisplayItemListSettings& settings) { 70 const DisplayItemListSettings& settings) {
74 return make_scoped_refptr(new DisplayItemList(settings)); 71 return make_scoped_refptr(new DisplayItemList(settings));
75 } 72 }
76 73
77 scoped_refptr<DisplayItemList> DisplayItemList::CreateFromProto(
78 const proto::DisplayItemList& proto,
79 ClientPictureCache* client_picture_cache,
80 std::vector<uint32_t>* used_engine_picture_ids) {
81 scoped_refptr<DisplayItemList> list =
82 DisplayItemList::Create(DisplayItemListSettings(proto.settings()));
83
84 for (int i = 0; i < proto.items_size(); i++) {
85 const proto::DisplayItem& item_proto = proto.items(i);
86 const gfx::Rect visual_rect = ProtoToRect(proto.visual_rects(i));
87 DisplayItemProtoFactory::AllocateAndConstruct(
88 visual_rect, list.get(), item_proto, client_picture_cache,
89 used_engine_picture_ids);
90 }
91
92 list->Finalize();
93
94 return list;
95 }
96
97 DisplayItemList::DisplayItemList(const DisplayItemListSettings& settings) 74 DisplayItemList::DisplayItemList(const DisplayItemListSettings& settings)
98 : inputs_(settings) {} 75 : inputs_(settings) {}
99 76
100 DisplayItemList::~DisplayItemList() { 77 DisplayItemList::~DisplayItemList() {
101 } 78 }
102 79
103 void DisplayItemList::ToProtobuf(proto::DisplayItemList* proto) {
104 // The flattened SkPicture approach is going away, and the proto
105 // doesn't currently support serializing that flattened picture.
106 inputs_.settings.ToProtobuf(proto->mutable_settings());
107
108 DCHECK_EQ(0, proto->items_size());
109 DCHECK_EQ(0, proto->visual_rects_size());
110 DCHECK(inputs_.items.size() == inputs_.visual_rects.size())
111 << "items.size() " << inputs_.items.size() << " visual_rects.size() "
112 << inputs_.visual_rects.size();
113 int i = 0;
114 for (const auto& item : inputs_.items) {
115 RectToProto(inputs_.visual_rects[i++], proto->add_visual_rects());
116 item.ToProtobuf(proto->add_items());
117 }
118 }
119
120 void DisplayItemList::Raster(SkCanvas* canvas, 80 void DisplayItemList::Raster(SkCanvas* canvas,
121 SkPicture::AbortCallback* callback, 81 SkPicture::AbortCallback* callback,
122 const gfx::Rect& canvas_target_playback_rect, 82 const gfx::Rect& canvas_target_playback_rect,
123 float contents_scale) const { 83 float contents_scale) const {
124 canvas->save(); 84 canvas->save();
125 if (!canvas_target_playback_rect.IsEmpty()) { 85 if (!canvas_target_playback_rect.IsEmpty()) {
126 // canvas_target_playback_rect is specified in device space. We can't 86 // canvas_target_playback_rect is specified in device space. We can't
127 // use clipRect because canvas CTM will be applied on it. Use clipRegion 87 // use clipRect because canvas CTM will be applied on it. Use clipRegion
128 // instead because it ignores canvas CTM. 88 // instead because it ignores canvas CTM.
129 SkRegion device_clip; 89 SkRegion device_clip;
(...skipping 25 matching lines...) Expand all
155 } 115 }
156 116
157 void DisplayItemList::GrowCurrentBeginItemVisualRect( 117 void DisplayItemList::GrowCurrentBeginItemVisualRect(
158 const gfx::Rect& visual_rect) { 118 const gfx::Rect& visual_rect) {
159 if (!inputs_.begin_item_indices.empty()) 119 if (!inputs_.begin_item_indices.empty())
160 inputs_.visual_rects[inputs_.begin_item_indices.back()].Union(visual_rect); 120 inputs_.visual_rects[inputs_.begin_item_indices.back()].Union(visual_rect);
161 } 121 }
162 122
163 void DisplayItemList::Finalize() { 123 void DisplayItemList::Finalize() {
164 TRACE_EVENT0("cc", "DisplayItemList::Finalize"); 124 TRACE_EVENT0("cc", "DisplayItemList::Finalize");
165 // TODO(dtrainor): Need to deal with serializing inputs_.visual_rects.
166 // http://crbug.com/568757.
167 DCHECK(inputs_.items.size() == inputs_.visual_rects.size()) 125 DCHECK(inputs_.items.size() == inputs_.visual_rects.size())
168 << "items.size() " << inputs_.items.size() << " visual_rects.size() " 126 << "items.size() " << inputs_.items.size() << " visual_rects.size() "
169 << inputs_.visual_rects.size(); 127 << inputs_.visual_rects.size();
170 rtree_.Build(inputs_.visual_rects); 128 rtree_.Build(inputs_.visual_rects);
171 129
172 // TODO(wkorman): Restore the below, potentially with a switch to allow 130 // TODO(wkorman): Restore the below, potentially with a switch to allow
173 // clearing visual rects except for Blimp engine. http://crbug.com/633750 131 // clearing visual rects except for Blimp engine. http://crbug.com/633750
174 // if (!retain_visual_rects_) 132 // if (!retain_visual_rects_)
175 // // This clears both the vector and the vector's capacity, since 133 // // This clears both the vector and the vector's capacity, since
176 // // visual_rects won't be used anymore. 134 // // visual_rects won't be used anymore.
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 } 265 }
308 266
309 void DisplayItemList::GetDiscardableImagesInRect( 267 void DisplayItemList::GetDiscardableImagesInRect(
310 const gfx::Rect& rect, 268 const gfx::Rect& rect,
311 float contents_scale, 269 float contents_scale,
312 std::vector<DrawImage>* images) { 270 std::vector<DrawImage>* images) {
313 image_map_.GetDiscardableImagesInRect(rect, contents_scale, images); 271 image_map_.GetDiscardableImagesInRect(rect, contents_scale, images);
314 } 272 }
315 273
316 } // namespace cc 274 } // namespace cc
OLDNEW
« no previous file with comments | « cc/playback/display_item_list.h ('k') | cc/playback/display_item_list_settings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698