[Webkit-unassigned] [Bug 122589] New: Graphics backend without hardware accelerated compositing, and compositing disabled by Setting, causes CSS3 Transform not correct

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Oct 9 23:11:43 PDT 2013


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

           Summary: Graphics backend without hardware accelerated
                    compositing, and compositing disabled by Setting,
                    causes CSS3 Transform not correct
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Unspecified
        OS/Version: Unspecified
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P2
         Component: CSS
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: chenzx at cn.fujitsu.com


Created an attachment (id=213855)
 --> (https://bugs.webkit.org/attachment.cgi?id=213855&action=review)
Test case, displayed wrong when compositing disabled in Setting

Our org. has 2 internal WebKit based customization projects,
One is using WinCE port with Google V8 and Skia (2012/8 edition), the other is using Qt port with Qt-4.8 xlibgl backend(compositing disbaled),
The 2 have both the same error:
With the following CSS3 transform test case, the display result is wrong, compared to Firefox 24 and Chrome 30.

    #imgElement{
        -webkit-transform: perspective(300px) rotateX(60deg);
        opacity: 1.0;
    }

The above CSS3 transform rule should make the image's above part shorter and tilt toward the middle, but in fact they are displayed as if screwed to right.
I doesn't know why and tried to figure out the evil.

I've located to function "makeMatrixRenderable" which is at our WebKit edtion is in RenderObject.h, but now moved to RenderLayer.cpp

inline void makeMatrixRenderable(TransformationMatrix& matrix, bool has3DRendering)
{
#if !ENABLE(3D_RENDERING)
    UNUSED_PARAM(has3DRendering);
1>    matrix.makeAffine();  //(1)
#else
    if (!has3DRendering)
2>        matrix.makeAffine();  //(2)
#endif
}

If compositing is disabled, the paramter has3DRendering is false. Normally has3DRendering is true, though the graphics backend may not support accelerated compositing.

Our WinCE port running will match the (1) line positin, and our Qt-4.8 xlibgl port running will match the (2) line position. Both changes the matrix data.

I've commented the matrix.makeAffine(); to test, which is still wrong. So there MUST be a in-consistence somewhere else.

Can anyone kindly help with this problem? 3x!

-- 
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