Skip to content
  • simon.fraser@apple.com's avatar
    Fix GraphicsLayerCA visible rect computation in the face of perspective and preserve-3d · beb76102
    simon.fraser@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=99212
    
    Reviewed by Tim Horton.
    
    Source/WebCore:
    
    GraphicsLayerCA::computeVisibleRect() was incorrect for layer trees with perspective
    and preserve-3d, so fix that, and add some tests.
    
    Perspective is implemented via childrenTransform(); if our parent has one,
    we have to left-multiply this into the transformation matrix.
    
    We have to test both this layer and its parent when deciding whether to accumulate
    or flatten.
    
    Use state.mappedQuad() rather than state.lastPlanarQuad(), because the last planar
    quad might be for some distant ancestor, and there may be intermediate preserve-3d
    layers.
    
    Tests: compositing/visible-rect/3d-transform-style.html
           compositing/visible-rect/3d-transformed.html
           compositing/visible-rect/nested-transform.html
    
    * platform/graphics/ca/GraphicsLayerCA.cpp:
    (WebCore::GraphicsLayerCA::computeVisibleRect):
    
    LayoutTests:
    
    Layer tree tests that include visible rect information, to test visible rect
    computation for more complex layer trees.
    
    * compositing/visible-rect/3d-transform-style-expected.txt: Added.
    * compositing/visible-rect/3d-transform-style.html: Added.
    * compositing/visible-rect/3d-transformed-expected.txt: Added.
    * compositing/visible-rect/3d-transformed.html: Added.
    * compositing/visible-rect/nested-transform-expected.txt: Added.
    * compositing/visible-rect/nested-transform.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@131248 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    beb76102