Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bf6398b824c5bc0f5a274231301914d5d8524c99
      
https://github.com/WebKit/WebKit/commit/bf6398b824c5bc0f5a274231301914d5d8524c99
  Author: Ryan Reno <[email protected]>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    A 
LayoutTests/compositing/layer-creation/compositing-policy-hysteresis-expected.txt
    A LayoutTests/compositing/layer-creation/compositing-policy-hysteresis.html
    A 
LayoutTests/platform/mac/compositing/layer-creation/compositing-policy-hysteresis-expected.txt
    M Source/WebCore/rendering/RenderLayerCompositor.cpp
    M Source/WebCore/rendering/RenderLayerCompositor.h

  Log Message:
  -----------
  Add hysteresis to RenderLayerCompositor's compositing policy.
https://bugs.webkit.org/show_bug.cgi?id=259865
rdar://113342477

Reviewed by Simon Fraser.

RenderLayerCompositor::updateCompositingPolicy will change compositing policy 
when memory
pressure status has changed (266497@main). It is possible that we could bounce 
between
Conservative and Normal policies multiple times per second. Consider
this example:

1) We enter a memory warning and so move to Conservative, deallocating
   layer backing memory.
2) This deallocation brings us just below the threshold for memory
   warning.
3) We see this status change and return to Normal, creating new layers
   and reallocating layer backing memory.
4) This reallocation brings us back into memory warning (goto 1).

To avoid this situation this patch adds a HysteresisActivity to the
RenderLayerCompositor. Whenever we change to Conservative compositing
mode we impulse the activity and will not change compositing policy
until after the activity has stopped. Currently that means we wait 2s
after switching to a Conservative policy before allowing ourselves to switch 
back
to a Normal policy. We don't block ourselves from switching from Normal
to Conservative though since that can cause us to respond to system
memory pressure too slowly.

* 
LayoutTests/compositing/layer-creation/compositing-policy-hysteresis-expected.txt:
 Added.
* LayoutTests/compositing/layer-creation/compositing-policy-hysteresis.html: 
Added.
* 
LayoutTests/platform/mac/compositing/layer-creation/compositing-policy-hysteresis-expected.txt:
 Added.
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::RenderLayerCompositor):
(WebCore::RenderLayerCompositor::updateCompositingPolicy):
(WebCore::RenderLayerCompositor::canUpdateCompositingPolicy const):
* Source/WebCore/rendering/RenderLayerCompositor.h:

Canonical link: https://commits.webkit.org/266738@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to