|
|
Created:
4 years, 4 months ago by Xianzhu Modified:
4 years, 4 months ago CC:
blink-reviews, blink-reviews-paint_chromium.org, chromium-reviews, dshwang, slimming-paint-reviews_chromium.org Base URL:
https://chromium.googlesource.com/chromium/src.git@GeometryMapperMore Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionUse GeometryMapper in PaintInvalidator
BUG=510908
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Committed: https://crrev.com/20b2f4f14209404d0b124c56ccd26ea5bbfc6c3b
Cr-Commit-Position: refs/heads/master@{#412877}
Patch Set 1 #Patch Set 2 : GeometryMapper #Patch Set 3 : - #
Total comments: 11
Patch Set 4 : - #
Total comments: 2
Patch Set 5 : . #Patch Set 6 : Rebase #Patch Set 7 : - #Patch Set 8 : Rebase #Patch Set 9 : Rebase #Depends on Patchset: Messages
Total messages: 51 (33 generated)
Description was changed from ========== Update FlagExpectations/enable-slimming-paint-v2 Add 4 tests that constantly fail on try bots. x GeometryMapper BUG= ========== to ========== Update FlagExpectations/enable-slimming-paint-v2 Add 4 tests that constantly fail on try bots. x GeometryMapper BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
Description was changed from ========== Update FlagExpectations/enable-slimming-paint-v2 Add 4 tests that constantly fail on try bots. x GeometryMapper BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Use GeometryMapper in PaintInvalidator BUG=510908 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: linux_layout_tests_slimming_paint_v2 on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_layout_te...)
wangxianzhu@chromium.org changed reviewers: + chrishtr@chromium.org, pdr@chromium.org
Ptal. The layout test failures on spv2 try bot are not trivial to fix in this CL. Will file bugs and update spv2 test expectations: - Filter and reflection extends are applied in mapToVisualRectInAncestorSpace() in old path. We need to find a new way to apply them in new path. - We need a property tree way to represent SVGRoot viewport clip.
Looks good overall. Those SVG failures are a known issue, sorry you had to find them :/ Can you update FlagExpectations/slimming-paint-v2-enabled? https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/SVGRootPainter.cpp (right): https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/SVGRootPainter.cpp:32: if (!size.isEmpty()) { If the size is empty, should we be painting anything? Could we change the early-out at the beginning from: if (pixelSnappedSize(paintOffset).isEmpty()) to: if (m_layoutSVGRoot.size()) ?
Sweet! https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintInvalidator.cpp (right): https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:18: #include "core/paint/PaintPropertyTreePrinter.h" Remove https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:42: result = LayoutRect(GeometryMapper().mapToVisualRectInDestinationSpace(rect, currentTreeState, containerTreeState, success)); This does use GeometryMapper, but it's not efficient. Note that in a comment this is just an intermediate step? https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:53: rect = blink::mapLocalRectToPaintInvalidationBacking(object, FloatRect(rect), *this); What's the point of not inlining blink::mapLocalRectToPaintInvalidationBacking here?
https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/SVGRootPainter.cpp (right): https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/SVGRootPainter.cpp:32: if (!size.isEmpty()) { On 2016/08/12 17:59:58, pdr. wrote: > If the size is empty, should we be painting anything? Could we change the > early-out at the beginning from: > if (pixelSnappedSize(paintOffset).isEmpty()) > to: > if (m_layoutSVGRoot.size()) > > ? I wonder if the early return in SVGRootPaint::paint() is correct. What if the svg root doesn't clip children even if its size is empty? The added check is for the callsite in PaintPropertyTreeBuilder::updateSvgLocalToBorderBoxTransform() which doesn't have the early return like paint().
On 2016/08/12 at 18:22:39, wangxianzhu wrote: > https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... > File third_party/WebKit/Source/core/paint/SVGRootPainter.cpp (right): > > https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... > third_party/WebKit/Source/core/paint/SVGRootPainter.cpp:32: if (!size.isEmpty()) { > On 2016/08/12 17:59:58, pdr. wrote: > > If the size is empty, should we be painting anything? Could we change the > > early-out at the beginning from: > > if (pixelSnappedSize(paintOffset).isEmpty()) > > to: > > if (m_layoutSVGRoot.size()) > > > > ? > > I wonder if the early return in SVGRootPaint::paint() is correct. What if the svg root doesn't clip children even if its size is empty? > > The added check is for the callsite in PaintPropertyTreeBuilder::updateSvgLocalToBorderBoxTransform() which doesn't have the early return like paint(). OK, LGTM % chrishtr's comments
https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintInvalidator.cpp (right): https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:18: #include "core/paint/PaintPropertyTreePrinter.h" On 2016/08/12 18:20:53, chrishtr wrote: > Remove Done. (BTW do you know how to make the functions declared in PaintPropertyTreePrinter.h available to gdb? I tried them (with and without blink:: prefix) but gdb can't find the functions. Wondering why the compiler/gdb treat them differently than showLayoutTree() etc.) https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:42: result = LayoutRect(GeometryMapper().mapToVisualRectInDestinationSpace(rect, currentTreeState, containerTreeState, success)); On 2016/08/12 18:20:53, chrishtr wrote: > This does use GeometryMapper, but it's not efficient. Note that in a comment > this is just an intermediate step? Oh I didn't think this is an intermediate step. What's the efficient way? https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:53: rect = blink::mapLocalRectToPaintInvalidationBacking(object, FloatRect(rect), *this); On 2016/08/12 18:20:53, chrishtr wrote: > What's the point of not inlining blink::mapLocalRectToPaintInvalidationBacking > here? Two reasons: 1. This method is for non-SVG path of code shared between old and new code which provide a LayoutRect instead of a FloatRect. If changed the type to FloatRect, we would have to change the legacy code to also convert LayoutRect to FloatRect. 2. This method is temporary and will be removed when we remove PaintInvalidationState.
https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintInvalidator.cpp (right): https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:42: result = LayoutRect(GeometryMapper().mapToVisualRectInDestinationSpace(rect, currentTreeState, containerTreeState, success)); On 2016/08/12 at 18:37:51, Xianzhu wrote: > On 2016/08/12 18:20:53, chrishtr wrote: > > This does use GeometryMapper, but it's not efficient. Note that in a comment > > this is just an intermediate step? > > Oh I didn't think this is an intermediate step. What's the efficient way? All of the caching in GeometryMapper is stored as instance variables. So you should allocate one GeometryMapper object and use it throughout the paint invalidation tree walk. https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:53: rect = blink::mapLocalRectToPaintInvalidationBacking(object, FloatRect(rect), *this); On 2016/08/12 at 18:37:51, Xianzhu wrote: > On 2016/08/12 18:20:53, chrishtr wrote: > > What's the point of not inlining blink::mapLocalRectToPaintInvalidationBacking > > here? > > Two reasons: > > 1. This method is for non-SVG path of code shared between old and new code which provide a LayoutRect instead of a FloatRect. If changed the type to FloatRect, we would have to change the legacy code to also convert LayoutRect to FloatRect. > > 2. This method is temporary and will be removed when we remove PaintInvalidationState. ok
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...
https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintInvalidator.cpp (right): https://codereview.chromium.org/2238853005/diff/40001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:42: result = LayoutRect(GeometryMapper().mapToVisualRectInDestinationSpace(rect, currentTreeState, containerTreeState, success)); On 2016/08/12 18:40:28, chrishtr wrote: > On 2016/08/12 at 18:37:51, Xianzhu wrote: > > On 2016/08/12 18:20:53, chrishtr wrote: > > > This does use GeometryMapper, but it's not efficient. Note that in a comment > > > this is just an intermediate step? > > > > Oh I didn't think this is an intermediate step. What's the efficient way? > > All of the caching in GeometryMapper is stored as instance variables. So you > should allocate one GeometryMapper object and use it throughout the paint > invalidation tree walk. Done.
https://codereview.chromium.org/2238853005/diff/60001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintInvalidator.cpp (right): https://codereview.chromium.org/2238853005/diff/60001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:81: point = GeometryMapper().mapRectToDestinationSpace(FloatRect(point, FloatSize()), currentTreeState, containerTreeState, success).location(); What about this one?
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_layout_tests_slimming_paint_v2 on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_layout_te...)
Feel free to commit without my LGTM since I'll be on vacation. Just wanted an answer to that last question.
https://codereview.chromium.org/2238853005/diff/60001/third_party/WebKit/Sour... File third_party/WebKit/Source/core/paint/PaintInvalidator.cpp (right): https://codereview.chromium.org/2238853005/diff/60001/third_party/WebKit/Sour... third_party/WebKit/Source/core/paint/PaintInvalidator.cpp:81: point = GeometryMapper().mapRectToDestinationSpace(FloatRect(point, FloatSize()), currentTreeState, containerTreeState, success).location(); On 2016/08/12 19:46:11, chrishtr - OOO wrote: > What about this one? Sorry, missed this one. Change to m_geometryMapper.
The CQ bit was checked by wangxianzhu@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from pdr@chromium.org, chrishtr@chromium.org Link to the patchset: https://codereview.chromium.org/2238853005/#ps80001 (title: ".")
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: ios-device on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-device/builds...) ios-simulator on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-simulator/bui...) mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
The CQ bit was checked by wangxianzhu@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from chrishtr@chromium.org, pdr@chromium.org Link to the patchset: https://codereview.chromium.org/2238853005/#ps100001 (title: "Rebase")
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_layout_tests_slimming_paint_v2 on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_layout_te...)
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: mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_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...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_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...
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
The patchset sent to the CQ was uploaded after l-g-t-m from chrishtr@chromium.org, pdr@chromium.org Link to the patchset: https://codereview.chromium.org/2238853005/#ps160001 (title: "Rebase")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== Use GeometryMapper in PaintInvalidator BUG=510908 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Use GeometryMapper in PaintInvalidator BUG=510908 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ==========
Message was sent while issue was closed.
Committed patchset #9 (id:160001)
Message was sent while issue was closed.
Description was changed from ========== Use GeometryMapper in PaintInvalidator BUG=510908 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 ========== to ========== Use GeometryMapper in PaintInvalidator BUG=510908 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Committed: https://crrev.com/20b2f4f14209404d0b124c56ccd26ea5bbfc6c3b Cr-Commit-Position: refs/heads/master@{#412877} ==========
Message was sent while issue was closed.
Patchset 9 (id:??) landed as https://crrev.com/20b2f4f14209404d0b124c56ccd26ea5bbfc6c3b Cr-Commit-Position: refs/heads/master@{#412877} |