OLD | NEW |
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/paint/display_item_list.h" | 5 #include "cc/paint/display_item_list.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 const DrawingDisplayItem& draw_item, | 172 const DrawingDisplayItem& draw_item, |
173 SkCanvas* canvas) { | 173 SkCanvas* canvas) { |
174 if (save_item.color_filter) | 174 if (save_item.color_filter) |
175 return false; | 175 return false; |
176 if (save_item.xfermode != SkBlendMode::kSrcOver) | 176 if (save_item.xfermode != SkBlendMode::kSrcOver) |
177 return false; | 177 return false; |
178 // TODO(enne): I believe that lcd_text_requires_opaque_layer is not | 178 // TODO(enne): I believe that lcd_text_requires_opaque_layer is not |
179 // relevant here and that lcd text is preserved post merge, but I haven't | 179 // relevant here and that lcd text is preserved post merge, but I haven't |
180 // tested that. | 180 // tested that. |
181 const PaintRecord* record = draw_item.picture.get(); | 181 const PaintRecord* record = draw_item.picture.get(); |
182 if (record->approximateOpCount() != 1) | 182 if (record->size() != 1u) |
183 return false; | 183 return false; |
184 | 184 |
185 const PaintOp* op = record->GetFirstOp(); | 185 const PaintOp* op = record->GetFirstOp(); |
186 if (!op->IsDrawOp()) | 186 if (!op->IsDrawOp()) |
187 return false; | 187 return false; |
188 | 188 |
189 op->RasterWithAlpha(canvas, save_item.alpha); | 189 op->RasterWithAlpha(canvas, save_item.alpha); |
190 return true; | 190 return true; |
191 } | 191 } |
192 | 192 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 } | 248 } |
249 | 249 |
250 bool DisplayItemList::IsSuitableForGpuRasterization() const { | 250 bool DisplayItemList::IsSuitableForGpuRasterization() const { |
251 // TODO(wkorman): This is more permissive than Picture's implementation, since | 251 // TODO(wkorman): This is more permissive than Picture's implementation, since |
252 // none of the items might individually trigger a veto even though they | 252 // none of the items might individually trigger a veto even though they |
253 // collectively have enough "bad" operations that a corresponding Picture | 253 // collectively have enough "bad" operations that a corresponding Picture |
254 // would get vetoed. See crbug.com/513016. | 254 // would get vetoed. See crbug.com/513016. |
255 return all_items_are_suitable_for_gpu_rasterization_; | 255 return all_items_are_suitable_for_gpu_rasterization_; |
256 } | 256 } |
257 | 257 |
258 int DisplayItemList::ApproximateOpCount() const { | 258 size_t DisplayItemList::OpCount() const { |
259 return approximate_op_count_; | 259 return op_count_; |
260 } | 260 } |
261 | 261 |
262 size_t DisplayItemList::ApproximateMemoryUsage() const { | 262 size_t DisplayItemList::ApproximateMemoryUsage() const { |
263 size_t memory_usage = sizeof(*this); | 263 size_t memory_usage = sizeof(*this); |
264 | 264 |
265 size_t external_memory_usage = 0; | 265 size_t external_memory_usage = 0; |
266 for (const auto& item : items_) { | 266 for (const auto& item : items_) { |
267 size_t bytes = 0; | 267 size_t bytes = 0; |
268 switch (item.type) { | 268 switch (item.type) { |
269 case DisplayItem::CLIP: | 269 case DisplayItem::CLIP: |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 memory_usage += items_.GetCapacityInBytes() + external_memory_usage; | 308 memory_usage += items_.GetCapacityInBytes() + external_memory_usage; |
309 | 309 |
310 // TODO(jbroman): Does anything else owned by this class substantially | 310 // TODO(jbroman): Does anything else owned by this class substantially |
311 // contribute to memory usage? | 311 // contribute to memory usage? |
312 // TODO(vmpstr): Probably DiscardableImageMap is worth counting here. | 312 // TODO(vmpstr): Probably DiscardableImageMap is worth counting here. |
313 | 313 |
314 return memory_usage; | 314 return memory_usage; |
315 } | 315 } |
316 | 316 |
317 bool DisplayItemList::ShouldBeAnalyzedForSolidColor() const { | 317 bool DisplayItemList::ShouldBeAnalyzedForSolidColor() const { |
318 return ApproximateOpCount() <= kOpCountThatIsOkToAnalyze; | 318 return OpCount() <= kOpCountThatIsOkToAnalyze; |
319 } | 319 } |
320 | 320 |
321 void DisplayItemList::EmitTraceSnapshot() const { | 321 void DisplayItemList::EmitTraceSnapshot() const { |
322 bool include_items; | 322 bool include_items; |
323 TRACE_EVENT_CATEGORY_GROUP_ENABLED( | 323 TRACE_EVENT_CATEGORY_GROUP_ENABLED( |
324 TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items"), &include_items); | 324 TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items"), &include_items); |
325 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( | 325 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID( |
326 TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items") "," | 326 TRACE_DISABLED_BY_DEFAULT("cc.debug.display_items") "," |
327 TRACE_DISABLED_BY_DEFAULT("cc.debug.picture") "," | 327 TRACE_DISABLED_BY_DEFAULT("cc.debug.picture") "," |
328 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.picture"), | 328 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.picture"), |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 std::vector<DrawImage>* images) { | 540 std::vector<DrawImage>* images) { |
541 image_map_.GetDiscardableImagesInRect(rect, contents_scale, | 541 image_map_.GetDiscardableImagesInRect(rect, contents_scale, |
542 target_color_space, images); | 542 target_color_space, images); |
543 } | 543 } |
544 | 544 |
545 gfx::Rect DisplayItemList::GetRectForImage(ImageId image_id) const { | 545 gfx::Rect DisplayItemList::GetRectForImage(ImageId image_id) const { |
546 return image_map_.GetRectForImage(image_id); | 546 return image_map_.GetRectForImage(image_id); |
547 } | 547 } |
548 | 548 |
549 } // namespace cc | 549 } // namespace cc |
OLD | NEW |