diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2015-01-12 12:25:14 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-01-12 15:55:48 +0100 |
commit | ccee9f651fff25dc3e9eb834652c30376963abf9 (patch) | |
tree | cc0f73c2cefb32dc6d48bba67989e37ef681a1ce | |
parent | ffebd1be9dcc78847977d04af2521d43539b9b15 (diff) | |
download | qtwebkit-ccee9f651fff25dc3e9eb834652c30376963abf9.tar.gz |
Allow 3D transforms without composited layers
Qt has no problems doing static 3D transforms without composited layers,
since the performance is not optimal we want to still trigger composited
layers when available, but allowing this without can fix the rendering
in the screenshot and printing API.
Task-number: QTBUG-43106
Change-Id: I30869d0f86704b84369273d7c2b875ee22badf22
Reviewed-by: Michael BrĂ¼ning <michael.bruning@theqtcompany.com>
-rw-r--r-- | Source/WebCore/rendering/RenderLayer.cpp | 10 | ||||
-rw-r--r-- | Source/WebCore/rendering/RenderLayerCompositor.cpp | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp index 2d0b56e79..7d65190b4 100644 --- a/Source/WebCore/rendering/RenderLayer.cpp +++ b/Source/WebCore/rendering/RenderLayer.cpp @@ -330,6 +330,8 @@ bool RenderLayer::canRender3DTransforms() const { #if USE(ACCELERATED_COMPOSITING) return compositor()->canRender3DTransforms(); +#elif PLATFORM(QT) && ENABLE(3D_RENDERING) + return true; #else return false; #endif @@ -3999,7 +4001,11 @@ void RenderLayer::paintLayerByApplyingTransform(GraphicsContext* context, const // Apply the transform. GraphicsContextStateSaver stateSaver(*context); +#if PLATFORM(QT) && ENABLE(3D_RENDERING) + context->concat3DTransform(transform); +#else context->concatCTM(transform.toAffineTransform()); +#endif // Now do a paint with the root layer shifted to be us. LayerPaintingInfo transformedPaintingInfo(this, enclosingIntRect(transform.inverse().mapRect(paintingInfo.paintDirtyRect)), paintingInfo.paintBehavior, @@ -4373,7 +4379,11 @@ void RenderLayer::paintChildLayerIntoColumns(RenderLayer* childLayer, GraphicsCo transform.translateRight(roundToInt(childOffset.x() + offset.width()), roundToInt(childOffset.y() + offset.height())); // Apply the transform. +#if PLATFORM(QT) && ENABLE(3D_RENDERING) + context->concat3DTransform(transform); +#else context->concatCTM(transform.toAffineTransform()); +#endif // Now do a paint with the root layer shifted to be the next multicol block. LayerPaintingInfo columnPaintingInfo(paintingInfo); diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp index da390cb75..91ee28ae7 100644 --- a/Source/WebCore/rendering/RenderLayerCompositor.cpp +++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp @@ -325,7 +325,13 @@ void RenderLayerCompositor::cacheAcceleratedCompositingFlags() bool RenderLayerCompositor::canRender3DTransforms() const { +#if !ENABLE(3D_RENDERING) + return false; +#elif PLATFORM(QT) + return true; +#else return hasAcceleratedCompositing() && (m_compositingTriggers & ChromeClient::ThreeDTransformTrigger); +#endif } void RenderLayerCompositor::setCompositingLayersNeedRebuild(bool needRebuild) |