aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickshadereffectsource.cpp5
-rw-r--r--src/quick/items/qquickwindow.cpp7
2 files changed, 9 insertions, 3 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp
index 547e2141f6..2b613df0f2 100644
--- a/src/quick/items/qquickshadereffectsource.cpp
+++ b/src/quick/items/qquickshadereffectsource.cpp
@@ -955,6 +955,11 @@ QSGNode *QQuickShaderEffectSource::updatePaintNode(QSGNode *oldNode, UpdatePaint
? QSize(qCeil(qAbs(sourceRect.width())), qCeil(qAbs(sourceRect.height())))
: m_textureSize;
Q_ASSERT(!textureSize.isEmpty());
+
+ // Crate large textures on high-dpi displays.
+ if (sourceItem() && sourceItem()->window())
+ textureSize *= sourceItem()->window()->devicePixelRatio();
+
QQuickItemPrivate *d = static_cast<QQuickItemPrivate *>(QObjectPrivate::get(this));
const QSize minTextureSize = d->sceneGraphContext()->minimumFBOSize();
// Keep power-of-two by doubling the size.
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 2ce91cdc2c..a915430616 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -336,14 +336,15 @@ void QQuickWindowPrivate::renderSceneGraph(const QSize &size)
Q_Q(QQuickWindow);
emit q->beforeRendering();
int fboId = 0;
- renderer->setDeviceRect(QRect(QPoint(0, 0), size));
+ const qreal devicePixelRatio = q->devicePixelRatio();
+ renderer->setDeviceRect(QRect(QPoint(0, 0), size * devicePixelRatio));
if (renderTargetId) {
fboId = renderTargetId;
renderer->setViewportRect(QRect(QPoint(0, 0), renderTargetSize));
} else {
- renderer->setViewportRect(QRect(QPoint(0, 0), size));
+ renderer->setViewportRect(QRect(QPoint(0, 0), size * devicePixelRatio));
}
- renderer->setProjectionMatrixToDeviceRect();
+ renderer->setProjectionMatrixToRect(QRect(QPoint(0, 0), size));
context->renderNextFrame(renderer, fboId);
emit q->afterRendering();