[Webkit-unassigned] [Bug 86276] New: [chromium] Transforms should not flatten children to RenderSurfaces if the surface preserves 3d

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri May 11 17:23:22 PDT 2012


https://bugs.webkit.org/show_bug.cgi?id=86276

           Summary: [chromium] Transforms should not flatten children to
                    RenderSurfaces if the surface preserves 3d
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Layout and Rendering
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: shawnsingh at chromium.org
                CC: enne at google.com, shawnsingh at chromium.org,
                    dtu at chromium.org


Scenario:
Layer A is the container, with -webkit-transform-style: preserves-3d
Layer B is a child of A, with -webkit-transform-style: preserves-3d.  It so happens that Layer B becomes a renderSurface for other unrelated reasons (such as having a CSS reflection)
Layer C is a child of layer B, with some 3-d transform.

In this scenario, chromium compositor code will incorrectly flatten Layer C onto surface B.  The reason our code would incorrectly do that is because whenever we create a new renderSurface, we are resetting the drawTransform hierarchy at that layer, and the rest of the subtree inherits from that layer.

This bug should do 3 things:

(1) first create a webkit layout test that reproduces the problem (Safari will probably pass such a test case already, that is a good way to double-check that the test is OK)

(2) change the way that we initialize transforms, for both RenderSurfaces and layers: the hierarchy should be reset only if the renderSurface is considered the "root of the 3D rendering context", which I think in our code is the first layer where preserves3d is true but its parent does not preserve 3d.   David I'll probably be modifying the exact same code here, so we need to coordinate when you get to this step.

(3) create a unit test that fails without the fix in (2), and passes with it.  The test should probably live in Source/WebKit/chromium/tests/CCLayerTreeHostCommonTest.cpp, that's where several other transform hierarchy tests are located

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list