| 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 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 TRACE_EVENT0("cc", "DisplayItemList::Finalize"); | 255 TRACE_EVENT0("cc", "DisplayItemList::Finalize"); |
| 256 DCHECK(items_.size() == visual_rects_.size()) | 256 DCHECK(items_.size() == visual_rects_.size()) |
| 257 << "items.size() " << items_.size() << " visual_rects.size() " | 257 << "items.size() " << items_.size() << " visual_rects.size() " |
| 258 << visual_rects_.size(); | 258 << visual_rects_.size(); |
| 259 rtree_.Build(visual_rects_); | 259 rtree_.Build(visual_rects_); |
| 260 | 260 |
| 261 if (!retain_visual_rects_) | 261 if (!retain_visual_rects_) |
| 262 // This clears both the vector and the vector's capacity, since | 262 // This clears both the vector and the vector's capacity, since |
| 263 // visual_rects won't be used anymore. | 263 // visual_rects won't be used anymore. |
| 264 std::vector<gfx::Rect>().swap(visual_rects_); | 264 std::vector<gfx::Rect>().swap(visual_rects_); |
| 265 |
| 266 GenerateDiscardableImagesMetadata(); |
| 265 } | 267 } |
| 266 | 268 |
| 267 bool DisplayItemList::IsSuitableForGpuRasterization() const { | 269 bool DisplayItemList::IsSuitableForGpuRasterization() const { |
| 268 // TODO(wkorman): This is more permissive than Picture's implementation, since | 270 // TODO(wkorman): This is more permissive than Picture's implementation, since |
| 269 // none of the items might individually trigger a veto even though they | 271 // none of the items might individually trigger a veto even though they |
| 270 // collectively have enough "bad" operations that a corresponding Picture | 272 // collectively have enough "bad" operations that a corresponding Picture |
| 271 // would get vetoed. See crbug.com/513016. | 273 // would get vetoed. See crbug.com/513016. |
| 272 return all_items_are_suitable_for_gpu_rasterization_; | 274 return all_items_are_suitable_for_gpu_rasterization_; |
| 273 } | 275 } |
| 274 | 276 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 519 PictureDebugUtil::SerializeAsBase64(picture.get(), &b64_picture); | 521 PictureDebugUtil::SerializeAsBase64(picture.get(), &b64_picture); |
| 520 state->SetString("skp64", b64_picture); | 522 state->SetString("skp64", b64_picture); |
| 521 } | 523 } |
| 522 | 524 |
| 523 return state; | 525 return state; |
| 524 } | 526 } |
| 525 | 527 |
| 526 void DisplayItemList::GenerateDiscardableImagesMetadata() { | 528 void DisplayItemList::GenerateDiscardableImagesMetadata() { |
| 527 // This should be only called once. | 529 // This should be only called once. |
| 528 DCHECK(image_map_.empty()); | 530 DCHECK(image_map_.empty()); |
| 531 if (!has_discardable_images_) |
| 532 return; |
| 529 | 533 |
| 530 gfx::Rect bounds = rtree_.GetBounds(); | 534 gfx::Rect bounds = rtree_.GetBounds(); |
| 531 DiscardableImageMap::ScopedMetadataGenerator generator( | 535 DiscardableImageMap::ScopedMetadataGenerator generator( |
| 532 &image_map_, gfx::Size(bounds.right(), bounds.bottom())); | 536 &image_map_, gfx::Size(bounds.right(), bounds.bottom())); |
| 533 auto* canvas = generator.canvas(); | 537 auto* canvas = generator.canvas(); |
| 534 for (const auto& item : items_) | 538 for (const auto& item : items_) |
| 535 RasterItem(item, canvas, nullptr); | 539 RasterItem(item, canvas, nullptr); |
| 536 } | 540 } |
| 537 | 541 |
| 538 void DisplayItemList::GetDiscardableImagesInRect( | 542 void DisplayItemList::GetDiscardableImagesInRect( |
| 539 const gfx::Rect& rect, | 543 const gfx::Rect& rect, |
| 540 float contents_scale, | 544 float contents_scale, |
| 541 const gfx::ColorSpace& target_color_space, | 545 const gfx::ColorSpace& target_color_space, |
| 542 std::vector<DrawImage>* images) { | 546 std::vector<DrawImage>* images) { |
| 543 image_map_.GetDiscardableImagesInRect(rect, contents_scale, | 547 image_map_.GetDiscardableImagesInRect(rect, contents_scale, |
| 544 target_color_space, images); | 548 target_color_space, images); |
| 545 } | 549 } |
| 546 | 550 |
| 547 gfx::Rect DisplayItemList::GetRectForImage(ImageId image_id) const { | 551 gfx::Rect DisplayItemList::GetRectForImage(ImageId image_id) const { |
| 548 return image_map_.GetRectForImage(image_id); | 552 return image_map_.GetRectForImage(image_id); |
| 549 } | 553 } |
| 550 | 554 |
| 551 } // namespace cc | 555 } // namespace cc |
| OLD | NEW |