<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hi Markus,<br>
<br>
If you are running this nested inside an X session (and comparing nested Weston vs nested QtWayland), you have to be careful to set the right environment variables (info in QtWayland readme), or QtWayland will fall back to using software buffers. Also, if you're
 running it inside a gnome wayland session, you will probably still get the X backend of the QtWayland compositor because we have blacklisted gnome and fall back to XWayland.<br>
<br>
Even better would be to run the compositor with the eglfs backend instead of nesting it, and comparing that against weston's drm backend.<br>
<br>
Unless you're doing this already, then there is not supposed to be a noticeable performance gap with QtWayland compositors compared to Weston. So if that's the case, please file a bug for it.<br>
<br>
Br,<br>
Johan Helsing<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Interest <interest-bounces@qt-project.org> on behalf of Gramer, Markus <Markus.Gramer@b1-es.com><br>
<b>Sent:</b> Monday, October 21, 2019 16:34<br>
<b>To:</b> interest@qt-project.org <interest@qt-project.org><br>
<b>Subject:</b> [Interest] QtWayland compositors lagging</font>
<div> </div>
</div>
<style>
<!--
.x_EmailQuote
        {margin-left:1pt;
        padding-left:4pt;
        border-left:#800000 2px solid}
-->
</style>
<div><font face="Calibri" size="2"><span style="font-size:11pt">
<div>Hi there, </div>
<div> </div>
<div>I was wondering if anyone on this list has experience with Wayland compositors.</div>
<div> </div>
<div>I am working on a project, that requires two processes (on an embedded Linux system) to be displayed at the same time. We thus chose to use a Wayland compositor based on the minimal-qml example of QtWayland. However, we now noticed that the sliders in
 the application exhibit a serious lag. </div>
<div> </div>
<div>We were able to reproduce this effect with a minimum example running within our Wayland compositor in an Ubuntu VM on my host computer. The example application consists of a single slider (QtQuick.Conntrols 2.12) and a simple infinite animation (to measure
 rendering performance). </div>
<div> </div>
<div>With the same application running in the Weston compositor, the lag was not noticeable.</div>
<div> </div>
<div>We also tested the application with other QtWayland compositor examples, and always observed the lag.</div>
<div> </div>
<div>I am now wondering if this issue is inherent to QtWayland or if I would be able to modify some configuration to achieve a similar performance than Weston does. </div>
<div> </div>
<div>Since the use case should be rather common, I would expect other people to have encountered/solved similar issues.</div>
<div> </div>
<div>I would be grateful for anyone sharing their experience.</div>
<div> </div>
<div>Kind regards,</div>
<div>Markus Gramer</div>
<div> </div>
<div>For completeness our current compositor implementation:</div>
<div>Default main.cpp:</div>
<div> </div>
<div><i>#include <QtCore/QUrl></i></div>
<div><i>#include <QtCore/QDebug></i></div>
<div><i>#include <QtGui/QGuiApplication></i></div>
<div><i>#include <QtQml/QQmlApplicationEngine></i></div>
<div> </div>
<div><i>int main(int argc, char *argv[])</i></div>
<div><i>{</i></div>
<div><i>    QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts, true);</i></div>
<div><i>    QGuiApplication app(argc, argv);</i></div>
<div><i>    QQmlApplicationEngine appEngine(QUrl("qrc:///qml/main.qml"));</i></div>
<div><i>    return app.exec();</i></div>
<div><i>}</i></div>
<div> </div>
<div>main.qml:</div>
<div> </div>
<div><i>import QtQuick 2.0</i></div>
<div><i>import QtQuick.Window 2.12</i></div>
<div><i>import </i><a href="http://QtWayland.Compositor"><font color="#0563C1"><i><u>QtWayland.Compositor</u></i></font></a><i> 1.3</i></div>
<div> </div>
<div><i>WaylandCompositor {</i></div>
<div><i>    id: waylandCompositor</i></div>
<div><i>    property int cIviIdMain: 1</i></div>
<div><i>    property int cIviIdActuator: 2</i></div>
<div> </div>
<div><i>    WaylandOutput {</i></div>
<div><i>        sizeFollowsWindow: true</i></div>
<div><i>        window: Window {</i></div>
<div><i>            id: waylandWindow</i></div>
<div><i>            width: 1920</i></div>
<div><i>            height:</i><i> </i><i>1080</i></div>
<div><i>            visible: true</i></div>
<div><i>            property int secondHeight: 200</i></div>
<div><i>            Rectangle {</i></div>
<div><i>                id: mainArea</i></div>
<div><i>                width: parent.width</i></div>
<div><i>                height: parent.height - waylandWindow.secondHeight</i></div>
<div><i>                anchors.left: parent.left</i></div>
<div><i>                color: "#434345"</i></div>
<div><i>                Text {</i></div>
<div><i>                    anchors.centerIn: parent</i></div>
<div><i>                    color: "#F3F4F6"</i></div>
<div><i>                    text: "Main Area"</i></div>
<div><i>                }</i></div>
<div><i>            }</i></div>
<div><i>            Rectangle {</i></div>
<div><i>                id: </i><i>secondArea</i></div>
<div><i>                width: parent.width</i></div>
<div><i>                height: waylandWindow.secondHeight</i></div>
<div><i>                anchors.top: mainArea.bottom</i></div>
<div><i>                color: "#828282"</i></div>
<div><i>                Text {</i></div>
<div><i>                    anchors.centerIn: parent</i></div>
<div><i>                    color: "#F3F4F6"</i></div>
<div><i>                    text: "</i><i>Secondary</i><i> Area"</i></div>
<div><i>                }</i></div>
<div><i>            }</i></div>
<div><i>        }</i></div>
<div><i>    }</i></div>
<div> </div>
<div><i>    Component {</i></div>
<div><i>        id: shellComponent</i></div>
<div><i>        ShellSurfaceItem {</i></div>
<div><i>            anchors.fill: parent</i></div>
<div><i>            onSurfaceDestroyed: destroy()</i></div>
<div><i>            onWidthChanged: handleResized()</i></div>
<div><i>            onHeightChanged: handleResized()</i></div>
<div><i>            function handleResized() {</i></div>
<div><i>                shellSurface.sendConfigure(Qt.size(width, height));</i></div>
<div><i>            }</i></div>
<div><i>        }</i></div>
<div><i>    }</i></div>
<div> </div>
<div><i>    // Extensions are additions to the core Wayland</i></div>
<div><i>    // protocol.</i></div>
<div><i>    IviApplication {</i></div>
<div><i>        onIviSurfaceCreated: {</i></div>
<div><i>            //shellSurfaces.append({shellSurface: iviSurface})</i></div>
<div><i>            var surfaceArea</i></div>
<div><i>            switch (iviSurface.iviId) {</i></div>
<div><i>                case waylandCompositor.cIviIdMain:</i></div>
<div><i>                    surfaceArea = mainArea</i></div>
<div><i>                    break;</i></div>
<div><i>                case waylandCompositor.cIviIdActuator:</i></div>
<div><i>                    surfaceArea = </i><i>secondArea</i></div>
<div><i>                    break;</i></div>
<div><i>            }</i></div>
<div><i>            var item = shellComponent.createObject(surfaceArea, { "shellSurface": iviSurface } );</i></div>
<div><i>            item.handleResized(); </i></div>
<div><i>        }</i></div>
<div><i>    }</i></div>
<div><i>}</i></div>
<div> </div>
<div> </div>
<div> </div>
<div> </div>
<div><font size="2" color="gray"><span style="font-size:9pt">_________________________________________</span></font></div>
<div><font size="2" color="gray"><span style="font-size:9pt">Dr. Markus Gramer <b>
● </b>Design Engineer Software</span></font></div>
<div><font size="2" color="gray"><span style="font-size:9pt">phone: +49 (89)  215 478  489
<b>● </b>skype/email: <a href="mailto:markus.gramer@b1-es.com"><font color="#0070C0"><u>markus.gramer@b1-es.com</u></font></a></span></font></div>
<div><font color="gray"><br>
<font size="2" color="#0070C0"><span style="font-size:9pt"><b>b1 Embedded Solutions Canada Inc
</b></span></font><font size="2"><span style="font-size:9pt"><b></b></span></font><font size="2"><span style="font-size:9pt"><b>●
</b></span></font><font size="2"><span style="font-size:9pt">161 Mistysugar Trail</span></font><font size="2"><span style="font-size:9pt"><b>
</b></span></font><font size="2"><span style="font-size:9pt"><b>●</b></span></font><font size="2"><span style="font-size:9pt"> Thornhill ON L4J 8T4
</span></font><font size="2"><span style="font-size:9pt"><b>● </b></span></font><font size="2"><span style="font-size:9pt">Canada</span></font><font size="2"><span style="font-size:9pt"><b>
</b></span></font><font size="2"><span style="font-size:9pt"><b>● </b></span></font><a href="http://www.b1-es.com/"><font size="2" color="#0070C0"><span style="font-size:9pt"><u>www.b1-es.com</u></span></font></a></font></div>
<div> </div>
<div><img data-outlook-trace="F:0|T:1" src="cid:image001.jpg@01D38578.D79B8660"><img data-outlook-trace="F:1|T:1" src="cid:79ED2F0E3257B046933C95EC51AC626F@b1-es.com"></div>
<div><font color="#212121">          </font></div>
<div> </div>
<div> </div>
<div> </div>
</span></font></div>
</body>
</html>