| 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 "platform/graphics/paint/PaintController.h" | 5 #include "platform/graphics/paint/PaintController.h" |
| 6 | 6 |
| 7 #include "platform/graphics/GraphicsLayer.h" | 7 #include "platform/graphics/GraphicsLayer.h" |
| 8 #include "platform/graphics/paint/DrawingDisplayItem.h" | 8 #include "platform/graphics/paint/DrawingDisplayItem.h" |
| 9 #include "platform/instrumentation/tracing/TraceEvent.h" | 9 #include "platform/instrumentation/tracing/TraceEvent.h" |
| 10 #include "third_party/skia/include/core/SkPictureAnalyzer.h" | 10 #include "third_party/skia/include/core/SkPictureAnalyzer.h" |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 size_t PaintController::approximateUnsharedMemoryUsage() const { | 580 size_t PaintController::approximateUnsharedMemoryUsage() const { |
| 581 size_t memoryUsage = sizeof(*this); | 581 size_t memoryUsage = sizeof(*this); |
| 582 | 582 |
| 583 // Memory outside this class due to m_currentPaintArtifact. | 583 // Memory outside this class due to m_currentPaintArtifact. |
| 584 memoryUsage += m_currentPaintArtifact.approximateUnsharedMemoryUsage() - | 584 memoryUsage += m_currentPaintArtifact.approximateUnsharedMemoryUsage() - |
| 585 sizeof(m_currentPaintArtifact); | 585 sizeof(m_currentPaintArtifact); |
| 586 | 586 |
| 587 // TODO(jbroman): If display items begin to have significant external memory | 587 // TODO(jbroman): If display items begin to have significant external memory |
| 588 // usage that's not shared with the embedder, we should account for it here. | 588 // usage that's not shared with the embedder, we should account for it here. |
| 589 // | 589 // |
| 590 // External objects, shared with the embedder, such as SkPicture, should be | 590 // External objects, shared with the embedder, such as PaintRecord, should be |
| 591 // excluded to avoid double counting. It is the embedder's responsibility to | 591 // excluded to avoid double counting. It is the embedder's responsibility to |
| 592 // count such objects. | 592 // count such objects. |
| 593 // | 593 // |
| 594 // At time of writing, the only known case of unshared external memory was | 594 // At time of writing, the only known case of unshared external memory was |
| 595 // the rounded clips vector in ClipDisplayItem, which is not expected to | 595 // the rounded clips vector in ClipDisplayItem, which is not expected to |
| 596 // contribute significantly to memory usage. | 596 // contribute significantly to memory usage. |
| 597 | 597 |
| 598 // Memory outside this class due to m_newDisplayItemList. | 598 // Memory outside this class due to m_newDisplayItemList. |
| 599 DCHECK(m_newDisplayItemList.isEmpty()); | 599 DCHECK(m_newDisplayItemList.isEmpty()); |
| 600 memoryUsage += m_newDisplayItemList.memoryUsageInBytes(); | 600 memoryUsage += m_newDisplayItemList.memoryUsageInBytes(); |
| 601 | 601 |
| 602 return memoryUsage; | 602 return memoryUsage; |
| 603 } | 603 } |
| 604 | 604 |
| 605 void PaintController::appendDebugDrawingAfterCommit( | 605 void PaintController::appendDebugDrawingAfterCommit( |
| 606 const DisplayItemClient& displayItemClient, | 606 const DisplayItemClient& displayItemClient, |
| 607 sk_sp<SkPicture> picture, | 607 sk_sp<PaintRecord> picture, |
| 608 const LayoutSize& offsetFromLayoutObject) { | 608 const LayoutSize& offsetFromLayoutObject) { |
| 609 DCHECK(m_newDisplayItemList.isEmpty()); | 609 DCHECK(m_newDisplayItemList.isEmpty()); |
| 610 DrawingDisplayItem& displayItem = | 610 DrawingDisplayItem& displayItem = |
| 611 m_currentPaintArtifact.getDisplayItemList() | 611 m_currentPaintArtifact.getDisplayItemList() |
| 612 .allocateAndConstruct<DrawingDisplayItem>(displayItemClient, | 612 .allocateAndConstruct<DrawingDisplayItem>(displayItemClient, |
| 613 DisplayItem::kDebugDrawing, | 613 DisplayItem::kDebugDrawing, |
| 614 std::move(picture)); | 614 std::move(picture)); |
| 615 displayItem.setSkippedCache(); | 615 displayItem.setSkippedCache(); |
| 616 // TODO(wkorman): Only compute and append visual rect for drawings. | 616 // TODO(wkorman): Only compute and append visual rect for drawings. |
| 617 m_currentPaintArtifact.getDisplayItemList().appendVisualRect( | 617 m_currentPaintArtifact.getDisplayItemList().appendVisualRect( |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 760 #ifndef NDEBUG | 760 #ifndef NDEBUG |
| 761 LOG(ERROR) << "New display item: " << newItem.asDebugString(); | 761 LOG(ERROR) << "New display item: " << newItem.asDebugString(); |
| 762 LOG(ERROR) << "Old display item: " | 762 LOG(ERROR) << "Old display item: " |
| 763 << (oldItem ? oldItem->asDebugString() : "None"); | 763 << (oldItem ? oldItem->asDebugString() : "None"); |
| 764 #else | 764 #else |
| 765 LOG(ERROR) << "Run debug build to get more details."; | 765 LOG(ERROR) << "Run debug build to get more details."; |
| 766 #endif | 766 #endif |
| 767 LOG(ERROR) << "See http://crbug.com/619103."; | 767 LOG(ERROR) << "See http://crbug.com/619103."; |
| 768 | 768 |
| 769 #ifndef NDEBUG | 769 #ifndef NDEBUG |
| 770 const SkPicture* newPicture = | 770 const PaintRecord* newPicture = |
| 771 newItem.isDrawing() | 771 newItem.isDrawing() |
| 772 ? static_cast<const DrawingDisplayItem&>(newItem).picture() | 772 ? static_cast<const DrawingDisplayItem&>(newItem).picture() |
| 773 : nullptr; | 773 : nullptr; |
| 774 const SkPicture* oldPicture = | 774 const PaintRecord* oldPicture = |
| 775 oldItem && oldItem->isDrawing() | 775 oldItem && oldItem->isDrawing() |
| 776 ? static_cast<const DrawingDisplayItem*>(oldItem)->picture() | 776 ? static_cast<const DrawingDisplayItem*>(oldItem)->picture() |
| 777 : nullptr; | 777 : nullptr; |
| 778 LOG(INFO) << "new picture:\n" | 778 LOG(INFO) << "new picture:\n" |
| 779 << (newPicture ? pictureAsDebugString(newPicture) : "None"); | 779 << (newPicture ? pictureAsDebugString(newPicture) : "None"); |
| 780 LOG(INFO) << "old picture:\n" | 780 LOG(INFO) << "old picture:\n" |
| 781 << (oldPicture ? pictureAsDebugString(oldPicture) : "None"); | 781 << (oldPicture ? pictureAsDebugString(oldPicture) : "None"); |
| 782 | 782 |
| 783 showDebugData(); | 783 showDebugData(); |
| 784 #endif // NDEBUG | 784 #endif // NDEBUG |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 861 0, m_newDisplayItemList.size(), | 861 0, m_newDisplayItemList.size(), |
| 862 showPictures ? (DisplayItemList::JsonOptions::ShowPictures | | 862 showPictures ? (DisplayItemList::JsonOptions::ShowPictures | |
| 863 DisplayItemList::JsonOptions::ShowClientDebugName) | 863 DisplayItemList::JsonOptions::ShowClientDebugName) |
| 864 : DisplayItemList::JsonOptions::ShowClientDebugName) | 864 : DisplayItemList::JsonOptions::ShowClientDebugName) |
| 865 ->toPrettyJSONString() | 865 ->toPrettyJSONString() |
| 866 .utf8() | 866 .utf8() |
| 867 .data()); | 867 .data()); |
| 868 } | 868 } |
| 869 | 869 |
| 870 } // namespace blink | 870 } // namespace blink |
| OLD | NEW |