[webkit-changes] [WebKit/WebKit] 39d493: REGRESSION (271747 at main): UI-side compositing repa...

Tim Horton noreply at github.com
Thu Feb 8 13:53:59 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 39d4937cd4642e7f170a9e38b7f69d2fb07aaa26
      https://github.com/WebKit/WebKit/commit/39d4937cd4642e7f170a9e38b7f69d2fb07aaa26
  Author: Tim Horton <timothy_horton at apple.com>
  Date:   2024-02-08 (Thu, 08 Feb 2024)

  Changed paths:
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm

  Log Message:
  -----------
  REGRESSION (271747 at main): UI-side compositing repaint is broken with DOMGPUP off
https://bugs.webkit.org/show_bug.cgi?id=268968

Reviewed by Simon Fraser.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm:
(WebKit::RemoteLayerWithInProcessRenderingBackingStore::createContextAndPaintContents):
If DOMGPUP is off and UI-side compositing is on, we use RemoteLayerWithInProcessRenderingBackingStore.

This is an uncommon situation to be in; as far as I have been able to determine,
it requires changing default settings on all platforms (turning off DOMGPUP on macOS or iOS,
or turning off dynamic content scaling on visionOS, which happens to accidentally work around this).

The code to apply clipping for partial repaint was hoisted out of RemoteLayerBackingStore
in 271747 at main, and sadly was also hoisted past the GraphicsContextStateSaver
that would result in it not persisting forever. Thus, clips end up *accumulating*,
breaking partial repaint.

Put an extra GraphicsContextStateSaver above the clipping.

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




More information about the webkit-changes mailing list