summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2015-01-12 12:25:14 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-01-12 15:55:48 +0100
commitccee9f651fff25dc3e9eb834652c30376963abf9 (patch)
treecc0f73c2cefb32dc6d48bba67989e37ef681a1ce
parentffebd1be9dcc78847977d04af2521d43539b9b15 (diff)
downloadqtwebkit-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.cpp10
-rw-r--r--Source/WebCore/rendering/RenderLayerCompositor.cpp6
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)