Skip to content
Snippets Groups Projects

Multi-backend support

Merged Philipp Zabel requested to merge pH5/weston:multi-backend into main

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
Edited by Philipp Zabel

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Philipp Zabel added 1 commit

    added 1 commit

    • ee53e8c5 - fixup! backend-vnc: add meson wrap files for aml and neatvnc

    Compare with previous version

  • Philipp Zabel added 1 commit

    added 1 commit

    • a960dab8 - fixup! compositor: enable loading multiple backends by repeating the --backend option

    Compare with previous version

    • 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 EGLDisplays 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 EGLDisplays?

  • Pekka Paalanen mentioned in issue #483

    mentioned in issue #483

  • Pekka Paalanen
  • Pekka Paalanen
  • I started discussing the output config side in !577 (merged).

    Hard to say much else here this time.

  • Philipp Zabel added 39 commits

    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

    Compare with previous version

  • Philipp Zabel mentioned in merge request !577 (merged)

    mentioned in merge request !577 (merged)

  • Philipp Zabel added 55 commits

    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

    Compare with previous version

  • Philipp Zabel changed the description

    changed the description

  • Daniel Stone changed target branch from master to main

    changed target branch from master to main

  • Philipp Zabel added 65 commits

    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

    Compare with previous version

  • Philipp Zabel added 22 commits

    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

    Compare with previous version

  • Philipp Zabel added 27 commits

    added 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

    Compare with previous version

  • Daniel Stone
  • Daniel Stone
  • This is going in a really good direction; I'm far happier with it than I thought I would be! Thanks @pH5.

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading