| 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 a703076d843449e1c822eebbbb27d2e0d3e3ffc9..0f9980266fa5593bd7375c8ef62c4066d50125e8 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 kMaxNumberOfSlowPathsBeforeVeto = 5;
|
| +
|
| namespace blink {
|
|
|
| void PaintController::SetTracksRasterInvalidations(bool value) {
|
| @@ -536,7 +538,7 @@ void PaintController::CommitNewDisplayItems(
|
| !new_display_item_list_.IsEmpty())
|
| GenerateChunkRasterInvalidationRects(new_paint_chunks_.LastChunk());
|
|
|
| - SkPictureGpuAnalyzer gpu_analyzer;
|
| + int num_slow_paths = 0;
|
|
|
| current_cache_generation_ =
|
| DisplayItemClient::CacheGenerationOrInvalidationReason::Next();
|
| @@ -555,8 +557,8 @@ void PaintController::CommitNewDisplayItems(
|
| Vector<const DisplayItemClient*> skipped_cache_clients;
|
| for (const auto& item : new_display_item_list_) {
|
| // No reason to continue the analysis once we have a veto.
|
| - if (gpu_analyzer.suitableForGpuRasterization())
|
| - item.AnalyzeForGpuRasterization(gpu_analyzer);
|
| + if (num_slow_paths <= kMaxNumberOfSlowPathsBeforeVeto)
|
| + num_slow_paths += item.NumberOfSlowPaths();
|
|
|
| // TODO(wkorman): Only compute and append visual rect for drawings.
|
| new_display_item_list_.AppendVisualRect(
|
| @@ -594,7 +596,7 @@ void PaintController::CommitNewDisplayItems(
|
| new_display_item_list_.ShrinkToFit();
|
| current_paint_artifact_ = PaintArtifact(
|
| std::move(new_display_item_list_), new_paint_chunks_.ReleasePaintChunks(),
|
| - gpu_analyzer.suitableForGpuRasterization());
|
| + num_slow_paths <= kMaxNumberOfSlowPathsBeforeVeto);
|
| ResetCurrentListIndices();
|
| out_of_order_item_indices_.clear();
|
| out_of_order_chunk_indices_.clear();
|
|
|