| Index: third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
|
| diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
|
| index ebd50c5e7910d325ed1db68c9448b3eb8109c6c8..fa44d1d3783cdef82cbc45342ab5d641ebd57096 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
|
| +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
|
| @@ -16,6 +16,8 @@
|
| #include <stdio.h>
|
| #endif
|
|
|
| +static constexpr int maxNumberOfSlowPathsBeforeVeto = 5;
|
| +
|
| namespace blink {
|
|
|
| void PaintController::setTracksRasterInvalidations(bool value) {
|
| @@ -503,15 +505,15 @@ void PaintController::commitNewDisplayItems(
|
| !m_newDisplayItemList.isEmpty())
|
| generateChunkRasterInvalidationRects(m_newPaintChunks.lastChunk());
|
|
|
| - SkPictureGpuAnalyzer gpuAnalyzer;
|
| + int numSlowPaths = 0;
|
|
|
| m_currentCacheGeneration =
|
| DisplayItemClient::CacheGenerationOrInvalidationReason::next();
|
| Vector<const DisplayItemClient*> skippedCacheClients;
|
| for (const auto& item : m_newDisplayItemList) {
|
| // No reason to continue the analysis once we have a veto.
|
| - if (gpuAnalyzer.suitableForGpuRasterization())
|
| - item.analyzeForGpuRasterization(gpuAnalyzer);
|
| + if (numSlowPaths < maxNumberOfSlowPathsBeforeVeto)
|
| + numSlowPaths += item.numberOfSlowPaths();
|
|
|
| // TODO(wkorman): Only compute and append visual rect for drawings.
|
| m_newDisplayItemList.appendVisualRect(
|
| @@ -549,7 +551,7 @@ void PaintController::commitNewDisplayItems(
|
| m_newDisplayItemList.shrinkToFit();
|
| m_currentPaintArtifact = PaintArtifact(
|
| std::move(m_newDisplayItemList), m_newPaintChunks.releasePaintChunks(),
|
| - gpuAnalyzer.suitableForGpuRasterization());
|
| + numSlowPaths > maxNumberOfSlowPathsBeforeVeto);
|
| resetCurrentListIndices();
|
| m_outOfOrderItemIndices.clear();
|
| m_outOfOrderChunkIndices.clear();
|
|
|