Based on the original implementation (hybrid-screenclone) by Tomáš Janoušek, and Bumblebee integration by Kevin Puetz.
intel-virtual-output utilizes local VirtualHeads to present a contiguous desktop to the local display manager, but maps the drawing on those outputs to the remote display, and provides bidirectional RandR proxy so that you can resize the remote display and configure it within your desktop. The remote display should also send hotplug events back to the local desktop, for reconfiguration on the fly.
Ideally the remote display is a discrete GPU on the same host so that we can use local Shared Memory transport and avoid sending data over the wire (though it will work in that setup). Ideally you would have userptr support to provide zero-copy rendering between the GPUs, or have dma-buf (in which case you would be using PRIME). For remote rendering, no compression is done so this fares worse than VNC.
8067255 tools: Add intel-virtual-output to extend the local desktop with remote outputs
Makefile.am | 2 +-
configure.ac | 3 +
test/Makefile.am | 2 +-
test/virtual.conf | 36 ++
tools/.gitignore | 1 +
tools/Makefile.am | 44 ++
tools/intel-virtual-output.man | 34 ++
tools/virtual.c | 1280 ++++++++++++++++++++++++++++++++++++++++
8 files changed, 1400 insertions(+), 2 deletions(-)