effects: Do not call RHI QQuickRenderControl methods when using software rendering
As per the docs: Note: This function does not need to be, and must not be, called when using the software adaptation of Qt Quick. This sets up RHI on the render control, which in turn sets RHI on the window, which shouldn't exist when using software rendering. BUG: 482663 BUG: 486078
This commit is contained in:
parent
fd746b46e5
commit
8c149bb6b7
1 changed files with 7 additions and 3 deletions
|
@ -96,7 +96,7 @@ OffscreenQuickView::OffscreenQuickView(ExportMode exportMode, bool alpha)
|
||||||
if (!usingGl) {
|
if (!usingGl) {
|
||||||
qCDebug(LIBKWINEFFECTS) << "QtQuick Software rendering mode detected";
|
qCDebug(LIBKWINEFFECTS) << "QtQuick Software rendering mode detected";
|
||||||
d->m_useBlit = true;
|
d->m_useBlit = true;
|
||||||
d->m_renderControl->initialize();
|
// explicilty do not call QQuickRenderControl::initialize, see Qt docs
|
||||||
} else {
|
} else {
|
||||||
QSurfaceFormat format;
|
QSurfaceFormat format;
|
||||||
format.setOption(QSurfaceFormat::ResetNotification);
|
format.setOption(QSurfaceFormat::ResetNotification);
|
||||||
|
@ -238,10 +238,14 @@ void OffscreenQuickView::update()
|
||||||
}
|
}
|
||||||
|
|
||||||
d->m_renderControl->polishItems();
|
d->m_renderControl->polishItems();
|
||||||
d->m_renderControl->beginFrame();
|
if (usingGl) {
|
||||||
|
d->m_renderControl->beginFrame();
|
||||||
|
}
|
||||||
d->m_renderControl->sync();
|
d->m_renderControl->sync();
|
||||||
d->m_renderControl->render();
|
d->m_renderControl->render();
|
||||||
d->m_renderControl->endFrame();
|
if (usingGl) {
|
||||||
|
d->m_renderControl->endFrame();
|
||||||
|
}
|
||||||
|
|
||||||
if (usingGl) {
|
if (usingGl) {
|
||||||
QQuickOpenGLUtils::resetOpenGLState();
|
QQuickOpenGLUtils::resetOpenGLState();
|
||||||
|
|
Loading…
Reference in a new issue