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

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

  Log Message:
  -----------
  REGRESSION (271747@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@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


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

Reply via email to