Both xcomposite-egl and xcomposite-glx have rendering issues, and they do not work with the latest Nvidia driver versions. These plugins were created to allow testing/debugging of QtWayland-based compositors on desktops that did not support Wayland natively. At this time, Wayland is much more widely supported on the desktop, and [ChangeLog][Extensions][The xcomposite-egl and xcomposite-glx shell extension protocols are no longer built by default.] Task-number: QTBUG-92074 Task-number: QTBUG-97985 Pick-to: 6.2 Change-Id: Ifded68b92e91e2d98aa44b8cfc624a4072b30451 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
74 lines
2.9 KiB
Plaintext
74 lines
2.9 KiB
Plaintext
This is the QtWayland module.
|
|
|
|
The QtWayland module consists of two parts:
|
|
|
|
Wayland platform plugin:
|
|
Enables Qt applications to be run as Wayland clients.
|
|
|
|
QtWaylandCompositor API:
|
|
Enables the creation of Wayland compositors using Qt and QtQuick.
|
|
|
|
To build the QtWayland module you need the external dependencies:
|
|
xkbcommon - http://xkbcommon.org/
|
|
wayland - http://wayland.freedesktop.org/
|
|
|
|
QtWaylandCompositor supports loading client buffer integrations that don't use
|
|
the wayland-egl interfaces. These client buffer integrations are picked up by
|
|
QtWaylandCompositor as plugins. To specify what plugin to load use the environment
|
|
variable QT_WAYLAND_CLIENT_BUFFER_INTEGRATION in the environment where the
|
|
compositor is started. The compositor will broadcast to the clients which
|
|
hardware integration to load when using the generic platformplugin "wayland". If
|
|
no client buffer integration is specified, then the wayland-egl plugin will be
|
|
loaded. Please note that no Weston clients will work if the non standard
|
|
wayland-egl client buffer integration is used.
|
|
|
|
Available client buffer integrations are:
|
|
wayland-egl (this is the default)
|
|
linux-dmabuf-unstable-v1
|
|
brcm
|
|
|
|
Testing a Qt-based compositor on X11:
|
|
|
|
Most QWidget-based applications will use shared memory buffers, which work on
|
|
all hardware. OpenGL and Qt Quick applications need a way to send graphics
|
|
memory buffers from client to server. There are many options, and not all
|
|
options work on all hardware.
|
|
|
|
Using wayland-egl requires support from the driver. Intel integrated graphics
|
|
are supported through the standard Mesa drivers. For NVidia, driver version
|
|
364.12 or newer is required, and Qt must be configured with "-opengl es2".
|
|
Run the compositor as follows:
|
|
|
|
QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=wayland-egl ./minimal-qml
|
|
|
|
Please note that some NVidia drivers may require early EGL initialization. Qt
|
|
clients normally use the buffer integration communicated by the compositor.
|
|
To set the client-side buffer integration manually, run clients with
|
|
"-platform wayland-egl".
|
|
|
|
Shell Integration:
|
|
|
|
Some platforms, especially non-desktop ones, use a custom Wayland shell
|
|
extension. These are tailored to the specific embedded form factor better than
|
|
the generic wl_shell or xdg_shell extensions that target desktop systems.
|
|
Custom shell protocols are added through shell integration plugins.
|
|
|
|
Which shell integration to use is determined by the QT_WAYLAND_SHELL_INTEGRATION
|
|
environment variable. If no shell is specified, the default is to try shells in
|
|
the following order: xdg-shell, xdg-shell-v6, wl-shell and then ivi-shell.
|
|
|
|
Example Usage:
|
|
|
|
Starting the hellowindow example application (one of the examples for qtbase)
|
|
with ivi-shell integration:
|
|
|
|
QT_WAYLAND_SHELL_INTEGRATION=ivi-shell ./hellowindow -platform wayland
|
|
|
|
Available Shell Integrations:
|
|
|
|
* ivi-shell
|
|
* wl-shell (deprecated)
|
|
* xdg-shell
|
|
* fullscreen-shell-v1
|
|
|