Bug 63493 - Overlap map for compositing needs to consider clipping
Summary: Overlap map for compositing needs to consider clipping
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Adrienne Walker
Depends on:
Reported: 2011-06-27 16:38 PDT by Adrienne Walker
Modified: 2012-05-19 07:56 PDT (History)
4 users (show)

See Also:

Test case (1.37 KB, text/html)
2011-06-27 16:57 PDT, Adrienne Walker
no flags Details
Patch (14.17 KB, patch)
2011-06-27 17:49 PDT, Adrienne Walker
simon.fraser: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Adrienne Walker 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
Comment 1 Simon Fraser (smfr) 2011-06-27 16:52:45 PDT
I can haz testcase?
Comment 2 Adrienne Walker 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.
Comment 3 Adrienne Walker 2011-06-27 17:49:06 PDT
Created attachment 98830 [details]
Comment 4 Adrienne Walker 2011-07-13 15:55:19 PDT
(In reply to comment #3)
> Created an attachment (id=98830) [details]
> Patch

smfr: ping?
Comment 5 Simon Fraser (smfr) 2011-07-13 16:07:33 PDT
Comment on attachment 98830 [details]

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.
Comment 6 James Robinson 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.
Comment 7 Simon Fraser (smfr) 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.
Comment 8 Adrienne Walker 2011-07-15 14:54:34 PDT
Committed r91114: <http://trac.webkit.org/changeset/91114>
Comment 9 Simon Fraser (smfr) 2012-05-19 07:56:22 PDT
The perf hit from this was significant: bug 84410