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/TraceEvent.h" | 7 #include "platform/TraceEvent.h" |
8 #include "platform/graphics/GraphicsLayer.h" | 8 #include "platform/graphics/GraphicsLayer.h" |
9 #include "platform/graphics/paint/DrawingDisplayItem.h" | 9 #include "platform/graphics/paint/DrawingDisplayItem.h" |
10 #include "third_party/skia/include/core/SkPictureAnalyzer.h" | 10 #include "third_party/skia/include/core/SkPictureAnalyzer.h" |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 | 432 |
433 SkPictureGpuAnalyzer gpuAnalyzer; | 433 SkPictureGpuAnalyzer gpuAnalyzer; |
434 | 434 |
435 m_currentCacheGeneration = DisplayItemClient::CacheGenerationOrInvalidationR
eason::next(); | 435 m_currentCacheGeneration = DisplayItemClient::CacheGenerationOrInvalidationR
eason::next(); |
436 Vector<const DisplayItemClient*> skippedCacheClients; | 436 Vector<const DisplayItemClient*> skippedCacheClients; |
437 for (const auto& item : m_newDisplayItemList) { | 437 for (const auto& item : m_newDisplayItemList) { |
438 // No reason to continue the analysis once we have a veto. | 438 // No reason to continue the analysis once we have a veto. |
439 if (gpuAnalyzer.suitableForGpuRasterization()) | 439 if (gpuAnalyzer.suitableForGpuRasterization()) |
440 item.analyzeForGpuRasterization(gpuAnalyzer); | 440 item.analyzeForGpuRasterization(gpuAnalyzer); |
441 | 441 |
| 442 // TODO(wkorman): Only compute and append visual rect for drawings. |
442 m_newDisplayItemList.appendVisualRect(visualRectForDisplayItem(item, off
setFromLayoutObject)); | 443 m_newDisplayItemList.appendVisualRect(visualRectForDisplayItem(item, off
setFromLayoutObject)); |
443 | 444 |
444 if (item.isCacheable()) { | 445 if (item.isCacheable()) { |
445 item.client().setDisplayItemsCached(m_currentCacheGeneration); | 446 item.client().setDisplayItemsCached(m_currentCacheGeneration); |
446 } else { | 447 } else { |
447 if (item.client().isJustCreated()) | 448 if (item.client().isJustCreated()) |
448 item.client().clearIsJustCreated(); | 449 item.client().clearIsJustCreated(); |
449 if (item.skippedCache()) | 450 if (item.skippedCache()) |
450 skippedCacheClients.append(&item.client()); | 451 skippedCacheClients.append(&item.client()); |
451 } | 452 } |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 memoryUsage += m_newDisplayItemList.memoryUsageInBytes(); | 506 memoryUsage += m_newDisplayItemList.memoryUsageInBytes(); |
506 | 507 |
507 return memoryUsage; | 508 return memoryUsage; |
508 } | 509 } |
509 | 510 |
510 void PaintController::appendDebugDrawingAfterCommit(const DisplayItemClient& dis
playItemClient, PassRefPtr<SkPicture> picture, const LayoutSize& offsetFromLayou
tObject) | 511 void PaintController::appendDebugDrawingAfterCommit(const DisplayItemClient& dis
playItemClient, PassRefPtr<SkPicture> picture, const LayoutSize& offsetFromLayou
tObject) |
511 { | 512 { |
512 DCHECK(m_newDisplayItemList.isEmpty()); | 513 DCHECK(m_newDisplayItemList.isEmpty()); |
513 DrawingDisplayItem& displayItem = m_currentPaintArtifact.getDisplayItemList(
).allocateAndConstruct<DrawingDisplayItem>(displayItemClient, DisplayItem::Debug
Drawing, picture); | 514 DrawingDisplayItem& displayItem = m_currentPaintArtifact.getDisplayItemList(
).allocateAndConstruct<DrawingDisplayItem>(displayItemClient, DisplayItem::Debug
Drawing, picture); |
514 displayItem.setSkippedCache(); | 515 displayItem.setSkippedCache(); |
| 516 // TODO(wkorman): Only compute and append visual rect for drawings. |
515 m_currentPaintArtifact.getDisplayItemList().appendVisualRect(visualRectForDi
splayItem(displayItem, offsetFromLayoutObject)); | 517 m_currentPaintArtifact.getDisplayItemList().appendVisualRect(visualRectForDi
splayItem(displayItem, offsetFromLayoutObject)); |
516 } | 518 } |
517 | 519 |
518 #if DCHECK_IS_ON() | 520 #if DCHECK_IS_ON() |
519 | 521 |
520 void PaintController::showUnderInvalidationError(const char* reason, const Displ
ayItem& newItem, const DisplayItem* oldItem) const | 522 void PaintController::showUnderInvalidationError(const char* reason, const Displ
ayItem& newItem, const DisplayItem* oldItem) const |
521 { | 523 { |
522 LOG(ERROR) << m_underInvalidationMessagePrefix << " " << reason; | 524 LOG(ERROR) << m_underInvalidationMessagePrefix << " " << reason; |
523 #ifndef NDEBUG | 525 #ifndef NDEBUG |
524 LOG(ERROR) << "New display item: " << newItem.asDebugString(); | 526 LOG(ERROR) << "New display item: " << newItem.asDebugString(); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
609 return stringBuilder.toString(); | 611 return stringBuilder.toString(); |
610 } | 612 } |
611 | 613 |
612 void PaintController::showDebugData() const | 614 void PaintController::showDebugData() const |
613 { | 615 { |
614 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri
ng(m_currentPaintArtifact.getDisplayItemList()).utf8().data()); | 616 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri
ng(m_currentPaintArtifact.getDisplayItemList()).utf8().data()); |
615 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m
_newDisplayItemList).utf8().data()); | 617 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m
_newDisplayItemList).utf8().data()); |
616 } | 618 } |
617 | 619 |
618 } // namespace blink | 620 } // namespace blink |
OLD | NEW |