[Webkit-unassigned] [Bug 71733] New: Repaint broken when children of filtered SVG elements are updated
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Nov 7 14:20:23 PST 2011
https://bugs.webkit.org/show_bug.cgi?id=71733
Summary: Repaint broken when children of filtered SVG elements
are updated
Product: WebKit
Version: 528+ (Nightly build)
Platform: All
OS/Version: All
Status: UNCONFIRMED
Severity: Normal
Priority: P2
Component: SVG
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: jgw at chromium.org
CC: zimmermann at kde.org
When a parent (e.g., <g>) SVG element has a filter applied, and one of its children is updated (in such a way that only a sub-rectangle of the outer element would normally need to be repainted), webkit re-renders the element incorrectly. You can see this in the attached HTML file -- both squares should be green, but the second usually turns up red, because the element doesn't repaint correctly when the child's fill color is updated (on a 1ms timer).
This bug manifests in several different ways -- the attached example is the simplest reproduction I could get. Generally speaking, what's happening is as follows:
- On the first paint, the SVG filter code allocates an ImageBuffer, paints the results of the filter into it, then caches it.
- Subsequent repaints just use the cached ImageBuffer.
- When you update the child, it kicks off a repaint for the bounds of the child's RenderObject.
- When that paint comes back down the pipeline, the <g> with the filter applied allocates a new ImageBuffer.
- The PaintInfo specifies that only the child's bounds needs to be repainted.
- The filter's *new* ImageBuffer is only partially painted.
- This mostly works, because the part of the filter's ImageBuffer that overlaps the paint rectangle is copied to the screen.
- But the *next* time we repaint the <g> from this ImageBuffer cache, it only contains a subset of the pixels it needs.
- This causes seemingly-random parts of the <g> to get blown away visually.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list