The use of AGL UCB integration can be divided into two main categories.
- development platform for innovation, which means individual features and components, as well as prototyping and demo/PoC development
- It is preferable to reuse the existing AGL UCB (including the demo implementation), because the other will be developed from scratch and will not be available for some time.
- integrate reference system which is baseline of product embedded
- This will be a minimally configured system, which makes it very difficult to use for development purposes, such as new features and components.
Plan of K.K
Separate development platform and reference of product embedded
- Development platform
- Reusing agl-image-weston (because we need to use nested compositor architecture until DRM release manager will come)
- Introduce new layer to add-on container features on it
- add LXC support
- add container configuration for agl-ivi (for agl-demo-platform) and agl-ic (for agl-cluster-demo-platform)
- recipes and patches are common, identified by name, 'agl-ivi' and 'agl-ic' (default name, can be changed by variable in recipes/local.conf)
- network configuration
- use lxc-net by default (sharing host network adapter by containers to access internet)
- TBD: introduce guest pass-through (e.g. internet access permitted only to agl-ivi) and make these selectable
- very basic container manager
- To support nested compositor easily, add easy-launcher, lxc-launcher(runlxc)
- easy to select one from predefined configurations
- running 1 container, agl-ic or agl-ivi
- running 2 container, agl-ic and agl-ivi
Because multiple monitors cannot be usable on QEMU with AGL imageQEMU + SPICE can support multiple monitors but it requires spice-vdagent and xwayland(xserver + xrandr/Xinerama)not yet investigation: whether weston + xwayland can do the same above
- Reference of product embedded
- TBD
NOTE: QEMU's multi-monitor (1 seat with multiple heads) support appears to be limited
#
# QEMU + VirGL(GPU acceleration) + Multiple monitors
#
# using GTK UI frontend
PACKAGECONFIG_append_pn-qemu-system-native = " gtk+"
# enable GPU acceleration
PACKAGECONFIG_append_pn-qemu-system-native = " glx virglrenderer"
#
# Results
#
# GTK UI Frontend
# OK: 1 monitor + GPU accelerated
# -device virtio-vga,virgl=on -display gtk,gl=on
# OK: 2 monitors
# -device virtio-vga,max_outputs=2 -display gtk
# NG: 2 monitors + GPU accelerated (QEMU not launched)
# -device virtio-vga,virgl=on,max_outputs=2 -display gtk,gl=on
#
# SDL2 UI Frontend
# OK: 1 monitor + GPU accelerated
# -device virtio-vga,virgl=on -display sdl,gl=on
# NG: 2 monitors (only 1 monitor is on)
# -device virtio-vga,max_outputs=2 -display sdl
# NG: 2 monitors + GPU accelerated (QEMU not launched)
# -device virtio-vga,virgl=on,max_outputs=2 -display sdl,gl=on
#