[Webkit-unassigned] [Bug 265723] New: [LBSE] Determine if post-layout reprints should ever use "outlineBounds"

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Dec 2 11:25:54 PST 2023


https://bugs.webkit.org/show_bug.cgi?id=265723

            Bug ID: 265723
           Summary: [LBSE] Determine if post-layout reprints should ever
                    use "outlineBounds"
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: SVG
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: simon.fraser at apple.com
                CC: sabouhallawa at apple.com, zimmermann at kde.org

Post-layout repainting in RenderElement::repaintAfterLayoutIfNeeded() takes two rectangles:

clippedOverflowRect: the renderer's local repaint rect converted up to the repaintContainer, clipped by any ancestors with overflow.
outlineBounds: the renderer's "outline bounds", i.e. border box outset for shadows and outlines, converted up to the repaintContainer, but not clipped. 

When requiresFullRepaint is RequiresFullRepaint::Yes, we just repaint the old and new clippedOverflowRect. Otherwise, we repaint the deltas of clippedOverflowRect, and inspect outlineBounds to see if we need to do a full repaint (yes if it moved).

The outlineBounds is consulted for two reasons:
1. The origin of the decorated box changed, in which case we have to do a full repaint.
2. The size of the decorated box changed. Here we compute how much we have to expand the repaint rects to cover things like shadows and outlines.

The expectation is that both clippedOverflowRect and outlineBounds are device-pixel snapped here.

With SVG there are various things to think about:
1. SVG coords are floating point, so diffing LayoutRects (especially after device pixel snapping) can't be used to know if something changed by a fractional pixel.
2. Does the "outline bounds delta" code ever make sense for SVG? What is the behavior of outlines for SVG elements?

I think, initially, we should always use RequiresFullRepaint::Yes for SVG, and refine later.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20231202/0c728bb2/attachment.htm>


More information about the webkit-unassigned mailing list