[Webkit-unassigned] [Bug 122589] Graphics backend without hardware accelerated compositing, and compositing disabled by Setting, causes the CSS3 Transform discarding perspective component, only affine part remains

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Oct 14 21:09:25 PDT 2013


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





--- Comment #5 from Chen Zhixiang <chenzx at cn.fujitsu.com>  2013-10-14 21:08:11 PST ---
I've fixed this problem for Qt-4.8 port with xlibgl but combining 2 modifications:

(1)enforce hardware accelerated compositing: 
gedit Source/WebCore/rendering/RenderLayerCompositor.cpp & 

void RenderLayerCompositor::cacheAcceleratedCompositingFlags() 
{ 
    bool hasAcceleratedCompositing = false; 
    bool showDebugBorders = false; 
    bool showRepaintCounter = false; 
    bool forceCompositingMode = false; 

    if (Settings* settings = m_renderView->document()->settings()) { 
> hasAcceleratedCompositing = true; //settings->acceleratedCompositingEnabled();
... 

(2)Use TextureMapperImageBuffer instead of TextureMapperGL
gedit Source/WebKit/qt/WebCoreSupport/PageClientQt.cpp & 

#if USE(TEXTURE_MAPPER) 
void PageClientQGraphicsWidget::setRootGraphicsLayer(GraphicsLayer* layer) 
{ 
    if (layer) { 
        TextureMapperLayerClient = adoptPtr(new TextureMapperLayerClientQt(page->mainFrame(), layer)); 
#if USE(TEXTURE_MAPPER_GL) 
        QGraphicsView* graphicsView = view->scene()->views()[0]; 
        if (graphicsView && graphicsView->viewport() && graphicsView->viewport()->inherits("QGLWidget")) { 
            printf("setRootGraphicsLayer: USE(TEXTURE_MAPPER) & call TextureMapper::create(TextureMapper::OpenGLMode)\n"); 
            //TextureMapperLayerClient->setTextureMapper(TextureMapper::create(TextureMapper::OpenGLMode)); 
〉 TextureMapperLayerClient->setTextureMapper(TextureMapper::create()); 
            return; 
        } 
#endif 
        printf("setRootGraphicsLayer: USE(TEXTURE_MAPPER) & call TextureMapper::create()\n"); 
        TextureMapperLayerClient->setTextureMapper(TextureMapper::create()); 
        return; 
    } 
    TextureMapperLayerClient.clear(); 
}

The key point is, to make perpective transform which is NOT 2D-affine transform effectful, we MUST use the TextureMapperImageBuffer implementation!

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