XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: Display Handler, a Client Display Framework for Xen - Brendan Kerrigan, Assured Information...
-
Upload
the-linux-foundation -
Category
Technology
-
view
125 -
download
3
Transcript of XPDS16: Display Handler, a Client Display Framework for Xen - Brendan Kerrigan, Assured Information...
1
Display Handler A framework and implementation for client virtualization
interaction
Brendan Kerrigan
2
Outline
• Background • Goals • Design • Features • Future Goals and Development
3
Background
• Previously we had created a secure compositing technology on top of surfman, within XenClientXT
• At the time we were limited to working within a proprietary solution
• Uncertainty in XCXT’s future prompted us to find an independent way forward
4
Background
• Began design in Fall 2013 after a period of survey and experimentation with what existed in open source
• Several prototypes were made: • Wayland • Mir • eGL • DRM
5
Background • We settled on a design that would utilize a plugin
architecture • Minimize damage of lock-in to a specific
technology • Allow extension by outside parties • LGPL was the intended license to allow for 3rd
parties to develop proprietary bits that were interoperable
• Initial support would be based on DRM dumb buffer rendering
6
Outline
• Background • Goals • Design • Features • Future Goals and Development
7
Goals
• Modular, testable codebase • Flexible multi-monitor support
(extended, cloned, pinned, seamless)
• Intuitive monitor hotplugging • Lower the surrounding code
necessary to prototype new rendering technologies
8
Goals
• Up to 6 monitor support • 4K resolution support • Minimize the effort in bringing in
new hardware compatibility
9
Outline
• Background • Goals • Design • Features • Future Goals and Development
10
Architecture
Renderer Full Screen Compositor
Input Server PV Backend Qemu
Backend
libivc Guest
Manager
OXT FB XPDM Qemu
DCL
libivc libivc libivc
Dis(play) Man(ager)
Xec XL libivc
11
Architecture
Renderer Full Screen Compositor
Input Server PV Backend Qemu
Backend
libivc Guest
Manager
OXT FB XPDM Qemu
DCL
libivc libivc libivc
Dis(play) Man(ager)
Xec XL libivc
Interface with the applicable toolstack module (currently support xec and xl)
Guest Manager
12
Architecture
Renderer Full Screen Compositor
Input Server PV Backend Qemu
Backend
libivc Guest
Manager
OXT FB XPDM Qemu
DCL
libivc libivc libivc
Dis(play) Man(ager)
Xec XL libivc
Somewhat poorly named, more like a window manager
Full Screen Compositor
13
Architecture
Renderer Full Screen Compositor
Input Server PV Backend Qemu
Backend
libivc Guest
Manager
OXT FB XPDM Qemu
DCL
libivc libivc libivc
Dis(play) Man(ager)
Xec XL libivc
Does the final blitting to the scanout buffer (currently DRM dumb buffer support is included)
Renderer
14
Architecture
Renderer Full Screen Compositor
Input Server PV Backend Qemu
Backend
libivc Guest
Manager
OXT FB XPDM Qemu
DCL
libivc libivc libivc
Dis(play) Man(ager)
Xec XL libivc
Provides information about currently available displays’ orientation, resolution, and layout
Dis(play) Man(ager)
15
Architecture
Renderer Full Screen Compositor
Input Server PV Backend Qemu
Backend
libivc Guest
Manager
OXT FB XPDM Qemu
DCL
libivc libivc libivc
Dis(play) Man(ager)
Xec XL libivc
A new input server module is included, and this brings the input server back into the same process space as the rest of the display code
Input Server
16
Architecture Input Sources
libinput
vnc
???
Input Server Core
Filter List
VM List
QEmu
Input Sinks
Focus VM
PV KBD
Debug
17
Outline
• Background • Goals • Design • Features • Future Goals and Development
18
Features
• Three modes of operation • Extended – in focus VM displays
to all monitors • Cloned – in focus VM displays to
all monitors, but the image is replicated on each monitor
• Pinned – VMs can be assigned a subset of available displays
19
Features
• Extended mode
<VM Switch>
20
Features
• Cloned mode
<VM Switch>
21
Features
• Pinned mode
<VM Switch>
22
Features
• Configure displays from the UIVM
23
Features
• Monitor hotplugging is well supported
• Optional banner that displays VM name and administrator configurable string
• Guest/host resolution independence (auto scaling if necessary)
24
Features
• Performance impact is small • With multiple HD videos playing full
screen, CPU utilization sits at ~6% • Audio processing actually uses
more cycles during ad hoc video playback testing
25
Features • Currently works on both OpenXT and
upstream Xen • Large set of unittests accompany the code • PV display drivers for Windows 7 and 10
(XPDM and KMDOD) • LinuxFB PV driver • Experimental DRM driver for multi-monitor
support in Linux • Qemu guest support (limited resolution)
26
Outline
• Background • Goals • Architecture • Features • Future Goals and Development
27
Future Goals and Development
• Open sourcing effort is beginning shortly • Building community • Unit testing coverage will be extended • Taking suggestions for a name!
28
Future Goals and Development
• Additional renderers are being investigated: • Intel GVT-g as a renderer, providing
mediated GPU acceleration using native Intel drivers in guest
• GL based renderer, providing some improvement in performance and power consumption (especially in scaling cases)
• virGL based renderer, providing API forwarding style 3D graphics to guests
29
Future Goals and Development
• Extending the input server to support some more modern input technologies • Better touch integration and passthrough • Supporting other sensor data being sent to
guests • Accelerometer • GPS
• UI configuration of gesture control