| Summary: | [CSS Blending] Blending operation is not isolated when z-index on parent changes dynamically | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Mihai Tica <mitica> | ||||||||||||||||
| Component: | CSS | Assignee: | Nobody <webkit-unassigned> | ||||||||||||||||
| Status: | RESOLVED FIXED | ||||||||||||||||||
| Severity: | Normal | CC: | commit-queue, esprehn+autocc, glenn, kondapallykalyan, mihnea, simon.fraser, WebkitBugTracker | ||||||||||||||||
| Priority: | P2 | Keywords: | AdobeTracked | ||||||||||||||||
| Version: | 528+ (Nightly build) | ||||||||||||||||||
| Hardware: | Unspecified | ||||||||||||||||||
| OS: | Unspecified | ||||||||||||||||||
| Bug Depends on: | |||||||||||||||||||
| Bug Blocks: | 129661 | ||||||||||||||||||
| Attachments: |
|
||||||||||||||||||
|
Description
Mihai Tica
2014-02-25 06:35:37 PST
Created attachment 225147 [details]
Test case
Repaint test. Place it it fast/repaint
*** Bug 129305 has been marked as a duplicate of this bug. *** Created attachment 225457 [details] Not for review: reimplemented isolation with logic added in RenderLayerCompositor This is a proof of concept patch. --Implementation-- The implementation correctly handles all cases, however, it resides in RenderLayerCompositor. An alternative implies adding blending as a descendant dependent flag, similar to https://codereview.chromium.org/23503046/diff/59001/Source/core/rendering/RenderLayer.cpp, however, going upwards provides better performance. --Tests-- The first test test validates that the background of the body is fully painted, and m_isolatesBlending doesn't affect the root renderer. The second tests validates that isolation is correctly handled. Note that there the third test-case fails due to https://bugs.webkit.org/show_bug.cgi?id=129480. This dependency should be fixed for all cases where RenderLayer.paintsWithTransparency should return true. @Simon: could you please have a look over the last patch? Would this approach be ok? If not, do you have any suggestions? Comment on attachment 225457 [details]
Not for review: reimplemented isolation with logic added in RenderLayerCompositor
Did you see if this logic fits into RenderLayer::updateDescendantDependentFlags()?
(In reply to comment #5) > (From update of attachment 225457 [details]) > Did you see if this logic fits into RenderLayer::updateDescendantDependentFlags()? I've investigated this and it looks like it would be feasible to use the updateDescendantDependentFlags logic. Would using this be ok? I'm guessing that hooking here implies no additional traversing, thus being more performant than the implementation from my last patch. Created attachment 226015 [details]
First try at isolation with descedantDependentFlag
Created attachment 226033 [details]
Patch
Created attachment 226124 [details]
Add guards in RenderLayer.cpp
@Simon: Could you please review this? Thanks Created attachment 227071 [details]
Patch
Attachment 227071 [details] did not pass style-queue:
ERROR: Source/WebCore/rendering/RenderLayer.cpp:849: Multi line control clauses should use braces. [whitespace/braces] [4]
Total errors found: 1 in 9 files
If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 227167 [details]
Patch
Comment on attachment 227167 [details] Patch Clearing flags on attachment: 227167 Committed r165970: <http://trac.webkit.org/changeset/165970> All reviewed patches have been landed. Closing bug. |