Bug 156860

Summary: Subpixel rendering: Cleanup RenderLayerBacking::updateGeometry.
Product: WebKit Reporter: zalan <zalan>
Component: Layout and RenderingAssignee: zalan <zalan>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, esprehn+autocc, glenn, graouts, kondapallykalyan, simon.fraser
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
WIP patch
none
WIP
none
Archive of layout-test-results from ews121 for ios-simulator-wk2
none
Patch
none
Archive of layout-test-results from ews126 for ios-simulator-wk2
none
UpdateGeometry layers
none
Patch
none
Archive of layout-test-results from ews125 for ios-simulator-wk2
none
Patch
none
Patch
buildbot: commit-queue-
Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2
none
Patch
none
Patch
none
Patch
none
Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2
none
Patch none

zalan
Reported 2016-04-21 12:48:37 PDT
nested/clipped/containment/masks etc.
Attachments
WIP patch (42.15 KB, patch)
2016-04-21 13:13 PDT, zalan
no flags
WIP (42.09 KB, patch)
2016-05-27 13:31 PDT, zalan
no flags
Archive of layout-test-results from ews121 for ios-simulator-wk2 (650.84 KB, application/zip)
2016-05-27 14:27 PDT, Build Bot
no flags
Patch (51.21 KB, patch)
2016-08-04 19:44 PDT, zalan
no flags
Archive of layout-test-results from ews126 for ios-simulator-wk2 (702.61 KB, application/zip)
2016-08-04 20:42 PDT, Build Bot
no flags
UpdateGeometry layers (1.26 MB, image/jpeg)
2016-08-05 21:09 PDT, zalan
no flags
Patch (51.46 KB, patch)
2016-08-07 18:58 PDT, zalan
no flags
Archive of layout-test-results from ews125 for ios-simulator-wk2 (696.29 KB, application/zip)
2016-08-07 19:55 PDT, Build Bot
no flags
Patch (51.63 KB, patch)
2016-08-08 21:04 PDT, zalan
no flags
Patch (74.44 KB, patch)
2016-08-16 11:03 PDT, zalan
buildbot: commit-queue-
Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2 (702.63 KB, application/zip)
2016-08-16 13:21 PDT, Build Bot
no flags
Patch (75.47 KB, patch)
2016-08-16 15:11 PDT, zalan
no flags
Patch (75.54 KB, patch)
2016-08-16 15:31 PDT, zalan
no flags
Patch (75.61 KB, patch)
2016-08-16 16:18 PDT, zalan
no flags
Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2 (703.68 KB, application/zip)
2016-08-16 18:55 PDT, Build Bot
no flags
Patch (75.61 KB, patch)
2016-08-16 19:09 PDT, zalan
no flags
zalan
Comment 1 2016-04-21 13:13:31 PDT
Created attachment 276946 [details] WIP patch
zalan
Comment 2 2016-05-27 13:31:12 PDT
Created attachment 279987 [details] WIP rebaselined
Build Bot
Comment 3 2016-05-27 14:27:10 PDT
Comment on attachment 279987 [details] WIP Attachment 279987 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/1393148 New failing tests: fast/scrolling/ios/overflow-scrolling-ancestor-clip.html fast/scrolling/ios/overflow-scrolling-ancestor-clip-size.html
Build Bot
Comment 4 2016-05-27 14:27:13 PDT
Created attachment 279993 [details] Archive of layout-test-results from ews121 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews121 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.4
zalan
Comment 5 2016-08-04 19:44:57 PDT
Build Bot
Comment 6 2016-08-04 20:42:38 PDT
Comment on attachment 285395 [details] Patch Attachment 285395 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/1814735 New failing tests: fast/scrolling/ios/overflow-scrolling-ancestor-clip.html fast/scrolling/ios/overflow-scrolling-ancestor-clip-size.html
Build Bot
Comment 7 2016-08-04 20:42:41 PDT
Created attachment 285398 [details] Archive of layout-test-results from ews126 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews126 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.5
zalan
Comment 8 2016-08-05 21:09:16 PDT
Created attachment 285478 [details] UpdateGeometry layers
zalan
Comment 9 2016-08-07 18:58:07 PDT
Build Bot
Comment 10 2016-08-07 19:55:33 PDT
Comment on attachment 285553 [details] Patch Attachment 285553 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/1832013 New failing tests: fast/scrolling/ios/overflow-scrolling-ancestor-clip.html fast/scrolling/ios/overflow-scrolling-ancestor-clip-size.html
Build Bot
Comment 11 2016-08-07 19:55:35 PDT
Created attachment 285555 [details] Archive of layout-test-results from ews125 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews125 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.5
zalan
Comment 12 2016-08-08 21:04:08 PDT
zalan
Comment 13 2016-08-08 21:05:29 PDT
RenderLayerBacking::computeParentGraphicsLayerRect() should drop ancestorClippingLayerOffset somehow.
zalan
Comment 14 2016-08-16 11:03:00 PDT
Build Bot
Comment 15 2016-08-16 13:21:05 PDT
Comment on attachment 286186 [details] Patch Attachment 286186 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/1882656 New failing tests: fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html
Build Bot
Comment 16 2016-08-16 13:21:09 PDT
Created attachment 286197 [details] Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews122 Port: ios-simulator-elcapitan-wk2 Platform: Mac OS X 10.11.5
zalan
Comment 17 2016-08-16 15:11:29 PDT
zalan
Comment 18 2016-08-16 15:23:17 PDT
zalan
Comment 19 2016-08-16 15:31:46 PDT
Simon Fraser (smfr)
Comment 20 2016-08-16 15:40:52 PDT
Comment on attachment 286216 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=286216&action=review > Source/WebCore/ChangeLog:11 > + It also subpixel jiggling with clipping layers (both ancestor and child containment layers). it also fixes? > Source/WebCore/rendering/RenderLayerBacking.cpp:719 > + LayoutSize m_subpixelOffset; > + LayoutSize m_devicePixelOffset; I think logically I would put m_devicePixelOffset first, so the ordering matches SnappedRectInfo > Source/WebCore/rendering/RenderLayerBacking.cpp:750 > + LayoutSize ancestorRenderLayerOffsetFromAncestorGraphicsLayer = -(LayoutSize(compositedAncestor->backing()->graphicsLayer()->offsetFromRenderer()) > + + compositedAncestor->backing()->subpixelOffsetFromRenderer()); Maybe RLB should expose a function that returns offsetFromRenderer() + subpixelOffsetFromRenderer() > Source/WebCore/rendering/RenderLayerBacking.cpp:768 > + if (!m_fromParentGraphicsLayer) > + m_fromParentGraphicsLayer = fromAncestorGraphicsLayer() - m_parentGraphicsLayerOffset; > + return m_fromParentGraphicsLayer.value(); Isn't there some Optional magic that allows you to do this on one line? > Source/WebCore/rendering/RenderLayerBacking.cpp:782 > + RenderLayer* compositedAncestor = m_renderLayer.ancestorCompositingLayer(); ancestorCompositingLayer() is an ancestor layer walk so I'm surprised we call it so much. > Source/WebCore/rendering/RenderLayerBacking.cpp:809 > + RenderLayer* compositedAncestor = m_owningLayer.ancestorCompositingLayer(); like here > Source/WebCore/rendering/RenderLayerBacking.cpp:826 > + LayoutSize clippingBoxOffset = computeOffsetFromAncestorGraphicsLayer(m_owningLayer.ancestorCompositingLayer(), clippingBox.location()); and here > Source/WebCore/rendering/RenderLayerBacking.cpp:835 > + LayoutRect paddingBox(renderBox.borderLeft(), renderBox.borderTop(), > + renderBox.width() - renderBox.borderLeft() - renderBox.borderRight(), > + renderBox.height() - renderBox.borderTop() - renderBox.borderBottom()); Seems like this should be a function on RenderBox > Source/WebCore/rendering/RenderLayerBacking.cpp:919 > + // Compute renderer offset from graphics layer. Note that primaryGraphicsLayerRect is in parentGraphicsLayer coordidate system which is not necessarily which GraphicsLayer? parentGraphicsLayer's coordinate system > Source/WebCore/rendering/RenderLayerBacking.cpp:1108 > + RenderLayer* compositedAncestor = m_owningLayer.ancestorCompositingLayer(); and here
zalan
Comment 21 2016-08-16 16:18:19 PDT
zalan
Comment 22 2016-08-16 16:21:45 PDT
(In reply to comment #20) > Comment on attachment 286216 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=286216&action=review > > > Source/WebCore/ChangeLog:11 > > + It also subpixel jiggling with clipping layers (both ancestor and child containment layers). > > it also fixes? Fixed. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:719 > > + LayoutSize m_subpixelOffset; > > + LayoutSize m_devicePixelOffset; > > I think logically I would put m_devicePixelOffset first, so the ordering > matches SnappedRectInfo Fixed. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:750 > > + LayoutSize ancestorRenderLayerOffsetFromAncestorGraphicsLayer = -(LayoutSize(compositedAncestor->backing()->graphicsLayer()->offsetFromRenderer()) > > + + compositedAncestor->backing()->subpixelOffsetFromRenderer()); > > Maybe RLB should expose a function that returns offsetFromRenderer() + > subpixelOffsetFromRenderer() Will do in a separate patch. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:768 > > + if (!m_fromParentGraphicsLayer) > > + m_fromParentGraphicsLayer = fromAncestorGraphicsLayer() - m_parentGraphicsLayerOffset; > > + return m_fromParentGraphicsLayer.value(); > > Isn't there some Optional magic that allows you to do this on one line? valueOrCompute() is the closest match but it does not engage the return value. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:782 > > + RenderLayer* compositedAncestor = m_renderLayer.ancestorCompositingLayer(); > > ancestorCompositingLayer() is an ancestor layer walk so I'm surprised we > call it so much. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:809 > > + RenderLayer* compositedAncestor = m_owningLayer.ancestorCompositingLayer(); > > like here Fixed. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:826 > > + LayoutSize clippingBoxOffset = computeOffsetFromAncestorGraphicsLayer(m_owningLayer.ancestorCompositingLayer(), clippingBox.location()); > > and here > > > Source/WebCore/rendering/RenderLayerBacking.cpp:835 > > + LayoutRect paddingBox(renderBox.borderLeft(), renderBox.borderTop(), > > + renderBox.width() - renderBox.borderLeft() - renderBox.borderRight(), > > + renderBox.height() - renderBox.borderTop() - renderBox.borderBottom()); > > Seems like this should be a function on RenderBox RenderBox already has a paddingBox() function but it computes the paddings in a slightly different way. Need to figure out if it is intentional. > > > Source/WebCore/rendering/RenderLayerBacking.cpp:919 > > + // Compute renderer offset from graphics layer. Note that primaryGraphicsLayerRect is in parentGraphicsLayer coordidate system which is not necessarily > > which GraphicsLayer? > parentGraphicsLayer's coordinate system Fixed.
Build Bot
Comment 23 2016-08-16 18:55:14 PDT
Comment on attachment 286229 [details] Patch Attachment 286229 [details] did not pass ios-sim-ews (ios-simulator-wk2): Output: http://webkit-queues.webkit.org/results/1884124 New failing tests: fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor.html
Build Bot
Comment 24 2016-08-16 18:55:19 PDT
Created attachment 286248 [details] Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews122 Port: ios-simulator-elcapitan-wk2 Platform: Mac OS X 10.11.5
zalan
Comment 25 2016-08-16 19:09:24 PDT
WebKit Commit Bot
Comment 26 2016-08-16 20:19:57 PDT
Comment on attachment 286249 [details] Patch Clearing flags on attachment: 286249 Committed r204552: <http://trac.webkit.org/changeset/204552>
WebKit Commit Bot
Comment 27 2016-08-16 20:20:03 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.