Currently RenderLayer::paintLayer() doesn't check for leaf non self-painting layers (it checks for fully transparent layers though). However in this case, we have no work to do. For cases like tables with RenderLayers on every cells where the RenderLayer tree is heavily weighted by its leafs, paintLayer() is introducing some overhead. The benchmark in mind here is http://dglazkov.github.com/performance-tests/biggrid.html. Create a 10,000 rows x 50 columns and tick "overflow: hidden" (which creates an overflow RenderLayer on all the cells): in this case, the paint time when scrolling is around 120 ms on my machine. This is due to walking all RenderLayers and doing some checks to end up not painting as we are not visible and don't need to anyway. Patch forthcoming.
Created attachment 140349 [details] Propsed change. Nice improvement.
Comment on attachment 140349 [details] Propsed change. Nice improvement. View in context: https://bugs.webkit.org/attachment.cgi?id=140349&action=review > Source/WebCore/ChangeLog:13 > + For RenderLayer trees heavily weigthed by their leafs (like a table with a leaf RenderLayer for each cells), typo: weigthed I would just say: For layer trees that have a large number of leaf nodes
Committed r116203: <http://trac.webkit.org/changeset/116203>
Comment on attachment 140349 [details] Propsed change. Nice improvement. Clear cq? flag from old attachment.
This cause bug 90052.
Sorry, I mean that <http://trac.webkit.org/r116203> caused bug 99052.