Title: [273392] branches/safari-611-branch
Revision
273392
Author
repst...@apple.com
Date
2021-02-24 09:10:16 -0800 (Wed, 24 Feb 2021)

Log Message

Cherry-pick r273129. rdar://problem/74623422

    Scrolling on https://www.apple.com/ipad-air/ can jitter on certain sections
    https://bugs.webkit.org/show_bug.cgi?id=222136
    rdar://71881767

    Reviewed by Zalan Bujtas.

    Source/WebCore:

    On macOS computers with 16MB of memory, https://www.apple.com/ipad-air/ can trigger the
    "conservative" compositing mode where RenderLayerCompositor tries to reduce the number of
    composited layers.

    On this particular page, a "will-change: transform" element with an overflow:hidden ancestor
    triggers some bad compositing bounds geometry computation (webkit.org/b/222092,
    webkit.org/b/222124) which has the end result of changing the composited bounds of the
    "position:sticky" layer on every scroll. This results in layer contents temporarily
    appearing stretched or in the wrong place (webkit.org/b/222132).

    For now, do a conservative fix to avoid this problem, which is to continue to allow
    "will-change: transform" to trigger compositing on macOS in conservative mode. This
    actually reduces memory use on this page, because webkit.org/b/222092 was triggering
    excessively large backing store.

    Tested by compositing/layer-creation/compositing-policy.html

    * rendering/RenderLayerCompositor.cpp:
    (WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):

    LayoutTests:

    * platform/mac/compositing/layer-creation/compositing-policy-expected.txt: Added.

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273129 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Added Paths

Diff

Modified: branches/safari-611-branch/LayoutTests/ChangeLog (273391 => 273392)


--- branches/safari-611-branch/LayoutTests/ChangeLog	2021-02-24 17:10:12 UTC (rev 273391)
+++ branches/safari-611-branch/LayoutTests/ChangeLog	2021-02-24 17:10:16 UTC (rev 273392)
@@ -1,3 +1,52 @@
+2021-02-23  Alan Coon  <alanc...@apple.com>
+
+        Cherry-pick r273129. rdar://problem/74623422
+
+    Scrolling on https://www.apple.com/ipad-air/ can jitter on certain sections
+    https://bugs.webkit.org/show_bug.cgi?id=222136
+    rdar://71881767
+    
+    Reviewed by Zalan Bujtas.
+    
+    Source/WebCore:
+    
+    On macOS computers with 16MB of memory, https://www.apple.com/ipad-air/ can trigger the
+    "conservative" compositing mode where RenderLayerCompositor tries to reduce the number of
+    composited layers.
+    
+    On this particular page, a "will-change: transform" element with an overflow:hidden ancestor
+    triggers some bad compositing bounds geometry computation (webkit.org/b/222092,
+    webkit.org/b/222124) which has the end result of changing the composited bounds of the
+    "position:sticky" layer on every scroll. This results in layer contents temporarily
+    appearing stretched or in the wrong place (webkit.org/b/222132).
+    
+    For now, do a conservative fix to avoid this problem, which is to continue to allow
+    "will-change: transform" to trigger compositing on macOS in conservative mode. This
+    actually reduces memory use on this page, because webkit.org/b/222092 was triggering
+    excessively large backing store.
+    
+    Tested by compositing/layer-creation/compositing-policy.html
+    
+    * rendering/RenderLayerCompositor.cpp:
+    (WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):
+    
+    LayoutTests:
+    
+    * platform/mac/compositing/layer-creation/compositing-policy-expected.txt: Added.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273129 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-02-18  Simon Fraser  <simon.fra...@apple.com>
+
+            Scrolling on https://www.apple.com/ipad-air/ can jitter on certain sections
+            https://bugs.webkit.org/show_bug.cgi?id=222136
+            rdar://71881767
+
+            Reviewed by Zalan Bujtas.
+
+            * platform/mac/compositing/layer-creation/compositing-policy-expected.txt: Added.
+
 2021-02-17  Ruben Turcios  <rubent...@apple.com>
 
         Cherry-pick r272626. rdar://problem/74410222

Added: branches/safari-611-branch/LayoutTests/platform/mac/compositing/layer-creation/compositing-policy-expected.txt (0 => 273392)


--- branches/safari-611-branch/LayoutTests/platform/mac/compositing/layer-creation/compositing-policy-expected.txt	                        (rev 0)
+++ branches/safari-611-branch/LayoutTests/platform/mac/compositing/layer-creation/compositing-policy-expected.txt	2021-02-24 17:10:16 UTC (rev 273392)
@@ -0,0 +1,34 @@
+transform: translate3d(10px, 1px, 1px)
+Has backing under low memory.
+transform: translateZ(0)
+translateZ(0): No backing under low memory.
+transform: translate3d(10px, 1px, 0)
+No backing under low memory.
+will-change: transform
+No backing under low memory.
+ (GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 800.00 1018.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 1018.00)
+      (contentsOpaque 1)
+      (children 2
+        (GraphicsLayer
+          (position 18.00 10.00)
+          (bounds 308.00 108.00)
+          (contentsOpaque 1)
+          (drawsContent 1)
+          (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 1.00 1.00 1.00])
+        )
+        (GraphicsLayer
+          (position 18.00 364.00)
+          (bounds 308.00 108.00)
+          (contentsOpaque 1)
+          (drawsContent 1)
+        )
+      )
+    )
+  )
+)
+

Modified: branches/safari-611-branch/Source/WebCore/ChangeLog (273391 => 273392)


--- branches/safari-611-branch/Source/WebCore/ChangeLog	2021-02-24 17:10:12 UTC (rev 273391)
+++ branches/safari-611-branch/Source/WebCore/ChangeLog	2021-02-24 17:10:16 UTC (rev 273392)
@@ -1,5 +1,72 @@
 2021-02-23  Alan Coon  <alanc...@apple.com>
 
+        Cherry-pick r273129. rdar://problem/74623422
+
+    Scrolling on https://www.apple.com/ipad-air/ can jitter on certain sections
+    https://bugs.webkit.org/show_bug.cgi?id=222136
+    rdar://71881767
+    
+    Reviewed by Zalan Bujtas.
+    
+    Source/WebCore:
+    
+    On macOS computers with 16MB of memory, https://www.apple.com/ipad-air/ can trigger the
+    "conservative" compositing mode where RenderLayerCompositor tries to reduce the number of
+    composited layers.
+    
+    On this particular page, a "will-change: transform" element with an overflow:hidden ancestor
+    triggers some bad compositing bounds geometry computation (webkit.org/b/222092,
+    webkit.org/b/222124) which has the end result of changing the composited bounds of the
+    "position:sticky" layer on every scroll. This results in layer contents temporarily
+    appearing stretched or in the wrong place (webkit.org/b/222132).
+    
+    For now, do a conservative fix to avoid this problem, which is to continue to allow
+    "will-change: transform" to trigger compositing on macOS in conservative mode. This
+    actually reduces memory use on this page, because webkit.org/b/222092 was triggering
+    excessively large backing store.
+    
+    Tested by compositing/layer-creation/compositing-policy.html
+    
+    * rendering/RenderLayerCompositor.cpp:
+    (WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):
+    
+    LayoutTests:
+    
+    * platform/mac/compositing/layer-creation/compositing-policy-expected.txt: Added.
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273129 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-02-18  Simon Fraser  <simon.fra...@apple.com>
+
+            Scrolling on https://www.apple.com/ipad-air/ can jitter on certain sections
+            https://bugs.webkit.org/show_bug.cgi?id=222136
+            rdar://71881767
+
+            Reviewed by Zalan Bujtas.
+
+            On macOS computers with 16MB of memory, https://www.apple.com/ipad-air/ can trigger the
+            "conservative" compositing mode where RenderLayerCompositor tries to reduce the number of
+            composited layers.
+
+            On this particular page, a "will-change: transform" element with an overflow:hidden ancestor
+            triggers some bad compositing bounds geometry computation (webkit.org/b/222092,
+            webkit.org/b/222124) which has the end result of changing the composited bounds of the
+            "position:sticky" layer on every scroll. This results in layer contents temporarily
+            appearing stretched or in the wrong place (webkit.org/b/222132).
+
+            For now, do a conservative fix to avoid this problem, which is to continue to allow
+            "will-change: transform" to trigger compositing on macOS in conservative mode. This
+            actually reduces memory use on this page, because webkit.org/b/222092 was triggering
+            excessively large backing store.
+
+            Tested by compositing/layer-creation/compositing-policy.html
+
+            * rendering/RenderLayerCompositor.cpp:
+            (WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):
+
+2021-02-23  Alan Coon  <alanc...@apple.com>
+
         Cherry-pick r272358. rdar://problem/74622890
 
     Avoid an ancestor walk in HTMLFormControlElement::computeWillValidate()

Modified: branches/safari-611-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp (273391 => 273392)


--- branches/safari-611-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp	2021-02-24 17:10:12 UTC (rev 273391)
+++ branches/safari-611-branch/Source/WebCore/rendering/RenderLayerCompositor.cpp	2021-02-24 17:10:16 UTC (rev 273392)
@@ -3111,8 +3111,11 @@
         return false;
 #endif
 
+#if !PLATFORM(MAC)
+    // Ugly workaround for rdar://71881767. Undo when webkit.org/b/222092 and webkit.org/b/222132 are fixed.
     if (m_compositingPolicy == CompositingPolicy::Conservative)
         return false;
+#endif
 
     if (is<RenderBox>(renderer))
         return true;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to