Multi-backend support
This allows to load multiple backends simultaneously: one primary backend, which creates the renderer, and optionally one or more secondary backends, which use the renderer created by the primary backend. For backwards compatibility, all backends can be used as the primary backend. Currently the vnc
, pipewire
, and rdp
backends can be loaded as secondary backends. For example:
weston --backends wayland,vnc --vnc-tls-cert tls.crt --vnc-tls-key tls.key
Merge request reports
Activity
added 1 commit
- ee53e8c5 - fixup! backend-vnc: add meson wrap files for aml and neatvnc
added 1 commit
- a960dab8 - fixup! compositor: enable loading multiple backends by repeating the --backend option
- Resolved by Philipp Zabel
Just in case: Even with the heterogeneity, I think that using both pixman- and GL-renderers simultaneously is something we should forbid. GL-renderer supports buffer types the Pixman-renderer cannot. There is nothing stopping a surface moving from any output to any other output, meaning that Pixman-renderer could suddenly need to handle a buffer type it cannot.
So the renderer as a whole would be tied to the
weston_compositor
instance.GL-renderer with heterogeneous outputs is a good question. For the same reason as we cannot have both Pixman and GL active at the same time, if we have multiple
EGLDisplay
s which means multiple GL ES contexts that cannot share textures, every client buffer needs to be imported to all contexts.Is there any way we could do with just one GL ES context like we have now? What assumptions would it need? Or do we have to allow multiple contexts with different
EGLDisplay
s?
mentioned in issue #483
- Resolved by Philipp Zabel
- Resolved by Philipp Zabel
I started discussing the output config side in !577 (merged).
Hard to say much else here this time.
added 39 commits
-
a960dab8...73aaf14e - 4 commits from branch
wayland:master
- 1d3b605e - libweston: add destroy callback to struct weston_head
- c164ce7c - backend-drm: check that outputs and heads are in fact ours
- 8a7da60a - backend-fbdev: check that outputs and heads are in fact ours
- 535f74ea - backend-headless: check that outputs and heads are in fact ours
- 27fb5bb6 - backend-rdp: check that outputs and heads are in fact ours
- 1b47a4aa - backend-wayland: check that outputs and heads are in fact ours
- 0ebe7092 - backend-x11: check that outputs and heads are in fact ours
- 3f303506 - libweston: consolidate weston_compositor_create_output(_with_head)
- 12bf7e91 - compositor: stop creating outputs without head
- e88c9421 - Merge branch 'mr-origin-362'
- 4f403bd1 - Merge branch 'mr-origin-577'
- c4f97bd1 - backend-vnc: add meson wrap files for aml and neatvnc
- 8fed5fae - backend-vnc: transform repaint damage to output coordinates
- d04e0d84 - backend-vnc: transform pointer coordinates into global space
- d6378eaf - backend-vnc: check that outputs and heads are in fact ours
- fde4ee67 - libweston: store backends in a list
- c10773e6 - libweston: loop over weston_compositor::backend_list instead of accessing...
- 98376062 - libweston: allow weston_compositor_shutdown() to be called multiple times
- 9dba06cd - libweston: allow loading multiple backends
- db39decd - libweston: add backend pointer to struct weston_head
- 28f9b3ed - compositor: per-backend head change listener and output configurator
- a906e971 - option-parser: Allow repeating options
- 64104047 - compositor: enable loading multiple backends by repeating the --backend option
- c2590f78 - backend-drm: stop using weston_compositor::backend
- 607fb3dd - backend-drm: store backend on weston_head
- 7054fd2b - backend-drm: enable multi-backend support
- 9544fac0 - backend-wayland: stop using weston_compositor::backend
- dc565db7 - backend-wayland: store backend on weston_head
- cd7d36ab - backend-wayland: multi-backend support
- 870ac3f3 - backend-wayland: store backend on struct wayland_output
- c5b457b3 - backend-vnc: stop using weston_compositor::backend
- de21493d - backend-vnc: store backend on struct vnc_output
- cdb73624 - backend-vnc: support loading as secondary backend
- 7e8b4b04 - backend-vnc: store backend on weston_head
- 100aca68 - libweston: call correct weston_backend::create_output depending on head
Toggle commit list-
a960dab8...73aaf14e - 4 commits from branch
mentioned in merge request !577 (merged)
added 55 commits
-
100aca68...700ede50 - 16 commits from branch
wayland:master
- 586420d3 - libweston: add destroy callback to struct weston_head
- bf5d4f37 - backend-drm: check that outputs and heads are in fact ours
- 88031ee9 - backend-fbdev: check that outputs and heads are in fact ours
- 900ef289 - backend-headless: check that outputs and heads are in fact ours
- cc9b72e3 - backend-rdp: check that outputs and heads are in fact ours
- 6897516e - backend-wayland: check that outputs and heads are in fact ours
- c62a3da7 - backend-x11: check that outputs and heads are in fact ours
- 5e3c406d - libweston: consolidate weston_compositor_create_output(_with_head)
- cc13141f - compositor: stop creating outputs without head
- a908f4ec - Merge branch 'mr-origin-362'
- d59ace71 - Merge branch 'mr-origin-577'
- a9a4247b - backend-vnc: add meson wrap files for aml and neatvnc
- c3979bc5 - backend-vnc: transform repaint damage to output coordinates
- 472b4774 - backend-vnc: transform pointer coordinates into global space
- 31e3632f - backend-vnc: check that outputs and heads are in fact ours
- d2730bd1 - gl-renderer: add FBO output support
- c453c496 - libweston: store backends in a list
- 2e3067a5 - libweston: loop over weston_compositor::backend_list instead of accessing...
- 667a65f3 - libweston: allow weston_compositor_shutdown() to be called multiple times
- 60bf59bd - libweston: allow loading multiple backends
- d0a3e742 - libweston: add backend pointer to struct weston_head
- 76ef72a3 - compositor: per-backend head change listener and output configurator
- 1c50e059 - option-parser: Allow repeating options
- 5a246466 - compositor: enable loading multiple backends by repeating the --backend option
- 19641ff9 - backend-drm: stop using weston_compositor::backend
- 2891f707 - backend-drm: store backend on weston_head
- cfddfe83 - backend-drm: enable multi-backend support
- 67fb948c - backend-wayland: stop using weston_compositor::backend
- 64f2e98e - backend-wayland: store backend on weston_head
- e2eb173e - backend-wayland: multi-backend support
- 1014e2df - backend-wayland: store backend on struct wayland_output
- 62d99eef - backend-vnc: stop using weston_compositor::backend
- f9af5948 - backend-vnc: store backend on struct vnc_output
- 8e5521c9 - backend-vnc: support loading as secondary backend
- 78d58104 - backend-vnc: store backend on weston_head
- 64997420 - libweston: call correct weston_backend::create_output depending on head
- 316c56b5 - compositor: promote --use-pixman to core option
- a76c95c0 - libweston, backends: move GL renderer interface into compositor
- 6416b5aa - backend-vnc: GL renderer support
Toggle commit list-
100aca68...700ede50 - 16 commits from branch
added 65 commits
-
6416b5aa...f48277b5 - 25 commits from branch
wayland:main
- 8770b217 - libweston: add destroy callback to struct weston_head
- 9a545258 - backend-drm: prepare virtual output API for heterogeneous outputs
- 3dc66905 - backend-drm: check that outputs and heads are in fact ours
- 705a0c04 - backend-fbdev: check that outputs and heads are in fact ours
- 30f87b91 - backend-headless: check that outputs and heads are in fact ours
- e67c0c6a - backend-rdp: check that outputs and heads are in fact ours
- 0a5f368b - backend-wayland: check that outputs and heads are in fact ours
- eb62f51a - backend-x11: check that outputs and heads are in fact ours
- 6a7c4353 - libweston: consolidate weston_compositor_create_output(_with_head)
- dcdb0d23 - compositor: stop creating outputs without head
- 8058e768 - Merge branch 'mr-origin-362'
- c59a0c1a - Merge branch 'mr-origin-577'
- 337455cb - backend-vnc: add meson wrap files for aml and neatvnc
- f45e25d5 - backend-vnc: transform repaint damage to output coordinates
- 6a80971a - backend-vnc: transform pointer coordinates into global space
- 48d5e499 - backend-vnc: check that outputs and heads are in fact ours
- 83ebf3f9 - gl-renderer: add FBO output support
- a4d6efc2 - libweston: store backends in a list
- 83da924c - libweston: loop over weston_compositor::backend_list instead of accessing...
- 5060e388 - libweston: allow weston_compositor_shutdown() to be called multiple times
- d814f84b - libweston: allow loading multiple backends
- 4c3ed533 - libweston: add backend pointer to struct weston_head
- 1ebc70a4 - compositor: per-backend head change listener and output configurator
- a6edf45e - option-parser: Allow repeating options
- b2675a16 - compositor: enable loading multiple backends by repeating the --backend option
- 4df76a86 - backend-drm: stop using weston_compositor::backend
- 9549d5f0 - backend-drm: store backend on weston_head
- e8e47dfc - backend-drm: enable multi-backend support
- 6458c781 - backend-wayland: stop using weston_compositor::backend
- 7f2fb0ca - backend-wayland: store backend on weston_head
- 6a50cadd - backend-wayland: multi-backend support
- 5a560d13 - backend-wayland: store backend on struct wayland_output
- b7a38ea4 - backend-vnc: stop using weston_compositor::backend
- cfdd234f - backend-vnc: store backend on struct vnc_output
- 1645b0dc - backend-vnc: support loading as secondary backend
- 9206256d - backend-vnc: store backend on weston_head
- fa3a2223 - libweston: call correct weston_backend::create_output depending on head
- 10df78a9 - compositor: promote --use-pixman to core option
- acbde255 - libweston, backends: move GL renderer interface into compositor
- 9d8b0536 - backend-vnc: GL renderer support
Toggle commit list-
6416b5aa...f48277b5 - 25 commits from branch
added 22 commits
- 5741f321 - libweston: use weston_compositor::backend_list instead of weston_compositor::backend
- 00e7836e - libweston: allow weston_compositor_shutdown() to be called multiple times
- 247f70ba - libweston: allow loading multiple backends
- 14f76335 - libweston: add backend pointer to struct weston_head
- e3848f26 - compositor: per-backend head change listener and output configurator
- 3a7b85cc - option-parser: Allow repeating options
- 075d8acc - compositor: enable loading multiple backends by repeating the --backend option
- 5acf322d - backend-drm: stop using weston_compositor::backend
- 8982b569 - backend-drm: store backend on weston_head
- f8619ea1 - backend-drm: enable multi-backend support
- 5919568b - backend-wayland: stop using weston_compositor::backend
- f5309d37 - backend-wayland: store backend on weston_head
- 86d826fc - backend-wayland: multi-backend support
- 8aa9e7ce - backend-wayland: store backend on struct wayland_output
- f6ce4a3e - backend-vnc: stop using weston_compositor::backend
- 04b7c0a1 - backend-vnc: store backend on struct vnc_output
- a55665fc - backend-vnc: support loading as secondary backend
- bbe6109e - backend-vnc: store backend on weston_head
- 4e95a79b - libweston: call correct weston_backend::create_output depending on head
- c4c69bf1 - compositor: promote --use-pixman to core option
- 27d920f7 - libweston, backends: move GL renderer interface into compositor
- 531a56eb - backend-vnc: GL renderer support
Toggle commit listadded 27 commits
- f680bf23 - gl-renderer: add FBO output support
- 6711028d - gl-renderer: make import_simple_dmabuf attributes parameter const
- 727930ee - gl-renderer: add dmabuf renderbuffer support
- 29fadf2f - libweston: store backends in a list
- 573dba12 - libweston: use weston_compositor::backend_list instead of weston_compositor::backend
- 25acc9b3 - libweston: allow weston_compositor_shutdown() to be called multiple times
- 0e0607cf - libweston: allow loading multiple backends
- 51987f48 - libweston: add backend pointer to struct weston_head
- e44799cc - compositor: per-backend head change listener and output configurator
- 3cfa45ef - option-parser: Allow repeating options
- 585e8396 - compositor: enable loading multiple backends by repeating the --backend option
- 2a7ccad0 - backend-drm: stop using weston_compositor::backend
- 4fc72427 - backend-drm: store backend on weston_head
- e414c092 - backend-drm: enable multi-backend support
- 8fb2ff82 - backend-wayland: stop using weston_compositor::backend
- 09be15d7 - backend-wayland: store backend on weston_head
- be2be057 - backend-wayland: multi-backend support
- 507acc54 - backend-wayland: store backend on struct wayland_output
- 24cad6c8 - backend-vnc: stop using weston_compositor::backend
- 1aac8b55 - backend-vnc: store backend on struct vnc_output
- 3aa39801 - backend-vnc: support loading as secondary backend
- 299ad106 - backend-vnc: store backend on weston_head
- 3926e952 - libweston: call correct weston_backend::create_output depending on head
- 4732ff84 - compositor: promote --use-pixman to core option
- f7f5f26e - libweston, backends: move GL renderer interface into compositor
- 49f002be - backend-vnc: GL renderer support
- d70dc305 - backend-pipewire: Add PipeWire backend
Toggle commit list- Resolved by Philipp Zabel
- Resolved by Philipp Zabel
This is going in a really good direction; I'm far happier with it than I thought I would be! Thanks @pH5.
added Core compositor label
added libweston API label