Consider the following scenario: parent element and child element having -webkit-mix-blend-mode other than normal. Set z-index and position for the parent from Javascript. Blending is not isolated, ie the blend operation is performed with all the backdrop. Instead, blending should only be performed with the contents of the parent element.
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.