Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(393)

Side by Side Diff: third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp

Issue 2820233002: Always report maybe-clipped when painting fragmented content (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "platform/wtf/AutoReset.h" 10 #include "platform/wtf/AutoReset.h"
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 AutoReset<size_t> subsequence_begin_index( 447 AutoReset<size_t> subsequence_begin_index(
448 &current_cached_subsequence_begin_index_in_new_list_, 448 &current_cached_subsequence_begin_index_in_new_list_,
449 new_display_item_list_.size()); 449 new_display_item_list_.size());
450 DisplayItem* cached_item = 450 DisplayItem* cached_item =
451 &current_paint_artifact_.GetDisplayItemList()[begin_index]; 451 &current_paint_artifact_.GetDisplayItemList()[begin_index];
452 452
453 if (RuntimeEnabledFeatures::paintUnderInvalidationCheckingEnabled()) { 453 if (RuntimeEnabledFeatures::paintUnderInvalidationCheckingEnabled()) {
454 DCHECK(!IsCheckingUnderInvalidation()); 454 DCHECK(!IsCheckingUnderInvalidation());
455 under_invalidation_checking_begin_ = begin_index; 455 under_invalidation_checking_begin_ = begin_index;
456 under_invalidation_message_prefix_ = 456 under_invalidation_message_prefix_ =
457 "(In cached subsequence of " + cached_item->Client().DebugName() + ")"; 457 "(In cached subsequence starting with " +
458 cached_item->Client().DebugName() + ")";
458 } 459 }
459 460
460 Vector<PaintChunk>::const_iterator cached_chunk; 461 Vector<PaintChunk>::const_iterator cached_chunk;
461 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 462 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
462 cached_chunk = 463 cached_chunk =
463 current_paint_artifact_.FindChunkByDisplayItemIndex(begin_index); 464 current_paint_artifact_.FindChunkByDisplayItemIndex(begin_index);
464 DCHECK(cached_chunk != current_paint_artifact_.PaintChunks().end()); 465 DCHECK(cached_chunk != current_paint_artifact_.PaintChunks().end());
465 UpdateCurrentPaintChunkProperties( 466 UpdateCurrentPaintChunkProperties(
466 cached_chunk->id ? &*cached_chunk->id : nullptr, 467 cached_chunk->id ? &*cached_chunk->id : nullptr,
467 cached_chunk->properties); 468 cached_chunk->properties);
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 : nullptr; 870 : nullptr;
870 871
871 bool old_and_new_equal = old_item && new_item.Equals(*old_item); 872 bool old_and_new_equal = old_item && new_item.Equals(*old_item);
872 if (!old_and_new_equal) { 873 if (!old_and_new_equal) {
873 if (new_item.IsBegin()) { 874 if (new_item.IsBegin()) {
874 // Temporarily skip mismatching begin display item which may be removed 875 // Temporarily skip mismatching begin display item which may be removed
875 // when we remove a no-op pair. 876 // when we remove a no-op pair.
876 ++skipped_probable_under_invalidation_count_; 877 ++skipped_probable_under_invalidation_count_;
877 return; 878 return;
878 } 879 }
879 if (new_item.IsDrawing() &&
880 skipped_probable_under_invalidation_count_ == 1) {
881 DCHECK_GE(new_display_item_list_.size(), 2u);
882 if (new_display_item_list_[new_display_item_list_.size() - 2].GetType() ==
883 DisplayItem::kBeginCompositing) {
884 // This might be a drawing item between a pair of begin/end compositing
885 // display items that will be folded into a single drawing display item.
886 ++skipped_probable_under_invalidation_count_;
Xianzhu 2017/04/18 00:15:21 Doesn't the logic apply now?
chrishtr 2017/04/18 21:13:13 It doesn't, because the folding optimization in Co
887 return;
888 }
889 }
890 } 880 }
891 881
892 if (skipped_probable_under_invalidation_count_ || !old_and_new_equal) { 882 if (skipped_probable_under_invalidation_count_ || !old_and_new_equal) {
893 // If we ever skipped reporting any under-invalidations, report the earliest 883 // If we ever skipped reporting any under-invalidations, report the earliest
894 // one. 884 // one.
895 ShowUnderInvalidationError( 885 ShowUnderInvalidationError(
896 "under-invalidation: display item changed", 886 "under-invalidation: display item changed",
897 new_display_item_list_[new_display_item_list_.size() - 887 new_display_item_list_[new_display_item_list_.size() -
898 skipped_probable_under_invalidation_count_ - 1], 888 skipped_probable_under_invalidation_count_ - 1],
899 &current_paint_artifact_ 889 &current_paint_artifact_
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 show_paint_records 924 show_paint_records
935 ? (DisplayItemList::JsonOptions::kShowPaintRecords | 925 ? (DisplayItemList::JsonOptions::kShowPaintRecords |
936 DisplayItemList::JsonOptions::kShowClientDebugName) 926 DisplayItemList::JsonOptions::kShowClientDebugName)
937 : DisplayItemList::JsonOptions::kShowClientDebugName) 927 : DisplayItemList::JsonOptions::kShowClientDebugName)
938 ->ToPrettyJSONString() 928 ->ToPrettyJSONString()
939 .Utf8() 929 .Utf8()
940 .Data()); 930 .Data());
941 } 931 }
942 932
943 } // namespace blink 933 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698