Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e4d8e9236f2add93fa83d8c13b8401df421155aa
      
https://github.com/WebKit/WebKit/commit/e4d8e9236f2add93fa83d8c13b8401df421155aa
  Author: Tim Horton <[email protected]>
  Date:   2023-09-18 (Mon, 18 Sep 2023)

  Changed paths:
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm

  Log Message:
  -----------
  visionOS: Pixel cracks within layers at some content scales
https://bugs.webkit.org/show_bug.cgi?id=261693
rdar://108139596

Reviewed by Dean Jackson.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::setNeedsDisplay):
(WebKit::RemoteLayerBackingStore::layerBounds const):
(WebKit::RemoteLayerBackingStore::drawInContext):
Dynamic content scaling doesn't support partial repaint, so we disable it.

We do this by calling setNeedsDisplay() on the layer, intending to make a
single repaint rect covering the whole layer.

However, RemoteLayerBackingStore's setNeedDisplay doesn't intersect incoming 
repaint
rects with the layer's bounds, so a very large repaint rect *outside* of the 
bounds
of the layer (like you might get with e.g. a large negative text-indent, which 
is
fairly common on the web), results in a m_dirtyRegion with rectangles far 
outside
the layer.

Then, depending on the shape of the extralayer repaint rects, the logic in
RemoteLayerBackingStore::drawInContext that decides whether or not to do a
partial repaint (based on the delta between the area covered by the repaint 
rects
and the bounds of a full repaint) can still decide to do a partial repaint.
(Despite the fact that we absolutely cannot perform partial repaints
for dynamic content scaling right now).

Fix this by intersecting incoming repaint rects with the layer's bounds, so that
calling setNeedsDisplay *always* results in 
RemoteLayerBackingStore::drawInContext
doing a full repaint.

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


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

Reply via email to