The implementation of WebView::scrollBackingStore just calls m_backingLayer->setNeedsDisplayInRect(scrollViewRect), which will cause the non-composited parts of the page that intersect scrollViewRect to be repainted. This is a naive approach; it would be faster just to blit the contents into their new location and repaint only the newly-exposed contents.
Perhaps we could take advantage of our layer-tiling code to improve this case.
<rdar://problem/8884671>
(In reply to comment #1) > Perhaps we could take advantage of our layer-tiling code to improve this case. You might want to take a look at the chromium tiled root layer implementation in platform/graphics/chromium . We recently switched over to a tiled root layer to improve scrolling performance.