The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities...
Transcript of The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities...
![Page 1: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/1.jpg)
https://www.pengutronix.de
The Modern Linux Graphics Stack on Embedded Systems
Michael Tretter – [email protected]
![Page 2: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/2.jpg)
2/44
User Interface for Linux Desktop
![Page 3: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/3.jpg)
3/44
Desktop Environment / Window Manager
Choose desktop environment (GNOME, KDE, ...) Install desktop environment Graphical user interface “just works”
But what about embedded systems?
![Page 4: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/4.jpg)
4/44
Agenda
Modern Linux Graphics Stack Graphics in Embedded Systems Weston for Embedded Graphics
![Page 5: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/5.jpg)
5/44
Agenda
Modern Linux Graphics Stack Graphics in Embedded Systems Weston for Embedded Graphics
![Page 6: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/6.jpg)
6/44
Windowing System
Display server is central coordinator Applications talk to display server using specified protocols
![Page 7: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/7.jpg)
7/44
Display Server
Wayland compositor Compositor shell
WaylandCompositor
![Page 8: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/8.jpg)
8/44
Wayland Client: xdg_shell Protocol
Description: “The xdg_wm_base interface is exposed as a global object enabling clients to turn their wl_surfaces into windows in a desktop environment. It defines the basic functionality needed for clients and the compositor to create windows that can be dragged, resized, maximized, etc, as well as creating transient windows such as popup menus.”
WaylandCompositor
ClientQt
ClientChromium
ClientGTK
![Page 9: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/9.jpg)
9/44
Display Output: DRM/KMS
Framebuffer via DRM/KMS Composite client surfaces Flip framebuffer on output Kernel driver drives display
Display
Kernel
libdrm
WaylandCompositor
ClientQt
ClientChromium
ClientGTK
![Page 10: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/10.jpg)
10/44
Surface Composition
Compositor renders output frame from client surfaces
Uses OpenGL for GPU acceleration
Add animations or transparency
GPU Display
Kernel
mesa libdrm
WaylandCompositor
ClientQt
ClientChromium
ClientGTK
![Page 11: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/11.jpg)
11/44
OpenGL for Wayland Clients
Clients use their own buffer Applications directly use
OpenGL for rendering
GPU Display
Kernel
mesa libdrm
WaylandCompositor
ClientQt
ClientChromium
ClientGTK
![Page 12: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/12.jpg)
12/44
Graphics Stack Overview
GPU Display
Kernel
mesa libdrm
WaylandCompositor
ClientQt
Application renders surface Compositor builds frame Display shows frame
ClientChromium
ClientGTK
![Page 13: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/13.jpg)
13/44
Agenda
Modern Linux Graphics Stack Graphics in Embedded Systems Weston for Embedded Graphics
![Page 14: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/14.jpg)
14/44
What is so Special about Embedded?
Limited hardware resources Limited memory bandwidth Limited (battery) power
Hardware accelerators for expensive functions
![Page 15: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/15.jpg)
15/44
Graphics Hardware Features
GPU for 3D hardware acceleration Display controllers with hardware overlays Hardware video encoders and decoders
IP cores from different vendors in single SoC Pixel formats, tiling, alignment... might be compatible Custom hardware units for format translations
![Page 16: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/16.jpg)
16/44
User Interface Development
Application developers used to development on desktop Embedded systems have aforementioned peculiarities
Convenience of desktop user interface development for embedded systems?
![Page 17: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/17.jpg)
17/44
Bridging the Gap
Graphics stack must optimally use graphics hardware Drivers must provide proper hardware abstraction Userspace must understand and use the abstractions
![Page 18: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/18.jpg)
18/44
Linux dma-buf Framework
Share buffers without copy between multiple devices Driver export and import buffers as fd to user space Avoid copies between clients and compositor
![Page 19: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/19.jpg)
19/44
Atomic Modesetting
Perfect frames despite overlay planes Configure display and update atomically Composite surfaces in display controller
![Page 20: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/20.jpg)
20/44
Videos and Pixel Formats
YUV used in video encoding and produced by decoders Conversion necessary for GPU rendering Display controllers might directly support YUV format
![Page 21: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/21.jpg)
21/44
Tiling and Format Modifiers
Tiling reduces memory bandwidth usage Format modifiers describe buffer tiling Share compatible buffers between processing units
![Page 22: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/22.jpg)
22/44
Let’s Look at the Userspace!
APIs for passing tiled buffers between drivers are available Are compositors actually using these APIs?
![Page 23: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/23.jpg)
23/44
Weston
Weston is the reference implementation of a Wayland compositor, as well as a useful environment in and of itself.
Out of the box, Weston provides a very basic desktop, or a full-featured environment for non-desktop uses such as automotive, embedded, in-flight, industrial, kiosks, set-top boxes and TVs. It also provides a library allowing other projects to build their own full-featured environments on top of Weston's core. (README.md of Weston)
![Page 24: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/24.jpg)
24/44
Weston DRM Backend
With the DRM backend, weston runs without any underlying windowing system. The backend uses the Linux KMS API to detect connected monitors. [...] It is also possible to take advantage of hardware […] overlays, when they exist and are functional. Full-screen surfaces will be scanned out directly without compositing, when possible. Hardware accelerated clients are supported via EGL. (man weston-drm)
![Page 25: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/25.jpg)
25/44
compositor-drm.c: prepare planes
static int drm_plane_populate_formats(struct drm_plane *plane,
const drmModePlane *kplane,
const drmModeObjectProperties *props)
{
blob = drmModeGetPropertyBlob(plane->backend->drm.fd, blob_id);
for (i = 0; i < fmt_mod_blob->count_formats; i++) {
plane->formats[i].format = blob_formats[i];
plane->formats[i].modifiers = modifiers;
}
}
![Page 26: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/26.jpg)
26/44
compositor-drm.c: repaint
static int drm_output_repaint(struct weston_output *output_base, pixman_region32_t *damage, void *repaint_data) {
drm_output_render(state, damage);
scanout_state = drm_output_state_get_plane(state, output->scanout_plane);
return 0;
}
static void drm_repaint_flush(struct weston_compositor *compositor, void *repaint_data) {
struct drm_pending_state *pending_state = repaint_data;
drm_pending_state_apply(pending_state);
}
static int drm_pending_state_apply_atomic(struct drm_pending_state *pending_state, enum drm_state_apply_mode mode) {
ret = drmModeAtomicCommit(b->drm.fd, req, flags, b);
}
![Page 27: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/27.jpg)
27/44
compositor-drm.c: plane assignment
static void drm_assign_planes(struct weston_output *output_base, void *repaint_data) {
state = drm_output_propose_state(output_base, pending_state,
DRM_OUTPUT_PROPOSE_STATE_PLANES_ONLY);
if (!state) state = drm_output_propose_state(output_base, pending_state,
DRM_OUTPUT_PROPOSE_STATE_MIXED);
if (!state) state = drm_output_propose_state(output_base, pending_state,
DRM_OUTPUT_PROPOSE_STATE_RENDERER_ONLY);
wl_list_for_each(ev, &output_base->compositor->view_list, link) {
wl_list_for_each(plane_state, &state->plane_list, link) {
if (plane_state->ev == ev) {
target_plane = plane_state->plane;
break;
}
}
if (target_plane) {
weston_view_move_to_plane(ev, &target_plane->base);
} else {
weston_view_move_to_plane(ev, primary);
}
}
}
static struct drm_output_state *
drm_output_propose_state(struct weston_output *output_base,
struct drm_pending_state *pending_state,
enum drm_output_propose_state_mode mode)
{
wl_list_for_each(ev, &output_base->compositor->view_list, link) {
if (!ps && !force_renderer && !renderer_ok)
ps = drm_output_prepare_scanout_view(state, ev, mode);
if (!ps && !overlay_occluded && !force_renderer)
ps = drm_output_prepare_overlay_view(state, ev, mode);
if (ps)
continue;
pixman_region32_union(&renderer_region,
&renderer_region, &clipped_view);
}
ret = drm_pending_state_test(state->pending_state);
}
![Page 28: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/28.jpg)
28/44
compositor-drm.c: buffer import
static struct drm_fb *
drm_fb_get_from_view(struct drm_output_state *state, struct weston_view *ev) {
dmabuf = linux_dmabuf_buffer_get(buffer->resource);
if (dmabuf) {
fb = drm_fb_get_from_dmabuf(dmabuf, b, is_opaque);
} else {
struct gbm_bo *bo;
bo = gbm_bo_import(b->gbm, GBM_BO_IMPORT_WL_BUFFER,
buffer->resource, GBM_BO_USE_SCANOUT);
fb = drm_fb_get_from_bo(bo, b, is_opaque, BUFFER_CLIENT);
}
}
static struct drm_fb *
drm_fb_get_from_bo(struct gbm_bo *bo, struct drm_backend *backend,
bool is_opaque, enum drm_fb_type type) {
struct drm_fb *fb = gbm_bo_get_user_data(bo);
fb->format = pixel_format_get_info(gbm_bo_get_format(bo));
fb->modifier = gbm_bo_get_modifier(bo);
return fb;
}
static struct drm_fb *
drm_fb_get_from_dmabuf(struct linux_dmabuf_buffer *dmabuf,
struct drm_backend *backend, bool is_opaque) {
struct gbm_import_fd_modifier_data import_mod = {
.width = dmabuf->attributes.width,
.height = dmabuf->attributes.height,
.format = dmabuf->attributes.format,
.num_fds = dmabuf->attributes.n_planes,
.modifier = dmabuf->attributes.modifier[0],
};
fb->bo = gbm_bo_import(backend gbm,→
GBM_BO_IMPORT_FD_MODIFIER,
&import_mod,
GBM_BO_USE_SCANOUT);
fb->modifier = dmabuf->attributes.modifier[0];
fb->format = pixel_format_get_info(dmabuf->attributes.format);
return fb;
}
![Page 29: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/29.jpg)
29/44
DRM Features Supported by Weston
Supported dma-buf import Atomic modeset Overlay planes Format modifiers
Unsupported Direct output of tiled
buffers
![Page 30: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/30.jpg)
30/44
Agenda
Modern Linux Graphics Stack Graphics in Embedded Systems Weston for Embedded Graphics
![Page 31: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/31.jpg)
31/44
Weston User Interface Development
Compositor user interface defined by Weston shell Development on desktop using Wayland backend Testing with DRM backend on embedded system
![Page 32: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/32.jpg)
32/44
Weston Shell
libweston
shell
Application
xdg-shell.xml
libweston/compositor.h
Register shell in weston.ini Build shell as executable
object file Implement xdg_shell
protocol Make use of libweston
![Page 33: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/33.jpg)
33/44
Weston Shell: Example
#include "xdg-shell-unstable-v6-server-protocol.h"
#include "libweston/compositor.h"
WL_EXPORT int wet_shell_init(struct weston_compositor *compositor, int *argc, char *argv[]) {
/* … */
wl_global_create(display, &zxdg_shell_v6_interface, 1, data, xdg_shell_bind);
/* … */
}
static void surface_committed(struct weston_surface *surface, int32_t sx, int32_t sy) {
/* … */
weston_compositor_schedule_repaint(compositor);
/* … */
}
![Page 34: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/34.jpg)
34/44
Existing Weston Shells
Desktop shell Desktop→
IVI shell In-Vehicle-Infotainment→
Fullscreen shell Single fullscreen application→
![Page 35: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/35.jpg)
35/44
IVI Shell
Shell for embedded / HMI use case Compositor positions surfaces identified by ID Wayland protocol: ivi_application
xdg_shell not supported
![Page 36: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/36.jpg)
36/44
IVI Shell with xdg_shell Support!
Michael Teyfel: [PATCH weston v3 00/15] Desktop Protocol Support for IVI-Shell (Weston 4.0)
https://lists.freedesktop.org/archives/wayland-devel/2018-April/037778.html
![Page 37: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/37.jpg)
37/44
IVI Shell: Architecture
hmi-controller
IVI-Shellimplementation
CompositorBackend
Application
IVI-Layoutlibrary
IVI shell: Shell protocol IVI-Layout: layers and
surfaces HMI-controller: user
interface
![Page 38: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/38.jpg)
38/44
Building a UI with IVI-Shell
Replace hmi-controller with custom plugin
Use ivi-layout API
#include <ivi-layout-export.h>
WL_EXPORT int wet_module_init(
struct weston_compositor *compositor,
int *argc, char *argv[])
{
struct ivi_layout_interface *api;
api = ivi_layout_get_api(compositor);
/* … */
api->commit_changes();
/* … */
}
![Page 39: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/39.jpg)
39/44
Alternatives to Weston?
wlroots Qt Wayland Compositor
![Page 40: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/40.jpg)
40/44
wlroots
Modular Wayland compositor library wlr_layer_shell_unstable_v1 protocol Sway, Phosh, Rootston
Overlay planes not supported Format modifiers not supported
![Page 41: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/41.jpg)
41/44
Qt Wayland Compositor
Qt module for developing display servers Provides QML and C++ APIs Well tested declarative UI technology
Atomic modeset not supported Overlay planes not supported Format modifiers not supported
![Page 42: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/42.jpg)
42/44
Open Questions
Is the desktop environment useful for UI developers? Should the compositor really hide hardware complexity? How to decide between rendering and using overlay planes? Allow clients to control their surface position and layout?
![Page 43: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/43.jpg)
43/44
Summary
Linux graphics stack (Wayland, Mesa, DRM) Abstractions in DRM for peculiarities of embedded hardware How Weston uses the DRM interface How to build an embedded UI with Weston
![Page 44: The Modern Linux Graphics Stack on Embedded …...Embedded systems have aforementioned peculiarities Convenience of desktop user interface development for embedded systems? 17/44 Bridging](https://reader030.fdocuments.us/reader030/viewer/2022040402/5e7ea5c5813d8d615f5f8803/html5/thumbnails/44.jpg)
44/44
Thank You
Questions? Remarks? Opinions? Answers?
Talk to me at the Pengutronix booth
Write me an e-mail: [email protected]