Skip to content
  • simon.fraser@apple.com's avatar
    Add a way to update GraphicsLayerCA visibleRects without having to do a flush · 7dd9a661
    simon.fraser@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=113459
    
    Reviewed by Tim Horton.
    
    Some platforms need to update TiledBacking visible rects from
    outside of WebKit, for example if they use delegated scrolling.
    They want to avoid forcing layout to be up-to-date when doing this.
    
    Currently, updating the visibleRect happens when the GraphicsLayerCA
    layer are being flushed, but that makes some assumptions about
    layout being up-to-date.
    
    To fix this, add a light-weight pass over the layer tree that
    uses TransformState to compute the visibleRect for each
    layer, and only if the visibleRect would cause a change in the
    tiles in a TiledBacking trigger a layer flush.
    
    * platform/graphics/GraphicsLayer.h:
    (WebCore::GraphicsLayer::recomputeVisibleRects):
    * platform/graphics/TiledBacking.h:
    * platform/graphics/ca/GraphicsLayerCA.cpp:
    (WebCore::GraphicsLayerCA::recursiveComputeVisibleRect):
    (WebCore::GraphicsLayerCA::recomputeVisibleRects):
    (WebCore::GraphicsLayerCA::computeVisibleRect):
    * platform/graphics/ca/GraphicsLayerCA.h:
    * platform/graphics/ca/mac/TileController.h:
    * platform/graphics/ca/mac/TileController.mm:
    (WebCore::TileController::tilesWouldChangeForVisibleRect):
    (WebCore::TileController::computeTileCoverageRect):
    (WebCore::TileController::revalidateTiles):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@147058 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    7dd9a661