|
|
Created:
4 years ago by Xianzhu Modified:
4 years ago CC:
ajuma+watch_chromium.org, blink-reviews, blink-reviews-paint_chromium.org, blink-reviews-platform-graphics_chromium.org, Rik, chromium-reviews, danakj+watch_chromium.org, dshwang, drott+blinkwatch_chromium.org, krit, f(malita), jbroman, Justin Novosad, pdr+graphicswatchlist_chromium.org, rwlbuis, Stephen Chennney Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionFix paint property under-invalidation checking about reference filters
Previously we checked equality of reference filters by comparing the
pointers to SkImageFilters. This cause false-positive when we forced
property update for under-invalidation checking.
Now ignore reference filters when comparing effect nodes, and check
for changes of filter operations defined in style to remedy the
ignored check.
An alternative way is to add value equality operators in SkImageFilter
subclasses, but that seems to need more code and time than this CL.
We might make that a long-term objective.
BUG=671097
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Committed: https://crrev.com/b3e11fe44bc15048029e2093a428234f0da084d3
Cr-Commit-Position: refs/heads/master@{#437470}
Patch Set 1 #Patch Set 2 : . #Patch Set 3 : - #Patch Set 4 : - #
Total comments: 2
Patch Set 5 : Fix paint property under-invalidation checking about reference filters #
Messages
Total messages: 33 (24 generated)
Description was changed from ========== Fix paint property under-invalidation checking about reference filters Previously we checked equality of reference filters by comparing the pointers to SkImageFilters. This cause false-positive when we forced property update for under-invalidation checking. Now ignore reference filters when comparing effect nodes, and check for changes of filter operations defined in style to remedy the ignored check. An alternative way is to add value equality operators in SkImageFilter subclasses, but that seems to need more code and time than this CL. We might make that a long-term objective. BUG=671097 ========== to ========== Fix paint property under-invalidation checking about reference filters Previously we checked equality of reference filters by comparing the pointers to SkImageFilters. This cause false-positive when we forced property update for under-invalidation checking. Now ignore reference filters when comparing effect nodes, and check for changes of filter operations defined in style to remedy the ignored check. An alternative way is to add value equality operators in SkImageFilter subclasses, but that seems to need more code and time than this CL. We might make that a long-term objective. BUG=671097 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
The CQ bit was checked by wangxianzhu@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: chromeos_amd64-generic_chromium_compile_only_ng on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromeos_amd64-...)
The CQ bit was checked by wangxianzhu@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was checked by wangxianzhu@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: win_chromium_rel_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_...)
The CQ bit was checked by wangxianzhu@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
wangxianzhu@chromium.org changed reviewers: + pdr@chromium.org, trchen@chromium.org
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
Nice find. https://codereview.chromium.org/2556013002/diff/60001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp (right): https://codereview.chromium.org/2556013002/diff/60001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp:434: properties.setStyleFilterOperations(styleFilterOperations); How much additional value will these checks give us? Looking at ReferenceFilterOperation::operator==, I think we just check the style (style="filter: url(#cat)" != style="filter: url('#dog')") but not the actual value, such as if the #dog element's children change. equalsIgnoringReferenceFilters already catches many cases such as when the total number of operations change. WDYT of just relying on equalsIgnoringReferenceFilters and not doing the extra checks of styleFilterOperations? This will mean we fail to catch some cases, but it lets us avoid adding a new pattern to FindObjectPropertiesNeedingUpdateScope and new members to ObjectPaintProperties.
https://codereview.chromium.org/2556013002/diff/60001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp (right): https://codereview.chromium.org/2556013002/diff/60001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp:434: properties.setStyleFilterOperations(styleFilterOperations); On 2016/12/08 02:00:41, pdr. wrote: > How much additional value will these checks give us? Looking at > ReferenceFilterOperation::operator==, I think we just check the style > (style="filter: url(#cat)" != style="filter: url('#dog')") but not the actual > value, such as if the #dog element's children change. > > equalsIgnoringReferenceFilters already catches many cases such as when the total > number of operations change. WDYT of just relying on > equalsIgnoringReferenceFilters and not doing the extra checks of > styleFilterOperations? This will mean we fail to catch some cases, but it lets > us avoid adding a new pattern to FindObjectPropertiesNeedingUpdateScope and new > members to ObjectPaintProperties. You are right. The little additional value is not worth the complexity. Done.
The CQ bit was checked by wangxianzhu@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
On 2016/12/08 at 17:34:35, wangxianzhu wrote: > https://codereview.chromium.org/2556013002/diff/60001/third_party/WebKit/Sour... > File third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp (right): > > https://codereview.chromium.org/2556013002/diff/60001/third_party/WebKit/Sour... > third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp:434: properties.setStyleFilterOperations(styleFilterOperations); > On 2016/12/08 02:00:41, pdr. wrote: > > How much additional value will these checks give us? Looking at > > ReferenceFilterOperation::operator==, I think we just check the style > > (style="filter: url(#cat)" != style="filter: url('#dog')") but not the actual > > value, such as if the #dog element's children change. > > > > equalsIgnoringReferenceFilters already catches many cases such as when the total > > number of operations change. WDYT of just relying on > > equalsIgnoringReferenceFilters and not doing the extra checks of > > styleFilterOperations? This will mean we fail to catch some cases, but it lets > > us avoid adding a new pattern to FindObjectPropertiesNeedingUpdateScope and new > > members to ObjectPaintProperties. > > You are right. The little additional value is not worth the complexity. > Done. LGTM!
The CQ bit was unchecked by wangxianzhu@chromium.org
The CQ bit was checked by wangxianzhu@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_chromium_rel_ng on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
The CQ bit was checked by wangxianzhu@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 80001, "attempt_start_ts": 1481246593259190, "parent_rev": "3bec912b543461f16453a54d2a517dc10d94d800", "commit_rev": "f9f50b89568948bcef4ae91482f5205f769e9975"}
Message was sent while issue was closed.
Committed patchset #5 (id:80001)
Message was sent while issue was closed.
Description was changed from ========== Fix paint property under-invalidation checking about reference filters Previously we checked equality of reference filters by comparing the pointers to SkImageFilters. This cause false-positive when we forced property update for under-invalidation checking. Now ignore reference filters when comparing effect nodes, and check for changes of filter operations defined in style to remedy the ignored check. An alternative way is to add value equality operators in SkImageFilter subclasses, but that seems to need more code and time than this CL. We might make that a long-term objective. BUG=671097 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Fix paint property under-invalidation checking about reference filters Previously we checked equality of reference filters by comparing the pointers to SkImageFilters. This cause false-positive when we forced property update for under-invalidation checking. Now ignore reference filters when comparing effect nodes, and check for changes of filter operations defined in style to remedy the ignored check. An alternative way is to add value equality operators in SkImageFilter subclasses, but that seems to need more code and time than this CL. We might make that a long-term objective. BUG=671097 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Committed: https://crrev.com/b3e11fe44bc15048029e2093a428234f0da084d3 Cr-Commit-Position: refs/heads/master@{#437470} ==========
Message was sent while issue was closed.
Patchset 5 (id:??) landed as https://crrev.com/b3e11fe44bc15048029e2093a428234f0da084d3 Cr-Commit-Position: refs/heads/master@{#437470} |