diff --git a/src/canvas3d.cpp b/src/canvas3d.cpp index 5b503c5bc6b7cb5e935461b992974f3ac4268454..dad073ed82ee4a96688d0adade32bf426431de96 100644 --- a/src/canvas3d.cpp +++ b/src/canvas3d.cpp @@ -95,8 +95,8 @@ Canvas::Canvas(QQuickItem *parent): #else m_maxSamples(4), #endif - m_samples(0), m_devicePixelRatio(1.0f), + m_isSoftwareRendered(false), m_isContextAttribsSet(false), m_antialiasFbo(0), m_renderFbo(0), @@ -111,6 +111,10 @@ Canvas::Canvas(QQuickItem *parent): m_runningInDesigner = QGuiApplication::applicationDisplayName() == "Qml2Puppet"; setFlag(ItemHasContents, !m_runningInDesigner); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) + if (QCoreApplication::testAttribute(Qt::AA_UseSoftwareOpenGL)) + m_isSoftwareRendered = true; +#endif } /*! @@ -323,7 +327,7 @@ CanvasContext *Canvas::getContext(const QString &type, const QVariantMap &option surfaceFormat.setSwapBehavior(QSurfaceFormat::SingleBuffer); surfaceFormat.setSwapInterval(0); - if (m_contextAttribs.antialias()) + if (m_contextAttribs.antialias() && !m_isSoftwareRendered) surfaceFormat.setSamples(m_maxSamples); else surfaceFormat.setSamples(0); diff --git a/src/canvas3d_p.h b/src/canvas3d_p.h index 82f00aee28fcafa888d45d4849d2e47e28228099..fec9f80fc16133007f58c5e0feae66a2fbd071b9 100644 --- a/src/canvas3d_p.h +++ b/src/canvas3d_p.h @@ -125,9 +125,9 @@ private: QQuickWindow *m_contextWindow; int m_maxSamples; - int m_samples; float m_devicePixelRatio; + bool m_isSoftwareRendered; bool m_runningInDesigner; CanvasContextAttributes m_contextAttribs; bool m_isContextAttribsSet;