Bug 63493

Summary: Overlap map for compositing needs to consider clipping
Product: WebKit Reporter: Adrienne Walker <enne>
Component: WebCore Misc.Assignee: Adrienne Walker <enne>
Status: RESOLVED FIXED    
Severity: Normal CC: enne, jamesr, simon.fraser, vangelis
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Test case
none
Patch simon.fraser: review+

Adrienne Walker
Reported 2011-06-27 16:38:20 PDT
The overlap map in RenderLayerCompositor currently doesn't consider clipping. So, if there is a large layer that is clipped, it may cause other layers to unnecessarily become composited, even though they aren't truly overlapping once clip is considered. See: http://crbug.com/85438
Attachments
Test case (1.37 KB, text/html)
2011-06-27 16:57 PDT, Adrienne Walker
no flags
Patch (14.17 KB, patch)
2011-06-27 17:49 PDT, Adrienne Walker
simon.fraser: review+
Simon Fraser (smfr)
Comment 1 2011-06-27 16:52:45 PDT
I can haz testcase?
Adrienne Walker
Comment 2 2011-06-27 16:57:37 PDT
Created attachment 98815 [details] Test case Here's a test case. I have a patch too, but it changes the expected output from limit-layer-bounds-clipping-ancestor, so I need to clean that up first.
Adrienne Walker
Comment 3 2011-06-27 17:49:06 PDT
Adrienne Walker
Comment 4 2011-07-13 15:55:19 PDT
(In reply to comment #3) > Created an attachment (id=98830) [details] > Patch smfr: ping?
Simon Fraser (smfr)
Comment 5 2011-07-13 16:07:33 PDT
Comment on attachment 98830 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=98830&action=review > Source/WebCore/rendering/RenderLayerCompositor.cpp:569 > + IntRect clipRect = layer->backgroundClipRect(rootRenderLayer(), true); This is another walk up the layer tree, sadly.
James Robinson
Comment 6 2011-07-13 16:10:11 PDT
That one should hit cache (saved m_clipRects on the parent layer) most of the time, at least.
Simon Fraser (smfr)
Comment 7 2011-07-13 16:20:04 PDT
(In reply to comment #6) > That one should hit cache (saved m_clipRects on the parent layer) most of the time, at least. No, temporaryClipRects = true.
Adrienne Walker
Comment 8 2011-07-15 14:54:34 PDT
Simon Fraser (smfr)
Comment 9 2012-05-19 07:56:22 PDT
The perf hit from this was significant: bug 84410
Note You need to log in before you can comment on or make changes to this bug.